From 99c59b0c0e0d9dfaa863b2df997da2dc5b339456 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Peka=C5=99?= Date: Tue, 10 May 2022 20:48:41 +0200 Subject: [PATCH] Updated condition and test --- packages/next/export/worker.ts | 6 ++- test/integration/i18n-support/test/shared.js | 43 ++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/packages/next/export/worker.ts b/packages/next/export/worker.ts index 6548fbf05137b..0d40d786df957 100644 --- a/packages/next/export/worker.ts +++ b/packages/next/export/worker.ts @@ -210,7 +210,11 @@ export default async function exportPage({ req.url += '/' } - if (buildExport && renderOpts.domainLocales) { + if ( + buildExport && + renderOpts.domainLocales && + renderOpts.domainLocales.length > 0 + ) { addRequestMeta(req, '__nextIsLocaleDomain', true) } diff --git a/test/integration/i18n-support/test/shared.js b/test/integration/i18n-support/test/shared.js index b95c70805c040..511265d583bb7 100644 --- a/test/integration/i18n-support/test/shared.js +++ b/test/integration/i18n-support/test/shared.js @@ -395,6 +395,49 @@ export function runTests(ctx) { } }) + // The page is accessible on subpath as well as on the domain url without subpath. + // Once this is not the case the test will need to be changed to access it via domain. + // Beware of the different expectations on dev and prod version since the pre-rendering on dev does not work with domain locales + it('should prerender with the correct href for locale domain', async () => { + let browser = await webdriver(ctx.appPort, `${ctx.basePath || ''}/go`) + + for (const [element, pathname] of [ + ['#to-another', '/another'], + ['#to-gsp', '/gsp'], + ['#to-fallback-first', '/gsp/fallback/first'], + ['#to-fallback-hello', '/gsp/fallback/hello'], + ['#to-gssp', '/gssp'], + ['#to-gssp-slug', '/gssp/first'], + ]) { + const href = await browser.elementByCss(element).getAttribute('href') + if (ctx.isDev) { + expect(href).toBe(`${ctx.basePath || ''}/go${pathname}`) + } else { + expect(href).toBe(`https://example.com${ctx.basePath || ''}${pathname}`) + } + } + + browser = await webdriver(ctx.appPort, `${ctx.basePath || ''}/go-BE`) + + for (const [element, pathname] of [ + ['#to-another', '/another'], + ['#to-gsp', '/gsp'], + ['#to-fallback-first', '/gsp/fallback/first'], + ['#to-fallback-hello', '/gsp/fallback/hello'], + ['#to-gssp', '/gssp'], + ['#to-gssp-slug', '/gssp/first'], + ]) { + const href = await browser.elementByCss(element).getAttribute('href') + if (ctx.isDev) { + expect(href).toBe(`${ctx.basePath || ''}/go-BE${pathname}`) + } else { + expect(href).toBe( + `https://example.com${ctx.basePath || ''}/go-BE${pathname}` + ) + } + } + }) + it('should render the correct href with locale domains but not on a locale domain', async () => { let browser = await webdriver( ctx.appPort,