Skip to content

fix(e2e): hold the t-flaky turn while the smoke test reads its opening line - #93

Merged
ANT1OFF merged 1 commit into
mainfrom
fix/e2e-smoke-opening-line
Nov 2, 2026
Merged

ANT1OFF merged 1 commit into
mainfrom
fix/e2e-smoke-opening-line

Conversation

@ANT1OFF

@ANT1OFF ANT1OFF commented Nov 2, 2026

Copy link
Copy Markdown
Owner

Cause

smoke.spec.ts:4 asserted a transient state. While the scripted t-flaky turn runs, everything before its latest words folds into the running row (foldTurn in tool-group-model.ts). The opening line, "I'll start by reading the test…", folds as soon as the "Confirmed: 3 of 20…" words start. At the mock's 0.25× speed that is about 0.5 s later: the Read call plus the 900 ms Bash call, scaled. Playwright polls expect at 100/250/500/1000 ms, so once the page takes about a second to boot, a poll can land after the line has already folded.

It looked order-dependent, but it isn't caused by leftover state. smoke.spec.ts is the first spec of shard 7/8, and a retry runs in a new worker, so both the first attempt and the retry open the thread in a cold browser. The CI trace from run 41372675092 shows this at the failure: the transcript reads Working for 4s · 4 tools and "The test passes 20/20 now…", with the opening line folded inside the row.

Fix

The test now holds the script at its existing flaky-read gate, which sits right after the opening line, using gramMockHoldGates, the same pattern queue.spec.ts uses. It asserts the line, then releases the gate. The rest of the test is unchanged. No assertion, timeout, retry or skip changed.

Reproduction (local, dev server, --workers=1)

Run Before After
smoke.spec.ts:4 --repeat-each 17 failed / 20 0 failed / 50
Cold browser per repeat (a temporary spec that launches a new Chromium, opens /t/t-flaky and asserts the line, as the shard's first test does) 15 failed / 20 0 failed / 20

bun run check:scaffold passes, and oxlint and fmt --check are clean on the file.

Limits

I ran these repeats locally on the dev server only, not on the CI preview build or the arm64 runner. The repro spec was temporary and is not committed.

…g line

The running turn folds its finished steps into one row as soon as the next
words start, about half a second after the opening line at the mock's 0.25x
speed. smoke.spec.ts is the first spec of its CI shard, so it and its retry
open t-flaky in a cold browser, and Playwright's 1 s expect polls often
stepped over that window. Hold the script at its existing flaky-read gate,
assert the line, then release it.
@ANT1OFF
ANT1OFF merged commit 2edc4ac into main Nov 2, 2026
19 of 22 checks passed
@ANT1OFF
ANT1OFF deleted the fix/e2e-smoke-opening-line branch November 2, 2026 15:03
ANT1OFF added a commit that referenced this pull request Nov 2, 2026
Desktop release metadata proposal only. Merging this PR does not publish
or tag Gram; follow docs/RELEASING.md to release.
---


## [1.4.0](v1.3.1...v1.4.0)
(2026-11-02)


### Features

* **agents:** identify Gram's Claude processes as the gram entrypoint
([#91](#91))
([f7dd703](f7dd703))
* **desktop:** run on Linux
([#82](#82))
([1d37deb](1d37deb))
* **desktop:** turn voice input off on Linux with one check
([#79](#79))
([470ff8b](470ff8b))
* **orchestration:** a person's PR comment wakes the worker that owns it
([#86](#86))
([19bdc1c](19bdc1c))
* **orchestration:** a wrap-up turn when a worker stops without
reporting ([#88](#88))
([36a07fb](36a07fb))
* **orchestration:** workers say what they ruled out and check before
repeating ([#90](#90))
([8bdce01](8bdce01))
* **release:** publish and update Linux AppImage and .deb
([#95](#95))
([c33c464](c33c464))
* **voice:** an accurate mode with a Parakeet pass on each pause
([#83](#83))
([2b04a52](2b04a52))
* **voice:** hold one key to talk, with a tone at each end
([#87](#87))
([1a9b3ef](1a9b3ef))
* **voice:** start capture at the press, and an opt-in ready microphone
([#81](#81))
([505d240](505d240))
* **web:** a Done section that keeps the last 7 days
([#65](#65))
([8c7bd49](8c7bd49))
* **web:** Done lists every finished chat
([#67](#67))
([c91d9ac](c91d9ac))
* **web:** one attention count, quieter rows, a sidebar and board that
agree ([#92](#92))
([f193da4](f193da4))
* **web:** orchestrator → workers in the sidebar, a board that matches
([#80](#80))
([686e737](686e737))


### Bug Fixes

* **desktop:** harden the Linux key vault and autostart entry
([#85](#85))
([4b35eac](4b35eac))
* **e2e:** hold the t-flaky turn while the smoke test reads its opening
line ([#93](#93))
([2edc4ac](2edc4ac))
* **e2e:** release the dictation tap as soon as a word is heard
([#94](#94))
([7781194](7781194))
* prepare only approved local-check sources
([#32](#32))
([af3fab7](af3fab7))
* repair main after [#32](#32)
([#68](#68))
([ce352e6](ce352e6))
* **voice:** keep the last word after release
([#78](#78))
([cc40a47](cc40a47))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: gram-release-please[bot] <351321620+gram-release-please[bot]@users.noreply.github.com>
Co-authored-by: Johan <32440065+ANT1OFF@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant