Dashboard
Manage and review accessibility, visual, and security audit reports. {{ (dashReports || []).filter(r => r.scanType === 'accessibility').length }} accessibility reports {{ (dashReports || []).filter(r => r.scanType === 'keyboard-screen-reader').length }} KBSR reports {{ (dashReports || []).filter(r => r.scanType === 'visual-regression').length }} visual reports {{ (dashReports || []).filter(r => r.scanType === 'custom-workflow').length }} custom workflows {{ (dashReports || []).filter(r => r.scanType === 'security').length }} security reports {{ (filteredDashReports || []).length }} of {{ (dashReports || []).length }} reports · {{ (dashReports || []).filter(r=>r.status==='running').length }} running
No reports yet
Run your first scan and results will appear here.
No matches
No reports match the selected filter.
Loading report...
Accessibility Summary
{{ isVisualOnlyCustomReport ? 'Visual Scan Report' : 'Results Summary' }}
| Severity | Viewports | Category | Issue | Description | Occurrences | Step | Screenshot |
|---|---|---|---|---|---|---|---|
| {{ issue.severity || 'Medium' }} |
{{ vp }}
|
{{ issue.category || 'Keyboard Navigation' }} |
{{ issue.title || 'Issue' }}
|
{{ kbsrIssueSummaryText(issue) }}
|
{{ issue.occurrences || 1 }} | {{ issue.stepIndex ? issue.stepIndex : 'Structural' }} | N/A |
| Severity | Category | Issue | Occurrences | Step | Selector |
|---|---|---|---|---|---|
| {{ issue.severity || 'Medium' }} | {{ issue.category || 'Keyboard Navigation' }} |
{{ issue.title || 'Issue' }}
{{ issue.description }}
Details
Affected locations
{{ ii + 1 }}.
{{ instance.stepIndex ? `Step ${instance.stepIndex}` : 'Structural' }}
Not captured
Current output
{{ issue.currentOutput }}
Expected output
{{ issue.expectedOutput }}
Fix
{{ issue.fix }}
{{ issue.snippet }}
|
{{ issue.occurrences || 1 }} | {{ issue.stepIndex ? issue.stepIndex : 'Structural' }} | Not captured |
Results Summary
Loading screenshots...
Visual Scan Summary
Scheduled Jobs
{{ scheduledJobs.length }} scheduled scan{{ scheduledJobs.length !== 1 ? 's' : '' }}
No scheduled jobs
Go to New Scan → Run Audit → Schedule to set one up.
Comparisons
{{ filteredComparisons.length + filteredPendingComparisons.length }} comparison{{ (filteredComparisons.length + filteredPendingComparisons.length) !== 1 ? 's' : '' }} · {{ filteredPendingComparisons.length }} active
No comparisons yet
Select two reports of the same type on the Dashboard and click Compare.
No matches
No comparisons match the selected filter.
Running comparison...
{{ isKbsrComparison ? 'KBSR Comparison' : compareResult.scanType === 'security' ? 'Security Comparison' : 'Accessibility Comparison' }}
Regressions (New)
| Issue | Pages | {{ isKbsrComparison ? 'Issues' : 'Nodes' }} |
|---|---|---|
|
{{ rule.description }} {{ rule.ruleId }}
|
{{ rule.urls?.length || 0 }} | {{ rule.totalNodes }} |
Still Present (Unresolved)
| Issue | Pages | {{ isKbsrComparison ? 'Issues' : 'Nodes' }} |
|---|---|---|
|
{{ rule.description }} {{ rule.ruleId }}
|
{{ rule.urls?.length || 0 }} | {{ rule.totalNodes }} |
No active issues found.
Resolved (Fixed)
| Issue | Status |
|---|---|
|
{{ rule.description }} {{ rule.ruleId }}
|
Resolved |
URL Mismatch - Current Only
| URL | Result |
|---|---|
| {{ page.violations.length }} issues URL Mismatch |
URL Mismatch - Baseline Only
| URL | Status |
|---|---|
| URL Mismatch |
No improvements or new coverage recorded.
Targeting
Define the scope of your audit by providing a sitemap or a list of specific URLs.
Session Batches
Create batches of URLs that require different user roles or login states.
✓ {{ batch.homepagePopulated }} URL{{ batch.homepagePopulated !== 1 ? 's' : '' }} populated — edit as needed
Use a Previous Crawl
{{ entry.filename }}
Scan Type
Choose what kind of audit to run on your URLs. Each scan type produces a separate report.
Active Groups ({{ groupList.length }})
Review & Configure
Ready to scan {{ selectedGroupCount }} group{{ selectedGroupCount !== 1 ? 's' : '' }} - up to {{ estimatedUrls }} pages.
What axe-core reports
Each page is audited by the axe-core engine. Results are grouped by impact level and deduplicated across viewports.
WCAG Standard
Choose which version and conformance level to test against.
What the scan checks
Playwright drives a real browser using the Tab key only — no mouse. Each focusable element is visited and inspected.
Scan Viewports Viewports {{ a11yViewports.length }}
Scan each page at multiple screen sizes to catch responsive accessibility issues (WCAG 2.1 SC 1.4.10 Reflow).
Each viewport runs an independent keyboard traversal pass. Add desktop and mobile widths to cover both navigation experiences.
Quick add
What this scan captures
Playwright renders each page in a real browser and takes pixel-perfect screenshots at every viewport you configure.
Viewports {{ vrCfg.viewports.length }}
Each page is captured at every viewport. DPR and emulation are set automatically from width.
Quick add
Element Filters
Control which elements appear in captured screenshots. Auto-saved per site when you run.
Screenshot specific sections separately instead of the full page - e.g. header, main, footer. Leave empty for full-page capture.
For better coverage, split instead of capturing the full page - add header, main, and footer as separate regions. This avoids scroll-stitching artefacts and gives you a clean diff per section.
Hidden in every screenshot - chat widgets, cookie banners, overlays. Enter or , to add.
What gets checked
The scan spiders same-origin pages from your selected URLs and runs each check below on every response.
Scan Mode
Choose passive checks for normal runs, or active testing for approved lower environments.
Results Summary
{{ v.description }}
AI Solution Ready{{ v.id }}
- {{ u.count }} {{ isKbsrReport ? 'issue' : 'element' }}{{ u.count !== 1 ? 's' : '' }}
- Show less +{{ v.affectedUrls.length - 3 }} more URL{{ v.affectedUrls.length - 3 !== 1 ? 's' : '' }}