Generated by tools/check-scenarios.py --write-matrix.
| ID | Priority | Scenario | Java | TS | Python |
|---|---|---|---|---|---|
| UI-LOGIN-001 | P0 | Login succeeds with valid credentials | ✅ | ✅ | ✅ |
| UI-LOGIN-002 | P0 | Login rejects an invalid username | ✅ | ✅ | ✅ |
| UI-LOGIN-003 | P0 | Login rejects an invalid password | ✅ | ✅ | ✅ |
| UI-ADDREMOVE-001 | P0 | Add and remove buttons update the dynamic DOM | — | ✅ | ✅ |
| UI-CHECKBOX-001 | P0 | Checkboxes toggle on and off | ✅ | ✅ | ✅ |
| UI-CONTEXT-001 | P1 | Context menu opens the expected alert | ✅ | ✅ | — |
| UI-DRAGDROP-001 | P1 | Drag box A over box B | ✅ | ✅ | — |
| UI-DRAGDROP-002 | P1 | Drag box B over box A | ✅ | ✅ | — |
| UI-DRAGDROP-003 | P1 | Drag boxes in both directions | ✅ | ✅ | — |
| UI-DROPDOWN-001 | P0 | Dropdown options can be selected | ✅ | ✅ | ✅ |
| UI-DYNCONTENT-001 | P2 | Dynamic content changes on reload | ✅ | ✅ | — |
| UI-DYNCONTENT-002 | P2 | Dynamic content partially changes on reload | ✅ | ✅ | — |
| UI-DYNCTRL-001 | P0 | Dynamic controls remove and add a checkbox | ✅ | ✅ | ✅ |
| UI-DYNCTRL-002 | P0 | Dynamic controls checkbox toggles | ✅ | ✅ | ✅ |
| UI-DYNCTRL-003 | P0 | Dynamic controls enable and disable a textbox | ✅ | ✅ | ✅ |
| UI-DYNLOAD-001 | P0 | Dynamic loading reveals the success message | ✅ | ✅ | ✅ |
| UI-UPLOAD-001 | P0 | File upload shows the uploaded file | ✅ | ✅ | ✅ |
| UI-DOWNLOAD-001 | P1 | File download retrieves the expected content | ✅ | ✅ | ✅ |
| UI-FLOATING-001 | P1 | Floating menu remains visible while scrolling | ✅ | ✅ | — |
| UI-IFRAME-001 | P0 | iFrame editor supports context switching | ✅ | ✅ | ✅ |
| UI-INPUT-001 | P0 | Numeric input accepts keyboard data | — | ✅ | ✅ |
| UI-HOVERS-001 | P1 | Hovering reveals user details | ✅ | ✅ | — |
| UI-JSALERT-001 | P0 | JavaScript alert buttons open popups | ✅ | ✅ | ✅ |
| UI-JSALERT-002 | P0 | JavaScript alert messages match expectations | ✅ | ✅ | ✅ |
| UI-JSALERT-003 | P0 | JavaScript prompt accepts input | ✅ | ✅ | ✅ |
| UI-JSERROR-001 | P1 | JavaScript error page exposes the expected error | ✅ | — | — |
| UI-WINDOWS-001 | P0 | Link opens expected content in a new tab | ✅ | ✅ | ✅ |
| HTTP-STATUS-001 | P0 | Status code endpoints return expected responses | — | ✅ | ✅ |
| HTTP-REDIRECT-001 | P0 | Redirect endpoint reaches the status codes page | — | ✅ | ✅ |
| HTTP-BASICAUTH-001 | P1 | Basic authentication accepts valid credentials | — | ✅ | ✅ |
| HTTP-DIGESTAUTH-001 | P1 | Digest authentication accepts valid credentials | — | ✅ | ✅ |
| HTTP-SLOW-001 | P2 | Slow resources fail with a bounded timeout | — | ✅ | ✅ |
| UI-BROKENIMG-001 | P0 | Broken images expose failed resource responses | — | ✅ | ✅ |
| UI-NOTIFY-001 | P1 | Notification message flash shows expected messages | ✅ | ✅ | — |
| UI-SHADOWDOM-001 | P1 | Shadow DOM exposes text through open roots and slots | — | ✅ | — |
| UI-SORTTABLE-001 | P1 | Sortable tables reorder rows by selected columns | — | ✅ | ✅ |
| UI-GEOLOCATION-001 | P1 | Geolocation displays the granted browser coordinates | — | ✅ | — |
| UI-INFINITE-001 | P1 | Infinite scroll loads additional content on demand | — | ✅ | — |
| UI-CHALLENGING-001 | P1 | Challenging DOM is asserted without dynamic identifiers | ✅ | ✅ | — |
| UI-SLIDER-001 | P1 | Horizontal slider moves by keyboard increments | — | ✅ | — |
| UI-DISAPPEAR-001 | P2 | Disappearing elements keep a stable core menu | — | ✅ | — |
| UI-ENTRYAD-001 | P2 | Entry ad modal can be observed and closed | — | ✅ | — |
| UI-EXITINTENT-001 | P2 | Exit intent modal opens on desktop mouse leave | — | ✅ | — |
| UI-TYPOS-001 | P2 | Typos page demonstrates nondeterministic copy | — | ✅ | — |
| UI-SHIFTING-001 | P2 | Shifting content demonstrates randomized layout | — | ✅ | — |
| UI-LARGEDOM-001 | P2 | Large and deep DOM supports targeted traversal | — | ✅ | — |
| UI-JQUERYUI-001 | P2 | JQuery UI menu exposes nested desktop options | — | ✅ | — |
| UI-ABTEST-001 | P2 | A/B testing page allows either experiment variant | — | ✅ | — |