diff --git a/parse-report.js b/parse-report.js index fb32cbd..ed4a51a 100644 --- a/parse-report.js +++ b/parse-report.js @@ -5,6 +5,7 @@ import { EVENT_TEST_DIAGNOSTIC, ERROR_CODE_TEST_FAILURE } from './constants.js' +import { URL, fileURLToPath } from 'node:url' const durationRegex = /duration_ms\s([\d.]+)/ @@ -27,6 +28,23 @@ export default async function parseReport(source) { diagnosticMessage = '' } + function isFileUrl(urlString) { + try { + const url = new URL(urlString) + return url.protocol === 'file:' + } catch (error) { + return false + } + } + + function parseFilePath(fileString) { + if (isFileUrl(fileString)) { + return fileURLToPath(fileString) + } else { + return fileString + } + } + for await (const event of source) { switch (event.type) { case EVENT_TEST_START: @@ -38,7 +56,7 @@ export default async function parseReport(source) { testStack.push({ name, - file, + file: parseFilePath(file), tests: [] }) diff --git a/test/resources/expected.json b/test/resources/expected.json index de21bdc..ae23d2d 100644 --- a/test/resources/expected.json +++ b/test/resources/expected.json @@ -43,7 +43,7 @@ "failure": { "failureType": "testCodeFailure", "cause": { - "generatedMessage": false, + "generatedMessage": true, "code": "ERR_ASSERTION", "actual": 1, "expected": 2, @@ -58,7 +58,7 @@ "todo": false, "error": { "failureType": "subtestsFailed", - "cause": {}, + "cause": "1 subtest failed", "code": "ERR_TEST_FAILURE" } } @@ -68,7 +68,7 @@ "todo": false, "error": { "failureType": "subtestsFailed", - "cause": {}, + "cause": "1 subtest failed", "code": "ERR_TEST_FAILURE" } } @@ -78,7 +78,7 @@ "todo": false, "error": { "failureType": "subtestsFailed", - "cause": {}, + "cause": "1 subtest failed", "code": "ERR_TEST_FAILURE" } }, @@ -108,7 +108,7 @@ "todo": false, "error": { "failureType": "testTimeoutFailure", - "cause": {}, + "cause": "test timed out after 100ms", "code": "ERR_TEST_FAILURE" } },