import { nextTestSetup } from 'e2e-utils' import webdriver from 'next-webdriver' describe('next-link', () => { const { skipped, next, isNextDev } = nextTestSetup({ files: __dirname, skipDeployment: true, }) if (skipped) return it('errors on invalid href', async () => { const browser = await webdriver(next.appPort, '/invalid-href') if (isNextDev) { await expect(browser).toDisplayRedbox(` { "code": "E319", "description": "Failed prop type: The prop \`href\` expects a \`string\` or \`object\` in \`\`, but got \`undefined\` instead. Open your browser's console to view the Component stack trace.", "environmentLabel": null, "label": "Runtime Error", "source": "app/invalid-href/page.js (6:10) @ Hello > 6 | return Hello, Dave! | ^", "stack": [ "Hello app/invalid-href/page.js (6:10)", ], } `) } // Client errors show "This page couldn\u2019t load" expect(await browser.elementByCss('body').text()).toContain( 'This page couldn\u2019t load' ) }) it('invalid `prefetch` causes runtime error (dev-only)', async () => { const browser = await webdriver(next.appPort, '/invalid-prefetch') if (isNextDev) { await expect(browser).toDisplayRedbox(` { "code": "E319", "description": "Failed prop type: The prop \`prefetch\` expects a \`boolean | "auto"\` in \`\`, but got \`string\` instead. Open your browser's console to view the Component stack trace.", "environmentLabel": null, "label": "Runtime Error", "source": "app/invalid-prefetch/page.js (7:5) @ Hello > 7 | | ^", "stack": [ "Hello app/invalid-prefetch/page.js (7:5)", ], } `) // Client errors show "This page couldn\u2019t load" expect(await browser.elementByCss('body').text()).toContain( 'This page couldn\u2019t load' ) } else { expect(await browser.elementByCss('body').text()).toMatchInlineSnapshot( `"Link with unknown \`prefetch\` renders in prod."` ) } }) })