next.js/test/e2e/app-dir/scss/npm-import-bad/npm-import-bad.test.ts
npm-import-bad.test.ts73 lines3.0 KB
/* eslint-env jest */

import { isNextStart, nextTestSetup } from 'e2e-utils'
import { waitForRedbox, getRedboxSource } from 'next-test-utils'

describe('CSS Import from node_modules', () => {
  const { next, skipped, isTurbopack, isRspack } = nextTestSetup({
    files: __dirname,
    skipStart: isNextStart,
    skipDeployment: true,
    dependencies: { sass: '1.54.0' },
  })

  if (skipped) {
    return
  }

  if (isNextStart) {
    it('should fail the build', async () => {
      const { exitCode, cliOutput } = await next.build()
      expect(exitCode).not.toBe(0)
      if (isRspack) {
        expect(cliOutput).toMatch(
          /RspackResolver\(NotFound\(\\?"nprogress\/nprogress.css\\?"\)\)/
        )
      } else {
        expect(cliOutput).toMatch(/Can't resolve '[^']*?nprogress[^']*?'/)
      }
      expect(cliOutput).toMatch(/Build failed|Build error occurred/)
    })
  } else {
    it('should show a build error', async () => {
      const browser = await next.browser('/')

      await waitForRedbox(browser)
      const errorSource = await getRedboxSource(browser)

      if (isTurbopack) {
        expect(errorSource).toMatchInlineSnapshot(`
         "./styles/global.scss.css (1:9)
         Module not found: Can't resolve 'nprogress/nprogress.css'
         > 1 | @import 'nprogress/nprogress.css';
             |         ^
           2 |

         Import trace:
           Browser:
             ./styles/global.scss.css
             ./pages/_app.js

         https://nextjs.org/docs/messages/module-not-found"
        `)
      } else if (isRspack) {
        expect(errorSource).toMatchInlineSnapshot(`
         "./node_modules/.pnpm/next@file+..+next-repo-8fa5cfcca6029b56fbac0f566cc3851341e4c064ae33fb2a225547c1fab39f23+packa_apujtevk23v6mt6lxsvypt6azu/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[9].oneOf[14].use[1]!./node_modules/.pnpm/next@file+..+next-repo-8fa5cfcca6029b56fbac0f566cc3851341e4c064ae33fb2a225547c1fab39f23+packa_apujtevk23v6mt6lxsvypt6azu/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[9].oneOf[14].use[2]!./node_modules/.pnpm/next@file+..+next-repo-8fa5cfcca6029b56fbac0f566cc3851341e4c064ae33fb2a225547c1fab39f23+packa_apujtevk23v6mt6lxsvypt6azu/node_modules/next/dist/build/webpack/loaders/resolve-url-loader/index.js??ruleSet[1].rules[9].oneOf[14].use[3]!./node_modules/.pnpm/next@file+..+next-repo-8fa5cfcca6029b56fbac0f566cc3851341e4c064ae33fb2a225547c1fab39f23+packa_apujtevk23v6mt6lxsvypt6azu/node_modules/next/dist/compiled/sass-loader/cjs.js??ruleSet[1].rules[9].oneOf[14].use[4]!./styles/global.scss
           ╰─▶   × Error: RspackResolver(NotFound("nprogress/nprogress.css"))"
        `)
      } else {
        expect(errorSource).toMatchInlineSnapshot(`
         "./styles/global.scss
         Module not found: Can't resolve 'nprogress/nprogress.css'

         https://nextjs.org/docs/messages/module-not-found

         Import trace for requested module:
         ./styles/global.scss
         ./pages/_app.js"
        `)
      }
    })
  }
})
Quest for Codev2.0.0
/
SIGN IN