@axe-core/puppeteer 4.6.2-alpha.378 → 4.6.2-alpha.380

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,214 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.AxePuppeteer = void 0;
16
- const assert_1 = __importDefault(require("assert"));
17
- const browser_1 = require("./browser");
18
- const legacy_1 = require("./legacy");
19
- const axePartialRunner_1 = require("./axePartialRunner");
20
- const utils_1 = require("./utils");
21
- class AxePuppeteer {
22
- constructor(pageFrame, source) {
23
- this.legacyMode = false;
24
- if ('mainFrame' in pageFrame) {
25
- if ('browser' in pageFrame) {
26
- this.page = pageFrame;
27
- }
28
- else {
29
- console.warn('AxePuppeteer support for Puppeteer <= 3.0.3 is deprecated');
30
- }
31
- this.frame = pageFrame.mainFrame();
32
- }
33
- else {
34
- console.warn('AxePuppeteer construction with Frame objects is deprecated.');
35
- this.frame = pageFrame;
36
- }
37
- this.axeSource = source;
38
- this.includes = [];
39
- this.excludes = [];
40
- this.axeOptions = {};
41
- this.config = null;
42
- this.disabledFrameSelectors = [];
43
- this.errorUrl =
44
- 'https://github.com/dequelabs/axe-core-npm/blob/develop/packages/puppeteer/error-handling.md';
45
- }
46
- include(selector) {
47
- this.includes.push(selector);
48
- return this;
49
- }
50
- exclude(selector) {
51
- this.excludes.push(selector);
52
- return this;
53
- }
54
- options(options) {
55
- this.axeOptions = options;
56
- return this;
57
- }
58
- withRules(rules) {
59
- rules = (0, utils_1.arrayify)(rules);
60
- if (!this.axeOptions) {
61
- this.axeOptions = {};
62
- }
63
- this.axeOptions.runOnly = {
64
- type: 'rule',
65
- values: rules
66
- };
67
- return this;
68
- }
69
- withTags(tags) {
70
- tags = (0, utils_1.arrayify)(tags);
71
- if (!this.axeOptions) {
72
- this.axeOptions = {};
73
- }
74
- this.axeOptions.runOnly = {
75
- type: 'tag',
76
- values: tags
77
- };
78
- return this;
79
- }
80
- disableRules(rules) {
81
- rules = (0, utils_1.arrayify)(rules);
82
- const newRules = {};
83
- for (const rule of rules) {
84
- newRules[rule] = {
85
- enabled: false
86
- };
87
- }
88
- this.axeOptions.rules = newRules;
89
- return this;
90
- }
91
- configure(config) {
92
- (0, assert_1.default)(typeof config === 'object', 'AxePuppeteer needs an object to configure. See axe-core configure API.');
93
- this.config = config;
94
- return this;
95
- }
96
- disableFrame(selector) {
97
- this.disabledFrameSelectors.push(selector);
98
- return this;
99
- }
100
- setLegacyMode(legacyMode = true) {
101
- this.legacyMode = legacyMode;
102
- return this;
103
- }
104
- analyze(callback) {
105
- return __awaiter(this, void 0, void 0, function* () {
106
- try {
107
- const axeResults = yield this.analyzePromise();
108
- if (callback) {
109
- callback(null, axeResults);
110
- }
111
- return axeResults;
112
- }
113
- catch (err) {
114
- if (callback) {
115
- callback(err);
116
- return null;
117
- }
118
- throw err;
119
- }
120
- });
121
- }
122
- analyzePromise() {
123
- return __awaiter(this, void 0, void 0, function* () {
124
- const { frame, axeSource, config } = this;
125
- const context = (0, utils_1.normalizeContext)(this.includes, this.excludes, this.disabledFrameSelectors);
126
- yield (0, utils_1.frameSourceInject)(frame, axeSource, config);
127
- const runPartialSupported = yield frame.evaluate(browser_1.axeRunPartialSupport);
128
- if (runPartialSupported !== true ||
129
- this.page === undefined ||
130
- this.legacyMode) {
131
- return this.runLegacy(context);
132
- }
133
- const partialRunner = yield this.runPartialRecursive(frame, context);
134
- const partials = yield partialRunner.getPartials();
135
- try {
136
- return yield this.finishRun(partials);
137
- }
138
- catch (error) {
139
- throw new Error(`${error.message}\n Please check out ${this.errorUrl}`);
140
- }
141
- });
142
- }
143
- runPartialRecursive(frame, context) {
144
- return __awaiter(this, void 0, void 0, function* () {
145
- const frameContexts = yield frame.evaluate(browser_1.axeGetFrameContext, context);
146
- const options = this.axeOptions;
147
- const partialPromise = frame.evaluate(browser_1.axeRunPartial, context, options);
148
- const initiator = frame === this.frame;
149
- const axePartialRunner = new axePartialRunner_1.AxePartialRunner(partialPromise, initiator);
150
- for (const { frameSelector, frameContext } of frameContexts) {
151
- try {
152
- let childResults = null;
153
- const childFrame = yield (0, utils_1.getChildFrame)(frame, frameSelector);
154
- if (childFrame) {
155
- yield (0, utils_1.frameSourceInject)(childFrame, this.axeSource, this.config);
156
- childResults = yield this.runPartialRecursive(childFrame, frameContext);
157
- }
158
- axePartialRunner.addChildResults(childResults);
159
- }
160
- catch (_a) {
161
- axePartialRunner.addChildResults(null);
162
- }
163
- }
164
- return axePartialRunner;
165
- });
166
- }
167
- finishRun(partialResults) {
168
- return __awaiter(this, void 0, void 0, function* () {
169
- const { axeOptions, axeSource, config, page } = this;
170
- (0, assert_1.default)(page, 'Running AxePuppeteer with a frame object is deprecated');
171
- const browser = page.browser();
172
- const blankPage = yield browser.newPage();
173
- (0, assert_1.default)(blankPage, 'Please make sure that you have popup blockers disabled.');
174
- yield (0, utils_1.frameSourceInject)(blankPage.mainFrame(), axeSource, config);
175
- const sizeLimit = 60000000;
176
- const partialString = JSON.stringify(partialResults);
177
- function chunkResults(result) {
178
- return __awaiter(this, void 0, void 0, function* () {
179
- const chunk = result.substring(0, sizeLimit);
180
- yield blankPage.evaluate(browser_1.chunkResultString, chunk);
181
- if (result.length > sizeLimit) {
182
- return yield chunkResults(result.substr(sizeLimit));
183
- }
184
- });
185
- }
186
- yield chunkResults(partialString);
187
- return yield blankPage
188
- .evaluate(browser_1.axeFinishRun, axeOptions)
189
- .finally(() => __awaiter(this, void 0, void 0, function* () {
190
- yield blankPage.close();
191
- }));
192
- });
193
- }
194
- runLegacy(context) {
195
- return __awaiter(this, void 0, void 0, function* () {
196
- const options = this.axeOptions;
197
- const selector = (0, legacy_1.iframeSelector)(this.disabledFrameSelectors);
198
- const source = this.axeSource;
199
- let config = this.config;
200
- if (!this.legacyMode) {
201
- config = Object.assign(Object.assign({}, (config || {})), { allowedOrigins: ['<unsafe_all_origins>'] });
202
- }
203
- yield (0, legacy_1.injectJS)(this.frame, { source, selector });
204
- yield (0, legacy_1.injectJS)(this.frame, {
205
- source: browser_1.axeConfigure,
206
- selector,
207
- args: [config]
208
- });
209
- return this.frame.evaluate(browser_1.axeRunLegacy, context, options);
210
- });
211
- }
212
- }
213
- exports.AxePuppeteer = AxePuppeteer;
214
- //# sourceMappingURL=axePuppeteer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"axePuppeteer.js","sourceRoot":"","sources":["../src/axePuppeteer.ts"],"names":[],"mappings":"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"}
package/dist/browser.d.ts DELETED
@@ -1,16 +0,0 @@
1
- import * as Axe from 'axe-core';
2
- declare global {
3
- interface Window {
4
- axe: typeof Axe;
5
- partialResults: string;
6
- }
7
- }
8
- export declare function pageIsLoaded(): boolean;
9
- export declare function axeRunPartialSupport(): boolean;
10
- export declare function axeConfigure(config?: Axe.Spec): void;
11
- export declare function axeGetFrameContext(context: Axe.ElementContext): Axe.FrameContext[];
12
- export declare function axeShadowSelect(axeSelector: Axe.CrossTreeSelector): Element | null;
13
- export declare function axeRunPartial(context: Axe.ContextObject, options: Axe.RunOptions): Promise<Axe.PartialResult>;
14
- export declare function axeFinishRun(options: Axe.RunOptions): Promise<Axe.AxeResults>;
15
- export declare function axeRunLegacy(context?: Axe.ContextObject, options?: Axe.RunOptions): Promise<Axe.AxeResults>;
16
- export declare function chunkResultString(chunk: string): void;
package/dist/browser.js DELETED
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.chunkResultString = exports.axeRunLegacy = exports.axeFinishRun = exports.axeRunPartial = exports.axeShadowSelect = exports.axeGetFrameContext = exports.axeConfigure = exports.axeRunPartialSupport = exports.pageIsLoaded = void 0;
4
- function pageIsLoaded() {
5
- return document.readyState === 'complete';
6
- }
7
- exports.pageIsLoaded = pageIsLoaded;
8
- function axeRunPartialSupport() {
9
- return typeof window.axe.runPartial === 'function';
10
- }
11
- exports.axeRunPartialSupport = axeRunPartialSupport;
12
- function axeConfigure(config) {
13
- if (config) {
14
- window.axe.configure(config);
15
- }
16
- window.axe.configure({
17
- branding: { application: 'axe-puppeteer' }
18
- });
19
- }
20
- exports.axeConfigure = axeConfigure;
21
- function axeGetFrameContext(context) {
22
- return window.axe.utils.getFrameContexts(context);
23
- }
24
- exports.axeGetFrameContext = axeGetFrameContext;
25
- function axeShadowSelect(axeSelector) {
26
- return window.axe.utils.shadowSelect(axeSelector);
27
- }
28
- exports.axeShadowSelect = axeShadowSelect;
29
- function axeRunPartial(context, options) {
30
- return window.axe.runPartial(context, options);
31
- }
32
- exports.axeRunPartial = axeRunPartial;
33
- function axeFinishRun(options) {
34
- return window.axe.finishRun(JSON.parse(window.partialResults), options);
35
- }
36
- exports.axeFinishRun = axeFinishRun;
37
- function axeRunLegacy(context, options) {
38
- return window.axe.run(context || document, options || {});
39
- }
40
- exports.axeRunLegacy = axeRunLegacy;
41
- function chunkResultString(chunk) {
42
- var _a;
43
- (_a = window.partialResults) !== null && _a !== void 0 ? _a : (window.partialResults = '');
44
- window.partialResults += chunk;
45
- }
46
- exports.chunkResultString = chunkResultString;
47
- //# sourceMappingURL=browser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":";;;AAeA,SAAgB,YAAY;IAC1B,OAAO,QAAQ,CAAC,UAAU,KAAK,UAAU,CAAC;AAC5C,CAAC;AAFD,oCAEC;AAED,SAAgB,oBAAoB;IAClC,OAAO,OAAO,MAAM,CAAC,GAAG,CAAC,UAAU,KAAK,UAAU,CAAC;AACrD,CAAC;AAFD,oDAEC;AAED,SAAgB,YAAY,CAAC,MAAiB;IAC5C,IAAI,MAAM,EAAE;QACV,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KAC9B;IACD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;QACnB,QAAQ,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE;KAC3C,CAAC,CAAC;AACL,CAAC;AAPD,oCAOC;AAED,SAAgB,kBAAkB,CAChC,OAA2B;IAE3B,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACpD,CAAC;AAJD,gDAIC;AAED,SAAgB,eAAe,CAC7B,WAAkC;IAElC,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AACpD,CAAC;AAJD,0CAIC;AAED,SAAgB,aAAa,CAC3B,OAA0B,EAC1B,OAAuB;IAEvB,OAAO,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AALD,sCAKC;AAED,SAAgB,YAAY,CAAC,OAAuB;IAClD,OAAO,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAFD,oCAEC;AAGD,SAAgB,YAAY,CAC1B,OAA2B,EAC3B,OAAwB;IAExB,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;AAC5D,CAAC;AALD,oCAKC;AAED,SAAgB,iBAAiB,CAAC,KAAa;;IAC7C,MAAA,MAAM,CAAC,cAAc,oCAArB,MAAM,CAAC,cAAc,GAAK,EAAE,EAAC;IAC7B,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC;AACjC,CAAC;AAHD,8CAGC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAG1B,6FAHX,2BAAY,OAGW;AAFhC,2CAAuC;AAEL,yFAFzB,oBAAQ,OAEyB;AAC1C,kBAAe,2BAAY,CAAC"}
package/dist/legacy.d.ts DELETED
@@ -1,10 +0,0 @@
1
- import { Frame } from 'puppeteer';
2
- interface IInjectAxeArgs {
3
- source?: string | Function;
4
- selector: string;
5
- logOnError?: boolean;
6
- args?: any[];
7
- }
8
- export declare function injectJS(frame: Frame | undefined, { source, selector, logOnError, args }: IInjectAxeArgs): Promise<void>;
9
- export declare function iframeSelector(disabledFrameSelectors: string[]): string;
10
- export {};
package/dist/legacy.js DELETED
@@ -1,89 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
- Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.iframeSelector = exports.injectJS = void 0;
36
- const fs = __importStar(require("fs"));
37
- function injectJS(frame, { source, selector, logOnError, args }) {
38
- return __awaiter(this, void 0, void 0, function* () {
39
- if (!frame) {
40
- return;
41
- }
42
- const frames = yield frame.$$(selector);
43
- const injections = [];
44
- for (const frameElement of frames) {
45
- const subFrame = yield frameElement.contentFrame();
46
- const p = injectJS(subFrame, {
47
- source,
48
- selector,
49
- args,
50
- logOnError: true
51
- });
52
- injections.push(p);
53
- }
54
- const reportError = () => {
55
- console.error(`Failed to inject axe-core into frame (${frame.url()})`);
56
- };
57
- let injectP;
58
- if (!source) {
59
- injectP = injectJSModule(frame);
60
- }
61
- else {
62
- injectP = injectJSSource(frame, source, args);
63
- }
64
- if (logOnError) {
65
- injectP = injectP.catch(reportError);
66
- }
67
- injections.push(injectP);
68
- return Promise.all(injections).then(() => undefined);
69
- });
70
- }
71
- exports.injectJS = injectJS;
72
- function injectJSModule(frame) {
73
- return __awaiter(this, void 0, void 0, function* () {
74
- const source = fs.readFileSync(require.resolve('axe-core'), 'utf8');
75
- yield injectJSSource(frame, source);
76
- });
77
- }
78
- function injectJSSource(frame, source, args = []) {
79
- return frame.evaluate(source, ...args);
80
- }
81
- function iframeSelector(disabledFrameSelectors) {
82
- let selector = 'iframe';
83
- for (const disabledFrameSelector of disabledFrameSelectors) {
84
- selector += `:not(${disabledFrameSelector})`;
85
- }
86
- return selector;
87
- }
88
- exports.iframeSelector = iframeSelector;
89
- //# sourceMappingURL=legacy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"legacy.js","sourceRoot":"","sources":["../src/legacy.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AAUzB,SAAsB,QAAQ,CAC5B,KAAwB,EACxB,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAkB;;QAEtD,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,KAAK,MAAM,YAAY,IAAI,MAAM,EAAE;YACjC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,EAAE,CAAC;YACnD,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAiB,EAAE;gBACpC,MAAM;gBACN,QAAQ;gBACR,IAAI;gBACJ,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACpB;QAED,MAAM,WAAW,GAAG,GAAS,EAAE;YAE7B,OAAO,CAAC,KAAK,CAAC,yCAAyC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzE,CAAC,CAAC;QAEF,IAAI,OAAsB,CAAC;QAC3B,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;SACjC;aAAM;YACL,OAAO,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;SAC/C;QAED,IAAI,UAAU,EAAE;YAGd,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;SACtC;QAED,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEzB,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;CAAA;AAzCD,4BAyCC;AAED,SAAe,cAAc,CAAC,KAAY;;QACxC,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;QACpE,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;CAAA;AAED,SAAS,cAAc,CACrB,KAAY,EACZ,MAAyB,EACzB,OAAc,EAAE;IAEhB,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAa,EAAE,GAAG,IAAI,CAAkB,CAAC;AACjE,CAAC;AAED,SAAgB,cAAc,CAAC,sBAAgC;IAC7D,IAAI,QAAQ,GAAG,QAAQ,CAAC;IACxB,KAAK,MAAM,qBAAqB,IAAI,sBAAsB,EAAE;QAC1D,QAAQ,IAAI,QAAQ,qBAAqB,GAAG,CAAC;KAC9C;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAND,wCAMC"}
@@ -1,12 +0,0 @@
1
- import * as Axe from 'axe-core';
2
- import { Browser, Page } from 'puppeteer';
3
- import { AxePuppeteer } from './axePuppeteer';
4
- import { AnalyzeCB, IPageOptions } from './types';
5
- export declare function loadPage(browser: Browser, url: string, pageOpts?: IPageOptions): Promise<OwningAxePuppeteer>;
6
- declare class OwningAxePuppeteer extends AxePuppeteer {
7
- private newPage;
8
- constructor(page: Page, source?: string);
9
- analyze(): Promise<Axe.AxeResults>;
10
- analyze<T extends AnalyzeCB>(callback?: T): Promise<Axe.AxeResults | null>;
11
- }
12
- export {};
package/dist/load-page.js DELETED
@@ -1,42 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.loadPage = void 0;
13
- const axePuppeteer_1 = require("./axePuppeteer");
14
- function loadPage(browser, url, pageOpts = {}) {
15
- return __awaiter(this, void 0, void 0, function* () {
16
- const page = yield browser.newPage();
17
- yield page.setBypassCSP(true);
18
- yield page.goto(url, pageOpts.opts);
19
- return new OwningAxePuppeteer(page, pageOpts.source);
20
- });
21
- }
22
- exports.loadPage = loadPage;
23
- class OwningAxePuppeteer extends axePuppeteer_1.AxePuppeteer {
24
- constructor(page, source) {
25
- super(page, source);
26
- this.newPage = page;
27
- }
28
- analyze(callback) {
29
- const _super = Object.create(null, {
30
- analyze: { get: () => super.analyze }
31
- });
32
- return __awaiter(this, void 0, void 0, function* () {
33
- try {
34
- return yield _super.analyze.call(this, callback);
35
- }
36
- finally {
37
- yield this.newPage.close();
38
- }
39
- });
40
- }
41
- }
42
- //# sourceMappingURL=load-page.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"load-page.js","sourceRoot":"","sources":["../src/load-page.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,iDAA8C;AAM9C,SAAsB,QAAQ,CAC5B,OAAgB,EAChB,GAAW,EACX,WAAyB,EAAE;;QAE3B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEpC,OAAO,IAAI,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;CAAA;AAVD,4BAUC;AAGD,MAAM,kBAAmB,SAAQ,2BAAY;IAG3C,YAAY,IAAU,EAAE,MAAe;QACrC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAMY,OAAO,CAClB,QAAY;;;;;YAEZ,IAAI;gBACF,OAAO,MAAM,OAAM,OAAO,YAAC,QAAQ,CAAC,CAAC;aACtC;oBAAS;gBACR,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;aAC5B;QACH,CAAC;KAAA;CACF"}
package/dist/types.d.ts DELETED
@@ -1,8 +0,0 @@
1
- import type * as Axe from 'axe-core';
2
- import * as axe from 'axe-core';
3
- export declare type AnalyzeCB = (err: Error | null, result?: Axe.AxeResults) => void;
4
- export interface IPageOptions {
5
- opts?: any;
6
- source?: string;
7
- }
8
- export declare type PartialResults = Parameters<typeof axe.finishRun>[0];
package/dist/types.js DELETED
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/dist/utils.d.ts DELETED
@@ -1,7 +0,0 @@
1
- import * as Axe from 'axe-core';
2
- import { Frame } from 'puppeteer';
3
- export declare function frameSourceInject(frame: Frame, source: string | undefined, config: Axe.Spec | null): Promise<void>;
4
- export declare function arrayify<T>(src: T | T[]): T[];
5
- export declare function normalizeContext(includes: Axe.SerialSelectorList, excludes: Axe.SerialSelectorList, disabledFrameSelectors: string[]): Axe.SerialContextObject;
6
- export declare function getChildFrame(frame: Frame, childSelector: Axe.CrossTreeSelector): Promise<Frame | null>;
7
- export declare function assertFrameReady(frame: Frame): Promise<void>;
package/dist/utils.js DELETED
@@ -1,97 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
- Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.assertFrameReady = exports.getChildFrame = exports.normalizeContext = exports.arrayify = exports.frameSourceInject = void 0;
36
- const fs = __importStar(require("fs"));
37
- const browser_1 = require("./browser");
38
- const browser_2 = require("./browser");
39
- function frameSourceInject(frame, source, config) {
40
- return __awaiter(this, void 0, void 0, function* () {
41
- yield assertFrameReady(frame);
42
- if (!source) {
43
- const pathFile = require.resolve('axe-core');
44
- source = fs.readFileSync(pathFile, 'utf8');
45
- }
46
- yield frame.evaluate(source);
47
- yield frame.evaluate(browser_1.axeConfigure, config);
48
- });
49
- }
50
- exports.frameSourceInject = frameSourceInject;
51
- function arrayify(src) {
52
- if (!Array.isArray(src)) {
53
- return [src];
54
- }
55
- return src;
56
- }
57
- exports.arrayify = arrayify;
58
- function normalizeContext(includes, excludes, disabledFrameSelectors) {
59
- const base = {
60
- exclude: []
61
- };
62
- if (excludes.length && Array.isArray(base.exclude)) {
63
- base.exclude.push(...excludes);
64
- }
65
- if (disabledFrameSelectors.length && Array.isArray(base.exclude)) {
66
- const frameExcludes = disabledFrameSelectors.map(frame => [frame, '*']);
67
- base.exclude.push(...frameExcludes);
68
- }
69
- if (includes.length) {
70
- base.include = includes;
71
- }
72
- return base;
73
- }
74
- exports.normalizeContext = normalizeContext;
75
- function getChildFrame(frame, childSelector) {
76
- var _a;
77
- return __awaiter(this, void 0, void 0, function* () {
78
- const frameElm = yield frame.evaluateHandle(browser_1.axeShadowSelect, childSelector);
79
- return (yield ((_a = frameElm.asElement()) === null || _a === void 0 ? void 0 : _a.contentFrame())) || null;
80
- });
81
- }
82
- exports.getChildFrame = getChildFrame;
83
- function assertFrameReady(frame) {
84
- return __awaiter(this, void 0, void 0, function* () {
85
- let pageReady = false;
86
- try {
87
- pageReady = yield frame.evaluate(browser_2.pageIsLoaded);
88
- }
89
- catch (_a) {
90
- }
91
- if (!pageReady) {
92
- throw new Error('Page/Frame is not ready');
93
- }
94
- });
95
- }
96
- exports.assertFrameReady = assertFrameReady;
97
- //# sourceMappingURL=utils.js.map
package/dist/utils.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AAGzB,uCAA0D;AAC1D,uCAAyC;AAEzC,SAAsB,iBAAiB,CACrC,KAAY,EACZ,MAA0B,EAC1B,MAAuB;;QAEvB,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC7C,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;SAC5C;QACD,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,KAAK,CAAC,QAAQ,CAAC,sBAAY,EAAE,MAAkB,CAAC,CAAC;IACzD,CAAC;CAAA;AAZD,8CAYC;AAED,SAAgB,QAAQ,CAAI,GAAY;IACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACvB,OAAO,CAAC,GAAG,CAAC,CAAC;KACd;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AALD,4BAKC;AAED,SAAgB,gBAAgB,CAC9B,QAAgC,EAChC,QAAgC,EAChC,sBAAgC;IAEhC,MAAM,IAAI,GAA4B;QACpC,OAAO,EAAE,EAAE;KACZ,CAAC;IACF,IAAI,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;KAChC;IACD,IAAI,sBAAsB,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QAChE,MAAM,aAAa,GAAG,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;KACrC;IACD,IAAI,QAAQ,CAAC,MAAM,EAAE;QACnB,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;KACzB;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAnBD,4CAmBC;AAED,SAAsB,aAAa,CACjC,KAAY,EACZ,aAAoC;;;QAEpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,yBAAe,EAAE,aAAa,CAAC,CAAC;QAC5E,OAAO,CAAC,MAAM,CAAA,MAAA,QAAQ,CAAC,SAAS,EAAE,0CAAE,YAAY,EAAE,CAAA,CAAC,IAAI,IAAI,CAAC;;CAC7D;AAND,sCAMC;AAED,SAAsB,gBAAgB,CAAC,KAAY;;QAIjD,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI;YACF,SAAS,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,sBAAY,CAAC,CAAC;SAChD;QAAC,WAAM;SAEP;QACD,IAAI,CAAC,SAAS,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;SAC5C;IACH,CAAC;CAAA;AAbD,4CAaC"}