j40-cejst-2/client/cypress/integration/LegacyTests/accessibility.test.js
Vim 92501e4715
Re-order nav links, update download box to include shapefiles, squish pages (#1538)
* Re-order nav links, update download box to include shapefiles, squishy pages (#1536)

* Add dropdown to navigation links

- add download page
- move main pages tests to their own folder
- add download and public eng snapshot test
- remove public engagement button on each page
- swap index with cejst
- update cypress ENDPOINTS
- upate gatsby-config sitemap
- update snapshots
- cypress tests are failing

* Make all page endpoints constants

- fix all cypress tests
- refactor all test to use LegacyTests/constants/PAGES_ENDPOINTS
- gatsby-config to use PAGES_ENDPOINTS
- remove ScoreStepList component
- update J40Header to use constants.PAGES_ENDPOINTS
- update snapshots
- there are 3 locations to update PAGES_ENDPOINTS, namely

1. LegacyTests/constants.tsx
2. constants.tsx
3. gatsby-config

* Add two placeholder pages

- FAQs
- TSD

* remove dropdown from navigation menu

- remove dropdown from gherkin tests
- update snapshots

* Add back public engagement button to all pages

- add send button in area detail alt tag to i18n
- modify public engagement button to have same CSS as send feedback button
- update snapshots

* Update download box to include shapefile downloads

- refator download packet scss
- add shapefile URL to .env files
- update tests
- index forwarding pattern
- update snapshots

* Add FAQ link to About page

* Update footer

- add PEC
- add RFI
- add github link

* Update the staging link URL and title

* Update download Box to match design sync

- update FAQ link copy

* Add comment for reason of commented code
2022-04-07 10:14:54 -07:00

57 lines
1.7 KiB
JavaScript

// / <reference types="Cypress" />
/**
* The a11y check will use a cypress-axe library:
* - https://www.npmjs.com/package/cypress-axe
*
* This implements Deque's axe.run:
* - https://www.deque.com/axe/core-documentation/api-documentation/#api-name-axerun
*
* The table of rule descriptions that are seen in the terminal can be seen in totality here:
* - https://github.com/dequelabs/axe-core/blob/master/doc/rule-descriptions.md
*
*/
import {PAGES_ENDPOINTS} from './constants';
const rawEndpoints = Object.values(PAGES_ENDPOINTS);
const endpoints = rawEndpoints.map((endpoint) => `en${endpoint}`);
// The violation callback will post the violations into the terminal
// eslint-disable-next-line require-jsdoc
function terminalLog(violations) {
cy.task(
'log',
`${violations.length} accessibility violation${
violations.length === 1 ? '' : 's'
} ${violations.length === 1 ? 'was' : 'were'} detected`,
);
// pluck specific keys to keep the table readable
const violationData = violations.map(
// The results array is described here:
// - https://www.deque.com/axe/core-documentation/api-documentation/#result-arrays
// Unable to figure out how add the HTML element that the violation is occuring on. Using
// Axe chrome plugin instead.
({id, impact, description}) => ({
id,
impact,
description,
}),
);
cy.task('table', violationData);
}
describe('Do the accessibility checks pass on each page?', () => {
endpoints.forEach((endpoint) => {
it(`Check accessibility on ${endpoint} page`, () => {
cy.visit(endpoint).get('main').then(() => {
cy.injectAxe();
cy.checkA11y(null, null, terminalLog);
});
});
});
});