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:
@@ -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*",
|
||||
},
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user