Skip to content

Demo: deliberate a11y regression to exercise the full pipeline - #72

Closed
ckundo wants to merge 1 commit into
mainfrom
test/audit-pr-regression
Closed

ckundo wants to merge 1 commit into
mainfrom
test/audit-pr-regression

Conversation

@ckundo

@ckundo ckundo commented Apr 27, 2026

Copy link
Copy Markdown
Member

Demo PR — exercises every layer of the AccessLint pipeline end-to-end.

This PR adds two clear new accessibility violations to dashboards/app/page.js:

  • <img src="/logo512.png" /> — no alt attribute (critical, text-alternatives/img-alt)
  • <button onClick={…}></button> — no accessible name (critical, labels-and-names/button-name)

Both are net-new vs. production, so the regression check should fire.

Expected outcomes

Layer What should happen
audit-dev.yml (localhost dev server, multi-URL) Source-mapped to dashboards/app/page.js:9 and :10. Inline ::warning:: annotations on those lines in the "Files changed" tab.
audit-pr.yml (Netlify preview, regression mode) Reports 2 NEW violations (vs production's existing baseline). Sticky comment shows the regression report.
SARIF → Code Scanning Posts review comments on the new lines (since they're within the diff). Alerts also visible in Security tab.
Build status audit-dev.yml doesn't set fail-on, so green. audit-pr.yml doesn't set fail-on either, so green — the new violations are visible without forcing a hard gate.

After verification

This branch will be closed and the changes reverted. Pure demo of the v0.3.x pipeline.

Adds an <img> without alt and a <button> with no accessible name to
exercise the audit-pr.yml regression check end-to-end:

- audit-dev.yml (multi-URL on localhost:3000) should source-map both
  violations to dashboards/app/page.js — agent or human can fix at the
  exact line.
- audit-pr.yml (Netlify preview, regression mode) should report 2 NEW
  violations relative to production. The build will fail when fail-on
  trips on critical (img-alt + button-name are both critical).
- Inline PR-line annotations should appear on the new lines because
  they're within the diff range.

Will revert (close PR) once verified — this is purely a demo.
@netlify

netlify Bot commented Apr 27, 2026 •

Copy link
Copy Markdown

❌ Deploy Preview for accesslint-test-fixtures failed.

Name Link
🔨 Latest commit 6f68f28
🔍 Latest deploy log https://app.netlify.com/projects/accesslint-test-fixtures/deploys/69eeb2cacc01830008977635

@github-actions

Copy link
Copy Markdown

AccessLint audit — 2 URLs

194 violations across 2 URLs: 🟥 14 critical, 🟧 171 serious, 🟨 6 moderate, 🟦 3 minor.

http://localhost:3000/

12 violations: 🟥 2 critical, 🟧 7 serious, 🟨 2 moderate, 🟦 1 minor.

dashboards/app/page.js — 2 violations (2 critical)
Impact Rule Source Element Message
🟥 critical text-alternatives/img-alt dashboards/app/page.js:9:7 (img) img Image element missing alt attribute.
🟥 critical labels-and-names/button-name dashboards/app/page.js:10:7 (button) button Button has no discernible text.
dashboards/components/BuildTimesDashboard.js — 9 violations (7 serious, 1 moderate, 1 minor)
Impact Rule Source Element Message
🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboard.js:259:9 (p) p Insufficient color contrast ratio of 3.74:1 (required 4.5:1).
🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboard.js:267:13 (div) div:nth-of-type(2) Insufficient color contrast ratio of 4.02:1 (required 4.5:1).
🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboard.js:274:13 (div) div:nth-of-type(2) Insufficient color contrast ratio of 4.02:1 (required 4.5:1).
🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboard.js:280:13 (div) div:nth-of-type(2) Insufficient color contrast ratio of 4.02:1 (required 4.5:1).
🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboard.js:286:13 (div) div:nth-of-type(2) Insufficient color contrast ratio of 4.02:1 (required 4.5:1).
🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboard.js:368:11 (div) div Insufficient color contrast ratio of 4.02:1 (required 4.5:1).
🟧 serious labels-and-names/label-placeholder-only dashboards/components/BuildTimesDashboard.js:315:11 (input) input Form element uses placeholder as only label. Use , aria-label, or aria-labelledby instead.
🟨 moderate navigable/heading-order dashboards/components/BuildTimesDashboard.js:293:9 (h3) h3 Heading level 3 skipped from level 1. Use h2 instead.
🟦 minor adaptable/empty-table-header dashboards/components/BuildTimesDashboard.js:374:15 (th) th:nth-of-type(1) Table header cell is empty. Add text or use aria-label.
dashboards/node_modules/next/dist/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js — 1 violation (1 moderate)
Impact Rule Source Element Message
🟨 moderate landmarks/landmark-main dashboards/node_modules/next/dist/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js:3344:14 (html) html Page has no main landmark.

http://localhost:3000/broken

182 violations: 🟥 12 critical, 🟧 164 serious, 🟨 4 moderate, 🟦 2 minor.

dashboards/components/BuildTimesDashboardBroken.js — 181 violations (12 critical, 164 serious, 3 moderate, 2 minor)
Impact Rule Source Element Message
🟥 critical text-alternatives/img-alt dashboards/components/BuildTimesDashboardBroken.js:259:11 (img) img Image element missing alt attribute.
🟥 critical text-alternatives/input-image-alt dashboards/components/BuildTimesDashboardBroken.js:377:9 (input) input:nth-of-type(1) Image input missing alt text.
🟥 critical time-based-media/video-captions dashboards/components/BuildTimesDashboardBroken.js:426:7 (video) video Video element has no captions track.
🟥 critical labels-and-names/form-label dashboards/components/BuildTimesDashboardBroken.js:329:11 (select) select Form element has no accessible label.
🟥 critical labels-and-names/form-label dashboards/components/BuildTimesDashboardBroken.js:387:7 (div) div:nth-of-type(7) Form element has no accessible label.
🟥 critical labels-and-names/input-button-name dashboards/components/BuildTimesDashboardBroken.js:378:9 (input) input:nth-of-type(2) Input button has no discernible text.
🟥 critical labels-and-names/button-name dashboards/components/BuildTimesDashboardBroken.js:397:9 (button) button Button has no discernible text.
🟥 critical labels-and-names/duplicate-id-aria dashboards/components/BuildTimesDashboardBroken.js:421:7 (div) #build-info Duplicate ID "build-info" referenced by aria-labelledby.
🟥 critical aria/aria-roles dashboards/components/BuildTimesDashboardBroken.js:385:7 (div) div:nth-of-type(5) Invalid ARIA role "chckbox".
🟥 critical aria/aria-valid-attr dashboards/components/BuildTimesDashboardBroken.js:385:7 (div) div:nth-of-type(5) Invalid ARIA attribute "aria-chekced".
🟥 critical aria/aria-valid-attr-value dashboards/components/BuildTimesDashboardBroken.js:386:7 (div) div:nth-of-type(6) aria-checked must be "true", "false", or "mixed", got "yep".
🟥 critical aria/aria-required-attr dashboards/components/BuildTimesDashboardBroken.js:387:7 (div) div:nth-of-type(7) Role "slider" requires attribute "aria-valuenow".
🟧 serious text-alternatives/svg-img-alt dashboards/components/BuildTimesDashboardBroken.js:287:7 (svg) svg svg with role='img' has no accessible name.
🟧 serious adaptable/autocomplete-valid dashboards/components/BuildTimesDashboardBroken.js:317:11 (input) input Invalid autocomplete value "nope".
🟧 serious adaptable/list-children dashboards/components/BuildTimesDashboardBroken.js:403:9 (div) div List contains non-
  • child
    .
  • 🟧 serious adaptable/dl-children dashboards/components/BuildTimesDashboardBroken.js:416:7 (dt) dt
    is not contained in a
    .
    🟧 serious adaptable/dl-children dashboards/components/BuildTimesDashboardBroken.js:417:7 (dd) dd
    is not contained in a
    .
    🟧 serious adaptable/definition-list dashboards/components/BuildTimesDashboardBroken.js:412:9 (span) span
    contains invalid child .
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious adaptable/td-headers-attr dashboards/components/BuildTimesDashboardBroken.js:487:19 (td) td:nth-of-type(9) Headers attribute references non-existent ID "nonexistent-header".
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:249:9 (p) p Insufficient color contrast ratio of 1.44:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:262:13 (div) div:nth-of-type(2) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:269:13 (div) div:nth-of-type(2) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:275:13 (div) div:nth-of-type(2) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:281:13 (div) div:nth-of-type(2) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:435:11 (div) div Insufficient color contrast ratio of 1.54:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:477:19 (td) td:nth-of-type(4) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious distinguishable/color-contrast dashboards/components/BuildTimesDashboardBroken.js:485:19 (td) td:nth-of-type(8) Insufficient color contrast ratio of 1.49:1 (required 4.5:1).
    🟧 serious navigable/link-name dashboards/components/BuildTimesDashboardBroken.js:398:9 (a) a[href="/builds/latest"] Link has no discernible text.
    🟧 serious labels-and-names/label-placeholder-only dashboards/components/BuildTimesDashboardBroken.js:317:11 (input) input Form element uses placeholder as only label. Use , aria-label, or aria-labelledby instead.
    🟨 moderate keyboard-accessible/focus-order dashboards/components/BuildTimesDashboardBroken.js:392:7 (span) span Non-interactive with tabindex="0" has no interactive role.
    🟨 moderate navigable/heading-order dashboards/components/BuildTimesDashboardBroken.js:293:9 (h3) h3 Heading level 3 skipped from level 1. Use h2 instead.
    🟨 moderate landmarks/no-duplicate-banner dashboards/components/BuildTimesDashboardBroken.js:251:7 (header) header:nth-of-type(2) Page has multiple banner landmarks.
    🟦 minor text-alternatives/image-alt-words dashboards/components/BuildTimesDashboardBroken.js:266:11 (img) img Alt text "image of a timer icon" starts with redundant prefix "image".
    🟦 minor adaptable/empty-table-header dashboards/components/BuildTimesDashboardBroken.js:441:15 (th) th:nth-of-type(1) Table header cell is empty. Add text or use aria-label.
    dashboards/node_modules/next/dist/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js — 1 violation (1 moderate)
    Impact Rule Source Element Message
    🟨 moderate landmarks/landmark-main dashboards/node_modules/next/dist/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js:3344:14 (html) html Page has no main landmark.

    Generated 2026-04-27T00:50:47.504Z · run log · AccessLint/audit

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Labels

    None yet

    Projects

    None yet

    Development

    Successfully merging this pull request may close these issues.

    1 participant