From c1d719842f952fbe97c0777ef9188faf3c702f09 Mon Sep 17 00:00:00 2001 From: timmy Date: Thu, 27 Aug 2026 12:25:22 +0000 Subject: [PATCH] test: await hydrated state in reload journeys --- tests/e2e/test_human_gates_reopen_release.py | 8 ++++++-- tests/e2e/test_mobile_offline_issue_release.py | 1 + tests/e2e/test_mobile_today_handoff_release.py | 3 +++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/e2e/test_human_gates_reopen_release.py b/tests/e2e/test_human_gates_reopen_release.py index 0e47d77..7e53a8a 100644 --- a/tests/e2e/test_human_gates_reopen_release.py +++ b/tests/e2e/test_human_gates_reopen_release.py @@ -253,7 +253,9 @@ def test_release_artifact_reviews_live_human_gate_history_and_receipt_on_phone(t page.wait_for_load_state("networkidle") page.evaluate("document.querySelector('#open-human-gates').click()") expect(page.locator("#human-gates")).to_be_visible() - cached_before = page.evaluate("Object.keys(localStorage).sort()") + cached_before = page.evaluate( + "Object.keys(localStorage).filter(key => key.includes('human-gate')).sort()" + ) page.locator("#human-gates-history").click() expect(page.locator("#human-gates-status")).to_contain_text("Older decisions are available") @@ -271,7 +273,9 @@ def test_release_artifact_reviews_live_human_gate_history_and_receipt_on_phone(t expect(page.locator("#human-gate-detail")).to_contain_text("receipt-2") expect(page.locator("#human-gates-status")).to_have_text("All 3 Human Gate decisions loaded.") expect(page.locator("[data-human-gate-history-more]")).to_have_count(0) - assert page.evaluate("Object.keys(localStorage).sort()") == cached_before + assert page.evaluate( + "Object.keys(localStorage).filter(key => key.includes('human-gate')).sort()" + ) == cached_before assert page.evaluate("document.documentElement.scrollWidth <= window.innerWidth") for selector in ("#human-gates-pending", "#human-gates-history"): bounds = page.locator(selector).bounding_box() diff --git a/tests/e2e/test_mobile_offline_issue_release.py b/tests/e2e/test_mobile_offline_issue_release.py index 79531fc..8d50061 100644 --- a/tests/e2e/test_mobile_offline_issue_release.py +++ b/tests/e2e/test_mobile_offline_issue_release.py @@ -330,6 +330,7 @@ def test_release_artifact_files_one_mobile_issue_exactly_once_after_offline_relo page.wait_for_timeout(100) assert durable_completion and all(item.get("status") == "sent" for item in durable_completion) page.reload(wait_until="networkidle") + hydrate_workspace(page) page.evaluate("window.dispatchEvent(new Event('online'))") for _ in range(40): completed_local = json.loads(page.evaluate("localStorage.getItem('stackchain.issue-outbox.v1')")) diff --git a/tests/e2e/test_mobile_today_handoff_release.py b/tests/e2e/test_mobile_today_handoff_release.py index 6b8ad5b..f51a658 100644 --- a/tests/e2e/test_mobile_today_handoff_release.py +++ b/tests/e2e/test_mobile_today_handoff_release.py @@ -52,6 +52,7 @@ def test_release_artifact_plans_hands_off_and_opens_next_mobile_issue(tmp_path: page.locator('input[name="access_token"]').fill(ACCESS_TOKEN) page.locator("#submit-sign-in").click() page.wait_for_url(origin + "/", wait_until="networkidle") + hydrate_workspace(page) try: expect(page.locator("#my-work-status")).to_contain_text("2") @@ -378,6 +379,7 @@ def test_release_artifact_pauses_today_across_mobile_work_and_insights_detours(t page.locator('input[name="access_token"]').fill(ACCESS_TOKEN) page.locator("#submit-sign-in").click() page.wait_for_url(origin + "/", wait_until="networkidle") + hydrate_workspace(page) expect(page.locator("#my-work-status")).to_contain_text("2") page.locator('[data-mobile-task="work"]').click() @@ -514,6 +516,7 @@ def test_release_artifact_recovers_admitted_blocker_after_reload_and_opens_next_ page.locator('input[name="access_token"]').fill(ACCESS_TOKEN) page.locator("#submit-sign-in").click() page.wait_for_url(origin + "/", wait_until="networkidle") + hydrate_workspace(page) expect(page.locator("#my-work-status")).to_contain_text("2") page.locator('[data-mobile-task="work"]').click()