import { nextTestSetup } from 'e2e-utils' import { waitForNoRedbox } from 'next-test-utils' describe('global-not-found - basic', () => { const { next, isNextDev } = nextTestSetup({ files: __dirname, }) it('should render global-not-found for 404', async () => { const browser = await next.browser('/does-not-exist') if (isNextDev) { await waitForNoRedbox(browser) } const errorTitle = await browser.elementByCss('#global-error-title').text() expect(errorTitle).toBe('global-not-found') const notFoundHtmlProp = await browser .elementByCss('html') .getAttribute('data-global-not-found') expect(notFoundHtmlProp).toBe('true') }) it('should ssr global-not-found for 404', async () => { const $ = await next.render$('/does-not-exist') const errorTitle = $('#global-error-title').text() expect(errorTitle).toBe('global-not-found') const notFoundHtmlProp = $('html').attr('data-global-not-found') expect(notFoundHtmlProp).toBe('true') }) it('should render not-found boundary when calling notFound() in a page', async () => { const browser = await next.browser('/call-not-found') // Still using the root layout expect( await browser.elementByCss('html').getAttribute('data-global-not-found') ).toBeNull() expect(await browser.elementByCss('html').getAttribute('lang')).toBe('en') // There's no not-found boundary in the root layout, show the default not-found.js expect(await browser.elementByCss('body').text()).toBe( '404\nThis page could not be found.' ) }) })