diff --git a/test/integration/prerender/pages/catchall/[...slug].js b/test/integration/prerender/pages/catchall/[...slug].js index c2ff67739caf080..b0010c612446468 100644 --- a/test/integration/prerender/pages/catchall/[...slug].js +++ b/test/integration/prerender/pages/catchall/[...slug].js @@ -29,5 +29,5 @@ export default ({ slug }) => { if (isFallback) { return

fallback

} - return

Hi {slug.join('/')}

+ return

Hi {slug.join(' ')}

} diff --git a/test/integration/prerender/test/index.test.js b/test/integration/prerender/test/index.test.js index fb8911574e0633a..5d16451c997d38f 100644 --- a/test/integration/prerender/test/index.test.js +++ b/test/integration/prerender/test/index.test.js @@ -1,26 +1,27 @@ /* eslint-env jest */ /* global jasmine */ -import fs from 'fs-extra' -import { join, dirname } from 'path' import cheerio from 'cheerio' -import webdriver from 'next-webdriver' import escapeRegex from 'escape-string-regexp' +import fs from 'fs-extra' import { - renderViaHTTP, + check, fetchViaHTTP, findPort, - launchApp, + getReactErrorOverlayContent, + initNextServerScript, killApp, - waitFor, + launchApp, nextBuild, - nextStart, - stopApp, nextExport, + nextStart, normalizeRegEx, + renderViaHTTP, startStaticServer, - initNextServerScript, - getReactErrorOverlayContent, + stopApp, + waitFor, } from 'next-test-utils' +import webdriver from 'next-webdriver' +import { dirname, join } from 'path' jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000 * 60 * 2 const appDir = join(__dirname, '..') @@ -376,7 +377,7 @@ const runTests = (dev = false, looseMode = false) => { .text() ).isFallback ).toBe(false) - expect($('#catchall').text()).toMatch(/Hi.*?another\/value/) + expect($('#catchall').text()).toMatch(/Hi.*?another value/) }) it('should support lazy catchall route', async () => { @@ -398,10 +399,42 @@ const runTests = (dev = false, looseMode = false) => { const text1 = await browser.elementByCss('#catchall').text() expect(text1).toBe('fallback') - await new Promise(resolve => setTimeout(resolve, 4000)) + await check( + () => browser.elementByCss('#catchall').text(), + /Hi.*?delayby3s/ + ) + } + }) + + it('should support nested lazy catchall route', async () => { + // Dev doesn't support fallback yet + if (dev) { + const html = await renderViaHTTP( + appPort, + '/catchall/notreturnedinpaths/nested' + ) + const $ = cheerio.load(html) + expect($('#catchall').text()).toMatch(/Hi.*?notreturnedinpaths nested/) + } + // Production will render fallback for a "lazy" route + else { + const html = await renderViaHTTP( + appPort, + '/catchall/notreturnedinpaths/nested' + ) + const $ = cheerio.load(html) + expect($('#catchall').text()).toBe('fallback') + + // hydration + const browser = await webdriver(appPort, '/catchall/delayby3s/nested') - const text2 = await browser.elementByCss('#catchall').text() - expect(text2).toMatch(/Hi.*?delayby3s/) + const text1 = await browser.elementByCss('#catchall').text() + expect(text1).toBe('fallback') + + await check( + () => browser.elementByCss('#catchall').text(), + /Hi.*?delayby3s nested/ + ) } })