# Known disagreements between the engine tree and Chrome or Playwright, one per line:
# page | oracle field | role "name" | ours <value> | theirs <value> | reason
# Generated by E2E_CROSSCHECK_UPDATE=1; edit only the reasons. See tests/crosscheck/expectations.ts.
benchmark: file-round-trip | chrome name | button "" | ours  | theirs Choose File | An unlabeled file input shows the browser's localized button text, which the page cannot read; Playwright reports it too, the tree leaves the input unnamed rather than guess the locale
fixture: disabled states | chrome disabled | group "Shipping" | ours true | theirs false | `:disabled` matches a disabled fieldset itself; the tree keeps that so the model reads why the controls inside are disabled. Chrome and Playwright mark only the controls
fixture: disabled states | chrome selected | option "Poland" | ours true | theirs false | Chrome drops the selected state of an option in a disabled select; Playwright agrees with the tree that it is the value
fixture: generated content | chrome name | link "Sign out" | ours Sign out | theirs  | Chrome names a link whose only content is an icon-font glyph by the glyph, which is nothing once dropped; the tree falls back to its title so the model reads the word a person hovering it sees
fixture: generated content | playwright getByRole | link "Sign out" | ours match | theirs no match | Known limit: the browser names a glyph-only link by the glyph, so a role query by the title the tree shows finds nothing; web.locator('[title="..."]') reaches it. Composing a title alternative with or() drops matches inside closed shadow roots
fixture: hidden content | chrome name | button "Save draft" | ours Save draft | theirs Save | Chrome drops inert text from a name, Playwright's getByRole keeps it; the tree names as getByRole matches, so a name read off the tree finds the control
fixture: names | chrome name | button "" | ours  | theirs Spaced reference | Chrome falls back to a whitespace-only labelledby target's title, Playwright's getByRole keeps the untrimmed whitespace and names the button nothing (accname 2B); the tree names as getByRole matches
fixture: names | chrome name | button "Child tooltip" | ours Child tooltip | theirs  | Chrome skips a descendant's title in a name from content, Playwright's getByRole reads it for an empty child (accname 2I); the tree names as getByRole matches, so an icon button titled on its wrapper is findable by name
