feat: rewrite all routes starting with supported lang code (#20346)

* feat: rewrite all routes starting with matching locale code

* update e2e test
This commit is contained in:
Benny Joo
2025-03-24 23:15:39 +00:00
committed by GitHub
parent f24e8d12f0
commit 273fc544e7
2 changed files with 27 additions and 20 deletions
+4 -1
View File
@@ -5,6 +5,9 @@ const englishTranslation = require("./public/static/locales/en/common.json");
const { withAxiom } = require("next-axiom");
const { withSentryConfig } = require("@sentry/nextjs");
const { version } = require("./package.json");
const {
i18n: { locales },
} = require("./next-i18next.config");
const {
nextJsOrgRewriteConfig,
orgUserRoutePath,
@@ -290,7 +293,7 @@ const nextConfig = {
const beforeFiles = [
{
// This should be the first item in `beforeFiles` to take precedence over other rewrites
source: "/en/:path*",
source: `/(${locales.join("|")})/:path*`,
destination: "/:path*",
},
{
+23 -19
View File
@@ -2,26 +2,30 @@ import { expect } from "@playwright/test";
import { test } from "./lib/fixtures";
test.describe("/en/* pages must not 404", () => {
test("/en/login shouldn't 404", async ({ page }) => {
const response = await page.goto(`/en/login`);
expect(response?.status()).not.toBe(404);
});
test.describe("Locale-specific pages must not 404", () => {
for (const locale of ["en", "fr", "es"]) {
test.describe(`/${locale}/* pages`, () => {
test(`/${locale}/login shouldn't 404`, async ({ page }) => {
const response = await page.goto(`/${locale}/login`);
expect(response?.status()).not.toBe(404);
});
test("/en/auth/login shouldn't 404", async ({ page }) => {
const response = await page.goto(`/en/auth/login`);
expect(response?.status()).not.toBe(404);
});
test(`/${locale}/auth/login shouldn't 404`, async ({ page }) => {
const response = await page.goto(`/${locale}/auth/login`);
expect(response?.status()).not.toBe(404);
});
test("/en/[user] page shouldn't 404", async ({ page, users }) => {
const user = await users.create();
const response = await page.goto(`/en/${user.username}`);
expect(response?.status()).not.toBe(404);
});
test(`/${locale}/[user] page shouldn't 404`, async ({ page, users }) => {
const user = await users.create();
const response = await page.goto(`/${locale}/${user.username}`);
expect(response?.status()).not.toBe(404);
});
test("/en/[user]/[type] page shouldn't 404", async ({ page, users }) => {
const user = await users.create();
const response = await page.goto(`/en/${user.username}/30-min`);
expect(response?.status()).not.toBe(404);
});
test(`/${locale}/[user]/[type] page shouldn't 404`, async ({ page, users }) => {
const user = await users.create();
const response = await page.goto(`/${locale}/${user.username}/30-min`);
expect(response?.status()).not.toBe(404);
});
});
}
});