import { sandbox } from 'development-sandbox' import { FileRef, nextTestSetup } from 'e2e-utils' import path from 'path' import { outdent } from 'outdent' // TODO: re-enable these tests after figuring out what is causing // them to be so unreliable in CI describe.skip('ReactRefreshLogBox app', () => { const { next } = nextTestSetup({ files: new FileRef(path.join(__dirname, 'fixtures', 'default-template')), dependencies: { react: 'latest', 'react-dom': 'latest', }, skipStart: true, }) test(' with multiple children', async () => { const { session, cleanup } = await sandbox(next) await session.patch( 'index.js', outdent` import Link from 'next/link' export default function Index() { return (

One

Two

) } ` ) expect(await session.hasRedbox(true)).toBe(true) expect(await session.getRedboxDescription()).toMatchInlineSnapshot( `"Error: Multiple children were passed to with \`href\` of \`/\` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children"` ) expect( await session.evaluate( () => ( document .querySelector('body > nextjs-portal') .shadowRoot.querySelector( '#nextjs__container_errors_desc a:nth-of-type(1)' ) as any ).href ) ).toMatch('https://nextjs.org/docs/messages/link-multiple-children') await cleanup() }) test(' component props errors', async () => { const { session, cleanup } = await sandbox(next) await session.patch( 'index.js', outdent` import Link from 'next/link' export default function Hello() { return } ` ) expect(await session.hasRedbox(true)).toBe(true) expect(await session.getRedboxDescription()).toMatchInlineSnapshot( `"Error: Failed prop type: The prop \`href\` expects a \`string\` or \`object\` in \`\`, but got \`undefined\` instead."` ) await session.patch( 'index.js', outdent` import Link from 'next/link' export default function Hello() { return Abc } ` ) expect(await session.hasRedbox(false)).toBe(false) await session.patch( 'index.js', outdent` import Link from 'next/link' export default function Hello() { return ( Abc ) } ` ) expect(await session.hasRedbox(false)).toBe(false) await session.patch( 'index.js', outdent` import Link from 'next/link' export default function Hello() { return ( Abc ) } ` ) expect(await session.hasRedbox(false)).toBe(false) await session.patch( 'index.js', outdent` import Link from 'next/link' export default function Hello() { return ( Abc ) } ` ) expect(await session.hasRedbox(false)).toBe(false) await session.patch( 'index.js', outdent` import Link from 'next/link' export default function Hello() { return ( Abc ) } ` ) expect(await session.hasRedbox(true)).toBe(true) expect(await session.getRedboxDescription()).toMatchSnapshot() await session.patch( 'index.js', outdent` import Link from 'next/link' export default function Hello() { return ( Abc ) } ` ) expect(await session.hasRedbox(true)).toBe(true) expect(await session.getRedboxDescription()).toMatchSnapshot() await cleanup() }) test('server-side only compilation errors', async () => { const { session, cleanup } = await sandbox(next) await session.patch( 'app/page.js', outdent` 'use client' import myLibrary from 'my-non-existent-library' export async function getStaticProps() { return { props: { result: myLibrary() } } } export default function Hello(props) { return

{props.result}

} ` ) expect(await session.hasRedbox(true)).toBe(true) await cleanup() }) })