Skip to content

Commit 28e292f

Browse files
committed
test(extension): retry research browser timeouts in ci
1 parent 6987380 commit 28e292f

4 files changed

Lines changed: 25 additions & 1 deletion

File tree

‎apps/extension/tests/research/packed/playwright.config.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export default defineConfig({
99
outputDir: join(tmpdir(), "atlcli-research-playwright"),
1010
timeout: 180_000,
1111
workers: 1,
12-
retries: 0,
12+
retries: process.env.CI ? 1 : 0,
1313
reporter: [
1414
["line"],
1515
["junit", { outputFile: join(browserEvidenceSuiteDir("research"), "junit.xml") }],

‎scripts/ci/run-browser-lane.test.ts‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { tmpdir } from "node:os";
1111
import { join } from "node:path";
1212
import {
1313
BROWSER_LANES,
14+
discardPassedBrowserFailureEvidence,
1415
normalizePlaywrightFailureEvidence,
1516
parseBrowserLane,
1617
suiteEvidenceDirectory,
@@ -135,4 +136,16 @@ describe("browser lane plan", () => {
135136
"symbolic links are forbidden",
136137
);
137138
});
139+
140+
test("removes failed-attempt media after a successful retry", () => {
141+
const suite = mkdtempSync(join(tmpdir(), "atlcli-retried-evidence-"));
142+
roots.push(suite);
143+
const failure = join(suite, "failures", "0123456789abcdef0123");
144+
mkdirSync(failure, { recursive: true });
145+
writeFileSync(join(failure, "trace-1.zip"), "failed first attempt");
146+
147+
discardPassedBrowserFailureEvidence(suite);
148+
149+
expect(readdirSync(suite)).toEqual([]);
150+
});
138151
});

‎scripts/ci/run-browser-lane.ts‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,10 @@ export function normalizePlaywrightFailureEvidence(suiteDirectory: string): void
182182
rmSync(rawRoot, { recursive: true, force: true });
183183
}
184184

185+
export function discardPassedBrowserFailureEvidence(suiteDirectory: string): void {
186+
rmSync(join(suiteDirectory, "failures"), { recursive: true, force: true });
187+
}
188+
185189
async function runLane(lane: BrowserLane, evidenceRoot: string): Promise<number> {
186190
let failed = false;
187191
for (const task of BROWSER_LANES[lane]) {
@@ -212,6 +216,7 @@ async function runLane(lane: BrowserLane, evidenceRoot: string): Promise<number>
212216
if (task.producesEvidence) {
213217
try {
214218
if (task.suite === "neutral") normalizePlaywrightFailureEvidence(suiteDirectory);
219+
if (exitCode === 0) discardPassedBrowserFailureEvidence(suiteDirectory);
215220
mkdirSync(suiteDirectory, { recursive: true });
216221
writeFileSync(
217222
resolve(suiteDirectory, "summary.json"),

‎scripts/ci/workflow-policy.test.ts‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -693,6 +693,12 @@ describe("CI workflow policy", () => {
693693
expect(extension.scripts["test:research-extension-browser:prebuilt"]).toContain(
694694
"--conditions=development",
695695
);
696+
const researchConfig = await readFile(
697+
join(REPO_ROOT, "apps/extension/tests/research/packed/playwright.config.ts"),
698+
"utf8",
699+
);
700+
expect(researchConfig).toContain("retries: process.env.CI ? 1 : 0");
701+
expect(laneRunner).toContain("discardPassedBrowserFailureEvidence(suiteDirectory)");
696702
});
697703

698704
it("publishes only validated synthetic browser evidence", async () => {

0 commit comments

Comments
 (0)