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