diff --git a/test/integration/preload-viewport/pages/not-de-duped.js b/test/integration/preload-viewport/pages/not-de-duped.js new file mode 100644 index 000000000000..c8b164baeb8f --- /dev/null +++ b/test/integration/preload-viewport/pages/not-de-duped.js @@ -0,0 +1,11 @@ +import Link from 'next/link' + +export default () => { + return ( +

+ + to /first + +

+ ) +} diff --git a/test/integration/preload-viewport/test/index.test.js b/test/integration/preload-viewport/test/index.test.js index 0df30ea2464f..25f40cb72595 100644 --- a/test/integration/preload-viewport/test/index.test.js +++ b/test/integration/preload-viewport/test/index.test.js @@ -228,4 +228,20 @@ describe('Prefetching Links in viewport', () => { const calledPrefetch = await browser.eval(`window.calledPrefetch`) expect(calledPrefetch).toBe(false) }) + + it('should prefetch with a different asPath for a prefetched page', async () => { + // info: both `/` and `/not-de-duped` ref the `/first` page, which we want + // to see prefetched twice. + const browser = await webdriver(appPort, '/') + await browser.eval(`(function() { + window.calledPrefetch = false + window.next.router.prefetch = function() { + window.calledPrefetch = true + } + window.next.router.push('/not-de-duped') + })()`) + await waitFor(2 * 1000) + const calledPrefetch = await browser.eval(`window.calledPrefetch`) + expect(calledPrefetch).toBe(true) + }) })