@axe-core/cli
Version:
A CLI for accessibility testing using axe-core
89 lines • 3.96 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const webdriverjs_1 = __importDefault(require("@axe-core/webdriverjs"));
const testPages = (urls, config, events) => __awaiter(void 0, void 0, void 0, function* () {
const driver = yield config.driver;
if (urls.length === 0) {
yield driver.quit();
return Promise.resolve([]);
}
return new Promise((resolve, reject) => {
const currentUrl = urls[0].replace(/[,;]$/, '');
if (events === null || events === void 0 ? void 0 : events.onTestStart) {
events.onTestStart(currentUrl);
}
if (config.timer) {
events === null || events === void 0 ? void 0 : events.startTimer('axe page load time');
}
driver
.get(currentUrl)
.then(() => {
if (config.timer) {
events === null || events === void 0 ? void 0 : events.endTimer('axe page load time');
}
if (config.loadDelay) {
events === null || events === void 0 ? void 0 : events.waitingMessage(config.loadDelay);
}
return new Promise(resolve => {
setTimeout(resolve, config.loadDelay);
});
})
.then(() => {
const axe = new webdriverjs_1.default(driver, config.axeSource);
if (Array.isArray(config.include)) {
config.include.forEach((include) => axe.include(include));
}
if (Array.isArray(config.exclude)) {
config.exclude.forEach((exclude) => axe.exclude(exclude));
}
if (config.tags) {
axe.withTags(config.tags);
}
else if (config.rules) {
axe.withRules(config.rules);
}
/* istanbul ignore if */
if (config.disable) {
axe.disableRules(config.disable);
}
if (config.timer) {
events === null || events === void 0 ? void 0 : events.startTimer('axe-core execution time');
}
axe.analyze((err, results) => {
if (config.timer) {
events === null || events === void 0 ? void 0 : events.endTimer('axe-core execution time');
}
/* istanbul ignore if */
if (err) {
return reject(err);
}
// Notify about the update
if (events === null || events === void 0 ? void 0 : events.onTestComplete) {
events === null || events === void 0 ? void 0 : events.onTestComplete(results);
}
// Move to the next item
testPages(urls.slice(1), config, events).then((out) => {
resolve([results].concat(out));
});
});
})
.catch((e) => __awaiter(void 0, void 0, void 0, function* () {
yield driver.quit();
reject(e);
}));
});
});
exports.default = testPages;
//# sourceMappingURL=axe-test-urls.js.map