Census misses div-based rows: positional button ids can sign the wrong chart #1559
Description
What happens
A worklist built from div rows (no tr, li, role=row or role=listitem), where each row has a button with a positional id (#open-0, #open-1), can open and sign the wrong chart after the rows reorder. The run still reports success. This reproduces on main both before and after #1557.
Why
PlaywrightBackend.identity_candidates_at (and _DESCRIBE_TARGET_JS, which structured_text_at uses) treat a node as a record row only when it matches tr, [role="row"], li, [role="listitem"]. A div row gives no row identity, so:
- the census reports
{row: false}(not_a_row), and the verified identity stands; - the structural locator picks the button by its id, which follows the position (
#open-0is whichever row is first); - the positional-id filter correctly refuses
open-0as a record id, but nothing counts the look-alike rows.
Expected
Repeated sibling structures should count as rows even without row tags or roles: siblings with the same tag and class signature, each holding the same kind of control. The census then counts look-alikes the same way it does for tr and li, and halts or picks by a record id, as it does today for real rows.
Acceptance
- A real-Chromium test with
divrows and#open-Nbuttons. After a swap, the run halts before the sign, or picks the recorded row by an app-owned record id. - A unique
divrow still runs. - Nothing changes for
trandliworklists.
Found in the review of #1557.
Activity