diff --git a/apps/web/next.config.js b/apps/web/next.config.js index 4bec508455..61ba259665 100644 --- a/apps/web/next.config.js +++ b/apps/web/next.config.js @@ -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*", }, { diff --git a/apps/web/playwright/i18n-routing.e2e.ts b/apps/web/playwright/i18n-routing.e2e.ts index 8eeaba5e66..6b30bfad5f 100644 --- a/apps/web/playwright/i18n-routing.e2e.ts +++ b/apps/web/playwright/i18n-routing.e2e.ts @@ -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); + }); + }); + } });