accessibility-checker 4.0.1 → 4.0.2
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.
- package/bin/achecker.js +213 -262
- package/bin/achecker.js.map +1 -1
- package/cjs/bin/achecker.d.ts +2 -0
- package/cjs/bin/achecker.js +306 -0
- package/cjs/bin/achecker.js.map +1 -0
- package/cjs/index.d.ts +319 -0
- package/cjs/index.js +402 -0
- package/cjs/index.js.map +1 -0
- package/cjs/lib/ACBrowserManager.d.ts +22 -0
- package/cjs/lib/ACBrowserManager.js +172 -0
- package/cjs/lib/ACBrowserManager.js.map +1 -0
- package/cjs/lib/ACEngineManager.d.ts +19 -0
- package/cjs/lib/ACEngineManager.js +457 -0
- package/cjs/lib/ACEngineManager.js.map +1 -0
- package/cjs/lib/ACHelper.d.ts +2 -0
- package/cjs/lib/ACHelper.js +678 -0
- package/cjs/lib/ACHelper.js.map +1 -0
- package/cjs/lib/api/IChecker.d.ts +28 -0
- package/cjs/lib/api/IChecker.js +11 -0
- package/cjs/lib/api/IChecker.js.map +1 -0
- package/cjs/lib/api/IMapper.d.ts +37 -0
- package/cjs/lib/api/IMapper.js +18 -0
- package/cjs/lib/api/IMapper.js.map +1 -0
- package/cjs/lib/common/api-ext/Fetch.d.ts +17 -0
- package/cjs/lib/common/api-ext/Fetch.js +95 -0
- package/cjs/lib/common/api-ext/Fetch.js.map +1 -0
- package/cjs/lib/common/api-ext/IAbstractAPI.d.ts +33 -0
- package/cjs/lib/common/api-ext/IAbstractAPI.js +18 -0
- package/cjs/lib/common/api-ext/IAbstractAPI.js.map +1 -0
- package/cjs/lib/common/config/ACConfigManager.d.ts +13 -0
- package/cjs/lib/common/config/ACConfigManager.js +483 -0
- package/cjs/lib/common/config/ACConfigManager.js.map +1 -0
- package/cjs/lib/common/config/ACConstants.d.ts +17 -0
- package/cjs/lib/common/config/ACConstants.js +111 -0
- package/cjs/lib/common/config/ACConstants.js.map +1 -0
- package/cjs/lib/common/config/IArchive.d.ts +37 -0
- package/cjs/lib/common/config/IArchive.js +18 -0
- package/cjs/lib/common/config/IArchive.js.map +1 -0
- package/cjs/lib/common/config/IConfig.d.ts +152 -0
- package/cjs/lib/common/config/IConfig.js +36 -0
- package/cjs/lib/common/config/IConfig.js.map +1 -0
- package/cjs/lib/common/engine/IBounds.d.ts +21 -0
- package/cjs/lib/common/engine/IBounds.js +18 -0
- package/cjs/lib/common/engine/IBounds.js.map +1 -0
- package/cjs/lib/common/engine/IChecker.d.ts +23 -0
- package/cjs/lib/common/engine/IChecker.js +18 -0
- package/cjs/lib/common/engine/IChecker.js.map +1 -0
- package/cjs/lib/common/engine/IEngine.d.ts +39 -0
- package/cjs/lib/common/engine/IEngine.js +18 -0
- package/cjs/lib/common/engine/IEngine.js.map +1 -0
- package/cjs/lib/common/engine/IGuideline.d.ts +53 -0
- package/cjs/lib/common/engine/IGuideline.js +37 -0
- package/cjs/lib/common/engine/IGuideline.js.map +1 -0
- package/cjs/lib/common/engine/IMapper.d.ts +32 -0
- package/cjs/lib/common/engine/IMapper.js +18 -0
- package/cjs/lib/common/engine/IMapper.js.map +1 -0
- package/cjs/lib/common/engine/IReport.d.ts +143 -0
- package/cjs/lib/common/engine/IReport.js +44 -0
- package/cjs/lib/common/engine/IReport.js.map +1 -0
- package/cjs/lib/common/engine/IRule.d.ts +100 -0
- package/cjs/lib/common/engine/IRule.js +87 -0
- package/cjs/lib/common/engine/IRule.js.map +1 -0
- package/cjs/lib/common/engine/IRuleset.d.ts +20 -0
- package/cjs/lib/common/engine/IRuleset.js +18 -0
- package/cjs/lib/common/engine/IRuleset.js.map +1 -0
- package/cjs/lib/common/report/ACReporterCSV.d.ts +28 -0
- package/cjs/lib/common/report/ACReporterCSV.js +75 -0
- package/cjs/lib/common/report/ACReporterCSV.js.map +1 -0
- package/cjs/lib/common/report/ACReporterHTML.d.ts +27 -0
- package/cjs/lib/common/report/ACReporterHTML.js +61 -0
- package/cjs/lib/common/report/ACReporterHTML.js.map +1 -0
- package/cjs/lib/common/report/ACReporterJSON.d.ts +36 -0
- package/cjs/lib/common/report/ACReporterJSON.js +109 -0
- package/cjs/lib/common/report/ACReporterJSON.js.map +1 -0
- package/cjs/lib/common/report/ACReporterMetrics.d.ts +78 -0
- package/cjs/lib/common/report/ACReporterMetrics.js +135 -0
- package/cjs/lib/common/report/ACReporterMetrics.js.map +1 -0
- package/cjs/lib/common/report/ACReporterXLSX.d.ts +38 -0
- package/cjs/lib/common/report/ACReporterXLSX.js +996 -0
- package/cjs/lib/common/report/ACReporterXLSX.js.map +1 -0
- package/cjs/lib/common/report/BaselineManager.d.ts +169 -0
- package/cjs/lib/common/report/BaselineManager.js +382 -0
- package/cjs/lib/common/report/BaselineManager.js.map +1 -0
- package/cjs/lib/common/report/ReporterManager.d.ts +79 -0
- package/cjs/lib/common/report/ReporterManager.js +469 -0
- package/cjs/lib/common/report/ReporterManager.js.map +1 -0
- package/cjs/lib/common/report/genReport.d.ts +1 -0
- package/cjs/lib/common/report/genReport.js +12 -0
- package/cjs/lib/common/report/genReport.js.map +1 -0
- package/cjs/package.json +3 -0
- package/index.js +21 -63
- package/index.js.map +1 -1
- package/lib/ACBrowserManager.js +138 -203
- package/lib/ACBrowserManager.js.map +1 -1
- package/lib/ACEngineManager.js +395 -402
- package/lib/ACEngineManager.js.map +1 -1
- package/lib/ACHelper.js +581 -642
- package/lib/ACHelper.js.map +1 -1
- package/lib/common/api-ext/Fetch.js +58 -78
- package/lib/common/api-ext/Fetch.js.map +1 -1
- package/lib/common/config/ACConfigManager.js +271 -281
- package/lib/common/config/ACConfigManager.js.map +1 -1
- package/lib/common/config/ACConstants.js +38 -4
- package/lib/common/config/ACConstants.js.map +1 -1
- package/lib/common/config/IConfig.d.ts +1 -1
- package/lib/common/report/ACReporterCSV.js +42 -77
- package/lib/common/report/ACReporterCSV.js.map +1 -1
- package/lib/common/report/ACReporterHTML.js +15 -48
- package/lib/common/report/ACReporterHTML.js.map +1 -1
- package/lib/common/report/ACReporterJSON.js +59 -94
- package/lib/common/report/ACReporterJSON.js.map +1 -1
- package/lib/common/report/ACReporterMetrics.js +45 -108
- package/lib/common/report/ACReporterMetrics.js.map +1 -1
- package/lib/common/report/ACReporterXLSX.js +282 -300
- package/lib/common/report/ACReporterXLSX.js.map +1 -1
- package/lib/common/report/BaselineManager.js +82 -56
- package/lib/common/report/BaselineManager.js.map +1 -1
- package/lib/common/report/ReporterManager.js +125 -190
- package/lib/common/report/ReporterManager.js.map +1 -1
- package/lib/common/report/genReport.js +2 -2
- package/mjs/bin/achecker.d.ts +2 -0
- package/mjs/bin/achecker.js +236 -0
- package/mjs/bin/achecker.js.map +1 -0
- package/mjs/index.d.ts +319 -0
- package/mjs/index.js +368 -0
- package/mjs/index.js.map +1 -0
- package/mjs/lib/ACBrowserManager.d.ts +22 -0
- package/mjs/lib/ACBrowserManager.js +121 -0
- package/mjs/lib/ACBrowserManager.js.map +1 -0
- package/mjs/lib/ACEngineManager.d.ts +19 -0
- package/mjs/lib/ACEngineManager.js +397 -0
- package/mjs/lib/ACEngineManager.js.map +1 -0
- package/mjs/lib/ACHelper.d.ts +2 -0
- package/mjs/lib/ACHelper.js +614 -0
- package/mjs/lib/ACHelper.js.map +1 -0
- package/mjs/lib/api/IChecker.d.ts +28 -0
- package/mjs/lib/api/IChecker.js +8 -0
- package/mjs/lib/api/IChecker.js.map +1 -0
- package/mjs/lib/api/IMapper.d.ts +37 -0
- package/mjs/lib/api/IMapper.js +17 -0
- package/mjs/lib/api/IMapper.js.map +1 -0
- package/mjs/lib/common/api-ext/Fetch.d.ts +17 -0
- package/mjs/lib/common/api-ext/Fetch.js +45 -0
- package/mjs/lib/common/api-ext/Fetch.js.map +1 -0
- package/mjs/lib/common/api-ext/IAbstractAPI.d.ts +33 -0
- package/mjs/lib/common/api-ext/IAbstractAPI.js +17 -0
- package/mjs/lib/common/api-ext/IAbstractAPI.js.map +1 -0
- package/mjs/lib/common/config/ACConfigManager.d.ts +13 -0
- package/mjs/lib/common/config/ACConfigManager.js +421 -0
- package/mjs/lib/common/config/ACConfigManager.js.map +1 -0
- package/mjs/lib/common/config/ACConstants.d.ts +17 -0
- package/mjs/lib/common/config/ACConstants.js +75 -0
- package/mjs/lib/common/config/ACConstants.js.map +1 -0
- package/mjs/lib/common/config/IArchive.d.ts +37 -0
- package/mjs/lib/common/config/IArchive.js +17 -0
- package/mjs/lib/common/config/IArchive.js.map +1 -0
- package/mjs/lib/common/config/IConfig.d.ts +152 -0
- package/mjs/lib/common/config/IConfig.js +33 -0
- package/mjs/lib/common/config/IConfig.js.map +1 -0
- package/mjs/lib/common/engine/IBounds.d.ts +21 -0
- package/mjs/lib/common/engine/IBounds.js +17 -0
- package/mjs/lib/common/engine/IBounds.js.map +1 -0
- package/mjs/lib/common/engine/IChecker.d.ts +23 -0
- package/mjs/lib/common/engine/IChecker.js +17 -0
- package/mjs/lib/common/engine/IChecker.js.map +1 -0
- package/mjs/lib/common/engine/IEngine.d.ts +39 -0
- package/mjs/lib/common/engine/IEngine.js +17 -0
- package/mjs/lib/common/engine/IEngine.js.map +1 -0
- package/mjs/lib/common/engine/IGuideline.d.ts +53 -0
- package/mjs/lib/common/engine/IGuideline.js +34 -0
- package/mjs/lib/common/engine/IGuideline.js.map +1 -0
- package/mjs/lib/common/engine/IMapper.d.ts +32 -0
- package/mjs/lib/common/engine/IMapper.js +17 -0
- package/mjs/lib/common/engine/IMapper.js.map +1 -0
- package/mjs/lib/common/engine/IReport.d.ts +143 -0
- package/mjs/lib/common/engine/IReport.js +36 -0
- package/mjs/lib/common/engine/IReport.js.map +1 -0
- package/mjs/lib/common/engine/IRule.d.ts +100 -0
- package/mjs/lib/common/engine/IRule.js +79 -0
- package/mjs/lib/common/engine/IRule.js.map +1 -0
- package/mjs/lib/common/engine/IRuleset.d.ts +20 -0
- package/mjs/lib/common/engine/IRuleset.js +17 -0
- package/mjs/lib/common/engine/IRuleset.js.map +1 -0
- package/mjs/lib/common/report/ACReporterCSV.d.ts +28 -0
- package/mjs/lib/common/report/ACReporterCSV.js +60 -0
- package/mjs/lib/common/report/ACReporterCSV.js.map +1 -0
- package/mjs/lib/common/report/ACReporterHTML.d.ts +27 -0
- package/mjs/lib/common/report/ACReporterHTML.js +46 -0
- package/mjs/lib/common/report/ACReporterHTML.js.map +1 -0
- package/mjs/lib/common/report/ACReporterJSON.d.ts +36 -0
- package/mjs/lib/common/report/ACReporterJSON.js +94 -0
- package/mjs/lib/common/report/ACReporterJSON.js.map +1 -0
- package/mjs/lib/common/report/ACReporterMetrics.d.ts +78 -0
- package/mjs/lib/common/report/ACReporterMetrics.js +122 -0
- package/mjs/lib/common/report/ACReporterMetrics.js.map +1 -0
- package/mjs/lib/common/report/ACReporterXLSX.d.ts +38 -0
- package/mjs/lib/common/report/ACReporterXLSX.js +948 -0
- package/mjs/lib/common/report/ACReporterXLSX.js.map +1 -0
- package/mjs/lib/common/report/BaselineManager.d.ts +169 -0
- package/mjs/lib/common/report/BaselineManager.js +348 -0
- package/mjs/lib/common/report/BaselineManager.js.map +1 -0
- package/mjs/lib/common/report/ReporterManager.d.ts +79 -0
- package/mjs/lib/common/report/ReporterManager.js +469 -0
- package/mjs/lib/common/report/ReporterManager.js.map +1 -0
- package/mjs/lib/common/report/genReport.d.ts +1 -0
- package/mjs/lib/common/report/genReport.js +9 -0
- package/mjs/lib/common/report/genReport.js.map +1 -0
- package/mjs/package.json +3 -0
- package/package.json +10 -4
|
@@ -0,0 +1,614 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
2
|
+
import { dirname, join, resolve as pathResolve } from "path";
|
|
3
|
+
import { ACBrowserManager } from "./ACBrowserManager.js";
|
|
4
|
+
import { ACEngineManager } from "./ACEngineManager.js";
|
|
5
|
+
import { ACConfigManager } from "./common/config/ACConfigManager.js";
|
|
6
|
+
import { ReporterManager } from "./common/report/ReporterManager.js";
|
|
7
|
+
import { BaselineManager } from "./common/report/BaselineManager.js";
|
|
8
|
+
let loggerCreate = function (type) {
|
|
9
|
+
return logger;
|
|
10
|
+
};
|
|
11
|
+
let logger = {
|
|
12
|
+
debug: (...output) => { Config && Config.DEBUG && console.debug(...output); },
|
|
13
|
+
info: (...output) => { Config && Config.DEBUG && console.info(...output); },
|
|
14
|
+
error: (...output) => { Config && Config.DEBUG && console.error(...output); },
|
|
15
|
+
warn: (...output) => { Config && Config.DEBUG && console.warn(...output); },
|
|
16
|
+
create: loggerCreate
|
|
17
|
+
};
|
|
18
|
+
let Config;
|
|
19
|
+
let checkPolicy = false;
|
|
20
|
+
class MyFS {
|
|
21
|
+
writeFileSync(filePath, data) {
|
|
22
|
+
let outFile = this.prepFileSync(filePath);
|
|
23
|
+
writeFileSync(outFile, data);
|
|
24
|
+
}
|
|
25
|
+
prepFileSync(filePath) {
|
|
26
|
+
let outDir = pathResolve(Config.outputFolder);
|
|
27
|
+
let outFile = join(outDir, filePath);
|
|
28
|
+
if (!existsSync(dirname(outFile))) {
|
|
29
|
+
mkdirSync(dirname(outFile), { recursive: true });
|
|
30
|
+
}
|
|
31
|
+
return outFile;
|
|
32
|
+
}
|
|
33
|
+
log(...output) { Config && Config.DEBUG && console.debug(...output); }
|
|
34
|
+
info(...output) { Config && Config.DEBUG && console.info(...output); }
|
|
35
|
+
error(...output) { Config && Config.DEBUG && console.error(...output); }
|
|
36
|
+
loadBaseline(label) {
|
|
37
|
+
let baselineFile = join(join(process.cwd(), Config.baselineFolder), label + ".json");
|
|
38
|
+
if (!existsSync(baselineFile))
|
|
39
|
+
return null;
|
|
40
|
+
if (typeof require !== "undefined") {
|
|
41
|
+
return require(baselineFile);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return JSON.parse(readFileSync(baselineFile).toString());
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
getChecker() {
|
|
48
|
+
return ACEngineManager.getChecker();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async function initialize() {
|
|
52
|
+
if (Config)
|
|
53
|
+
return;
|
|
54
|
+
Config = await ACConfigManager.getConfigUnsupported();
|
|
55
|
+
await ACEngineManager.loadEngineLocal();
|
|
56
|
+
let absAPI = new MyFS();
|
|
57
|
+
let refactorMap = {};
|
|
58
|
+
let rules = ACEngineManager.getRulesSync();
|
|
59
|
+
for (const rule of rules) {
|
|
60
|
+
if (rule.refactor) {
|
|
61
|
+
for (const key in rule.refactor) {
|
|
62
|
+
refactorMap[key] = rule;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
ReporterManager.initialize(Config, absAPI, await ACEngineManager.getRulesets());
|
|
67
|
+
BaselineManager.initialize(Config, absAPI, refactorMap);
|
|
68
|
+
}
|
|
69
|
+
(async () => {
|
|
70
|
+
try {
|
|
71
|
+
// If cucumber is the platform...
|
|
72
|
+
let module = (await import("cucumber"));
|
|
73
|
+
let { AfterAll } = require('cucumber');
|
|
74
|
+
if (module.default.AfterAll) {
|
|
75
|
+
module.default.AfterAll(function (done) {
|
|
76
|
+
// const rulePack = `${Config.rulePack}`;
|
|
77
|
+
initialize()
|
|
78
|
+
.then(() => ReporterManager.generateSummaries())
|
|
79
|
+
.then(() => ACBrowserManager.close())
|
|
80
|
+
.then(done);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
if (typeof (after) !== "undefined") {
|
|
86
|
+
after(function (done) {
|
|
87
|
+
if (Config) {
|
|
88
|
+
if (this.timeout) {
|
|
89
|
+
this.timeout(300000);
|
|
90
|
+
}
|
|
91
|
+
// const rulePack = `${Config.rulePack}/ace`;
|
|
92
|
+
initialize()
|
|
93
|
+
.then(() => ReporterManager.generateSummaries())
|
|
94
|
+
.then(() => ACBrowserManager.close())
|
|
95
|
+
.then(done);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
done();
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
process.on('beforeExit', async function () {
|
|
104
|
+
if (Config) {
|
|
105
|
+
initialize()
|
|
106
|
+
.then(() => ReporterManager.generateSummaries());
|
|
107
|
+
ACBrowserManager.close();
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
})();
|
|
113
|
+
function areValidPolicy(valPolicies, curPol) {
|
|
114
|
+
let isValPol = false;
|
|
115
|
+
let errorPolicy = "";
|
|
116
|
+
for (let i = 0; i < curPol.length; ++i) {
|
|
117
|
+
if (valPolicies.indexOf(curPol[i]) === -1) {
|
|
118
|
+
errorPolicy += "" + curPol[i] + ",";
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
isValPol = true;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (errorPolicy.length > 0) {
|
|
125
|
+
errorPolicy = errorPolicy.substr(0, errorPolicy.length - 1);
|
|
126
|
+
console.log(`[WARN] InvalidPolicies: Invalid policies "${errorPolicy}". Valid policy ids are: ${valPolicies}`);
|
|
127
|
+
}
|
|
128
|
+
if (!isValPol) {
|
|
129
|
+
const errStr = `[ERROR] ValidPoliciesMissing: No valid policy has been provided. Valid policy ids for the specified archive are: ${valPolicies}`;
|
|
130
|
+
console.error(errStr);
|
|
131
|
+
throw new Error(errStr);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
export async function getComplianceHelper(content, label) {
|
|
135
|
+
await initialize();
|
|
136
|
+
Config.DEBUG && console.log("START 'aChecker.getCompliance' function");
|
|
137
|
+
if (!content) {
|
|
138
|
+
console.error("aChecker: Unable to get compliance of null or undefined object");
|
|
139
|
+
//return null;
|
|
140
|
+
throw new Error("aChecker: Unable to get compliance of null or undefined object");
|
|
141
|
+
}
|
|
142
|
+
// Variable Decleration
|
|
143
|
+
let URL;
|
|
144
|
+
// Since we need to handle multiple variation of possible ways to scan items, we need to handle
|
|
145
|
+
// each one differently as each one requires specific actions/setup.
|
|
146
|
+
// Handle the following:
|
|
147
|
+
// Single node (HTMLElement)
|
|
148
|
+
// Multiple node (Array of HTMLElements)
|
|
149
|
+
// Local file (String)
|
|
150
|
+
// URL (String)
|
|
151
|
+
// document
|
|
152
|
+
async function getParsed(content) {
|
|
153
|
+
if (!content)
|
|
154
|
+
return null;
|
|
155
|
+
// Handle local file and URL's
|
|
156
|
+
if (typeof content === "string") {
|
|
157
|
+
let isURLRegex = /^(ftp|http|https):\/\//;
|
|
158
|
+
if (isURLRegex.test(content)) {
|
|
159
|
+
URL = content;
|
|
160
|
+
}
|
|
161
|
+
// Since this is a string, we consider this as either URL or local file
|
|
162
|
+
// so build an iframe based on this and get the frame doc and then scan this.
|
|
163
|
+
return ACBrowserManager.buildIframeAndGetDoc(content);
|
|
164
|
+
}
|
|
165
|
+
else if (ACEngineManager.isSelenium(content) || ACEngineManager.isPuppeteer(content) || ACEngineManager.isPlaywright(content) || ACEngineManager.isWebDriverIO(content)) {
|
|
166
|
+
}
|
|
167
|
+
// Handle Array of nodes
|
|
168
|
+
else if (content instanceof Array) {
|
|
169
|
+
// TODO: Supporting Array of nodes, possible future enhancenment
|
|
170
|
+
}
|
|
171
|
+
// Handle single node (HTMLElement)
|
|
172
|
+
else if (content.nodeType === 1) {
|
|
173
|
+
// In the case this is a node, there is nothing special that needs to be done at this time,
|
|
174
|
+
// the engine will be able to handle this. Adding this block here as we may need to add some filtering
|
|
175
|
+
// of rules or rule sets for this case depending on if a special ruleset needs to be created or not.
|
|
176
|
+
content = content;
|
|
177
|
+
}
|
|
178
|
+
// handle scanning document
|
|
179
|
+
else if (content.nodeType === 9) {
|
|
180
|
+
// In the case this is a document element, simply send the document object to the engine for now
|
|
181
|
+
// we will need to do some filtering to remove any karma related aspects, which requires to do a
|
|
182
|
+
// document clone, and then string the karma scripts that are added and then send this document
|
|
183
|
+
// to the engine.
|
|
184
|
+
// TODO: Investigate best approach to perform filtering
|
|
185
|
+
content = content;
|
|
186
|
+
}
|
|
187
|
+
return content;
|
|
188
|
+
}
|
|
189
|
+
let parsed = await getParsed(content);
|
|
190
|
+
if (!parsed) {
|
|
191
|
+
console.error("Invalid content: " + content);
|
|
192
|
+
throw new Error("Invalid content: " + content);
|
|
193
|
+
}
|
|
194
|
+
await ACEngineManager.loadEngine(parsed);
|
|
195
|
+
// Get the Data when the scan is started
|
|
196
|
+
// Start time will be in milliseconds elapsed since 1 January 1970 00:00:00 UTC up until now.
|
|
197
|
+
let policies = Config.policies;
|
|
198
|
+
let curPol = null;
|
|
199
|
+
if (policies) {
|
|
200
|
+
curPol = JSON.parse(JSON.stringify(policies));
|
|
201
|
+
}
|
|
202
|
+
if (ACEngineManager.isSelenium(parsed)) {
|
|
203
|
+
Config.DEBUG && console.log("getComplianceHelper:Selenium");
|
|
204
|
+
return await getComplianceHelperSelenium(label, parsed, curPol);
|
|
205
|
+
}
|
|
206
|
+
else if (ACEngineManager.isPuppeteer(parsed)) {
|
|
207
|
+
Config.DEBUG && console.log("ACHelper.ts:getComplianceHelper:Puppeteer");
|
|
208
|
+
return await getComplianceHelperPuppeteer(label, parsed, curPol);
|
|
209
|
+
}
|
|
210
|
+
else if (ACEngineManager.isPlaywright(parsed)) {
|
|
211
|
+
Config.DEBUG && console.log("ACHelper.ts:getComplianceHelper:Playwright");
|
|
212
|
+
return await getComplianceHelperPuppeteer(label, parsed, curPol);
|
|
213
|
+
}
|
|
214
|
+
else if (ACEngineManager.isWebDriverIO(parsed)) {
|
|
215
|
+
Config.DEBUG && console.log("ACHelper.ts:getComplianceHelper:Playwright");
|
|
216
|
+
return await getComplianceHelperWebDriverIO(label, parsed, curPol);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
Config.DEBUG && console.log("ACHelper.ts:getComplianceHelper:Local");
|
|
220
|
+
return await getComplianceHelperLocal(label, parsed, curPol);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
async function getComplianceHelperSelenium(label, parsed, curPol) {
|
|
224
|
+
try {
|
|
225
|
+
let startScan = Date.now();
|
|
226
|
+
// NOTE: Engine should already be loaded
|
|
227
|
+
let browser = parsed;
|
|
228
|
+
// Selenium
|
|
229
|
+
let scriptStr = `let cb = arguments[arguments.length - 1];
|
|
230
|
+
try {
|
|
231
|
+
|
|
232
|
+
const valueToLevel = (reportValue) => {
|
|
233
|
+
let reportLevel;
|
|
234
|
+
if (reportValue[1] === "PASS") {
|
|
235
|
+
reportLevel = "pass";
|
|
236
|
+
}
|
|
237
|
+
else if ((reportValue[0] === "VIOLATION" || reportValue[0] === "RECOMMENDATION") && reportValue[1] === "MANUAL") {
|
|
238
|
+
reportLevel = "manual";
|
|
239
|
+
}
|
|
240
|
+
else if (reportValue[0] === "VIOLATION") {
|
|
241
|
+
if (reportValue[1] === "FAIL") {
|
|
242
|
+
reportLevel = "violation";
|
|
243
|
+
}
|
|
244
|
+
else if (reportValue[1] === "POTENTIAL") {
|
|
245
|
+
reportLevel = "potentialviolation";
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
else if (reportValue[0] === "RECOMMENDATION") {
|
|
249
|
+
if (reportValue[1] === "FAIL") {
|
|
250
|
+
reportLevel = "recommendation";
|
|
251
|
+
}
|
|
252
|
+
else if (reportValue[1] === "POTENTIAL") {
|
|
253
|
+
reportLevel = "potentialrecommendation";
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return reportLevel;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
const getCounts = (engineReport) => {
|
|
260
|
+
let counts = {
|
|
261
|
+
violation: 0,
|
|
262
|
+
potentialviolation: 0,
|
|
263
|
+
recommendation: 0,
|
|
264
|
+
potentialrecommendation: 0,
|
|
265
|
+
manual: 0,
|
|
266
|
+
pass: 0
|
|
267
|
+
}
|
|
268
|
+
for (const issue of engineReport.results) {
|
|
269
|
+
++counts[issue.level];
|
|
270
|
+
}
|
|
271
|
+
return counts;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
let policies = ${JSON.stringify(Config.policies)};
|
|
276
|
+
|
|
277
|
+
let checker = new window.ace_ibma.Checker();
|
|
278
|
+
let customRulesets = ${JSON.stringify(ACEngineManager.customRulesets)};
|
|
279
|
+
customRulesets.forEach((rs) => checker.addRuleset(rs));
|
|
280
|
+
setTimeout(function() {
|
|
281
|
+
checker.check(document, policies).then(function(report) {
|
|
282
|
+
for (const result of report.results) {
|
|
283
|
+
delete result.node;
|
|
284
|
+
result.level = valueToLevel(result.value)
|
|
285
|
+
}
|
|
286
|
+
report.summary ||= {};
|
|
287
|
+
report.summary.counts ||= getCounts(report);
|
|
288
|
+
let reportLevels = ${JSON.stringify((Config.reportLevels || []).concat(Config.failLevels || []).map(lvl => lvl.toString()))};
|
|
289
|
+
// Filter out pass results unless they asked for them in reports
|
|
290
|
+
// We don't want to mess with baseline functions, but pass results can break the response object
|
|
291
|
+
report.results = report.results.filter(result => reportLevels.includes(result.level) || result.level !== "pass");
|
|
292
|
+
cb(report);
|
|
293
|
+
})
|
|
294
|
+
},0)
|
|
295
|
+
} catch (e) {
|
|
296
|
+
cb(e);
|
|
297
|
+
}`;
|
|
298
|
+
let manage = browser.manage();
|
|
299
|
+
if (manage.timeouts) {
|
|
300
|
+
manage.timeouts().setScriptTimeout(60000);
|
|
301
|
+
}
|
|
302
|
+
else if (manage.setTimeouts) {
|
|
303
|
+
manage.setTimeouts({
|
|
304
|
+
"script": 60000
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
let report = await browser.executeAsyncScript(scriptStr);
|
|
308
|
+
const getPolicies = "return new window.ace_ibma.Checker().rulesetIds;";
|
|
309
|
+
if (curPol != null && !checkPolicy) {
|
|
310
|
+
checkPolicy = true;
|
|
311
|
+
const valPolicies = ACEngineManager.customRulesets.map(rs => rs.id).concat(await browser.executeScript(getPolicies));
|
|
312
|
+
areValidPolicy(valPolicies, curPol);
|
|
313
|
+
}
|
|
314
|
+
// If there is something to report...
|
|
315
|
+
let finalReport;
|
|
316
|
+
if (report.results) {
|
|
317
|
+
// Add URL to the result object
|
|
318
|
+
const url = await browser.getCurrentUrl();
|
|
319
|
+
const title = await browser.getTitle();
|
|
320
|
+
let origReport = JSON.parse(JSON.stringify(report));
|
|
321
|
+
if (Config.captureScreenshots && browser.takeScreenshot) {
|
|
322
|
+
const image = await browser.takeScreenshot();
|
|
323
|
+
origReport.screenshot = image;
|
|
324
|
+
}
|
|
325
|
+
finalReport = ReporterManager.addEngineReport("Selenium", startScan, url, title, label, origReport);
|
|
326
|
+
}
|
|
327
|
+
return {
|
|
328
|
+
"report": finalReport,
|
|
329
|
+
"webdriver": parsed
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
catch (err) {
|
|
333
|
+
console.error(err);
|
|
334
|
+
return Promise.reject(err);
|
|
335
|
+
}
|
|
336
|
+
;
|
|
337
|
+
}
|
|
338
|
+
async function getComplianceHelperWebDriverIO(label, parsed, curPol) {
|
|
339
|
+
try {
|
|
340
|
+
const startScan = Date.now();
|
|
341
|
+
// NOTE: Engine should already be loaded
|
|
342
|
+
const page = parsed;
|
|
343
|
+
let report = await page.executeAsync(({ policies, customRulesets, reportLevels }, done) => {
|
|
344
|
+
const valueToLevel = (reportValue) => {
|
|
345
|
+
let reportLevel;
|
|
346
|
+
if (reportValue[1] === "PASS") {
|
|
347
|
+
reportLevel = "pass";
|
|
348
|
+
}
|
|
349
|
+
else if ((reportValue[0] === "VIOLATION" || reportValue[0] === "RECOMMENDATION") && reportValue[1] === "MANUAL") {
|
|
350
|
+
reportLevel = "manual";
|
|
351
|
+
}
|
|
352
|
+
else if (reportValue[0] === "VIOLATION") {
|
|
353
|
+
if (reportValue[1] === "FAIL") {
|
|
354
|
+
reportLevel = "violation";
|
|
355
|
+
}
|
|
356
|
+
else if (reportValue[1] === "POTENTIAL") {
|
|
357
|
+
reportLevel = "potentialviolation";
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
else if (reportValue[0] === "RECOMMENDATION") {
|
|
361
|
+
if (reportValue[1] === "FAIL") {
|
|
362
|
+
reportLevel = "recommendation";
|
|
363
|
+
}
|
|
364
|
+
else if (reportValue[1] === "POTENTIAL") {
|
|
365
|
+
reportLevel = "potentialrecommendation";
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
return reportLevel;
|
|
369
|
+
};
|
|
370
|
+
const getCounts = (engineReport) => {
|
|
371
|
+
let counts = {
|
|
372
|
+
violation: 0,
|
|
373
|
+
potentialviolation: 0,
|
|
374
|
+
recommendation: 0,
|
|
375
|
+
potentialrecommendation: 0,
|
|
376
|
+
manual: 0,
|
|
377
|
+
pass: 0
|
|
378
|
+
};
|
|
379
|
+
for (const issue of engineReport.results) {
|
|
380
|
+
++counts[issue.level];
|
|
381
|
+
}
|
|
382
|
+
return counts;
|
|
383
|
+
};
|
|
384
|
+
let checker = new window.ace_ibma.Checker();
|
|
385
|
+
customRulesets.forEach((rs) => checker.addRuleset(rs));
|
|
386
|
+
return new Promise((resolve, reject) => {
|
|
387
|
+
setTimeout(function () {
|
|
388
|
+
checker.check(document, policies).then(function (report) {
|
|
389
|
+
for (const result of report.results) {
|
|
390
|
+
delete result.node;
|
|
391
|
+
result.level = valueToLevel(result.value);
|
|
392
|
+
}
|
|
393
|
+
report.summary ||= {};
|
|
394
|
+
report.summary.counts ||= getCounts(report);
|
|
395
|
+
// Filter out pass results unless they asked for them in reports
|
|
396
|
+
// We don't want to mess with baseline functions, but pass results can break the response object
|
|
397
|
+
report.results = report.results.filter(result => reportLevels.includes(result.level) || result.level !== "pass");
|
|
398
|
+
resolve(report);
|
|
399
|
+
done(report);
|
|
400
|
+
});
|
|
401
|
+
}, 0);
|
|
402
|
+
});
|
|
403
|
+
}, { policies: Config.policies, customRulesets: ACEngineManager.customRulesets, reportLevels: (Config.reportLevels || []).concat(Config.failLevels || []).map(lvl => lvl.toString()) });
|
|
404
|
+
if (curPol != null && !checkPolicy) {
|
|
405
|
+
const valPolicies = ACEngineManager.customRulesets.map(rs => rs.id).concat(await page.execute(() => (new window.ace_ibma.Checker().rulesetIds)));
|
|
406
|
+
checkPolicy = true;
|
|
407
|
+
areValidPolicy(valPolicies, curPol);
|
|
408
|
+
}
|
|
409
|
+
let finalReport;
|
|
410
|
+
// If there is something to report...
|
|
411
|
+
if (report.results) {
|
|
412
|
+
let url = await page.execute(() => document.location.href);
|
|
413
|
+
let title = await page.execute(() => document.location.title);
|
|
414
|
+
let origReport = JSON.parse(JSON.stringify(report));
|
|
415
|
+
if (Config.captureScreenshots) {
|
|
416
|
+
let image = await page.screenshot({
|
|
417
|
+
fullPage: true,
|
|
418
|
+
encoding: "base64"
|
|
419
|
+
});
|
|
420
|
+
origReport.screenshot = image;
|
|
421
|
+
}
|
|
422
|
+
finalReport = ReporterManager.addEngineReport("Puppeteer", startScan, url, title, label, origReport);
|
|
423
|
+
}
|
|
424
|
+
page.aceBusy = false;
|
|
425
|
+
return {
|
|
426
|
+
"report": finalReport,
|
|
427
|
+
"puppeteer": parsed
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
catch (err) {
|
|
431
|
+
console.error(err);
|
|
432
|
+
return Promise.reject(err);
|
|
433
|
+
}
|
|
434
|
+
;
|
|
435
|
+
}
|
|
436
|
+
async function getComplianceHelperPuppeteer(label, parsed, curPol) {
|
|
437
|
+
try {
|
|
438
|
+
const startScan = Date.now();
|
|
439
|
+
// NOTE: Engine should already be loaded
|
|
440
|
+
const page = parsed;
|
|
441
|
+
let report = await page.evaluate(({ policies, customRulesets, reportLevels }) => {
|
|
442
|
+
const valueToLevel = (reportValue) => {
|
|
443
|
+
let reportLevel;
|
|
444
|
+
if (reportValue[1] === "PASS") {
|
|
445
|
+
reportLevel = "pass";
|
|
446
|
+
}
|
|
447
|
+
else if ((reportValue[0] === "VIOLATION" || reportValue[0] === "RECOMMENDATION") && reportValue[1] === "MANUAL") {
|
|
448
|
+
reportLevel = "manual";
|
|
449
|
+
}
|
|
450
|
+
else if (reportValue[0] === "VIOLATION") {
|
|
451
|
+
if (reportValue[1] === "FAIL") {
|
|
452
|
+
reportLevel = "violation";
|
|
453
|
+
}
|
|
454
|
+
else if (reportValue[1] === "POTENTIAL") {
|
|
455
|
+
reportLevel = "potentialviolation";
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
else if (reportValue[0] === "RECOMMENDATION") {
|
|
459
|
+
if (reportValue[1] === "FAIL") {
|
|
460
|
+
reportLevel = "recommendation";
|
|
461
|
+
}
|
|
462
|
+
else if (reportValue[1] === "POTENTIAL") {
|
|
463
|
+
reportLevel = "potentialrecommendation";
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
return reportLevel;
|
|
467
|
+
};
|
|
468
|
+
const getCounts = (engineReport) => {
|
|
469
|
+
let counts = {
|
|
470
|
+
violation: 0,
|
|
471
|
+
potentialviolation: 0,
|
|
472
|
+
recommendation: 0,
|
|
473
|
+
potentialrecommendation: 0,
|
|
474
|
+
manual: 0,
|
|
475
|
+
pass: 0
|
|
476
|
+
};
|
|
477
|
+
for (const issue of engineReport.results) {
|
|
478
|
+
++counts[issue.level];
|
|
479
|
+
}
|
|
480
|
+
return counts;
|
|
481
|
+
};
|
|
482
|
+
let checker = new window.ace_ibma.Checker();
|
|
483
|
+
customRulesets.forEach((rs) => checker.addRuleset(rs));
|
|
484
|
+
return new Promise((resolve, reject) => {
|
|
485
|
+
setTimeout(function () {
|
|
486
|
+
checker.check(document, policies).then(function (report) {
|
|
487
|
+
for (const result of report.results) {
|
|
488
|
+
delete result.node;
|
|
489
|
+
result.level = valueToLevel(result.value);
|
|
490
|
+
}
|
|
491
|
+
report.summary ||= {};
|
|
492
|
+
report.summary.counts ||= getCounts(report);
|
|
493
|
+
// Filter out pass results unless they asked for them in reports
|
|
494
|
+
// We don't want to mess with baseline functions, but pass results can break the response object
|
|
495
|
+
report.results = report.results.filter(result => reportLevels.includes(result.level) || result.level !== "pass");
|
|
496
|
+
resolve(report);
|
|
497
|
+
});
|
|
498
|
+
}, 0);
|
|
499
|
+
});
|
|
500
|
+
}, { policies: Config.policies, customRulesets: ACEngineManager.customRulesets, reportLevels: (Config.reportLevels || []).concat(Config.failLevels || []).map(lvl => lvl.toString()) });
|
|
501
|
+
if (curPol != null && !checkPolicy) {
|
|
502
|
+
const valPolicies = ACEngineManager.customRulesets.map(rs => rs.id).concat(await page.evaluate("new window.ace_ibma.Checker().rulesetIds"));
|
|
503
|
+
checkPolicy = true;
|
|
504
|
+
areValidPolicy(valPolicies, curPol);
|
|
505
|
+
}
|
|
506
|
+
let finalReport;
|
|
507
|
+
// If there is something to report...
|
|
508
|
+
if (report.results) {
|
|
509
|
+
let url = await page.evaluate("document.location.href");
|
|
510
|
+
let title = await page.evaluate("document.location.title");
|
|
511
|
+
let origReport = JSON.parse(JSON.stringify(report));
|
|
512
|
+
if (Config.captureScreenshots) {
|
|
513
|
+
let image = await page.screenshot({
|
|
514
|
+
fullPage: true,
|
|
515
|
+
encoding: "base64"
|
|
516
|
+
});
|
|
517
|
+
origReport.screenshot = image;
|
|
518
|
+
}
|
|
519
|
+
finalReport = ReporterManager.addEngineReport("Puppeteer", startScan, url, title, label, origReport);
|
|
520
|
+
}
|
|
521
|
+
page.aceBusy = false;
|
|
522
|
+
return {
|
|
523
|
+
"report": finalReport,
|
|
524
|
+
"puppeteer": parsed
|
|
525
|
+
};
|
|
526
|
+
}
|
|
527
|
+
catch (err) {
|
|
528
|
+
console.error(err);
|
|
529
|
+
return Promise.reject(err);
|
|
530
|
+
}
|
|
531
|
+
;
|
|
532
|
+
}
|
|
533
|
+
async function getComplianceHelperLocal(label, parsed, curPol) {
|
|
534
|
+
try {
|
|
535
|
+
const valueToLevel = (reportValue) => {
|
|
536
|
+
let reportLevel;
|
|
537
|
+
if (reportValue[1] === "PASS") {
|
|
538
|
+
reportLevel = "pass";
|
|
539
|
+
}
|
|
540
|
+
else if ((reportValue[0] === "VIOLATION" || reportValue[0] === "RECOMMENDATION") && reportValue[1] === "MANUAL") {
|
|
541
|
+
reportLevel = "manual";
|
|
542
|
+
}
|
|
543
|
+
else if (reportValue[0] === "VIOLATION") {
|
|
544
|
+
if (reportValue[1] === "FAIL") {
|
|
545
|
+
reportLevel = "violation";
|
|
546
|
+
}
|
|
547
|
+
else if (reportValue[1] === "POTENTIAL") {
|
|
548
|
+
reportLevel = "potentialviolation";
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
else if (reportValue[0] === "RECOMMENDATION") {
|
|
552
|
+
if (reportValue[1] === "FAIL") {
|
|
553
|
+
reportLevel = "recommendation";
|
|
554
|
+
}
|
|
555
|
+
else if (reportValue[1] === "POTENTIAL") {
|
|
556
|
+
reportLevel = "potentialrecommendation";
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
return reportLevel;
|
|
560
|
+
};
|
|
561
|
+
const getCounts = (engineReport) => {
|
|
562
|
+
let counts = {
|
|
563
|
+
violation: 0,
|
|
564
|
+
potentialviolation: 0,
|
|
565
|
+
recommendation: 0,
|
|
566
|
+
potentialrecommendation: 0,
|
|
567
|
+
manual: 0,
|
|
568
|
+
pass: 0
|
|
569
|
+
};
|
|
570
|
+
for (const issue of engineReport.results) {
|
|
571
|
+
++counts[issue.level];
|
|
572
|
+
}
|
|
573
|
+
return counts;
|
|
574
|
+
};
|
|
575
|
+
let startScan = Date.now();
|
|
576
|
+
let checker = ACEngineManager.getChecker();
|
|
577
|
+
ACEngineManager.customRulesets.forEach((rs) => checker.addGuideline(rs));
|
|
578
|
+
let report = await checker.check(parsed, Config.policies)
|
|
579
|
+
.then(function (report) {
|
|
580
|
+
for (const result of report.results) {
|
|
581
|
+
delete result.node;
|
|
582
|
+
result.level = valueToLevel(result.value);
|
|
583
|
+
}
|
|
584
|
+
report.summary ||= {};
|
|
585
|
+
report.summary.counts ||= getCounts(report);
|
|
586
|
+
let reportLevels = (Config.reportLevels || []).concat(Config.failLevels || []).map(lvl => lvl.toString());
|
|
587
|
+
// Filter out pass results unless they asked for them in reports
|
|
588
|
+
// We don't want to mess with baseline functions, but pass results can break the response object
|
|
589
|
+
report.results = report.results.filter(result => reportLevels.includes(result.level) || result.level !== "pass");
|
|
590
|
+
return report;
|
|
591
|
+
});
|
|
592
|
+
if (curPol != null && !checkPolicy) {
|
|
593
|
+
let valPolicies = checker.getGuidelineIds();
|
|
594
|
+
checkPolicy = true;
|
|
595
|
+
areValidPolicy(valPolicies, curPol);
|
|
596
|
+
}
|
|
597
|
+
let finalReport;
|
|
598
|
+
// If there is something to report...
|
|
599
|
+
if (report.results) {
|
|
600
|
+
let url = parsed.location && parsed.location.href;
|
|
601
|
+
let origReport = JSON.parse(JSON.stringify(report));
|
|
602
|
+
finalReport = ReporterManager.addEngineReport("Native", startScan, url, parsed.title, label, origReport);
|
|
603
|
+
}
|
|
604
|
+
return {
|
|
605
|
+
"report": finalReport
|
|
606
|
+
};
|
|
607
|
+
}
|
|
608
|
+
catch (err) {
|
|
609
|
+
console.error(err);
|
|
610
|
+
return Promise.reject(err);
|
|
611
|
+
}
|
|
612
|
+
;
|
|
613
|
+
}
|
|
614
|
+
//# sourceMappingURL=ACHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ACHelper.js","sourceRoot":"","sources":["../../../src-ts/lib/ACHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { eRuleLevel } from "../common/config/IConfig.js";
|
|
2
|
+
import { IBaselineReport } from "../common/engine/IReport.js";
|
|
3
|
+
export declare enum eAssertResult {
|
|
4
|
+
ERROR = -1,
|
|
5
|
+
PASS = 0,
|
|
6
|
+
BASELINE_MISMATCH = 1,
|
|
7
|
+
FAIL = 2
|
|
8
|
+
}
|
|
9
|
+
export interface ILogger {
|
|
10
|
+
debug: (...args: any[]) => void;
|
|
11
|
+
info: (...args: any[]) => void;
|
|
12
|
+
error: (...args: any[]) => void;
|
|
13
|
+
warn: (...args: any[]) => void;
|
|
14
|
+
create: (...args: any[]) => void;
|
|
15
|
+
}
|
|
16
|
+
export interface ICheckerError {
|
|
17
|
+
details: any;
|
|
18
|
+
}
|
|
19
|
+
export interface ICheckerResult {
|
|
20
|
+
webdriver?: any;
|
|
21
|
+
puppeteer?: any;
|
|
22
|
+
report: ReportResult;
|
|
23
|
+
}
|
|
24
|
+
export type ICheckerReportCounts = {
|
|
25
|
+
[key in eRuleLevel]?: number;
|
|
26
|
+
};
|
|
27
|
+
export type ICheckerReport = IBaselineReport;
|
|
28
|
+
export type ReportResult = ICheckerReport | ICheckerError;
|