From 4384d26e79826f9bf47a49af4c40744cd547409e Mon Sep 17 00:00:00 2001 From: Douwe de Vries Date: Tue, 21 Jul 2026 23:32:45 +0200 Subject: [PATCH 1/3] fix(e2e): tolerate loaded release runners --- e2e/specs/critical-workflows.e2e.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/specs/critical-workflows.e2e.mjs b/e2e/specs/critical-workflows.e2e.mjs index e3c8ac4..e576db7 100644 --- a/e2e/specs/critical-workflows.e2e.mjs +++ b/e2e/specs/critical-workflows.e2e.mjs @@ -156,7 +156,7 @@ const workflows = { await releaseFixtureInvocation(1) const generated = await $('h2=E2E test cases') - await generated.waitForDisplayed({ timeout: 15_000 }) + await generated.waitForDisplayed({ timeout: 30_000 }) await browser.waitUntil( async () => /Deterministic generated case/.test(await (await $('body')).getText()), { timeout: 15_000, timeoutMsg: 'generated testware never reached its completed state' }, From 941dddf788e2912f9e196411a24f82904a0d6baf Mon Sep 17 00:00:00 2001 From: Douwe de Vries Date: Tue, 21 Jul 2026 23:43:48 +0200 Subject: [PATCH 2/3] fix(e2e): pin WDIO to the main window --- e2e/specs/critical-workflows.e2e.mjs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/e2e/specs/critical-workflows.e2e.mjs b/e2e/specs/critical-workflows.e2e.mjs index e576db7..a8b8792 100644 --- a/e2e/specs/critical-workflows.e2e.mjs +++ b/e2e/specs/critical-workflows.e2e.mjs @@ -156,7 +156,7 @@ const workflows = { await releaseFixtureInvocation(1) const generated = await $('h2=E2E test cases') - await generated.waitForDisplayed({ timeout: 30_000 }) + await generated.waitForDisplayed({ timeout: 15_000 }) await browser.waitUntil( async () => /Deterministic generated case/.test(await (await $('body')).getText()), { timeout: 15_000, timeoutMsg: 'generated testware never reached its completed state' }, @@ -211,6 +211,8 @@ const selectedWorkflow = workflows[scenario] assert.ok(selectedWorkflow, `Unknown or missing QA_SCRIBE_E2E_SCENARIO: ${scenario ?? '(missing)'}`) describe(`QA Scribe built application: ${scenario}`, () => { + before(async () => browser.tauri.switchWindow('main')) + it(selectedWorkflow.title, async () => { assert.notEqual( process.env.QA_SCRIBE_E2E_FORCE_FAILURE, From 943406c02b1b923843cfa6e25ac10ef43edb82ab Mon Sep 17 00:00:00 2001 From: Douwe de Vries Date: Tue, 21 Jul 2026 23:53:20 +0200 Subject: [PATCH 3/3] fix(e2e): observe generation through stable body --- e2e/specs/critical-workflows.e2e.mjs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/e2e/specs/critical-workflows.e2e.mjs b/e2e/specs/critical-workflows.e2e.mjs index a8b8792..651b22f 100644 --- a/e2e/specs/critical-workflows.e2e.mjs +++ b/e2e/specs/critical-workflows.e2e.mjs @@ -147,6 +147,7 @@ const workflows = { title: 'streams generation to completion and cancels a second deterministic provider job', run: async () => { await createSessionFixture('E2E generation session', 'Generate deterministic test cases from this note.') + const body = await $('body') const generate = await button('Generate test cases') await generate.waitForClickable() await generate.click() @@ -155,13 +156,13 @@ const workflows = { await confirm.click() await releaseFixtureInvocation(1) - const generated = await $('h2=E2E test cases') - await generated.waitForDisplayed({ timeout: 15_000 }) await browser.waitUntil( - async () => /Deterministic generated case/.test(await (await $('body')).getText()), + async () => { + const text = await body.getText() + return /E2E test cases/.test(text) && /Deterministic generated case/.test(text) && /Testware generated/.test(text) + }, { timeout: 15_000, timeoutMsg: 'generated testware never reached its completed state' }, ) - await (await $('p=Testware generated')).waitForDisplayed({ timeout: 15_000 }) await (await sessionTab('Note')).click() const secondGenerate = await button('Generate test cases') @@ -211,8 +212,6 @@ const selectedWorkflow = workflows[scenario] assert.ok(selectedWorkflow, `Unknown or missing QA_SCRIBE_E2E_SCENARIO: ${scenario ?? '(missing)'}`) describe(`QA Scribe built application: ${scenario}`, () => { - before(async () => browser.tauri.switchWindow('main')) - it(selectedWorkflow.title, async () => { assert.notEqual( process.env.QA_SCRIBE_E2E_FORCE_FAILURE,