j40-cejst-2/client/cypress/integration/LegacyTests/accessibility.test.js

58 lines
1.7 KiB
JavaScript
Raw Normal View History

// / <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
*
*/
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 13:14:54 -04:00
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);
});
});
});
});