From 35af7eda928ae139dbdad401bd9b80e71faa92aa Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Fri, 11 Sep 2026 23:04:43 +0200 Subject: [PATCH] test(app): finish restore fixture cleanup after teardown errors --- .../helpers/codex-workspace-restore.ts | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/packages/app/e2e/support/helpers/codex-workspace-restore.ts b/packages/app/e2e/support/helpers/codex-workspace-restore.ts index 8bb5dd822f..7595b4eb20 100644 --- a/packages/app/e2e/support/helpers/codex-workspace-restore.ts +++ b/packages/app/e2e/support/helpers/codex-workspace-restore.ts @@ -216,6 +216,8 @@ async function createCodexRestoreJourney(page: Page, client: SeedDaemonClient, i }); }, async dispose() { + const testFailed = info.status !== info.expectedStatus; + const errors: unknown[] = []; try { await info.attach("final-screen", { body: await page.screenshot(), @@ -230,13 +232,28 @@ async function createCodexRestoreJourney(page: Page, client: SeedDaemonClient, i body: await readFile(path.join(process.env.E2E_PASEO_HOME!, "daemon.log")), contentType: "text/plain", }); - } finally { - await mcp.close(); - if (info.status === info.expectedStatus || process.env.E2E_KEEP_PASEO_HOME !== "1") { - if (workspace) await client.removeProject(workspace.projectId); - await repo.cleanup(); + } catch (error) { + errors.push(error); + } + const cleanup: Array<() => Promise> = [() => mcp.close()]; + if (!testFailed || process.env.E2E_KEEP_PASEO_HOME !== "1") { + const projectId = workspace?.projectId; + if (projectId) cleanup.push(() => client.removeProject(projectId)); + cleanup.push(() => repo.cleanup()); + } + for (const release of cleanup) { + try { + await release(); + } catch (error) { + errors.push(error); } } + if (errors.length > 0) { + const error = new AggregateError(errors, "Codex restore fixture teardown failed"); + if (!testFailed) throw error; + // Keep the journey failure primary while reporting teardown failures in the test log. + console.error(error); + } }, }; }