Skip to content

Commit 0f4c7fa

Browse files
committed
refactor(dev-server-esbuild): migrate tests from mocha/chai to node:test
Replace mocha globals and chai assertions with node:test and node:assert/strict across all 7 test files. - `import { expect } from 'chai'` -> `import assert from 'node:assert/strict'` - `import type { Plugin as RollupPlugin } from 'rollup'` (type-only) - `import bcd from '@mdn/browser-compat-data'` (CJS default import) - `expect(x).to.be.true` -> `assert.equal(x, true)` - `expect(x).to.be.greaterThan(y)` -> `assert.ok(x > y)` - `this.timeout(5000)` -> `{ timeout: 5000 }` option on describe - `__dirname` -> `import.meta.dirname` - `../src/index.js` -> `../dist/index.js` - Add `--experimental-strip-types` to override CI NODE_OPTIONS workaround Assisted-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 597fb32 commit 0f4c7fa

8 files changed

Lines changed: 122 additions & 144 deletions

File tree

packages/dev-server-esbuild/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
"build": "tsc",
2929
"start:demo:jsx": "es-dev-server --config demo/jsx/server.config.js",
3030
"start:demo:ts": "es-dev-server --config demo/ts/server.config.js",
31-
"test:node": "mocha \"test/**/*.test.ts\" --require ts-node/register --reporter dot",
32-
"test:watch": "mocha \"test/**/*.test.ts\" --require ts-node/register --watch --watch-files src,test"
31+
"test:node": "node --experimental-strip-types --test --test-force-exit test/**/*.test.ts",
32+
"test:watch": "node --experimental-strip-types --test --test-force-exit --watch test/**/*.test.ts"
3333
},
3434
"files": [
3535
"*.d.ts",

packages/dev-server-esbuild/test/banner-footer.test.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1-
import { expect } from 'chai';
1+
import { describe, it } from 'node:test';
2+
import assert from 'node:assert/strict';
23
import { createTestServer } from '@web/dev-server-core/test-helpers';
34
import { expectIncludes } from '@web/dev-server-core/test-helpers';
45

5-
import { esbuildPlugin } from '../src/index.js';
6-
7-
describe('esbuildPlugin banner/footers', function () {
8-
this.timeout(5000);
6+
import { esbuildPlugin } from '../dist/index.js';
97

8+
describe('esbuildPlugin banner/footers', { timeout: 5000 }, () => {
109
it('prepends custom banner', async () => {
1110
const { server, host } = await createTestServer({
12-
rootDir: __dirname,
11+
rootDir: import.meta.dirname,
1312
plugins: [
1413
{
1514
name: 'test',
@@ -31,15 +30,15 @@ describe('esbuildPlugin banner/footers', function () {
3130
const indexOfBanner = text.indexOf('/* hello there */');
3231

3332
expectIncludes(text, '/* hello there */');
34-
expect(indexOfExpr).to.be.greaterThan(indexOfBanner);
33+
assert.ok(indexOfExpr > indexOfBanner);
3534
} finally {
3635
server.stop();
3736
}
3837
});
3938

4039
it('appends custom footer', async () => {
4140
const { server, host } = await createTestServer({
42-
rootDir: __dirname,
41+
rootDir: import.meta.dirname,
4342
plugins: [
4443
{
4544
name: 'test',
@@ -61,7 +60,7 @@ describe('esbuildPlugin banner/footers', function () {
6160
const indexOfFooter = text.indexOf('/* hello there */');
6261

6362
expectIncludes(text, '/* hello there */');
64-
expect(indexOfFooter).to.be.greaterThan(indexOfExpr);
63+
assert.ok(indexOfFooter > indexOfExpr);
6564
} finally {
6665
server.stop();
6766
}
Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,74 +1,77 @@
1-
import { expect } from 'chai';
2-
import { browsers } from '@mdn/browser-compat-data';
3-
import { isLatestModernBrowser, getLatestStableMajor } from '../src/browser-targets.js';
1+
import { describe, it } from 'node:test';
2+
import assert from 'node:assert/strict';
3+
import bcd from '@mdn/browser-compat-data';
4+
import { isLatestModernBrowser, getLatestStableMajor } from '../dist/browser-targets.js';
5+
6+
const { browsers } = bcd;
47

58
describe('isLatestModernBrowser', () => {
69
it('returns true for latest Chrome', async () => {
710
const latest = getLatestStableMajor(browsers.chrome.releases)!;
8-
expect(isLatestModernBrowser({ name: 'Chrome', version: String(latest) })).to.be.true;
11+
assert.equal(isLatestModernBrowser({ name: 'Chrome', version: String(latest) }), true);
912
});
1013

1114
it('returns true for latest Chrome -1', async () => {
1215
const latest = getLatestStableMajor(browsers.chrome.releases)!;
13-
expect(isLatestModernBrowser({ name: 'Chrome', version: String(latest - 1) })).to.be.true;
16+
assert.equal(isLatestModernBrowser({ name: 'Chrome', version: String(latest - 1) }), true);
1417
});
1518

1619
it('returns true for future version of Chrome', async () => {
1720
const latest = getLatestStableMajor(browsers.chrome.releases)!;
18-
expect(isLatestModernBrowser({ name: 'Chrome', version: String(latest + 1) })).to.be.true;
21+
assert.equal(isLatestModernBrowser({ name: 'Chrome', version: String(latest + 1) }), true);
1922
});
2023

2124
it('returns true for unknown version of Chrome', async () => {
22-
expect(isLatestModernBrowser({ name: 'Chrome', version: '9999999' })).to.be.true;
25+
assert.equal(isLatestModernBrowser({ name: 'Chrome', version: '9999999' }), true);
2326
});
2427

2528
it('returns false for latest Chrome -2', async () => {
2629
const latest = getLatestStableMajor(browsers.chrome.releases)!;
27-
expect(isLatestModernBrowser({ name: 'Chrome', version: String(latest - 2) })).to.be.false;
30+
assert.equal(isLatestModernBrowser({ name: 'Chrome', version: String(latest - 2) }), false);
2831
});
2932

3033
it('returns false for latest Chrome -3', async () => {
3134
const latest = getLatestStableMajor(browsers.chrome.releases)!;
32-
expect(isLatestModernBrowser({ name: 'Chrome', version: String(latest - 3) })).to.be.false;
35+
assert.equal(isLatestModernBrowser({ name: 'Chrome', version: String(latest - 3) }), false);
3336
});
3437

3538
it('returns true for latest Chrome Headless', async () => {
3639
const latest = getLatestStableMajor(browsers.chrome.releases)!;
37-
expect(isLatestModernBrowser({ name: 'Chrome Headless', version: String(latest) })).to.be.true;
40+
assert.equal(isLatestModernBrowser({ name: 'Chrome Headless', version: String(latest) }), true);
3841
});
3942

4043
it('returns true for latest chromium', async () => {
4144
const latest = getLatestStableMajor(browsers.chrome.releases)!;
42-
expect(isLatestModernBrowser({ name: 'Chromium', version: String(latest) })).to.be.true;
45+
assert.equal(isLatestModernBrowser({ name: 'Chromium', version: String(latest) }), true);
4346
});
4447

4548
it('returns true for latest Firefox', async () => {
4649
const latest = getLatestStableMajor(browsers.firefox.releases)!;
47-
expect(isLatestModernBrowser({ name: 'Firefox', version: String(latest) })).to.be.true;
50+
assert.equal(isLatestModernBrowser({ name: 'Firefox', version: String(latest) }), true);
4851
});
4952

5053
it('returns false for latest Firefox -1', async () => {
5154
const latest = getLatestStableMajor(browsers.firefox.releases)!;
52-
expect(isLatestModernBrowser({ name: 'Firefox', version: String(latest - 1) })).to.be.false;
55+
assert.equal(isLatestModernBrowser({ name: 'Firefox', version: String(latest - 1) }), false);
5356
});
5457

5558
it('returns false for latest Firefox -2', async () => {
5659
const latest = getLatestStableMajor(browsers.firefox.releases)!;
57-
expect(isLatestModernBrowser({ name: 'Firefox', version: String(latest - 2) })).to.be.false;
60+
assert.equal(isLatestModernBrowser({ name: 'Firefox', version: String(latest - 2) }), false);
5861
});
5962

6063
it('returns true for latest Edge', async () => {
6164
const latest = getLatestStableMajor(browsers.edge.releases)!;
62-
expect(isLatestModernBrowser({ name: 'Edge', version: String(latest) })).to.be.true;
65+
assert.equal(isLatestModernBrowser({ name: 'Edge', version: String(latest) }), true);
6366
});
6467

6568
it('returns true for latest Edge -1', async () => {
6669
const latest = getLatestStableMajor(browsers.edge.releases)!;
67-
expect(isLatestModernBrowser({ name: 'Edge', version: String(latest - 1) })).to.be.true;
70+
assert.equal(isLatestModernBrowser({ name: 'Edge', version: String(latest - 1) }), true);
6871
});
6972

7073
it('returns false for latest Edge -2', async () => {
7174
const latest = getLatestStableMajor(browsers.edge.releases)!;
72-
expect(isLatestModernBrowser({ name: 'Chrome', version: String(latest - 2) })).to.be.false;
75+
assert.equal(isLatestModernBrowser({ name: 'Chrome', version: String(latest - 2) }), false);
7376
});
7477
});

packages/dev-server-esbuild/test/json.test.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
import { expect } from 'chai';
1+
import { describe, it } from 'node:test';
2+
import assert from 'node:assert/strict';
23
import { expectIncludes, createTestServer } from '@web/dev-server-core/test-helpers';
34

4-
import { esbuildPlugin } from '../src/index.js';
5+
import { esbuildPlugin } from '../dist/index.js';
56

6-
describe('esbuildPlugin JSON', function () {
7+
describe('esbuildPlugin JSON', () => {
78
it('transforms .json files', async () => {
89
const { server, host } = await createTestServer({
9-
rootDir: __dirname,
10+
rootDir: import.meta.dirname,
1011
plugins: [
1112
{
1213
name: 'test',
@@ -24,10 +25,8 @@ describe('esbuildPlugin JSON', function () {
2425
const response = await fetch(`${host}/foo.json`);
2526
const text = await response.text();
2627

27-
expect(response.status).to.equal(200);
28-
expect(response.headers.get('content-type')).to.equal(
29-
'application/javascript; charset=utf-8',
30-
);
28+
assert.equal(response.status, 200);
29+
assert.equal(response.headers.get('content-type'), 'application/javascript; charset=utf-8');
3130
expectIncludes(text, 'var foo = "bar";');
3231
expectIncludes(text, 'var foo_default = { foo };');
3332
expectIncludes(text, 'export {');

packages/dev-server-esbuild/test/jsx.test.ts

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
import { expect } from 'chai';
1+
import { describe, it } from 'node:test';
2+
import assert from 'node:assert/strict';
23
import { expectIncludes, createTestServer } from '@web/dev-server-core/test-helpers';
34

4-
import { esbuildPlugin } from '../src/index.js';
5+
import { esbuildPlugin } from '../dist/index.js';
56

6-
describe('esbuildPlugin JSX', function () {
7+
describe('esbuildPlugin JSX', () => {
78
it('transforms .jsx files', async () => {
89
const { server, host } = await createTestServer({
9-
rootDir: __dirname,
10+
rootDir: import.meta.dirname,
1011
plugins: [
1112
{
1213
name: 'test',
@@ -28,10 +29,8 @@ export function foo(bar) {
2829
const response = await fetch(`${host}/foo.jsx`);
2930
const text = await response.text();
3031

31-
expect(response.status).to.equal(200);
32-
expect(response.headers.get('content-type')).to.equal(
33-
'application/javascript; charset=utf-8',
34-
);
32+
assert.equal(response.status, 200);
33+
assert.equal(response.headers.get('content-type'), 'application/javascript; charset=utf-8');
3534
expectIncludes(text, 'React.createElement("div", {');
3635
expectIncludes(text, 'id: "myDiv"');
3736
expectIncludes(text, 'React.createElement(MyElement, {');
@@ -43,7 +42,7 @@ export function foo(bar) {
4342

4443
it('can set the JSX factory', async () => {
4544
const { server, host } = await createTestServer({
46-
rootDir: __dirname,
45+
rootDir: import.meta.dirname,
4746
plugins: [
4847
{
4948
name: 'test',
@@ -65,10 +64,8 @@ export function foo(bar) {
6564
const response = await fetch(`${host}/foo.jsx`);
6665
const text = await response.text();
6766

68-
expect(response.status).to.equal(200);
69-
expect(response.headers.get('content-type')).to.equal(
70-
'application/javascript; charset=utf-8',
71-
);
67+
assert.equal(response.status, 200);
68+
assert.equal(response.headers.get('content-type'), 'application/javascript; charset=utf-8');
7269
expectIncludes(text, 'h("div", {');
7370
expectIncludes(text, 'id: "myDiv"');
7471
expectIncludes(text, 'h(MyElement, {');

0 commit comments

Comments
 (0)