From a83799451b81dbfe0fc512f772ed9fa875129fba Mon Sep 17 00:00:00 2001 From: Vito Sansevero Date: Wed, 28 Oct 2026 11:15:17 -0700 Subject: [PATCH] ci(browser): load the running-tests reporter by absolute path A config imported from another directory (the workflow-artifacts test copies it to a temp root) resolved './running-tests-reporter.mjs' against that root under CI and failed to load it. Resolve it from this module instead. --- tests/vendor/browser-server-fixture.test.mjs | 8 ++++++-- tools/vendor/test-workers.mjs | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/tests/vendor/browser-server-fixture.test.mjs b/tests/vendor/browser-server-fixture.test.mjs index 72481464..91ec59fd 100644 --- a/tests/vendor/browser-server-fixture.test.mjs +++ b/tests/vendor/browser-server-fixture.test.mjs @@ -4,6 +4,7 @@ import { createServer } from 'node:net'; import { spawn } from 'node:child_process'; import { EventEmitter, once } from 'node:events'; import { readFileSync } from 'node:fs'; +import { isAbsolute } from 'node:path'; import { fileURLToPath, pathToFileURL } from 'node:url'; import { setTimeout as delay } from 'node:timers/promises'; import { startBrowserServer, createServerSupervisor, attachServerStderr, forwardPrefixedLines, SLOW_RESET_PREFIX } from '../../tools/vendor/start-browser-server.mjs'; @@ -259,8 +260,11 @@ test('worker count follows PM_TEST_WORKERS, then one in CI, then a quarter of th test('CI adds the running-tests reporter and a blob report under test-results/blob/, which the trace upload covers; local runs keep list', () => { assert.equal(reporters({ env: {}, name: 'workflows' }), 'list'); - assert.deepEqual(reporters({ env: { CI: '1' }, name: 'workflows' }), - [['list'], ['./running-tests-reporter.mjs'], ['blob', { outputDir: './test-results/blob/workflows' }]]); + const [list, running, blob] = reporters({ env: { CI: '1' }, name: 'workflows' }); + assert.deepEqual(list, ['list']); + // Absolute: a config imported from another directory (workflow-artifacts.test.mjs) still finds it. + assert.ok(isAbsolute(running[0]) && running[0].endsWith('running-tests-reporter.mjs'), running[0]); + assert.deepEqual(blob, ['blob', { outputDir: './test-results/blob/workflows' }]); }); function fakeHost() { diff --git a/tools/vendor/test-workers.mjs b/tools/vendor/test-workers.mjs index 44d64319..03adf724 100644 --- a/tools/vendor/test-workers.mjs +++ b/tools/vendor/test-workers.mjs @@ -1,4 +1,8 @@ import { availableParallelism } from 'node:os'; +import { fileURLToPath } from 'node:url'; + +// Absolute, so a config that imports this one from another directory still finds it. +const RUNNING_TESTS_REPORTER = fileURLToPath(new URL('./running-tests-reporter.mjs', import.meta.url)); const MAX_LOCAL_WORKERS = 8; const CPUS_PER_WORKER = 4; @@ -21,5 +25,5 @@ export function workflowWorkers({ env = process.env, cpus = availableParallelism // cannot: they never end), and a blob report beside the traces is uploaded with them. export function reporters({ env = process.env, name } = {}) { if (!env.CI) return 'list'; - return [['list'], ['./running-tests-reporter.mjs'], ['blob', { outputDir: `./test-results/blob/${name}` }]]; + return [['list'], [RUNNING_TESTS_REPORTER], ['blob', { outputDir: `./test-results/blob/${name}` }]]; }