diff --git a/lib/internal/test_runner/reporter/v8-serializer.js b/lib/internal/test_runner/reporter/v8-serializer.js index c75bfcdac478..0f0cf20902b5 100644 --- a/lib/internal/test_runner/reporter/v8-serializer.js +++ b/lib/internal/test_runner/reporter/v8-serializer.js @@ -9,11 +9,12 @@ const { serializeError } = require('internal/error_serdes'); module.exports = async function* v8Reporter(source) { - const serializer = new DefaultSerializer(); - serializer.writeHeader(); - const headerLength = TypedArrayPrototypeGetLength(serializer.releaseBuffer()); + const headerSerializer = new DefaultSerializer(); + headerSerializer.writeHeader(); + const headerLength = TypedArrayPrototypeGetLength(headerSerializer.releaseBuffer()); for await (const item of source) { + const serializer = new DefaultSerializer(); const originalError = item.data.details?.error; if (originalError) { // Error is overridden with a serialized version, so that it can be diff --git a/test/parallel/test-runner-v8-deserializer.mjs b/test/parallel/test-runner-v8-deserializer.mjs index 7f2c0155c973..3a4db367ca6d 100644 --- a/test/parallel/test-runner-v8-deserializer.mjs +++ b/test/parallel/test-runner-v8-deserializer.mjs @@ -85,6 +85,15 @@ describe('v8 deserializer', common.mustCall(() => { assert.deepStrictEqual(reported, [reportedDiagnosticEvent]); }); + it('should serialize a repeated object as independent messages', async () => { + const repeatedChunks = await toArray(serializer([diagnosticEvent, diagnosticEvent])); + const reported = await collectReported(repeatedChunks); + assert.deepStrictEqual(reported, [ + reportedDiagnosticEvent, + reportedDiagnosticEvent, + ]); + }); + it('should deserialize a serialized chunk after non-serialized chunk', async () => { const reported = await collectReported([Buffer.concat([Buffer.from('unknown'), ...chunks])]); assert.deepStrictEqual(reported, [