From 4bc222bcaeab600bd4e86a70b330ac1a588ca098 Mon Sep 17 00:00:00 2001 From: Benny Powers Date: Tue, 2 Jun 2026 11:51:28 +0300 Subject: [PATCH] refactor(test-runner-commands): migrate tests from mocha to node:test Replace mocha globals with node:test across 10 test files. No chai was used -- tests rely on runTests throwing on failure. - Add `import { describe, it } from 'node:test'` (+ before/after where used) - `../../src/*.js` -> `../../dist/*.js` - `../selenium-server.js` -> `../selenium-server.ts` - `__dirname` -> `import.meta.dirname` - `this.timeout(N)` -> `{ timeout: N }` on describe - Add `--experimental-strip-types` for CI compat Assisted-By: Claude Opus 4.6 (1M context) --- packages/test-runner-commands/package.json | 4 ++-- .../a11y-snapshot/a11ySnapshotPlugin.test.ts | 11 +++++------ .../emulate-media/emulateMediaPlugin.test.ts | 17 ++++++++--------- .../executeServerCommand.test.ts | 7 +++---- .../test/file/filePlugin.test.ts | 9 ++++----- .../select-option/selectOptionPlugin.test.ts | 11 +++++------ .../test/send-keys/sendKeysPlugin.test.ts | 11 +++++------ .../test/send-mouse/sendMousePlugin.test.ts | 15 +++++++-------- .../set-user-agent/setUserAgentPlugin.test.ts | 9 ++++----- .../test/set-viewport/setViewportPlugin.test.ts | 11 +++++------ .../test/snapshot/snapshotPlugin.test.ts | 11 +++++------ 11 files changed, 53 insertions(+), 63 deletions(-) diff --git a/packages/test-runner-commands/package.json b/packages/test-runner-commands/package.json index a0ea656d47..d483a84eb0 100644 --- a/packages/test-runner-commands/package.json +++ b/packages/test-runner-commands/package.json @@ -30,8 +30,8 @@ }, "scripts": { "build": "tsc", - "test:node": "mocha test/**/*.test.ts --require ts-node/register --reporter dot", - "test:watch": "mocha test/**/*.test.ts --require ts-node/register --watch --watch-files src,test --watch-ignore **/*.snap.js" + "test:node": "node --experimental-strip-types --test --test-force-exit test/**/*.test.ts", + "test:watch": "node --experimental-strip-types --test --test-force-exit --watch test/**/*.test.ts" }, "files": [ "*.d.ts", diff --git a/packages/test-runner-commands/test/a11y-snapshot/a11ySnapshotPlugin.test.ts b/packages/test-runner-commands/test/a11y-snapshot/a11ySnapshotPlugin.test.ts index bc57f48537..121b299051 100644 --- a/packages/test-runner-commands/test/a11y-snapshot/a11ySnapshotPlugin.test.ts +++ b/packages/test-runner-commands/test/a11y-snapshot/a11ySnapshotPlugin.test.ts @@ -1,16 +1,15 @@ +import { describe, it } from 'node:test'; import path from 'path'; import { runTests } from '@web/test-runner-core/test-helpers'; import { chromeLauncher } from '@web/test-runner-chrome'; import { playwrightLauncher } from '@web/test-runner-playwright'; -import { a11ySnapshotPlugin } from '../../src/a11ySnapshotPlugin.js'; - -describe('a11ySnapshotPlugin', function test() { - this.timeout(20000); +import { a11ySnapshotPlugin } from '../../dist/a11ySnapshotPlugin.js'; +describe('a11ySnapshotPlugin', { timeout: 20000 }, () => { it('can find accessibility nodes in the returned accessibility tree on puppeteer', async () => { await runTests({ - files: [path.join(__dirname, 'browser-test.js')], + files: [path.join(import.meta.dirname, 'browser-test.js')], browsers: [chromeLauncher()], plugins: [a11ySnapshotPlugin()], }); @@ -18,7 +17,7 @@ describe('a11ySnapshotPlugin', function test() { it('can find accessibility nodes in the returned accessibility tree on playwright', async () => { await runTests({ - files: [path.join(__dirname, 'browser-test.js')], + files: [path.join(import.meta.dirname, 'browser-test.js')], browsers: [ playwrightLauncher({ product: 'chromium' }), playwrightLauncher({ product: 'firefox' }), diff --git a/packages/test-runner-commands/test/emulate-media/emulateMediaPlugin.test.ts b/packages/test-runner-commands/test/emulate-media/emulateMediaPlugin.test.ts index 276b150650..0a24eccab5 100644 --- a/packages/test-runner-commands/test/emulate-media/emulateMediaPlugin.test.ts +++ b/packages/test-runner-commands/test/emulate-media/emulateMediaPlugin.test.ts @@ -1,18 +1,17 @@ +import { describe, it } from 'node:test'; import path from 'path'; import { runTests } from '@web/test-runner-core/test-helpers'; import { chromeLauncher } from '@web/test-runner-chrome'; import { playwrightLauncher } from '@web/test-runner-playwright'; -import { emulateMediaPlugin } from '../../src/emulateMediaPlugin.js'; - -describe('emulateMediaPlugin', function test() { - this.timeout(20000); +import { emulateMediaPlugin } from '../../dist/emulateMediaPlugin.js'; +describe('emulateMediaPlugin', { timeout: 20000 }, () => { it('can emulate media on puppeteer', async () => { await runTests({ files: [ - path.join(__dirname, 'browser-test.js'), - path.join(__dirname, 'prefers-reduced-motion-test.js'), + path.join(import.meta.dirname, 'browser-test.js'), + path.join(import.meta.dirname, 'prefers-reduced-motion-test.js'), ], browsers: [chromeLauncher()], @@ -23,8 +22,8 @@ describe('emulateMediaPlugin', function test() { it('can emulate media on playwright', async () => { await runTests({ files: [ - path.join(__dirname, 'browser-test.js'), - path.join(__dirname, 'prefers-reduced-motion-test.js'), + path.join(import.meta.dirname, 'browser-test.js'), + path.join(import.meta.dirname, 'prefers-reduced-motion-test.js'), ], browsers: [ playwrightLauncher({ product: 'chromium' }), @@ -37,7 +36,7 @@ describe('emulateMediaPlugin', function test() { it('can emulate forced-colors on playwright, except webkit', async () => { await runTests({ - files: [path.join(__dirname, 'forced-colors-test.js')], + files: [path.join(import.meta.dirname, 'forced-colors-test.js')], browsers: [ playwrightLauncher({ product: 'chromium' }), playwrightLauncher({ product: 'firefox' }), diff --git a/packages/test-runner-commands/test/execute-server-command/executeServerCommand.test.ts b/packages/test-runner-commands/test/execute-server-command/executeServerCommand.test.ts index aa6019acea..a6fad46b58 100644 --- a/packages/test-runner-commands/test/execute-server-command/executeServerCommand.test.ts +++ b/packages/test-runner-commands/test/execute-server-command/executeServerCommand.test.ts @@ -1,11 +1,10 @@ +import { describe, it } from 'node:test'; import path from 'path'; import { runTests } from '@web/test-runner-core/test-helpers'; import { chromeLauncher } from '@web/test-runner-chrome'; import type { Logger } from '@web/dev-server-core'; -describe('executeServerCommand', function test() { - this.timeout(20000); - +describe('executeServerCommand', { timeout: 20000 }, () => { it('can execute commands', async () => { const logger: Logger = { ...console, @@ -26,7 +25,7 @@ describe('executeServerCommand', function test() { }; await runTests({ - files: [path.join(__dirname, 'browser-test.js')], + files: [path.join(import.meta.dirname, 'browser-test.js')], logger, browsers: [chromeLauncher()], plugins: [ diff --git a/packages/test-runner-commands/test/file/filePlugin.test.ts b/packages/test-runner-commands/test/file/filePlugin.test.ts index b53fc9007e..f967516022 100644 --- a/packages/test-runner-commands/test/file/filePlugin.test.ts +++ b/packages/test-runner-commands/test/file/filePlugin.test.ts @@ -1,15 +1,14 @@ +import { describe, it } from 'node:test'; import path from 'path'; import { runTests } from '@web/test-runner-core/test-helpers'; import { chromeLauncher } from '@web/test-runner-chrome'; -import { filePlugin } from '../../src/filePlugin.js'; - -describe('filePlugin', function test() { - this.timeout(20000); +import { filePlugin } from '../../dist/filePlugin.js'; +describe('filePlugin', { timeout: 20000 }, () => { it('passes file plugin tests', async () => { await runTests({ - files: [path.join(__dirname, 'browser-test.js')], + files: [path.join(import.meta.dirname, 'browser-test.js')], browsers: [chromeLauncher()], plugins: [filePlugin()], logger: { diff --git a/packages/test-runner-commands/test/select-option/selectOptionPlugin.test.ts b/packages/test-runner-commands/test/select-option/selectOptionPlugin.test.ts index dc22342bde..b60c59d0d8 100644 --- a/packages/test-runner-commands/test/select-option/selectOptionPlugin.test.ts +++ b/packages/test-runner-commands/test/select-option/selectOptionPlugin.test.ts @@ -1,16 +1,15 @@ +import { describe, it } from 'node:test'; import path from 'path'; import { runTests } from '@web/test-runner-core/test-helpers'; import { chromeLauncher } from '@web/test-runner-chrome'; import { playwrightLauncher } from '@web/test-runner-playwright'; -import { selectOptionPlugin } from '../../src/selectOptionPlugin.js'; - -describe('selectOptionPlugin', function test() { - this.timeout(20000); +import { selectOptionPlugin } from '../../dist/selectOptionPlugin.js'; +describe('selectOptionPlugin', { timeout: 20000 }, () => { it('can send keys on puppeteer', async () => { await runTests({ - files: [path.join(__dirname, 'puppeteer-test.js')], + files: [path.join(import.meta.dirname, 'puppeteer-test.js')], browsers: [chromeLauncher()], plugins: [selectOptionPlugin()], }); @@ -18,7 +17,7 @@ describe('selectOptionPlugin', function test() { it('can send keys on playwright', async () => { await runTests({ - files: [path.join(__dirname, 'playwright-test.js')], + files: [path.join(import.meta.dirname, 'playwright-test.js')], browsers: [ playwrightLauncher({ product: 'chromium' }), playwrightLauncher({ product: 'firefox' }), diff --git a/packages/test-runner-commands/test/send-keys/sendKeysPlugin.test.ts b/packages/test-runner-commands/test/send-keys/sendKeysPlugin.test.ts index 3d823f37bd..5b653f2f10 100644 --- a/packages/test-runner-commands/test/send-keys/sendKeysPlugin.test.ts +++ b/packages/test-runner-commands/test/send-keys/sendKeysPlugin.test.ts @@ -1,16 +1,15 @@ +import { describe, it } from 'node:test'; import path from 'path'; import { runTests } from '@web/test-runner-core/test-helpers'; import { chromeLauncher } from '@web/test-runner-chrome'; import { playwrightLauncher } from '@web/test-runner-playwright'; -import { sendKeysPlugin } from '../../src/sendKeysPlugin.js'; - -describe('sendKeysPlugin', function test() { - this.timeout(20000); +import { sendKeysPlugin } from '../../dist/sendKeysPlugin.js'; +describe('sendKeysPlugin', { timeout: 20000 }, () => { it('can send keys on puppeteer', async () => { await runTests({ - files: [path.join(__dirname, 'browser-test.js')], + files: [path.join(import.meta.dirname, 'browser-test.js')], browsers: [chromeLauncher()], plugins: [sendKeysPlugin()], }); @@ -18,7 +17,7 @@ describe('sendKeysPlugin', function test() { it('can send keys on playwright', async () => { await runTests({ - files: [path.join(__dirname, 'browser-test.js')], + files: [path.join(import.meta.dirname, 'browser-test.js')], browsers: [ playwrightLauncher({ product: 'chromium' }), playwrightLauncher({ product: 'firefox' }), diff --git a/packages/test-runner-commands/test/send-mouse/sendMousePlugin.test.ts b/packages/test-runner-commands/test/send-mouse/sendMousePlugin.test.ts index a3d2b81305..54b99e177a 100644 --- a/packages/test-runner-commands/test/send-mouse/sendMousePlugin.test.ts +++ b/packages/test-runner-commands/test/send-mouse/sendMousePlugin.test.ts @@ -1,18 +1,17 @@ +import { describe, it, before, after } from 'node:test'; import path from 'path'; import selenium from 'selenium-standalone'; import { runTests } from '@web/test-runner-core/test-helpers'; import { chromeLauncher } from '@web/test-runner-chrome'; import { webdriverLauncher } from '@web/test-runner-webdriver'; import { playwrightLauncher } from '@web/test-runner-playwright'; -import { sendMousePlugin } from '../../src/sendMousePlugin.js'; -import { startSeleniumServer } from '../selenium-server.js'; - -describe('sendMousePlugin', function test() { - this.timeout(50000); +import { sendMousePlugin } from '../../dist/sendMousePlugin.js'; +import { startSeleniumServer } from '../selenium-server.ts'; +describe('sendMousePlugin', { timeout: 50000 }, () => { it('can send mouse on puppeteer', async () => { await runTests({ - files: [path.join(__dirname, 'browser-test.js')], + files: [path.join(import.meta.dirname, 'browser-test.js')], browsers: [chromeLauncher()], plugins: [sendMousePlugin()], }); @@ -20,7 +19,7 @@ describe('sendMousePlugin', function test() { it('can send mouse on playwright', async () => { await runTests({ - files: [path.join(__dirname, 'browser-test.js')], + files: [path.join(import.meta.dirname, 'browser-test.js')], browsers: [ playwrightLauncher({ product: 'chromium' }), playwrightLauncher({ product: 'firefox' }), @@ -52,7 +51,7 @@ describe('sendMousePlugin', function test() { it('can send mouse on webdriver', async () => { await runTests({ - files: [path.join(__dirname, 'browser-test.js')], + files: [path.join(import.meta.dirname, 'browser-test.js')], concurrency: 1, browsers: [ webdriverLauncher({ diff --git a/packages/test-runner-commands/test/set-user-agent/setUserAgentPlugin.test.ts b/packages/test-runner-commands/test/set-user-agent/setUserAgentPlugin.test.ts index 47af2f2c94..a03c2752d7 100644 --- a/packages/test-runner-commands/test/set-user-agent/setUserAgentPlugin.test.ts +++ b/packages/test-runner-commands/test/set-user-agent/setUserAgentPlugin.test.ts @@ -1,15 +1,14 @@ +import { describe, it } from 'node:test'; import path from 'path'; import { runTests } from '@web/test-runner-core/test-helpers'; import { chromeLauncher } from '@web/test-runner-chrome'; -import { setUserAgentPlugin } from '../../src/setUserAgentPlugin.js'; - -describe('setUserAgentPlugin', function test() { - this.timeout(20000); +import { setUserAgentPlugin } from '../../dist/setUserAgentPlugin.js'; +describe('setUserAgentPlugin', { timeout: 20000 }, () => { it('can set the user agent on puppeteer', async () => { await runTests({ - files: [path.join(__dirname, 'browser-test.js')], + files: [path.join(import.meta.dirname, 'browser-test.js')], browsers: [chromeLauncher()], plugins: [setUserAgentPlugin()], }); diff --git a/packages/test-runner-commands/test/set-viewport/setViewportPlugin.test.ts b/packages/test-runner-commands/test/set-viewport/setViewportPlugin.test.ts index 565efe6ffb..96ae76e4bd 100644 --- a/packages/test-runner-commands/test/set-viewport/setViewportPlugin.test.ts +++ b/packages/test-runner-commands/test/set-viewport/setViewportPlugin.test.ts @@ -1,17 +1,16 @@ +import { describe, it } from 'node:test'; import path from 'path'; import { runTests } from '@web/test-runner-core/test-helpers'; import { chromeLauncher } from '@web/test-runner-chrome'; import { playwrightLauncher } from '@web/test-runner-playwright'; -import { setViewportPlugin } from '../../src/setViewportPlugin.js'; - -describe('setViewportPlugin', function test() { - this.timeout(20000); +import { setViewportPlugin } from '../../dist/setViewportPlugin.js'; +describe('setViewportPlugin', { timeout: 20000 }, () => { it('can set the viewport on puppeteer', async () => { await runTests({ - files: [path.join(__dirname, 'browser-test.js')], + files: [path.join(import.meta.dirname, 'browser-test.js')], browsers: [chromeLauncher()], plugins: [setViewportPlugin()], }); @@ -19,7 +18,7 @@ describe('setViewportPlugin', function test() { it('can set the viewport on playwright', async () => { await runTests({ - files: [path.join(__dirname, 'browser-test.js')], + files: [path.join(import.meta.dirname, 'browser-test.js')], browsers: [ playwrightLauncher({ product: 'chromium' }), playwrightLauncher({ product: 'firefox' }), diff --git a/packages/test-runner-commands/test/snapshot/snapshotPlugin.test.ts b/packages/test-runner-commands/test/snapshot/snapshotPlugin.test.ts index 4d52f8ca32..ff05fa9a90 100644 --- a/packages/test-runner-commands/test/snapshot/snapshotPlugin.test.ts +++ b/packages/test-runner-commands/test/snapshot/snapshotPlugin.test.ts @@ -1,15 +1,14 @@ +import { describe, it } from 'node:test'; import path from 'path'; import { runTests } from '@web/test-runner-core/test-helpers'; import { playwrightLauncher } from '@web/test-runner-playwright'; -import { snapshotPlugin } from '../../src/snapshotPlugin.js'; - -describe('snapshotPlugin', function test() { - this.timeout(20000); +import { snapshotPlugin } from '../../dist/snapshotPlugin.js'; +describe('snapshotPlugin', { timeout: 20000 }, () => { it('passes snapshot tests', async () => { await runTests({ - files: [path.join(__dirname, 'browser-test.js')], + files: [path.join(import.meta.dirname, 'browser-test.js')], browsers: [ playwrightLauncher({ product: 'firefox' }), playwrightLauncher({ product: 'chromium' }), @@ -19,7 +18,7 @@ describe('snapshotPlugin', function test() { }); await runTests({ - files: [path.join(__dirname, 'src', 'nested-test.js')], + files: [path.join(import.meta.dirname, 'src', 'nested-test.js')], browsers: [ playwrightLauncher({ product: 'firefox' }), playwrightLauncher({ product: 'chromium' }),