Refuse a page change the Edit tab cannot do, and wait before asking (BL-16799) - #8299
Open
hatton wants to merge 2 commits into
Open
Refuse a page change the Edit tab cannot do, and wait before asking (BL-16799)#8299hatton wants to merge 2 commits into
hatton wants to merge 2 commits into
Conversation
hatton
commented
Sep 3, 2026
hatton
commented
Sep 3, 2026
`editView/jumpToPage` replied success to a jump it dropped, so a test that asked at the wrong moment saw an empty page iframe and asked again, up to three times, 20 seconds apart. A real "this page will not load" defect looked the same. Two changes, one on each side: - `EditingModel.JumpToPage` says whether it did the jump, and `HandleJumpToPage` replies with a failure when it did not. It also refuses a page id the book does not have: such an id used to pass the guard and report success, while OnBecomeVisible fell back to the most recently edited page and a save-then-navigate landed wherever the id took it, so the caller waited for a page that could not appear. `postString` takes a `report` argument, so the two callers in the front end can turn off the problem report for a failure that is a matter of timing and that a user cannot put right. - `e2e/editState` reports what the Edit tab is doing, and how many times the page it shows has announced itself. `waitForEditTabSettled` polls that until the page and the count have held still for 1500 ms, and every helper that changes the page calls it first. The count of announcements is the part that matters: a page announces itself twice, and a page change that arrives between the two announcements wedges the Edit tab in SavePending. The state alone reads Editing in that window. No test can see this from the DOM, because Bloom leaves the previous page in the frame while it loads the next. That Bloom defect is older than this suite and still open. AUTOMATION-DEBT.md now has an entry for it, with the log lines that show it and two fix directions, both of which change production save behavior. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
hatton
force-pushed
the
BL-16799-page-change
branch
from
September 3, 2026 19:40
9e6391c to
bc78b4e
Compare
Master moved while this stack was open, so each branch merges the one below it. The conflicts were all in src/BloomE2E/AUTOMATION-DEBT.md: master gave the table of this stack a pull-request column and annotated each promise with its number, while this branch deletes its own row and replaces or deletes its own promise. The merge keeps both, taking this branch text where the two describe the same entry. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BaWw4EHWrbFF2fNJvMJVC8
hatton
commented
Sep 3, 2026
Member
Author
|
[Claude Opus 5 from Hatton's machine during devin-review] Consulted Devin on 2026-09-03 22:45 UTC up to commit |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
editView/jumpToPagereplied success to a jump it dropped, so a test that asked atthe wrong moment saw an empty page iframe and asked again, up to three times, 20
seconds apart. A real "this page will not load" defect looked the same.
Two changes, one on each side:
EditingModel.JumpToPagesays whether it did the jump, andHandleJumpToPagereplies with a failure when it did not.
postStringtakes areportargument, sothe two callers in the front end can turn off the problem report for a failure that
is a matter of timing and that a user cannot put right.
e2e/editStatereports what the Edit tab is doing, and how many times the page itshows has announced itself.
waitForEditTabSettledreads that twice, 1500 ms apart,and every helper that changes the page calls it first.
The count of announcements is the part that matters: a page announces itself twice, and
a page change that arrives between the two announcements wedges the Edit tab in
SavePending. The state alone reads Editing in that window. No test can see this from
the DOM, because Bloom leaves the previous page in the frame while it loads the next.
That Bloom defect is older than this suite and still open. AUTOMATION-DEBT.md now has
an entry for it, with the log lines that show it and two fix directions, both of which
change production save behavior.
This is one of eleven stacked pull requests (BL-16799)
Each one pays down one entry of
src/BloomE2E/AUTOMATION-DEBT.md, and each branches off the one before it. Base:BL-16799-tab-test-ids. Review only this pull request's own commit; the ones below it are reviewed in their own pull requests. The first six change test and tooling code only; the last five also change product code.BL-16799-automation-scripts— Make the bloom-automation scripts safe to ask for helpBL-16799-vr-collect-failures— Report every failed image comparison in a visual-regression case, not the firstBL-16799-component-tests-in-ci— Run the component-tester Playwright suites nightlyBL-16799-vite-port— Let an e2e run test the working tree's front endBL-16799-type-in-one-call— Type into a text box in one call, not one key press per characterBL-16799-page-screenshot— Capture a whole book page from a testBL-16799-toolbox-registration— Register the toolbox tools from one list both callers shareBL-16799-shell-document— Stop a test attaching to a shell document Bloom does not driveBL-16799-tab-test-ids— Click a workspace tab by a test id, not by its localized labelBL-16799-page-change— Refuse a page change the Edit tab cannot do, and wait before askingBL-16799-collection-languages— Set a collection's languages through an e2e hook, not by writing XMLReplaces #8276, which did all of this in one pull request.
Verification of the whole stack, at its tip: the C# suite passes (3338 passed, 13 skipped), the front-end vitest suite passes (781 passed, 5 skipped), and the
src/BloomE2Esuite passes against a Vite dev server on the working tree (36 passed, 0 skipped, 8.2 minutes). Each pull request also has its own type check and lint.🤖 Generated with Claude Code
Devin review
This change is