Some checks failed
Test examples / Test Examples (20) (push) Has been cancelled
Test examples / Test Examples (22) (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Trigger Release / start (push) Has been cancelled
Stale issue handler / stale (push) Has been cancelled
Update Font Data / create-pull-request (push) Has been cancelled
build-and-deploy / deploy-target (push) Has been cancelled
build-and-deploy / build (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / build-wasm (nodejs) (push) Has been cancelled
build-and-deploy / build-wasm (web) (push) Has been cancelled
build-and-deploy / Deploy preview tarball (push) Has been cancelled
build-and-deploy / Potentially publish release (push) Has been cancelled
build-and-deploy / publish-turbopack-npm-packages (push) Has been cancelled
build-and-deploy / Deploy examples (push) Has been cancelled
build-and-deploy / thank you, build (push) Has been cancelled
build-and-deploy / Upload Turbopack Bytesize metrics to Datadog (push) Has been cancelled
Rspack Next.js development integration tests / Rspack integration tests (push) Has been cancelled
Rspack Next.js production integration tests / Rspack integration tests (push) Has been cancelled
Turbopack Next.js development integration tests / Next.js integration tests (push) Has been cancelled
Turbopack Next.js production integration tests / Next.js integration tests (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack development test manifest (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack production test manifest (push) Has been cancelled
Upload bundler test manifests to areweturboyet.com / Upload test results (push) Has been cancelled
Update React / create-pull-request (push) Has been cancelled
test-e2e-project-reset-cron / reset-test-project (push) Has been cancelled
Notify about the top 15 issues/PRs/feature requests (most reacted) in the last 90 days / run (push) Has been cancelled
311 lines
9.2 KiB
TypeScript
311 lines
9.2 KiB
TypeScript
import { createSandbox } from 'development-sandbox'
|
||
import { FileRef, nextTestSetup } from 'e2e-utils'
|
||
import path from 'path'
|
||
import { outdent } from 'outdent'
|
||
|
||
describe('ReactRefreshLogBox-builtins app', () => {
|
||
const { isTurbopack, next, isRspack } = nextTestSetup({
|
||
files: new FileRef(path.join(__dirname, 'fixtures', 'default-template')),
|
||
skipStart: true,
|
||
})
|
||
|
||
// Module trace is only available with webpack 5
|
||
test('Node.js builtins', async () => {
|
||
await using sandbox = await createSandbox(
|
||
next,
|
||
new Map([
|
||
[
|
||
'node_modules/my-package/index.js',
|
||
outdent`
|
||
const dns = require('dns')
|
||
module.exports = dns
|
||
`,
|
||
],
|
||
[
|
||
'node_modules/my-package/package.json',
|
||
outdent`
|
||
{
|
||
"name": "my-package",
|
||
"version": "0.0.1"
|
||
}
|
||
`,
|
||
],
|
||
])
|
||
)
|
||
|
||
const { browser, session } = sandbox
|
||
|
||
await session.patch(
|
||
'index.js',
|
||
outdent`
|
||
import pkg from 'my-package'
|
||
|
||
export default function Hello() {
|
||
return (pkg ? <h1>Package loaded</h1> : <h1>Package did not load</h1>)
|
||
}
|
||
`
|
||
)
|
||
if (isTurbopack) {
|
||
await expect(browser).toDisplayRedbox(`
|
||
{
|
||
"description": "Module not found: Can't resolve 'dns'",
|
||
"environmentLabel": null,
|
||
"label": "Build Error",
|
||
"source": "./node_modules/my-package/index.js (1:13)
|
||
Module not found: Can't resolve 'dns'
|
||
> 1 | const dns = require('dns')
|
||
| ^^^^^^^^^^^^^^",
|
||
"stack": [],
|
||
}
|
||
`)
|
||
} else if (isRspack) {
|
||
await expect({ browser, next }).toDisplayRedbox(`
|
||
{
|
||
"description": " × Module not found: Can't resolve 'dns' in '<FIXME-project-root>/node_modules/my-package'",
|
||
"environmentLabel": null,
|
||
"label": "Build Error",
|
||
"source": "./node_modules/my-package/index.js
|
||
× Module not found: Can't resolve 'dns' in '<FIXME-project-root>/node_modules/my-package'
|
||
╭─[1:12]
|
||
1 │ const dns = require('dns')
|
||
· ──────────────
|
||
2 │ module.exports = dns
|
||
╰────
|
||
Import trace for requested module:
|
||
./node_modules/my-package/index.js
|
||
./index.js
|
||
./app/page.js",
|
||
"stack": [],
|
||
}
|
||
`)
|
||
} else {
|
||
await expect(browser).toDisplayRedbox(`
|
||
{
|
||
"description": "Module not found: Can't resolve 'dns'",
|
||
"environmentLabel": null,
|
||
"label": "Build Error",
|
||
"source": "./node_modules/my-package/index.js (1:1)
|
||
Module not found: Can't resolve 'dns'
|
||
> 1 | const dns = require('dns')
|
||
| ^",
|
||
"stack": [],
|
||
}
|
||
`)
|
||
}
|
||
})
|
||
|
||
test('Module not found', async () => {
|
||
await using sandbox = await createSandbox(next)
|
||
const { browser, session } = sandbox
|
||
|
||
await session.patch(
|
||
'index.js',
|
||
outdent`
|
||
import Comp from 'b'
|
||
export default function Oops() {
|
||
return (
|
||
<div>
|
||
<Comp>lol</Comp>
|
||
</div>
|
||
)
|
||
}
|
||
`
|
||
)
|
||
|
||
if (isTurbopack) {
|
||
await expect(browser).toDisplayRedbox(`
|
||
{
|
||
"description": "Module not found: Can't resolve 'b'",
|
||
"environmentLabel": null,
|
||
"label": "Build Error",
|
||
"source": "./index.js (1:1)
|
||
Module not found: Can't resolve 'b'
|
||
> 1 | import Comp from 'b'
|
||
| ^^^^^^^^^^^^^^^^^^^^",
|
||
"stack": [],
|
||
}
|
||
`)
|
||
} else if (isRspack) {
|
||
await expect({ browser, next }).toDisplayRedbox(`
|
||
{
|
||
"description": " × Module not found: Can't resolve 'b' in '<FIXME-project-root>'",
|
||
"environmentLabel": null,
|
||
"label": "Build Error",
|
||
"source": "./index.js
|
||
× Module not found: Can't resolve 'b' in '<FIXME-project-root>'
|
||
╭─[2:0]
|
||
1 │ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
|
||
2 │ import Comp from 'b';
|
||
· ─────────────────────
|
||
3 │ export default function Oops() {
|
||
4 │ return /*#__PURE__*/ _jsxDEV("div", {
|
||
╰────
|
||
Import trace for requested module:
|
||
./index.js
|
||
./app/page.js",
|
||
"stack": [],
|
||
}
|
||
`)
|
||
} else {
|
||
await expect(browser).toDisplayRedbox(`
|
||
{
|
||
"description": "Module not found: Can't resolve 'b'",
|
||
"environmentLabel": null,
|
||
"label": "Build Error",
|
||
"source": "./index.js (1:1)
|
||
Module not found: Can't resolve 'b'
|
||
> 1 | import Comp from 'b'
|
||
| ^",
|
||
"stack": [],
|
||
}
|
||
`)
|
||
}
|
||
})
|
||
|
||
test('Module not found empty import trace', async () => {
|
||
await using sandbox = await createSandbox(next)
|
||
const { browser, session } = sandbox
|
||
|
||
await session.patch(
|
||
'app/page.js',
|
||
outdent`
|
||
'use client'
|
||
import Comp from 'b'
|
||
export default function Oops() {
|
||
return (
|
||
<div>
|
||
<Comp>lol</Comp>
|
||
</div>
|
||
)
|
||
}
|
||
`
|
||
)
|
||
|
||
if (isTurbopack) {
|
||
await expect(browser).toDisplayRedbox(`
|
||
{
|
||
"description": "Module not found: Can't resolve 'b'",
|
||
"environmentLabel": null,
|
||
"label": "Build Error",
|
||
"source": "./app/page.js (2:1)
|
||
Module not found: Can't resolve 'b'
|
||
> 2 | import Comp from 'b'
|
||
| ^^^^^^^^^^^^^^^^^^^^",
|
||
"stack": [],
|
||
}
|
||
`)
|
||
} else if (isRspack) {
|
||
await expect({ browser, next }).toDisplayRedbox(`
|
||
{
|
||
"description": " × Module not found: Can't resolve 'b' in '<FIXME-project-root>/app'",
|
||
"environmentLabel": null,
|
||
"label": "Build Error",
|
||
"source": "./app/page.js
|
||
× Module not found: Can't resolve 'b' in '<FIXME-project-root>/app'
|
||
╭─[2:0]
|
||
1 │ /* __next_internal_client_entry_do_not_use__ default auto */ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
|
||
2 │ import Comp from 'b';
|
||
· ─────────────────────
|
||
3 │ export default function Oops() {
|
||
4 │ return /*#__PURE__*/ _jsxDEV("div", {
|
||
╰────
|
||
Import trace for requested module:
|
||
./app/page.js",
|
||
"stack": [],
|
||
}
|
||
`)
|
||
} else {
|
||
await expect(browser).toDisplayRedbox(`
|
||
{
|
||
"description": "Module not found: Can't resolve 'b'",
|
||
"environmentLabel": null,
|
||
"label": "Build Error",
|
||
"source": "./app/page.js (2:1)
|
||
Module not found: Can't resolve 'b'
|
||
> 2 | import Comp from 'b'
|
||
| ^",
|
||
"stack": [],
|
||
}
|
||
`)
|
||
}
|
||
})
|
||
|
||
test('Module not found missing global CSS', async () => {
|
||
await using sandbox = await createSandbox(
|
||
next,
|
||
new Map([
|
||
[
|
||
'app/page.js',
|
||
outdent`
|
||
'use client'
|
||
import './non-existent.css'
|
||
export default function Page(props) {
|
||
return <p>index page</p>
|
||
}
|
||
`,
|
||
],
|
||
])
|
||
)
|
||
const { browser, session } = sandbox
|
||
if (isTurbopack) {
|
||
await expect(browser).toDisplayRedbox(`
|
||
{
|
||
"description": "Module not found: Can't resolve './non-existent.css'",
|
||
"environmentLabel": null,
|
||
"label": "Build Error",
|
||
"source": "./app/page.js (2:1)
|
||
Module not found: Can't resolve './non-existent.css'
|
||
> 2 | import './non-existent.css'
|
||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^",
|
||
"stack": [],
|
||
}
|
||
`)
|
||
} else if (isRspack) {
|
||
await expect({ browser, next }).toDisplayRedbox(`
|
||
{
|
||
"description": " × Module not found: Can't resolve './non-existent.css' in '<FIXME-project-root>/app'",
|
||
"environmentLabel": null,
|
||
"label": "Build Error",
|
||
"source": "./app/page.js
|
||
× Module not found: Can't resolve './non-existent.css' in '<FIXME-project-root>/app'
|
||
╭─[2:0]
|
||
1 │ /* __next_internal_client_entry_do_not_use__ default auto */ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
|
||
2 │ import './non-existent.css';
|
||
· ────────────────────────────
|
||
3 │ export default function Page(props) {
|
||
4 │ return /*#__PURE__*/ _jsxDEV("p", {
|
||
╰────",
|
||
"stack": [],
|
||
}
|
||
`)
|
||
} else {
|
||
await expect(browser).toDisplayRedbox(`
|
||
{
|
||
"description": "Module not found: Can't resolve './non-existent.css'",
|
||
"environmentLabel": null,
|
||
"label": "Build Error",
|
||
"source": "./app/page.js (2:1)
|
||
Module not found: Can't resolve './non-existent.css'
|
||
> 2 | import './non-existent.css'
|
||
| ^",
|
||
"stack": [],
|
||
}
|
||
`)
|
||
}
|
||
|
||
await session.patch(
|
||
'app/page.js',
|
||
outdent`
|
||
'use client'
|
||
export default function Page(props) {
|
||
return <p>index page</p>
|
||
}
|
||
`
|
||
)
|
||
await session.waitForNoRedbox()
|
||
expect(
|
||
await session.evaluate(() => document.documentElement.innerHTML)
|
||
).toContain('index page')
|
||
})
|
||
})
|