From b4d8f5e20050d67c0a5402d674c5d43766ff9ba4 Mon Sep 17 00:00:00 2001 From: Jacob Bolda Date: Wed, 28 Oct 2026 22:46:56 -0500 Subject: [PATCH 1/4] benchmark CI timeout bump --- packages/ui/bench/render.bench.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ui/bench/render.bench.ts b/packages/ui/bench/render.bench.ts index effe7c9..50e50f5 100644 --- a/packages/ui/bench/render.bench.ts +++ b/packages/ui/bench/render.bench.ts @@ -15,7 +15,6 @@ const benchmarkOptions = { warmupTime: 50, warmupIterations: 2, }; - const cases = nodeCounts.flatMap((nodeCount) => shapes.map((shape) => ({ name: `${shape} (${nodeCount})`, nodeCount, shape })), ); @@ -39,7 +38,8 @@ test('initial render', async ({ bench }) => { await bench.compare(...entries, benchmarkOptions); }); -test.for(workloads)('%s', async (workload, { bench }) => { +// bump timeout for CI as it runs slower and hits Vitest's default timeout in the CodSpeed runner +test.for(workloads)('%s', { timeout: 180_000 }, async (workload, { bench }) => { const entries = cases.map((benchmarkCase) => { let fixture: UIWorkloadFixture; let iteration = 0; From b25d801398020823cecf008c88a6bbc451748189 Mon Sep 17 00:00:00 2001 From: Jacob Bolda Date: Wed, 28 Oct 2026 23:30:11 -0500 Subject: [PATCH 2/4] try removing experimental module runner --- packages/ui/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ui/package.json b/packages/ui/package.json index 0b1b0bf..b6577b1 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -29,7 +29,7 @@ }, "scripts": { "dev": "bsh dev", - "bench": "NODE_OPTIONS=--experimental-strip-types vitest bench bench/render.bench.ts --reporter=verbose --experimental.viteModuleRunner=false", + "bench": "NODE_OPTIONS=--experimental-strip-types vitest bench bench/render.bench.ts --reporter=verbose", "build": "bsh build --dts", "format": "bsh format", "lint": "bsh lint", From a7ab3edcde7eae25924bf5c81efd532ed173ee32 Mon Sep 17 00:00:00 2001 From: Nate Moore Date: Wed, 28 Oct 2026 22:00:51 -0700 Subject: [PATCH 3/4] fix(bench): load codspeed plugin from packages/ui --- package.json | 1 - packages/ui/package.json | 5 ++++- vitest.config.mts => packages/ui/vitest.config.mts | 0 pnpm-lock.yaml | 7 ++++--- 4 files changed, 8 insertions(+), 5 deletions(-) rename vitest.config.mts => packages/ui/vitest.config.mts (100%) diff --git a/package.json b/package.json index 9eae8b2..ecf10c9 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,6 @@ }, "devDependencies": { "@bomb.sh/tools": "^0.8.0", - "@codspeed/vitest-plugin": "6.1.0", "@termless/core": "^0.10.2", "@termless/test": "^0.10.2", "@types/node": "^22.20.0", diff --git a/packages/ui/package.json b/packages/ui/package.json index b6577b1..1d126a3 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -29,7 +29,7 @@ }, "scripts": { "dev": "bsh dev", - "bench": "NODE_OPTIONS=--experimental-strip-types vitest bench bench/render.bench.ts --reporter=verbose", + "bench": "NODE_OPTIONS=--experimental-strip-types vitest bench bench/render.bench.ts --reporter=verbose --experimental.viteModuleRunner=false", "build": "bsh build --dts", "format": "bsh format", "lint": "bsh lint", @@ -49,5 +49,8 @@ "version": "^22.14.0", "onFail": "error" } + }, + "devDependencies": { + "@codspeed/vitest-plugin": "6.1.0" } } diff --git a/vitest.config.mts b/packages/ui/vitest.config.mts similarity index 100% rename from vitest.config.mts rename to packages/ui/vitest.config.mts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0d1f893..7888bbe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,9 +17,6 @@ importers: '@bomb.sh/tools': specifier: ^0.8.0 version: 0.8.0(@types/node@22.20.0)(oxc-resolver@11.20.0)(unrun@0.2.39)(vite@8.0.16(@types/node@22.20.0)(jiti@2.7.0)(yaml@2.9.1)) - '@codspeed/vitest-plugin': - specifier: 6.1.0 - version: 6.1.0(tinybench@6.2.2)(vite@8.0.16(@types/node@22.20.0)(jiti@2.7.0)(yaml@2.9.1))(vitest@5.0.5(@types/node@22.20.0)(vite@8.0.16(@types/node@22.20.0)(jiti@2.7.0)(yaml@2.9.1))) '@termless/core': specifier: ^0.10.2 version: 0.10.2(node-pty@1.2.0-beta.15) @@ -41,6 +38,10 @@ importers: '@bomb.sh/tty': specifier: 'catalog:' version: 0.10.0 + devDependencies: + '@codspeed/vitest-plugin': + specifier: 6.1.0 + version: 6.1.0(tinybench@6.2.2)(vite@8.0.16(@types/node@22.20.0)(jiti@2.7.0)(yaml@2.9.1))(vitest@5.0.5(@types/node@22.20.0)(vite@8.0.16(@types/node@22.20.0)(jiti@2.7.0)(yaml@2.9.1))) packages: From b31cc3dbcee2117e91ca9ed7f6acc160eff6afa1 Mon Sep 17 00:00:00 2001 From: Jacob Bolda Date: Thu, 29 Oct 2026 00:45:45 -0500 Subject: [PATCH 4/4] still run vitest from root, bump timeouts more --- package.json | 3 ++- packages/ui/bench/render.bench.ts | 4 ++-- packages/ui/package.json | 5 +---- packages/ui/vitest.config.mts | 6 ------ pnpm-lock.yaml | 23 +++++++++++------------ vitest.config.mts | 13 +++++++++++++ 6 files changed, 29 insertions(+), 25 deletions(-) delete mode 100644 packages/ui/vitest.config.mts create mode 100644 vitest.config.mts diff --git a/package.json b/package.json index ecf10c9..7b83d8e 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "scripts": { "dev": "bsh dev", "build": "pnpm --filter \"@clack/*\" run build", - "bench": "pnpm -r --workspace-concurrency=1 --if-present bench", + "bench": "vitest bench --reporter=verbose", "format": "bsh format", "format:check": "bsh format --check", "lint": "bsh lint .", @@ -37,6 +37,7 @@ }, "devDependencies": { "@bomb.sh/tools": "^0.8.0", + "@codspeed/vitest-plugin": "^6.1.0", "@termless/core": "^0.10.2", "@termless/test": "^0.10.2", "@types/node": "^22.20.0", diff --git a/packages/ui/bench/render.bench.ts b/packages/ui/bench/render.bench.ts index 50e50f5..875bab1 100644 --- a/packages/ui/bench/render.bench.ts +++ b/packages/ui/bench/render.bench.ts @@ -19,7 +19,7 @@ const cases = nodeCounts.flatMap((nodeCount) => shapes.map((shape) => ({ name: `${shape} (${nodeCount})`, nodeCount, shape })), ); -test('initial render', async ({ bench }) => { +test('initial render', { timeout: 300_000 }, async ({ bench }) => { const entries = cases.map((benchmarkCase) => { let fixture: UIWorkloadFixture; return bench( @@ -39,7 +39,7 @@ test('initial render', async ({ bench }) => { }); // bump timeout for CI as it runs slower and hits Vitest's default timeout in the CodSpeed runner -test.for(workloads)('%s', { timeout: 180_000 }, async (workload, { bench }) => { +test.for(workloads)('%s', { timeout: 300_000 }, async (workload, { bench }) => { const entries = cases.map((benchmarkCase) => { let fixture: UIWorkloadFixture; let iteration = 0; diff --git a/packages/ui/package.json b/packages/ui/package.json index 1d126a3..6e27ec6 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -29,7 +29,7 @@ }, "scripts": { "dev": "bsh dev", - "bench": "NODE_OPTIONS=--experimental-strip-types vitest bench bench/render.bench.ts --reporter=verbose --experimental.viteModuleRunner=false", + "bench": "vitest bench --config ../../vitest.config.mts --reporter=verbose", "build": "bsh build --dts", "format": "bsh format", "lint": "bsh lint", @@ -49,8 +49,5 @@ "version": "^22.14.0", "onFail": "error" } - }, - "devDependencies": { - "@codspeed/vitest-plugin": "6.1.0" } } diff --git a/packages/ui/vitest.config.mts b/packages/ui/vitest.config.mts deleted file mode 100644 index 96bcc77..0000000 --- a/packages/ui/vitest.config.mts +++ /dev/null @@ -1,6 +0,0 @@ -import codspeedPlugin from '@codspeed/vitest-plugin'; -import { defineConfig } from 'vitest/config'; - -export default defineConfig({ - plugins: [codspeedPlugin()], -}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7888bbe..ac918e5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,6 +17,9 @@ importers: '@bomb.sh/tools': specifier: ^0.8.0 version: 0.8.0(@types/node@22.20.0)(oxc-resolver@11.20.0)(unrun@0.2.39)(vite@8.0.16(@types/node@22.20.0)(jiti@2.7.0)(yaml@2.9.1)) + '@codspeed/vitest-plugin': + specifier: ^6.1.0 + version: 6.1.0(tinybench@6.2.2)(vite@8.0.16(@types/node@22.20.0)(jiti@2.7.0)(yaml@2.9.1))(vitest@5.0.5(@types/node@22.20.0)(vite@8.0.16(@types/node@22.20.0)(jiti@2.7.0)(yaml@2.9.1))) '@termless/core': specifier: ^0.10.2 version: 0.10.2(node-pty@1.2.0-beta.15) @@ -38,10 +41,6 @@ importers: '@bomb.sh/tty': specifier: 'catalog:' version: 0.10.0 - devDependencies: - '@codspeed/vitest-plugin': - specifier: 6.1.0 - version: 6.1.0(tinybench@6.2.2)(vite@8.0.16(@types/node@22.20.0)(jiti@2.7.0)(yaml@2.9.1))(vitest@5.0.5(@types/node@22.20.0)(vite@8.0.16(@types/node@22.20.0)(jiti@2.7.0)(yaml@2.9.1))) packages: @@ -1234,8 +1233,8 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - axios@1.20.0: - resolution: {integrity: sha512-r8aOh8j9cGKpgQAqpzrUHnSIc6a59Y3Xf/cv8sy1DrHCkZHzQGEuoq1tARk6qSyDdtQGSDgpb9kFlruzPvrgwg==} + axios@1.21.0: + resolution: {integrity: sha512-YCzXMB53Q9PZBsh7yN7wtapit4WepwcHS2fP8QhGsBxSz5YtgYobV7GGlWlAJi+RxfU77GQTQi2DSLUma42EYA==} cac@7.1.0: resolution: {integrity: sha512-LMDU/U2yA4IPIY8KT0NsNPWEYZvAMkbgyspxJ6btJaYV+WMDOHAZCmB0lsTObiHaRS1V/ztKAl7+TSkTqXyeoA==} @@ -1328,8 +1327,8 @@ packages: picomatch: optional: true - follow-redirects@1.16.1: - resolution: {integrity: sha512-FNvFGzoMLWmE6Yj9spb/zjd7yiNCHiAW9/Tg9CXrQ8wuu32HtlJOwWO11OJafl5FfY3DxTdQ0vj42zU1kvv5jg==} + follow-redirects@1.16.2: + resolution: {integrity: sha512-/kVP2U8z596Ia0gwFrwyIeo74ta5aVmSeU1FfAUMAmcEP5EP7zydmag3SLiN64NaRKef3lxsq7i/g7ltJQDGow==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -1925,7 +1924,7 @@ snapshots: '@codspeed/core@6.1.0': dependencies: - axios: 1.20.0 + axios: 1.21.0 form-data: 4.0.6 node-gyp-build: 4.8.4 stack-trace: 1.0.0-pre2 @@ -2649,9 +2648,9 @@ snapshots: asynckit@0.4.0: {} - axios@1.20.0: + axios@1.21.0: dependencies: - follow-redirects: 1.16.1 + follow-redirects: 1.16.2 form-data: 4.0.6 https-proxy-agent: 5.0.1 proxy-from-env: 2.1.0 @@ -2725,7 +2724,7 @@ snapshots: optionalDependencies: picomatch: 4.0.7 - follow-redirects@1.16.1: {} + follow-redirects@1.16.2: {} form-data@4.0.6: dependencies: diff --git a/vitest.config.mts b/vitest.config.mts new file mode 100644 index 0000000..f1b09f9 --- /dev/null +++ b/vitest.config.mts @@ -0,0 +1,13 @@ +import codspeedPlugin from '@codspeed/vitest-plugin'; +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + plugins: [codspeedPlugin()], + test: { + benchmark: { include: ['**/*.bench.ts'] }, + experimental: { viteModuleRunner: false }, + // ensure we running only one test at a time + maxWorkers: 1, + isolate: false, + }, +});