Update the option-group tests for the removed seat, and ring the add field - #148
Conversation
…field `Make reader-added answers real options` (292de9c) replaced the options group's catch-all conversation with an add-option form, dropped `x-conversation`/`x-work` from `lf-options`, took the status rule out of the option gutter, reworded the pick mark, and moved the keyboard ring from the decision onto the exact option row. Nineteen browser tests still read the old page. The durable-draft corpus and one navigation test used `#jobs`'s conversation seat as their subject; they now stand on a `lf-task talk` seat, which is the seat the shipped layer still has. Two of them asked whether the composer disappears after a send — a seat that can hold keeps it standing — so they ask of the words instead. The digit test drops the status rule from its gutter relation, the retired-slot test moves to a settled group's summary, which is the generated label that is still one of the page's words, and the ring test reads the band off the row the keyboard is on. Two product findings came out of the same walk. The add field's own outline is off, so its row has to answer the keyboard for it — and the rule was scoped to `:not([settled])`, leaving a reader who opened a settled group and tabbed into its field with nothing on screen saying where they were. And the row ring is inset on butted cells, so `RINGS_DRAWN` sampling half a pixel inside its outer edge hit-tested the seam and reported the next row as painting over it; it now samples the middle of the ring's own band. Two tests are not fixed here. `test_a_seat_conversation_leaves_the_pick_it_is _about_live` and `test_the_ring_holds_on_a_seat_the_agent_has_still_to_answer` both need a widget that is on the reader's ask list *and* seats a conversation, which no shipped widget now is.
|
One thing worth pinning down for #147, since it is the obvious next attempt: the test-overlay route passes as a browser test and still declares an invalid layer, exactly as this PR's |
Problem
The nightly
cion 292de9c ("Make reader-added answers real options") went from 14 failures to 35 in run 33337626485, and the 19 that commit added were still there at9283316the next run. That commit replaced the options group's catch-all conversation with an add-option form and droppedx-conversation/x-workfromlf-options, took the status rule out of the option gutter, reworded the pick mark fromchosentoselected, and moved the keyboard ring off the decision onto the exact option row. Nineteen browser tests still read the page as it was.Solution
Seventeen of the nineteen are fixed here, and two of them turned out to be product findings rather than stale assertions.
Fourteen durable-draft tests and
test_c_in_a_seated_conversation_reaches_the_thread_it_is_inused#jobs's conversation seat as their subject — a seat onlylf-optionssupplied. They now stand on alf-task talkseat fromcommand-hub, which is the seat the shipped layer still has; the id, thesay:jobsdraft key and the{section: "jobs"}anchors are unchanged, so the tests read the same coordinate they always did. Two of them asked whether the composer disappears after a send. A seat that can hold keeps it standing (renderConversations), so they ask of the words in it instead, which is the claim either way: a settled draft is words the next view must not be handed.The remaining assertion updates: the digit test drops the status rule from its gutter relation and reads the digit against the cell's own edge; the retired-slot test moves to a settled group's summary, since
relabel(..., {says: false})means a pick mark is no longer one of the page's words and the fixture would have stopped exercising its case; the ring test reads the band off the row the keyboard is on and keeps its one-band comparison against the suggestion's decision, which still wears the ring itself.Two findings the walk turned up:
.lf-another inputsetsoutline: none, so the row has to answer the keyboard for it — and that rule was scoped:not([settled]). A reader who opens a settled group's disclosure and Tabs into its "Another option" field gets nothing on screen saying where they are. That is whattest_every_ring…was reporting as four unseen stops.RINGS_DRAWNmis-reads an inset ring on butted cells. It sampled half a pixel inside the ring's outer edge, which for an inset ring is also the control's last fraction of a pixel; hit testing rounds that to the device pixel it shares with the next cell, so the row below reported as painting over the ring's bottom edge. Measured: an option's border box ends at 489.71875 andelementsFromPointat 489.21875 returns the next option, at 489.0 the option itself. It now samples the middle of the ring's own band, floored at half a pixel so a hairline ring still lands inside itself.Not fixed here
test_a_seat_conversation_leaves_the_pick_it_is_about_liveandtest_the_ring_holds_on_a_seat_the_agent_has_still_to_answerboth need a widget that is on the reader's ask list and seats a conversation.lf-optionswas the only one, and the split those two guard —seat_with_agenttaking a decision off the reader's list without answering it — can no longer be produced by the shipped layer. Tracked in #147; the options are a design call rather than a test edit.Why the obvious substitutions do not work
chosenpick takes the group off the reader's list, but it also makes it answered, soactionAvailable'sawaitingprerequisite legitimately refuses the press and the log stays empty — the opposite of what the eligibility test asserts. Tried; it fails atassert [] == ['choose'].lf-task talkseat seats a conversation but isx-awaits: {rollup: true}, so it never enters the visible list, and_answeredis not consulted for a rollup record. Adding a localx-awaitsto it in an overlay is refused by the registry:<lf-task> x-awaits local decision declares no answer verbs.x-conversationback onlf-optionsin a test overlay makes an invalid layer: the render gate'smissingConversationsprobe reports "declares x-conversation but rendered 0 matching hosts; its module must place exactly one conversationBox".The other pre-existing failures in that run are untouched: the catalog preview digest is #134 / #133, and
test_a_coined_class_cannot_reach_the_chromes_rulescame in with360c40a. This branch does changetheme.css, which is one of the 142 filesexample-previews.pydigests, so the manifest will want another run of that script whenever #134's treadmill is settled.Testing
On this branch rebased onto
92b54ae:uv run pytest tests— 724 passed, 6 skipped.uv run pytest tests/test_render_drafts.py tests/test_render_options.py tests/test_render_options_addition.py tests/test_render_options_settled.py --run-nightly— 101 passed.uv run pytest tests/test_render_projection.py tests/test_render_navigation.py --run-nightly— 139 passed, 1 failed (test_the_ring_holds_on_a_seat…, the one left above).uv run pytest tests/test_render_controls.py tests/test_render_conversations.py --run-nightly— the four standing failures plustest_a_seat_conversation_leaves_the_pick…;test_every_ring_the_layer_draws_is_shown_whole_somewhere_in_the_corpuspasses on its own (-n0, 54s) and reaches its last assertion under-n4, where it reported four unseen stops before this change.pre-commit run --filesover the diff — passed.Each assertion here was reproduced red before it was changed, and
.lf-another's ring was measured both ways in a settled group:['none','3px','rgb(28,27,24)']before,['solid','2px','rgb(47,84,128)']after.Automated fix for failed run