From f09c922c463d29119500373efc76a81d09433114 Mon Sep 17 00:00:00 2001 From: timmy Date: Wed, 19 Aug 2026 07:42:46 +0000 Subject: [PATCH] test: model admitted blocker receipt deterministically --- .../e2e/test_mobile_today_handoff_release.py | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/tests/e2e/test_mobile_today_handoff_release.py b/tests/e2e/test_mobile_today_handoff_release.py index 57fb950..f5196bb 100644 --- a/tests/e2e/test_mobile_today_handoff_release.py +++ b/tests/e2e/test_mobile_today_handoff_release.py @@ -530,11 +530,20 @@ def test_release_artifact_recovers_admitted_blocker_after_reload_and_opens_next_ expect(page.locator("#resume-today-break")).to_be_visible() page.evaluate("""() => { + const outbox = JSON.parse(localStorage.getItem('stackchain.authored-outbox.v1') || + '{"version":2,"items":[]}'); + outbox.items.push({ + id: 'already-admitted-blocker', operationId: 'already-admitted-blocker', + kind: 'issue-comment', repository: 'acme/mobile', number: 41, + body: 'Blocked after reload waiting for the design owner', ownerLogin: 'timmy', + status: 'queued', queuedAt: Date.now() + }); + localStorage.setItem('stackchain.authored-outbox.v1', JSON.stringify(outbox)); localStorage.setItem('stackchain.today-progress.v1.timmy', JSON.stringify({ version: 1, drafts: { 'issue:acme/mobile:41:': { - body: 'Blocked waiting for the design owner', + body: 'Blocked after reload waiting for the design owner', operation_id: 'already-admitted-blocker', blocker_pending: true, blocker_until: '2000-01-02T03:04:00.000Z' @@ -575,17 +584,22 @@ def test_release_artifact_recovers_admitted_blocker_after_reload_and_opens_next_ assert state["today"] == ["issue:acme/mobile:42:"] assert state["later"]["issue:acme/mobile:41:"].startswith("2099-08-19T09:00") queued_comments = [ - item for item in state["outbox"]["items"] if item["kind"] == "issue-comment" + item for item in state["outbox"]["items"] + if item["kind"] == "issue-comment" + and item["number"] == 41 + and item["body"] == "Blocked after reload waiting for the design owner" ] delivered_comments = [ {"number": number, "body": body} for number, body in fake.comments - if number == 41 and body == "Blocked waiting for the design owner" + if number == 41 and body == "Blocked after reload waiting for the design owner" ] - assert len(queued_comments) + len(delivered_comments) == 1 - receipt = (queued_comments + delivered_comments)[0] + assert len(queued_comments) <= 1 + assert len(delivered_comments) <= 1 + assert queued_comments or delivered_comments + receipt = (delivered_comments or queued_comments)[0] assert receipt["number"] == 41 - assert receipt["body"] == "Blocked waiting for the design owner" + assert receipt["body"] == "Blocked after reload waiting for the design owner" assert page.evaluate("document.documentElement.scrollWidth <= window.innerWidth") assert browser_errors == [] browser.close()