@axe-core/cli
Version:
A CLI for accessibility testing using axe-core
134 lines • 4.88 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.italics = exports.green = exports.bold = exports.error = exports.link = exports.reporter = exports.selectorToString = exports.splitList = exports.getAxeVersion = exports.getAxeSource = exports.parseBrowser = exports.parseUrl = exports.saveOutcome = exports.CHROMEDRIVER_TEST_PATH = exports.CHROME_TEST_PATH = void 0;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const colors_1 = __importDefault(require("colors"));
const dotenv_1 = require("dotenv");
const os_1 = __importDefault(require("os"));
const HOME_DIR = os_1.default.homedir();
const BDM_CACHE_DIR = path_1.default.resolve(HOME_DIR, '.browser-driver-manager');
(0, dotenv_1.config)({ path: path_1.default.resolve(BDM_CACHE_DIR, '.env') });
_a = process.env, exports.CHROME_TEST_PATH = _a.CHROME_TEST_PATH, exports.CHROMEDRIVER_TEST_PATH = _a.CHROMEDRIVER_TEST_PATH;
const saveOutcome = (outcome, fileName, dir) => {
if (typeof fileName !== 'string') {
fileName = 'axe-results-' + Date.now() + '.json';
}
/* istanbul ignore if */
if (typeof dir !== 'string') {
dir = process.cwd();
}
else if (!path_1.default.isAbsolute(dir)) {
dir = path_1.default.join(process.cwd(), dir);
}
const filePath = path_1.default.join(dir, fileName);
/* istanbul ignore else */
if (!fs_1.default.existsSync(filePath)) {
fs_1.default.mkdirSync(dir, { recursive: true });
}
fs_1.default.writeFileSync(filePath, JSON.stringify(outcome, null, 2), 'utf-8');
return filePath;
};
exports.saveOutcome = saveOutcome;
const parseUrl = (url) => {
if (!/[a-z]+:\/\//.test(url)) {
return 'http://' + url;
}
return url;
};
exports.parseUrl = parseUrl;
const parseBrowser = (browser) => {
if (!browser) {
return 'chrome-headless';
}
const l = browser.length;
switch (browser.toLowerCase()) {
case 'ff':
case 'firefox'.substr(0, l):
case 'gecko'.substr(0, l):
case 'marionette'.substr(0, l):
return 'firefox';
case 'chrome'.substr(0, l):
return 'chrome';
case 'ie':
case 'explorer'.substr(0, l):
case 'internetexplorer'.substr(0, l):
case 'internet_explorer'.substr(0, l):
case 'internet-explorer'.substr(0, l):
return 'ie';
case 'safari'.substr(0, l):
return 'safari';
case 'edge'.substr(0, l):
case 'microsoftedge'.substr(0, l):
return 'MicrosoftEdge';
default:
throw new Error('Unknown browser ' + browser);
}
};
exports.parseBrowser = parseBrowser;
const getAxeSource = (axePath, dirname) => {
// Abort if axePath should exist, and it isn't
if (axePath && !fs_1.default.existsSync(axePath)) {
return;
}
let cwd = dirname;
if (!cwd) {
cwd = process.cwd();
}
if (!dirname) {
dirname = __dirname;
}
// Look for axe in current working directory
if (!axePath) {
axePath = path_1.default.join(cwd, 'axe.js');
}
if (!fs_1.default.existsSync(axePath)) {
// Look for axe in CWD ./node_modules
axePath = path_1.default.join(cwd, 'node_modules', 'axe-core', 'axe.js');
}
if (!fs_1.default.existsSync(axePath)) {
// in local develop using npm workspaces axe-core is
// hoisted to the root, but when published axe-core
// will be in the node_modules for the cli
axePath = require.resolve('axe-core/axe.js');
}
return fs_1.default.readFileSync(axePath, 'utf-8');
};
exports.getAxeSource = getAxeSource;
const getAxeVersion = (source) => {
const match = source.match(/\.version\s*=\s'([^']+)'/);
return match ? match[1] : 'unknown version';
};
exports.getAxeVersion = getAxeVersion;
const splitList = (val) => {
return val.split(/[,;]/).map(str => str.trim());
};
exports.splitList = splitList;
const selectorToString = (selectors, separator) => {
separator = separator || ' ';
return selectors
.reduce((prev, curr) => prev.concat(curr), [])
.join(separator);
};
exports.selectorToString = selectorToString;
const reporter = (noReporter, silentMode) => {
if (!noReporter || silentMode) {
return () => { };
}
else {
return (...args) => {
console.log(...args);
};
}
};
exports.reporter = reporter;
exports.link = colors_1.default.underline.blue;
exports.error = colors_1.default.red.bold;
exports.bold = colors_1.default.bold;
exports.green = colors_1.default.green;
exports.italics = colors_1.default.italic;
//# sourceMappingURL=utils.js.map