WPT
wpt / html / semantics / menu / tentative / menu-content-model-violation.html
Spec: HTML ↗
Runs: Chrome 155.0.8042.0 (wpt@4eb09bcd9, 2026-09-04) | Firefox 157.0a1 (wpt@c3fcbf4ba, 2026-09-04) | Safari 251 preview (wpt@e7122b73f, 2026-09-04) | Ladybird 1.0-52f0f (wpt@a1ecd0c09, 2026-09-04) | Servo Servo 0.6 (wpt@2c385f65e, 2026-09-04) | Blitz a50cb8971 (wpt@a95401e4e, 2026-09-03)
View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi
| Chrome | Firefox | Safari | Ladybird | Servo | Blitz | |
|---|---|---|---|---|---|---|
| Total | 33/33 | 0/33 | 0/33 | 0/33 | 0/33 | NOT RUN |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| Menulist without content model violations does not force dialog | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Menubar without content model violations does not force dialog | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Menulist containing an anchor tag forces dialog | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Menubar containing an anchor tag forces dialog | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Submenu containing <div>text</div> forces dialog | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Submenu containing wayward text content forces dialog | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Fieldset containing wayward text forces dialog | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Menulist with wayward text content forces dialog | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Menubar with wayward button forces dialog | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Invalid submenu sequence intentionally does not force dialog | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Invalid submenu multiple items intentionally does not force dialog | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Invalid submenu missing item intentionally does not force dialog | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Dynamic mutation correctly triggers and untriggers dialog mode | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Invalid outer menubar forces dialog on itself and on valid inner menulist | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Dynamic text mutation correctly triggers and untriggers dialog mode | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Attribute mutation double-counting incorrectly fails to untrigger dialog mode | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Dynamic structural violation (div in submenu) does not force dialog | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Removing valid text content does not incorrectly clear dialog mode | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Menulist containing a menubar does not force dialog | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Menulist with wayward pseudo-element text incorrectly fails to force dialog | PASS | FAIL | FAIL | FAIL | FAIL | — |
| React/lit teardown: Mutating a detached subtree does not incorrectly trigger dialog mode | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Vue/Angular teardown: Removing invalid nodes in reverse tree order restores menu role | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Outer menu ignores mutations inside detached nested menus | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Adding and immediately removing an invalid text node does not force dialog | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Adding and immediately removing text inside a menuitem does not force dialog | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Removing a node from a detached valid subtree should not crash | PASS | FAIL | FAIL | FAIL | FAIL | — |
| A single violation forces the entire menu tree (ancestors, siblings, descendants) into dialog mode | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Dynamic removal of the only violation restores the entire tree | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Multiple violations across different branches require all to be removed before restoring | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Detaching an invalid subtree restores the outer menu, but the detached subtree remains a dialog | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Removing a wrapper element containing an invalid menu correctly restores the outer menu | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Inserting and immediately removing a violating subtree correctly maintains the outer menu state | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Reparenting a standalone violating menulist into a menubar correctly transfers violations to the top-level observer | PASS | FAIL | FAIL | FAIL | FAIL | — |
| Invalid outer menubar forces dialog on itself but not on valid inner menulist | — | — | — | — | — | — |