UNPKG

@axe-core/cli

Version:

A CLI for accessibility testing using axe-core

134 lines 4.88 kB
"use strict"; 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