Skip to content

Commit

Permalink
VACMS-19412-Reporting accessibility violations in a PR comment (#19625)
Browse files Browse the repository at this point in the history
* Reporting accessibility violations in a PR comment

* Running a test that is known to generate accessibility violations

* Updating path for no such file or directory

* Fix formatting

* fixing script to use a variable in equality check

* Stop failing cypress tests on accessibility violations

* Testing PR comment length

* Revert changes for comment testing
  • Loading branch information
keisterj-oddball authored Nov 1, 2024
1 parent e4eaa09 commit fef4eb9
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
@content_type__benefits_detail_page
Feature: Content Type: Benefits Detail Page

@skip @critical_path
@critical_path
Scenario: Log in and create a benefits detail page
Given I am logged in as a user with the "content_admin" role
Then I create a "page" node
36 changes: 23 additions & 13 deletions tests/cypress/support/accessibility.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,21 +24,31 @@ const axeRuntimeOptions = {
},
};

const skipFailures = true;

Cypress.Commands.add("checkAccessibility", () => {
cy.wait(1000);
return cy.checkA11y(axeContext, axeRuntimeOptions, (violations) => {
cy.accessibilityLog(violations);
return cy.location("pathname").then((route) => {
// eslint-disable-next-line max-nested-callbacks
const violationData = violations.map((violation) => ({
route,
...violation,
}));
const accessibilityViolations = Cypress.config("accessibilityViolations");
accessibilityViolations.push(...violationData);
Cypress.config("accessibilityViolations", accessibilityViolations);
});
});
return cy.checkA11y(
axeContext,
axeRuntimeOptions,
(violations) => {
cy.accessibilityLog(violations);
return cy.location("pathname").then((route) => {
// eslint-disable-next-line max-nested-callbacks
const violationData = violations.map((violation) => ({
route,
...violation,
}));
const accessibilityViolations = Cypress.config(
"accessibilityViolations"
);
accessibilityViolations.push(...violationData);
Cypress.config("accessibilityViolations", accessibilityViolations);
});
},
// Don't fail tests now that violations are reported in PR comments
skipFailures
);
});

Cypress.Commands.add("accessibilityLog", (violations) => {
Expand Down
13 changes: 13 additions & 0 deletions tests/scripts/cypress-parallel-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ set -x
repo_root="$(git rev-parse --show-toplevel)"
pushd "${repo_root}" > /dev/null

: "${GITHUB_COMMENT_TYPE:=unset}"

[ -d node_modules ] || npm install
./node_modules/.bin/cypress install

Expand All @@ -16,6 +18,17 @@ npm run test:cypress:verify
npm run test:cypress:parallel -- "${@}"
exit_code=$?

accessibility_violations=$(<cypress_accessibility_violations.json)
violations_count=$(jq length < cypress_accessibility_violations.json)
if [ "${GITHUB_COMMENT_TYPE}" == "pr" ]; then
if [ "$violations_count" -ne 0 ]; then
comment="$(printf 'Accessibility Violations Found:\n``` json\n%b\n```' "${accessibility_violations}")"
github-commenter \
-delete-comment-regex="Accessibility Violations Found" \
-comment="${comment}"
fi
fi

popd > /dev/null

exit "${exit_code}"

0 comments on commit fef4eb9

Please sign in to comment.