/* eslint-env jest */ import { isNextStart, nextTestSetup } from 'e2e-utils' import { waitForRedbox, getRedboxSource } from 'next-test-utils' // Importing module CSS in _document is allowed in Turbopack ;(process.env.IS_TURBOPACK_TEST ? describe.skip : describe)( 'Invalid SCSS in _document', () => { const { next, skipped, isRspack } = nextTestSetup({ files: __dirname, skipStart: isNextStart, skipDeployment: true, dependencies: { sass: '1.54.0' }, }) if (skipped) { return } if (isNextStart) { it('should fail to build', async () => { const { exitCode, cliOutput } = await next.build() expect(exitCode).not.toBe(0) expect(cliOutput).toContain('Failed to compile') expect(cliOutput).toContain('styles.module.scss') expect(cliOutput).toMatch( /CSS.*cannot.*be imported within.*pages[\\/]_document\.js/ ) // Skip: Rspack loaders cannot access module issuer info for location details if (!process.env.NEXT_RSPACK) { expect(cliOutput).toMatch(/Location:.*pages[\\/]_document\.js/) } }) } else { it('should show a build error', async () => { const browser = await next.browser('/') await waitForRedbox(browser) const errorSource = await getRedboxSource(browser) if (isRspack) { expect(errorSource).toMatchInlineSnapshot(` "./styles.module.scss │ CSS cannot be imported within pages/_document.js. Please move global styles to pages/_app.js." `) } else { expect(errorSource).toMatchInlineSnapshot(` "./styles.module.scss CSS cannot be imported within pages/_document.js. Please move global styles to pages/_app.js. Location: pages/_document.js" `) } }) } } )