Skip to content

Commit 6d25666

Browse files
committed
fix(qa): fail suite on summary scenario failures
1 parent 154ee9f commit 6d25666

4 files changed

Lines changed: 22 additions & 14 deletions

File tree

extensions/qa-lab/src/cli.runtime.test.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -503,13 +503,7 @@ describe("qa cli runtime", () => {
503503
watchUrl: "http://127.0.0.1:43124",
504504
reportPath: suiteReportPath,
505505
summaryPath: suiteSummaryPath,
506-
scenarios: [
507-
{
508-
name: "channel chat baseline",
509-
status: "fail",
510-
steps: [],
511-
},
512-
],
506+
scenarios: [],
513507
});
514508

515509
try {

extensions/qa-lab/src/cli.runtime.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,7 @@ export async function runQaSuiteCommand(opts: {
706706
process.stdout.write(`QA suite watch: ${result.watchUrl}\n`);
707707
process.stdout.write(`QA suite report: ${result.reportPath}\n`);
708708
process.stdout.write(`QA suite summary: ${result.summaryPath}\n`);
709-
const failedScenarioCount = readQaSuiteFailedScenarioCountFromSummary(result);
709+
const failedScenarioCount = await readQaFailedScenarioCountFromSummary(result.summaryPath);
710710
if (!allowFailures && failedScenarioCount !== null && failedScenarioCount > 0) {
711711
process.exitCode = 1;
712712
}

extensions/qa-lab/src/suite-summary.test.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,14 @@ describe("qa suite summary helpers", () => {
1212
).toBe(2);
1313
});
1414

15-
it("prefers counts.failed when available", () => {
15+
it("uses the larger failure signal when counts and scenarios disagree", () => {
16+
expect(
17+
readQaSuiteFailedScenarioCountFromSummary({
18+
counts: { failed: 0 },
19+
scenarios: [{ status: "pass" }, { status: "fail" }],
20+
}),
21+
).toBe(1);
22+
1623
expect(
1724
readQaSuiteFailedScenarioCountFromSummary({
1825
counts: { failed: 3.8 },

extensions/qa-lab/src/suite-summary.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,18 @@ export function readQaSuiteFailedScenarioCountFromSummary(summary: unknown): num
7979
};
8080
scenarios?: Array<QaSuiteScenarioStatus>;
8181
};
82-
if (typeof payload.counts?.failed === "number" && Number.isFinite(payload.counts.failed)) {
83-
return Math.max(0, Math.floor(payload.counts.failed));
82+
const countedFailures =
83+
typeof payload.counts?.failed === "number" && Number.isFinite(payload.counts.failed)
84+
? Math.max(0, Math.floor(payload.counts.failed))
85+
: null;
86+
const scenarioFailures = Array.isArray(payload.scenarios)
87+
? countQaSuiteFailedScenarios(payload.scenarios)
88+
: null;
89+
if (countedFailures !== null && scenarioFailures !== null) {
90+
return Math.max(countedFailures, scenarioFailures);
8491
}
85-
if (Array.isArray(payload.scenarios)) {
86-
return countQaSuiteFailedScenarios(payload.scenarios);
92+
if (scenarioFailures !== null) {
93+
return scenarioFailures;
8794
}
88-
return null;
95+
return countedFailures;
8996
}

0 commit comments

Comments
 (0)