| TC-R1 | No horizontal overflow | run-code: document.documentElement.scrollWidth <= document.documentElement.clientWidth |
| TC-R2 | Navigation transforms (hamburger ↔ full nav) | At 320: check for hamburger/menu button. At 1440: check for full nav links visible |
| TC-R3 | Images/media scale within viewport | run-code to find img/video/iframe elements, check none have width > viewport width |
| TC-R4 | Touch targets ≥48x48px (mobile) / ≥44x44px (WCAG) | run-code to measure all interactive element bounding boxes on mobile viewports |
| TC-R5 | Font sizes ≥12px, line heights readable | run-code to sample text elements, check computed fontSize ≥12px, lineHeight ratio ≥1.4 |
| TC-R6 | No text truncation hiding critical content | run-code to find elements with overflow:hidden + text-overflow:ellipsis, flag critical content (headings, CTAs, prices) |
| TC-R7 | Modals/dialogs fit within viewport | If modal exists: open it, run-code to check modal dimensions ≤ viewport |
| TC-R8 | Fixed/sticky elements don't overlap content | run-code to find position:fixed/sticky elements, check they don't cover more than 20% of viewport |
| TC-R9 | Tables responsive (scroll or stack) | run-code to find tables, check for horizontal scroll wrapper or responsive stacking |
| TC-R10 | Videos/embeds maintain aspect ratio | run-code to find video/iframe elements, check aspect ratio is reasonable (not squished) |
| TC-R11 | Dark mode renders correctly | run-code to emulate dark color scheme: page.emulateMedia({colorScheme:'dark'}), take screenshot |
| TC-R12 | Dark mode text contrast maintained | In dark mode: sample text elements, verify contrast ratio ≥4.5:1 |
| TC-R13 | Dark mode images/icons visible | In dark mode: check for images/SVGs that may be invisible on dark backgrounds |
| TC-R14 | Print styles — @media print present | run-code to check for print stylesheets or @media print rules |
| TC-R15 | Print styles — no cut-off content | run-code to emulate print: page.emulateMedia({media:'print'}), take screenshot |
| TC-R16 | RTL layout mirrors correctly | Check if page has dir="rtl" or RTL lang; if so, verify layout mirroring |
| TC-R17 | Landscape orientation — no breakage | resize to landscape dimensions (e.g., 568x320 for mobile), check no overflow or overlap |
| TC-R18 | Zoom 200% — no overlap/horizontal scroll | run-code to set document.documentElement.style.zoom = '200%', check for overflow |