From 5dbaa716721ba678360cf1c81e7110b7cfdf612d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Tue, 14 Apr 2026 15:10:21 +0200 Subject: [PATCH 1/2] [ADD] tooling: add type checking for test files Tests were never type-checked (tsconfig.json only includes src/). This adds a tsconfig.tests.json with vitest globals support, fixes 2 type errors in tests (untyped nextAppError return), and wires up a `test:types` script in CI. --- .github/workflows/deploy.yml | 1 + package.json | 1 + packages/owl/package.json | 3 ++- packages/owl/tests/helpers.ts | 6 +++--- packages/owl/tsconfig.tests.json | 13 +++++++++++++ 5 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 packages/owl/tsconfig.tests.json diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 95edb91c8..dde27a8ee 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -24,6 +24,7 @@ jobs: node-version: ${{ matrix.node-version }} - run: npm ci - run: npm run test + - run: npm run test:types - run: npm run check-formatting - run: npm run lint - run: npm run build diff --git a/package.json b/package.json index 00153a688..c2d34c73d 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "build:devtools-chrome": "node tools/devtools/build.mjs --browser=chrome --env=production", "build:devtools-firefox": "node tools/devtools/build.mjs --browser=firefox --env=production", "test": "npm run test -w packages/owl", + "test:types": "npm run test:types -w packages/owl", "test:doc-links": "vitest run --config tools/vitest.config.ts", "build:playground": "npm run build -w tools/playground", "build:site": "npm run build && npm run build:playground && node tools/site/assemble.mjs", diff --git a/packages/owl/package.json b/packages/owl/package.json index 5a6361816..a9275ba98 100644 --- a/packages/owl/package.json +++ b/packages/owl/package.json @@ -29,7 +29,8 @@ "build": "npm run build:bundle", "build:types": "node build.mjs types", "test": "vitest run", - "test:watch": "vitest" + "test:watch": "vitest", + "test:types": "tsc --project tsconfig.tests.json" }, "repository": { "type": "git", diff --git a/packages/owl/tests/helpers.ts b/packages/owl/tests/helpers.ts index e93f7d255..bba5deac0 100644 --- a/packages/owl/tests/helpers.ts +++ b/packages/owl/tests/helpers.ts @@ -277,9 +277,9 @@ expect.extend({ }, }); -export function nextAppError(app: any) { - let resolve: (value: any) => void; - const result = new Promise((res) => (resolve = res)); +export function nextAppError(app: any): Promise { + let resolve: (value: Error) => void; + const result = new Promise((res) => (resolve = res)); const original = app._handleError; app._handleError = (error: any) => { diff --git a/packages/owl/tsconfig.tests.json b/packages/owl/tsconfig.tests.json new file mode 100644 index 000000000..f54f6ba90 --- /dev/null +++ b/packages/owl/tsconfig.tests.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.base.json", + "include": [ + "src/**/*.ts", + "tests/**/*.ts" + ], + "compilerOptions": { + "noEmit": true, + "module": "ESNext", + "moduleResolution": "bundler", + "types": ["node", "vitest/globals"] + } +} From cfb1430e74a5d381f3dcbb80489b49d7599d78c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Tue, 14 Apr 2026 15:14:36 +0200 Subject: [PATCH 2/2] [REF] tooling: make tsconfig.json cover tests for editor support Rename the build-only tsconfig to tsconfig.build.json and make tsconfig.json the editor/check config (src + tests + vitest globals). This fixes vitest globals (expect, test, describe, ...) showing as errors in editors. --- packages/owl/build.mjs | 2 +- packages/owl/package.json | 2 +- packages/owl/tsconfig.build.json | 11 +++++++++++ packages/owl/tsconfig.json | 8 +++++--- packages/owl/tsconfig.tests.json | 13 ------------- 5 files changed, 18 insertions(+), 18 deletions(-) create mode 100644 packages/owl/tsconfig.build.json delete mode 100644 packages/owl/tsconfig.tests.json diff --git a/packages/owl/build.mjs b/packages/owl/build.mjs index ffb1ca50c..c1588f645 100644 --- a/packages/owl/build.mjs +++ b/packages/owl/build.mjs @@ -72,7 +72,7 @@ async function buildCompiler() { function buildTypes() { mkdirSync("dist/types", { recursive: true }); execSync( - "npx dts-bundle-generator --project tsconfig.json -o dist/types/owl.d.ts src/index.ts --no-banner", + "npx dts-bundle-generator --project tsconfig.build.json -o dist/types/owl.d.ts src/index.ts --no-banner", { stdio: "inherit" } ); } diff --git a/packages/owl/package.json b/packages/owl/package.json index a9275ba98..e3b2d52b0 100644 --- a/packages/owl/package.json +++ b/packages/owl/package.json @@ -30,7 +30,7 @@ "build:types": "node build.mjs types", "test": "vitest run", "test:watch": "vitest", - "test:types": "tsc --project tsconfig.tests.json" + "test:types": "tsc" }, "repository": { "type": "git", diff --git a/packages/owl/tsconfig.build.json b/packages/owl/tsconfig.build.json new file mode 100644 index 000000000..d826016af --- /dev/null +++ b/packages/owl/tsconfig.build.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.base.json", + "include": [ + "src/**/*.ts", + "src/*.ts" + ], + "compilerOptions": { + "outDir": "dist", + "declarationDir": "dist/types" + } +} diff --git a/packages/owl/tsconfig.json b/packages/owl/tsconfig.json index d826016af..f54f6ba90 100644 --- a/packages/owl/tsconfig.json +++ b/packages/owl/tsconfig.json @@ -2,10 +2,12 @@ "extends": "../../tsconfig.base.json", "include": [ "src/**/*.ts", - "src/*.ts" + "tests/**/*.ts" ], "compilerOptions": { - "outDir": "dist", - "declarationDir": "dist/types" + "noEmit": true, + "module": "ESNext", + "moduleResolution": "bundler", + "types": ["node", "vitest/globals"] } } diff --git a/packages/owl/tsconfig.tests.json b/packages/owl/tsconfig.tests.json deleted file mode 100644 index f54f6ba90..000000000 --- a/packages/owl/tsconfig.tests.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "include": [ - "src/**/*.ts", - "tests/**/*.ts" - ], - "compilerOptions": { - "noEmit": true, - "module": "ESNext", - "moduleResolution": "bundler", - "types": ["node", "vitest/globals"] - } -}