@sa11y/assert
Version:
Provides assertAccessible API to check DOM for accessibility issues
84 lines • 4.13 kB
JavaScript
;
/*
* Copyright (c) 2020, salesforce.com, inc.
* All rights reserved.
* SPDX-License-Identifier: BSD-3-Clause
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause
*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.assertAccessible = exports.getViolationsJSDOM = exports.getIncompleteJSDOM = exports.getA11yResultsJSDOM = void 0;
const axe = __importStar(require("axe-core"));
const preset_rules_1 = require("@sa11y/preset-rules");
const format_1 = require("@sa11y/format");
const common_1 = require("@sa11y/common");
async function getA11yResultsJSDOM(context = document, rules = preset_rules_1.defaultRuleset, enableIncompleteResults = false) {
return enableIncompleteResults ? getIncompleteJSDOM(context, rules) : getViolationsJSDOM(context, rules);
}
exports.getA11yResultsJSDOM = getA11yResultsJSDOM;
/**
* Get list of a11y issues incomplete for given element and ruleset
* @param context - DOM or HTML Node to be tested for accessibility
* @param rules - A11yConfig preset rule to use, defaults to `base` ruleset
* @param reportType - Type of report ('violations' or 'incomplete')
* @returns {@link AxeResults} - list of accessibility issues found
*/
async function getIncompleteJSDOM(context = document, rules = preset_rules_1.defaultRuleset) {
return await (0, common_1.getIncomplete)(async () => {
const results = await axe.run(context, rules);
return results.incomplete;
});
}
exports.getIncompleteJSDOM = getIncompleteJSDOM;
/**
* Get list of a11y issues violations for given element and ruleset
* @param context - DOM or HTML Node to be tested for accessibility
* @param rules - A11yConfig preset rule to use, defaults to `base` ruleset
* @param reportType - Type of report ('violations' or 'incomplete')
* @returns {@link AxeResults} - list of accessibility issues found
*/
async function getViolationsJSDOM(context = document, rules = preset_rules_1.defaultRuleset) {
return await (0, common_1.getViolations)(async () => {
const results = await axe.run(context, rules);
return results.violations;
});
}
exports.getViolationsJSDOM = getViolationsJSDOM;
/**
* Checks DOM for accessibility issues and throws an error if violations are found.
* @param context - DOM or HTML Node to be tested for accessibility
* @param rules - A11yConfig preset rule to use, defaults to `base` ruleset
* @throws error - with the accessibility issues found, does not return any value
* */
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
async function assertAccessible(context = document, rules = preset_rules_1.defaultRuleset) {
let violations = await getViolationsJSDOM(context, rules);
if (process.env.SELECTOR_FILTER_KEYWORDS) {
violations = (0, format_1.exceptionListFilterSelectorKeywords)(violations, process.env.SELECTOR_FILTER_KEYWORDS.split(','));
}
format_1.A11yError.checkAndThrow(violations);
}
exports.assertAccessible = assertAccessible;
//# sourceMappingURL=assert.js.map