UNPKG

@axe-core/cli

Version:

A CLI for accessibility testing using axe-core

165 lines 7.65 kB
"use strict"; 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; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); require("mocha"); const chai_1 = require("chai"); const tempy_1 = __importDefault(require("tempy")); const path_1 = require("path"); const fs_1 = require("fs"); const utils = __importStar(require("./utils")); describe('utils', () => { describe('parseUrl', () => { it('given a url without protocol', () => { const url = 'foobar.com'; chai_1.assert.deepEqual(utils.parseUrl(url), `http://${url}`); }); it('given a url with a protocol', () => { const url = 'http://foobar.com'; chai_1.assert.deepEqual(utils.parseUrl(url), url); }); }); describe('parseBrowser', () => { it('given an unknown browser returns error', () => { chai_1.assert.throws(() => utils.parseBrowser('foobar')); }); it('given no browser returns chrome-headless', () => { chai_1.assert.deepEqual(utils.parseBrowser(), 'chrome-headless'); }); describe('returns firefox', () => { const firefoxBrowsers = ['ff', 'firefox', 'gecko', 'marionette']; for (const firefoxBrowser of firefoxBrowsers) { it(`given ${firefoxBrowser} returns firefox`, () => { chai_1.assert.deepEqual(utils.parseBrowser(firefoxBrowser), 'firefox'); }); } }); describe('returns chrome', () => { it('given chrome returns chrome', () => { chai_1.assert.deepEqual(utils.parseBrowser('chrome'), 'chrome'); }); }); describe('returns ie', () => { const ieBrowsers = [ 'ie', 'explorer', 'internetexplorer', 'internet_explorer', 'internet-explorer' ]; for (const ieBrowser of ieBrowsers) { it(`given ${ieBrowser} returns ie`, () => { chai_1.assert.deepEqual(utils.parseBrowser(ieBrowser), 'ie'); }); } }); describe('returns safari', () => { it('given safari return safari', () => { chai_1.assert.deepEqual(utils.parseBrowser('safari'), 'safari'); }); }); describe('returns edge', () => { const edgeBrowsers = ['edge', 'microsoftedge']; for (const edgeBrowser of edgeBrowsers) { it(`given ${edgeBrowser} returns MicrosoftEdge`, () => { chai_1.assert.deepEqual(utils.parseBrowser(edgeBrowser), 'MicrosoftEdge'); }); } }); }); describe('getAxeSource', () => { describe('mock file', () => { function setupTree() { const tempDir = tempy_1.default.directory(); const parentDirname = (0, path_1.join)(tempDir, 'node_modules', 'axe-core'); (0, fs_1.mkdirSync)(parentDirname, { recursive: true }); (0, fs_1.writeFileSync)((0, path_1.join)(parentDirname, 'axe.js'), 'parent'); const cliDirname = (0, path_1.join)(tempDir, 'packages', 'cli'); const nodeModDirname = (0, path_1.join)(cliDirname, 'node_modules', 'axe-core'); (0, fs_1.mkdirSync)(nodeModDirname, { recursive: true }); (0, fs_1.writeFileSync)((0, path_1.join)(nodeModDirname, 'axe.js'), 'node modules'); const cwdDirname = (0, path_1.join)(tempDir, 'packages', 'cli', 'lib'); (0, fs_1.mkdirSync)(cwdDirname); (0, fs_1.writeFileSync)((0, path_1.join)(cwdDirname, 'axe.js'), 'cwd'); return { cliDirname, parentDirname, nodeModDirname, cwdDirname }; } it('uses axe.js from the working directory if it exists', () => { const { cwdDirname } = setupTree(); const axeSource = utils.getAxeSource(undefined, cwdDirname); chai_1.assert.include(axeSource, 'cwd'); }); it("falls back to axe-core from the working directory's node_modules if axe.js doesn't exist in the working directory", () => { const { cliDirname, cwdDirname } = setupTree(); (0, fs_1.rmSync)((0, path_1.join)(cwdDirname, 'axe.js')); const axeSource = utils.getAxeSource(undefined, cliDirname); chai_1.assert.include(axeSource, 'node modules'); }); it("falls back to axe-core from our own package's node_modules if no working-directory based implementation exists", () => { const { cwdDirname, nodeModDirname } = setupTree(); (0, fs_1.rmSync)((0, path_1.join)(cwdDirname, 'axe.js')); (0, fs_1.rmSync)((0, path_1.join)(nodeModDirname, 'axe.js')); const axeSource = utils.getAxeSource(undefined, cwdDirname); chai_1.assert.include(axeSource, 'parent'); }); }); it('given no axe source use local source', () => { const axeSource = utils.getAxeSource(); chai_1.assert.isNotNull(axeSource); }); it('given invalid axe source throws error', () => { chai_1.assert.throws(() => utils.getAxeSource('././././')); }); }); describe('getAxeVersion', () => { it('given valid axe version returns only version', () => { chai_1.assert.deepEqual(utils.getAxeVersion(`axe.version = '4.1.1'`), '4.1.1'); }); it('given invalid axe version returns unknown version string', () => { chai_1.assert.deepEqual(utils.getAxeVersion(`axe = '4.1.1'`), 'unknown version'); }); }); describe('splitList', () => { it('given a comma delimited string returns array', () => { const delimited = 'foo,bar,baz'; const array = utils.splitList(delimited); chai_1.assert.isArray(array); chai_1.assert.deepEqual(array, ['foo', 'bar', 'baz']); }); it('given a single string returns an array', () => { const string = 'foo'; const array = utils.splitList(string); chai_1.assert.isArray(array); chai_1.assert.deepEqual(array, ['foo']); }); }); }); //# sourceMappingURL=utils.test.js.map