j40-cejst-2/client/cypress/integration/LegacyTests/accessibility.test.js
Vim 72d80a5803
Attempt to merge Lighthouse Fix branch from Nat (#758)
* Add a11y tests in cypress for methodology page

- update cypress to version 8.5
- add HTML lang the <head> element
- change process list headings to h4
- add alt tag to download image icon
- move <GovBanner> into <Header>
- add documentation around a11y testing

* Add cypress a11y tests for cejst page

- add alt icon for mapIntro page
- change legend to be a normal div
- add a class that mimics the h4 styles
- remove superfluous styles

* Add cypress a11y tests for contact and 404 page

* Update snapshots

* Move static text in footer to copy folder

* Add cypress a11y test to About page

- add required h1 tag
- updates snapshot

* Add site_url.xml and modify robots.txt file

- adds plugins for robots.txt and sitemap
- remove env.local and will add env.production
- modifiy all yml files (docker and GHA) to specify new env variables
- refactor env variables to either DATA_SOURCE, SITE_URL or PATH_PREFIX
- set defaults for env variables in gatsby-config
- remove timeline component
- will add blank index page
- update README on info on env variables

* Add plugin to allow custom env vars

- allows system env vars, ie, DATA_SOURCE on client-side application

* Update displayed URLs in GHA to new CDN (d29)

- also updates the blank index.html

* Correct spacing

* Set SITE_URL to new CDN for robots.txt

* Remove SITE_URL as this is set by GHA

* Update README around docker and env vars
2021-10-04 08:43:33 -07:00

59 lines
1.6 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
*
*/
const endpoints = [
'en/',
'en/cejst',
'en/methodology',
'en/contact',
'en/404',
];
// 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('Accessibility checks', () => {
endpoints.forEach((endpoint) => {
it(`Check Accessibility on ${endpoint} page`, () => {
cy.visit(endpoint).get('main').then(() => {
cy.injectAxe();
cy.checkA11y(null, null, terminalLog);
});
});
});
});