test(ui): SQL specs wait for ES searchability — un-reds the matrix ES legs - #750
Merged
Conversation
Part of #596. The three SQL on FHIR specs (new in the Aug 26 nightly) seed their ViewDefinition/Library/Patient over REST and immediately drive pages that read through search - on the four Elasticsearch composite legs the asynchronous index has not refreshed yet, so the rail, the depends-on resolution, and the run preview all come up empty and every ES leg of ui-tests-matrix has been red since (runs 76 and 77 fail on exactly these three specs on all four legs). waitSearchable is the established answer; the simple-backend legs pass through it instantly. The ViewDefinition spec also scopes its view to its own seeded patient: the run preview cuts at 50 rows, so on any populated store the asserted row could fall off the page.
Two classes landed on main without rules and fail the design guard: Start export still said btn--accent, which the button-scale unification (#744, merged just before #743) removed - it takes the unified btn--primary like every migrated call site. And #748's bulk-import-manifest-empty hook, referenced by its nojs and Rust tests, gets a real rule: a tighter inset than the page-level empty state.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
The first heal gave #748's ruleless hook class its own padding, which broke the very parity its spec enforces - the two empty states must share one computed signature. A selector hook is not vocabulary: it moves to data-empty=manifests, the class list returns to the bare shared .empty-state, and the page object, nojs spec, and Rust assert follow.
Both sides independently replaced #748's ruleless .bulk-import-manifest-empty marker class with a data attribute. Keeps main's data-bulk-import-manifest-empty, which matches the page's existing data-bulk-import-* hooks; the template, page object, nojs spec, and Rust assert all follow it. Claude-Session: https://claude.ai/code/session_0169dqJaApLYpi5vSzD5MEvk
smunini
approved these changes
Aug 28, 2026
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.
Part of #596 — fixes the regression that has had all four Elasticsearch legs of
ui-tests-matrixred since the Aug 26 nightly (runs 76 and 77 fail on exactly the same three specs on every ES leg, includings3-elasticsearch; the chronic items in #596's description did not even appear in run 77).The regression
The three SQL on FHIR specs (new to the nightly with the #649 stack) seed their ViewDefinition/Library/Patient over REST and immediately drive pages that read through search: the rail listing, the
depends-onresolution, and the$sql-runpreview. On the ES composites the asynchronous index has not refreshed yet, so everything comes up empty and the specs time out. The simple-backend legs never see it — search there is read-your-write.The fix
waitSearchable(the established helper, built for precisely this) on their seeds before navigating. Simple backends pass through it instantly.whereon its own seeded family: the run preview cuts at 50 rows, so on any populated store the asserted row could legitimately fall off the page — this makes the assert deterministic everywhere (it is also what bit local runs, whereboot.mjs's fixed-path db accumulates).Also: heals the #743/#744 merge skew on main
Running the full suite against merged main surfaced two guard failures unrelated to the matrix: Start export still said
btn--accent, which the button-scale unification (#744, merged just before #743) removed — migrated to the unifiedbtn--primary; and #748'sbulk-import-manifest-emptytest hook had no rule — it gets a real one (tighter inset than the page-level empty state).Verified
Full Playwright suite on merged main: 289 passing after these fixes (282 + the design guard that the skew broke); full
helios-uiRust ring zero failures; the three SQL specs green on a fresh server. The ES legs themselves need the next nightly (or a manualworkflow_dispatch) to confirm — happy to trigger one once this merges.