Skip to content

client-v3: tsconfig.e2e.json fails with TS5107 (moduleResolution node10 deprecated) and E2E TypeScript is never type-checked #1452

Closed

Description

@Tim020

Summary

client-v3/tsconfig.e2e.json no longer type-checks under TypeScript 6. Running it fails straight away with:

$ pnpm exec tsc --noEmit -p tsconfig.e2e.json
error TS5107: Option 'moduleResolution=node10' is deprecated…

Nothing runs this config, neither a package script nor CI, so the Playwright E2E TypeScript (e2e/**/*.ts, playwright.config.ts) is currently never type-checked. The suite still runs because Playwright compiles the tests without type-checking them, so type errors in E2E code go unnoticed.

Reproduced on dev at 84e6493. Neither tsconfig.e2e.json nor tsconfig.json has changed since, so it still applies on the current dev (d9718b8). It was spotted by the automated review on #1427 and predates that PR.

Details

client-v3/tsconfig.e2e.json (unchanged since #1084):

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "moduleResolution": "node",
    "module": "CommonJS",
    "types": ["node", "@playwright/test"],
    "noEmit": true
  },
  "include": ["e2e/**/*.ts", "playwright.config.ts"]
}
  • "moduleResolution": "node" is the legacy node10 mode, which TypeScript 6 deprecates; client-v3 is on typescript ^6.0.3.
  • The base tsconfig.json uses "module": "ESNext" and "moduleResolution": "bundler", and its include covers only src/**.
  • The typecheck script is tsc --noEmit -p tsconfig.json, and CI (nodelint.yml → run-typecheck-client-v3) runs only that.
  • git grep tsconfig.e2e finds no references in scripts or workflows.

Suggested fix

  1. Update tsconfig.e2e.json to supported settings. Likely options:

    • drop the overrides and inherit ESNext / bundler from the base, or
    • use "module": "NodeNext" and "moduleResolution": "NodeNext", matching how Playwright loads the files.

    Avoid ignoreDeprecations unless it's just a stopgap.

  2. Run pnpm exec tsc --noEmit -p tsconfig.e2e.json and fix any real type errors it exposes in e2e/. It hasn't been running, so some may have built up.

  3. Wire it in so it can't silently rot again. For example, extend the typecheck script (tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.e2e.json) or add a typecheck:e2e script and run it in nodelint.yml.

  4. Check the legacy client/ for an equivalent E2E/test tsconfig with the same deprecated setting.

Activity

  1. Tim020 commented on Oct 19, 2026

    @Tim020
    ContributorAuthor

    Fixed in #1453 (merged to dev).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    claudeIssues created by Claude

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions