From edb224e7e406500560cb61c97ba471f9be290871 Mon Sep 17 00:00:00 2001 From: Xavier Stouder Date: Tue, 23 Dec 2025 20:32:21 +0100 Subject: [PATCH 1/5] test_runner: print info when test restarts When using spec reporter and running test in watch mode, print an info message containing the current datetime when tests restart. Fixes: https://github.com/nodejs/node/issues/57206 --- lib/internal/test_runner/reporter/spec.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/internal/test_runner/reporter/spec.js b/lib/internal/test_runner/reporter/spec.js index 9031025e57d930..97737b83a78868 100644 --- a/lib/internal/test_runner/reporter/spec.js +++ b/lib/internal/test_runner/reporter/spec.js @@ -106,6 +106,9 @@ class SpecReporter extends Transform { if (data.file === undefined) { return this.#formatFailedTestResults(); } + break; + case 'test:watch:restarted': + return `\nRestarted at ${new Date().toLocaleTimeString()}\n` } } _transform({ type, data }, encoding, callback) { From 15f309c767bb50a05defe0389688d4954d19b692 Mon Sep 17 00:00:00 2001 From: Xavier Stouder Date: Tue, 23 Dec 2025 21:36:02 +0100 Subject: [PATCH 2/5] lint fix --- lib/internal/test_runner/reporter/spec.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/internal/test_runner/reporter/spec.js b/lib/internal/test_runner/reporter/spec.js index 97737b83a78868..de7a1112d05e9f 100644 --- a/lib/internal/test_runner/reporter/spec.js +++ b/lib/internal/test_runner/reporter/spec.js @@ -5,6 +5,7 @@ const { ArrayPrototypePush, ArrayPrototypeShift, ArrayPrototypeUnshift, + Date, } = primordials; const assert = require('assert'); const Transform = require('internal/streams/transform'); @@ -108,7 +109,7 @@ class SpecReporter extends Transform { } break; case 'test:watch:restarted': - return `\nRestarted at ${new Date().toLocaleTimeString()}\n` + return `\nRestarted at ${new Date().toLocaleTimeString()}\n`; } } _transform({ type, data }, encoding, callback) { From a1c46dbd3bb7eb11aca5fe587089f9bd358ebff0 Mon Sep 17 00:00:00 2001 From: Xavier Stouder Date: Tue, 23 Dec 2025 21:55:33 +0100 Subject: [PATCH 3/5] use primordial --- lib/internal/test_runner/reporter/spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/internal/test_runner/reporter/spec.js b/lib/internal/test_runner/reporter/spec.js index de7a1112d05e9f..3acb9f79d568cc 100644 --- a/lib/internal/test_runner/reporter/spec.js +++ b/lib/internal/test_runner/reporter/spec.js @@ -5,7 +5,7 @@ const { ArrayPrototypePush, ArrayPrototypeShift, ArrayPrototypeUnshift, - Date, + DatePrototypeToLocaleString, } = primordials; const assert = require('assert'); const Transform = require('internal/streams/transform'); @@ -109,7 +109,7 @@ class SpecReporter extends Transform { } break; case 'test:watch:restarted': - return `\nRestarted at ${new Date().toLocaleTimeString()}\n`; + return `\nRestarted at ${DatePrototypeToLocaleString(new Date())}\n`; } } _transform({ type, data }, encoding, callback) { From 260cfd17c9e4021966efc6bb08a66535127da5ac Mon Sep 17 00:00:00 2001 From: Xavier Stouder Date: Thu, 25 Dec 2025 01:46:04 +0100 Subject: [PATCH 4/5] fix lint --- lib/internal/test_runner/reporter/spec.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/internal/test_runner/reporter/spec.js b/lib/internal/test_runner/reporter/spec.js index 3acb9f79d568cc..b109fed6e840b0 100644 --- a/lib/internal/test_runner/reporter/spec.js +++ b/lib/internal/test_runner/reporter/spec.js @@ -5,6 +5,7 @@ const { ArrayPrototypePush, ArrayPrototypeShift, ArrayPrototypeUnshift, + Date, DatePrototypeToLocaleString, } = primordials; const assert = require('assert'); From db711a06b27849e907a2386a4236d64e602578b0 Mon Sep 17 00:00:00 2001 From: Xavier Stouder Date: Thu, 25 Dec 2025 01:46:10 +0100 Subject: [PATCH 5/5] add test --- ...test-output-spec-reporter-watch-restart.mjs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 test/test-runner/test-output-spec-reporter-watch-restart.mjs diff --git a/test/test-runner/test-output-spec-reporter-watch-restart.mjs b/test/test-runner/test-output-spec-reporter-watch-restart.mjs new file mode 100644 index 00000000000000..d158375974c48b --- /dev/null +++ b/test/test-runner/test-output-spec-reporter-watch-restart.mjs @@ -0,0 +1,18 @@ +import '../common/index.mjs'; +import { spec as SpecReporter } from 'node:test/reporters'; +import assert from 'node:assert'; + +const reporter = new SpecReporter(); +let output = ''; + +reporter.on('data', (chunk) => { + output += chunk; +}); + +reporter.write({ + type: 'test:watch:restarted', +}); + +reporter.end(); + +assert.match(output, /Restarted at .+/);