===== 1. unit suite with the fix (npx vitest run) =====  Test Files  76 passed (76)  Tests  444 passed (444) ===== 2. chromium suite with the fix (CI=1 npx playwright test) ===== [1/6] [chromium] › e2e/browser-compatibility.e2e.ts:61:1 › Should detect nx on the root [2/6] [chromium] › e2e/browser-compatibility.e2e.ts:77:1 › Should detect the package manager [3/6] [chromium] › e2e/browser-compatibility.e2e.ts:86:1 › Should detect js workspaces [4/6] [chromium] › e2e/next-settings.e2e.ts:27:3 › detects Next.js build settings with NETLIFY_NEXT_PLUGIN_SKIP=undefined [5/6] [chromium] › e2e/next-settings.e2e.ts:27:3 › detects Next.js build settings with NETLIFY_NEXT_PLUGIN_SKIP= [6/6] [chromium] › e2e/next-settings.e2e.ts:27:3 › detects Next.js build settings with NETLIFY_NEXT_PLUGIN_SKIP=true 6 passed (2.9s) ===== 3. new unit tests against unpatched file-system.ts and next.ts ===== ⎯⎯⎯⎯⎯⎯⎯ Failed Tests 8 ⎯⎯⎯⎯⎯⎯⎯ AssertionError: expected '/repo/repo/app' to be '/repo/app' // Object.is equality AssertionError: expected '/repo/other/app' to be '/other/app' // Object.is equality AssertionError: expected '/repo/app/other' to be '/other' // Object.is equality AssertionError: expected '/repo/ignored/app' to be '/app' // Object.is equality AssertionError: expected '/repo/app/' to be '/repo/app' // Object.is equality AssertionError: expected '/repo/repo/app' to be '/repo/app' // Object.is equality AssertionError: expected [] to deeply equal [ '@netlify/plugin-nextjs' ]  Test Files  2 failed (2)  Tests  8 failed | 17 passed (25) ===== 4. new chromium tests against unpatched code ===== 3 failed ===== 5. fix restored: typecheck, lint, format ===== tsc --project tsconfig.build.json: exit 0 Checking formatting... eslint: exit 0 ===== 6. pre-existing failures on unchanged main (tsconfig.test.json) ===== src/build-systems/vite-plus.test.ts(156,16): error TS2722: Cannot invoke an object which is possibly 'undefined'. src/build-systems/vite-plus.test.ts(170,16): error TS2722: Cannot invoke an object which is possibly 'undefined'. src/project.test.ts(36,65): error TS2345: Argument of type '"" | SemVer' is not assignable to parameter of type 'object | any[]'. Type 'string' is not assignable to type 'object | any[]'. ===== 7. diff against main ===== packages/build-info/e2e/next-settings.e2e.ts | 44 +++++++++++++++++++++++++ packages/build-info/src/browser/file-system.ts | 7 ++-- packages/build-info/src/browser/resolve.test.ts | 38 +++++++++++++++++++++ packages/build-info/src/frameworks/next.test.ts | 10 +++++- packages/build-info/src/frameworks/next.ts | 2 +- 5 files changed, 97 insertions(+), 4 deletions(-) ===== 8. mutation check on the skip condition ===== With `getEnv('NETLIFY_NEXT_PLUGIN_SKIP') === undefined` in place of the truthiness check, the whole unit suite still passes (444) while the browser case for an empty value fails: [chromium] detects Next.js build settings with NETLIFY_NEXT_PLUGIN_SKIP= -> 1 failed That case is why the empty-value variant stays in the browser suite.