Skip to content

Census misses div-based rows: positional button ids can sign the wrong chart #1559

Closed

Description

@abrichr

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-0 is whichever row is first);
  • the positional-id filter correctly refuses open-0 as 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 div rows and #open-N buttons. After a swap, the run halts before the sign, or picks the recorded row by an app-owned record id.
  • A unique div row still runs.
  • Nothing changes for tr and li worklists.

Found in the review of #1557.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions