fix: resolve 3 a11y test failures — contrast, mobile nav label, token… #123
Annotations
7 errors, 2 warnings, and 1 notice
|
a11y
Process completed with exit code 1.
|
|
[chromium] › e2e/a11y.spec.ts:71:5 › @a11y New Invoice form fields are all keyboard-reachable and labelled:
e2e/a11y.spec.ts#L81
3) [chromium] › e2e/a11y.spec.ts:71:5 › @a11y New Invoice form fields are all keyboard-reachable and labelled
Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
Error: [serious] color-contrast: Elements must meet minimum color contrast ratio thresholds (https://dequeuniversity.com/rules/axe/4.12/color-contrast?application=playwright)
- .border-transparent
Fix any of the following:
Element has insufficient color contrast of 2.53 (foreground color: #9ca3af, background color: #ffffff, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1
expect(received).toEqual(expected) // deep equality
- Expected - 1
+ Received + 58
- Array []
+ Array [
+ Object {
+ "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
+ "help": "Elements must meet minimum color contrast ratio thresholds",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.12/color-contrast?application=playwright",
+ "id": "color-contrast",
+ "impact": "serious",
+ "nodes": Array [
+ Object {
+ "all": Array [],
+ "any": Array [
+ Object {
+ "data": Object {
+ "bgColor": "#ffffff",
+ "contrastRatio": 2.53,
+ "expectedContrastRatio": "4.5:1",
+ "fgColor": "#9ca3af",
+ "fontSize": "10.5pt (14px)",
+ "fontWeight": "normal",
+ "messageKey": null,
+ },
+ "id": "color-contrast",
+ "impact": "serious",
+ "message": "Element has insufficient color contrast of 2.53 (foreground color: #9ca3af, background color: #ffffff, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1",
+ "relatedNodes": Array [
+ Object {
+ "html": "<body class=\"min-h-screen bg-white dark:bg-gray-950 text-gray-900 dark:text-gray-100 antialiased overflow-x-hidden\">",
+ "target": Array [
+ "body",
+ ],
+ },
+ ],
+ },
+ ],
+ "failureSummary": "Fix any of the following:
+ Element has insufficient color contrast of 2.53 (foreground color: #9ca3af, background color: #ffffff, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1",
+ "html": "<button type=\"button\" role=\"tab\" aria-selected=\"false\" class=\"px-4 py-2 text-sm font-medium transition-colors rounded-t-lg -mb-px border-b-2 border-transparent text-gray-400 hover:text-gray-200\">Import from Transaction</button>",
+ "impact": "serious",
+ "none": Array [],
+ "target": Array [
+ ".border-transparent",
+ ],
+ },
+ ],
+ "tags": Array [
+ "cat.color",
+ "wcag2aa",
+ "wcag143",
+ "TTv5",
+ "TT13.c",
+ "EN-301-549",
+ "EN-9.1.4.3",
+ "ACT",
+ "RGAAv4",
+ "RGAA-3.2.1",
+ ],
+ },
+ ]
79 | (v) => v.impact === 'critical' || v.impact === 'serious'
80 | );
> 81 | expect(seriousOrCritical, formatViolations(seriousOrCritical)).toEqual([]);
| ^
82 | });
83 |
at /home/runner/work/split-app/split-app/e2e/a11y.spec.ts:81:66
|
|
[chromium] › e2e/a11y.spec.ts:71:5 › @a11y New Invoice form fields are all keyboard-reachable and labelled:
e2e/a11y.spec.ts#L81
3) [chromium] › e2e/a11y.spec.ts:71:5 › @a11y New Invoice form fields are all keyboard-reachable and labelled
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Error: [serious] color-contrast: Elements must meet minimum color contrast ratio thresholds (https://dequeuniversity.com/rules/axe/4.12/color-contrast?application=playwright)
- .border-transparent
Fix any of the following:
Element has insufficient color contrast of 2.53 (foreground color: #9ca3af, background color: #ffffff, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1
expect(received).toEqual(expected) // deep equality
- Expected - 1
+ Received + 58
- Array []
+ Array [
+ Object {
+ "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
+ "help": "Elements must meet minimum color contrast ratio thresholds",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.12/color-contrast?application=playwright",
+ "id": "color-contrast",
+ "impact": "serious",
+ "nodes": Array [
+ Object {
+ "all": Array [],
+ "any": Array [
+ Object {
+ "data": Object {
+ "bgColor": "#ffffff",
+ "contrastRatio": 2.53,
+ "expectedContrastRatio": "4.5:1",
+ "fgColor": "#9ca3af",
+ "fontSize": "10.5pt (14px)",
+ "fontWeight": "normal",
+ "messageKey": null,
+ },
+ "id": "color-contrast",
+ "impact": "serious",
+ "message": "Element has insufficient color contrast of 2.53 (foreground color: #9ca3af, background color: #ffffff, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1",
+ "relatedNodes": Array [
+ Object {
+ "html": "<body class=\"min-h-screen bg-white dark:bg-gray-950 text-gray-900 dark:text-gray-100 antialiased overflow-x-hidden\">",
+ "target": Array [
+ "body",
+ ],
+ },
+ ],
+ },
+ ],
+ "failureSummary": "Fix any of the following:
+ Element has insufficient color contrast of 2.53 (foreground color: #9ca3af, background color: #ffffff, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1",
+ "html": "<button type=\"button\" role=\"tab\" aria-selected=\"false\" class=\"px-4 py-2 text-sm font-medium transition-colors rounded-t-lg -mb-px border-b-2 border-transparent text-gray-400 hover:text-gray-200\">Import from Transaction</button>",
+ "impact": "serious",
+ "none": Array [],
+ "target": Array [
+ ".border-transparent",
+ ],
+ },
+ ],
+ "tags": Array [
+ "cat.color",
+ "wcag2aa",
+ "wcag143",
+ "TTv5",
+ "TT13.c",
+ "EN-301-549",
+ "EN-9.1.4.3",
+ "ACT",
+ "RGAAv4",
+ "RGAA-3.2.1",
+ ],
+ },
+ ]
79 | (v) => v.impact === 'critical' || v.impact === 'serious'
80 | );
> 81 | expect(seriousOrCritical, formatViolations(seriousOrCritical)).toEqual([]);
| ^
82 | });
83 |
at /home/runner/work/split-app/split-app/e2e/a11y.spec.ts:81:66
|
|
[chromium] › e2e/a11y.spec.ts:51:5 › @a11y Home mobile nav menu is keyboard operable:
e2e/a11y.spec.ts#L62
2) [chromium] › e2e/a11y.spec.ts:51:5 › @a11y Home mobile nav menu is keyboard operable ──────────
Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
Error: expect(locator).toBeVisible() failed
Locator: getByRole('navigation', { name: /mobile navigation/i })
Expected: visible
Timeout: 5000ms
Error: element(s) not found
Call log:
- Expect "toBeVisible" with timeout 5000ms
- waiting for getByRole('navigation', { name: /mobile navigation/i })
60 | await expect(menuButton).toBeFocused();
61 | await page.keyboard.press('Enter');
> 62 | await expect(page.getByRole('navigation', { name: /mobile navigation/i })).toBeVisible();
| ^
63 |
64 | const results = await runAxe(page);
65 | const seriousOrCritical = results.violations.filter(
at /home/runner/work/split-app/split-app/e2e/a11y.spec.ts:62:78
|
|
[chromium] › e2e/a11y.spec.ts:51:5 › @a11y Home mobile nav menu is keyboard operable:
e2e/a11y.spec.ts#L62
2) [chromium] › e2e/a11y.spec.ts:51:5 › @a11y Home mobile nav menu is keyboard operable ──────────
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Error: expect(locator).toBeVisible() failed
Locator: getByRole('navigation', { name: /mobile navigation/i })
Expected: visible
Timeout: 5000ms
Error: element(s) not found
Call log:
- Expect "toBeVisible" with timeout 5000ms
- waiting for getByRole('navigation', { name: /mobile navigation/i })
60 | await expect(menuButton).toBeFocused();
61 | await page.keyboard.press('Enter');
> 62 | await expect(page.getByRole('navigation', { name: /mobile navigation/i })).toBeVisible();
| ^
63 |
64 | const results = await runAxe(page);
65 | const seriousOrCritical = results.violations.filter(
at /home/runner/work/split-app/split-app/e2e/a11y.spec.ts:62:78
|
|
[chromium] › e2e/a11y.spec.ts:38:7 › @a11y New Invoice (/invoice/new) has no critical or serious axe violations:
e2e/a11y.spec.ts#L47
1) [chromium] › e2e/a11y.spec.ts:38:7 › @a11y New Invoice (/invoice/new) has no critical or serious axe violations
Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
Error: [serious] color-contrast: Elements must meet minimum color contrast ratio thresholds (https://dequeuniversity.com/rules/axe/4.12/color-contrast?application=playwright)
- .border-transparent
Fix any of the following:
Element has insufficient color contrast of 2.53 (foreground color: #9ca3af, background color: #ffffff, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1
expect(received).toEqual(expected) // deep equality
- Expected - 1
+ Received + 58
- Array []
+ Array [
+ Object {
+ "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
+ "help": "Elements must meet minimum color contrast ratio thresholds",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.12/color-contrast?application=playwright",
+ "id": "color-contrast",
+ "impact": "serious",
+ "nodes": Array [
+ Object {
+ "all": Array [],
+ "any": Array [
+ Object {
+ "data": Object {
+ "bgColor": "#ffffff",
+ "contrastRatio": 2.53,
+ "expectedContrastRatio": "4.5:1",
+ "fgColor": "#9ca3af",
+ "fontSize": "10.5pt (14px)",
+ "fontWeight": "normal",
+ "messageKey": null,
+ },
+ "id": "color-contrast",
+ "impact": "serious",
+ "message": "Element has insufficient color contrast of 2.53 (foreground color: #9ca3af, background color: #ffffff, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1",
+ "relatedNodes": Array [
+ Object {
+ "html": "<body class=\"min-h-screen bg-white dark:bg-gray-950 text-gray-900 dark:text-gray-100 antialiased overflow-x-hidden\">",
+ "target": Array [
+ "body",
+ ],
+ },
+ ],
+ },
+ ],
+ "failureSummary": "Fix any of the following:
+ Element has insufficient color contrast of 2.53 (foreground color: #9ca3af, background color: #ffffff, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1",
+ "html": "<button type=\"button\" role=\"tab\" aria-selected=\"false\" class=\"px-4 py-2 text-sm font-medium transition-colors rounded-t-lg -mb-px border-b-2 border-transparent text-gray-400 hover:text-gray-200\">Import from Transaction</button>",
+ "impact": "serious",
+ "none": Array [],
+ "target": Array [
+ ".border-transparent",
+ ],
+ },
+ ],
+ "tags": Array [
+ "cat.color",
+ "wcag2aa",
+ "wcag143",
+ "TTv5",
+ "TT13.c",
+ "EN-301-549",
+ "EN-9.1.4.3",
+ "ACT",
+ "RGAAv4",
+ "RGAA-3.2.1",
+ ],
+ },
+ ]
45 | );
46 |
> 47 | expect(seriousOrCritical, formatViolations(seriousOrCritical)).toEqual([]);
| ^
48 | });
49 | }
50 |
at /home/runner/work/split-app/split-app/e2e/a11y.spec.ts:47:68
|
|
[chromium] › e2e/a11y.spec.ts:38:7 › @a11y New Invoice (/invoice/new) has no critical or serious axe violations:
e2e/a11y.spec.ts#L47
1) [chromium] › e2e/a11y.spec.ts:38:7 › @a11y New Invoice (/invoice/new) has no critical or serious axe violations
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Error: [serious] color-contrast: Elements must meet minimum color contrast ratio thresholds (https://dequeuniversity.com/rules/axe/4.12/color-contrast?application=playwright)
- .border-transparent
Fix any of the following:
Element has insufficient color contrast of 2.53 (foreground color: #9ca3af, background color: #ffffff, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1
expect(received).toEqual(expected) // deep equality
- Expected - 1
+ Received + 58
- Array []
+ Array [
+ Object {
+ "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
+ "help": "Elements must meet minimum color contrast ratio thresholds",
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.12/color-contrast?application=playwright",
+ "id": "color-contrast",
+ "impact": "serious",
+ "nodes": Array [
+ Object {
+ "all": Array [],
+ "any": Array [
+ Object {
+ "data": Object {
+ "bgColor": "#ffffff",
+ "contrastRatio": 2.53,
+ "expectedContrastRatio": "4.5:1",
+ "fgColor": "#9ca3af",
+ "fontSize": "10.5pt (14px)",
+ "fontWeight": "normal",
+ "messageKey": null,
+ },
+ "id": "color-contrast",
+ "impact": "serious",
+ "message": "Element has insufficient color contrast of 2.53 (foreground color: #9ca3af, background color: #ffffff, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1",
+ "relatedNodes": Array [
+ Object {
+ "html": "<body class=\"min-h-screen bg-white dark:bg-gray-950 text-gray-900 dark:text-gray-100 antialiased overflow-x-hidden\">",
+ "target": Array [
+ "body",
+ ],
+ },
+ ],
+ },
+ ],
+ "failureSummary": "Fix any of the following:
+ Element has insufficient color contrast of 2.53 (foreground color: #9ca3af, background color: #ffffff, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1",
+ "html": "<button type=\"button\" role=\"tab\" aria-selected=\"false\" class=\"px-4 py-2 text-sm font-medium transition-colors rounded-t-lg -mb-px border-b-2 border-transparent text-gray-400 hover:text-gray-200\">Import from Transaction</button>",
+ "impact": "serious",
+ "none": Array [],
+ "target": Array [
+ ".border-transparent",
+ ],
+ },
+ ],
+ "tags": Array [
+ "cat.color",
+ "wcag2aa",
+ "wcag143",
+ "TTv5",
+ "TT13.c",
+ "EN-301-549",
+ "EN-9.1.4.3",
+ "ACT",
+ "RGAAv4",
+ "RGAA-3.2.1",
+ ],
+ },
+ ]
45 | );
46 |
> 47 | expect(seriousOrCritical, formatViolations(seriousOrCritical)).toEqual([]);
| ^
48 | });
49 | }
50 |
at /home/runner/work/split-app/split-app/e2e/a11y.spec.ts:47:68
|
|
a11y
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
a11y
No files were found with the provided path: playwright-report/. No artifacts will be uploaded.
|
|
🎭 Playwright Run Summary
3 failed
[chromium] › e2e/a11y.spec.ts:38:7 › @a11y New Invoice (/invoice/new) has no critical or serious axe violations
[chromium] › e2e/a11y.spec.ts:51:5 › @a11y Home mobile nav menu is keyboard operable ───────────
[chromium] › e2e/a11y.spec.ts:71:5 › @a11y New Invoice form fields are all keyboard-reachable and labelled
5 passed (1.5m)
|