@qualweb/cui-checks 0.1.2 → 0.2.0

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.
Files changed (43) hide show
  1. package/dist/CuiChecksModule.d.ts +10 -0
  2. package/dist/CuiChecksModule.d.ts.map +1 -0
  3. package/dist/CuiChecksModule.js +19 -0
  4. package/dist/CuiChecksRunner.d.ts +9 -0
  5. package/dist/CuiChecksRunner.d.ts.map +1 -0
  6. package/dist/CuiChecksRunner.js +18 -0
  7. package/dist/__webpack/cui.bundle.js +1 -0
  8. package/dist/checks/QW-CUI-C1.d.ts +7 -0
  9. package/dist/checks/QW-CUI-C1.d.ts.map +1 -0
  10. package/dist/checks/QW-CUI-C1.js +32 -0
  11. package/dist/checks/index.d.ts +2 -0
  12. package/dist/checks/index.d.ts.map +1 -0
  13. package/dist/checks/index.js +17 -0
  14. package/dist/index.d.ts +3 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +7 -0
  17. package/dist/lib/CUIChecksTester.object.d.ts +9 -0
  18. package/dist/lib/CUIChecksTester.object.d.ts.map +1 -0
  19. package/dist/lib/CUIChecksTester.object.js +71 -0
  20. package/dist/lib/Check.object.d.ts +21 -0
  21. package/dist/lib/Check.object.d.ts.map +1 -0
  22. package/dist/lib/Check.object.js +76 -0
  23. package/dist/lib/checks.json +25 -0
  24. package/dist/lib/mapping.d.ts +5 -0
  25. package/dist/lib/mapping.d.ts.map +1 -0
  26. package/dist/lib/mapping.js +5 -0
  27. package/package.json +24 -20
  28. package/.mocharc.js +0 -3
  29. package/CHANGELOG.md +0 -19
  30. package/compile-rules.js +0 -23
  31. package/cui-checks.schema.json +0 -115
  32. package/dist/cui.bundle.js +0 -1
  33. package/src/index.ts +0 -121
  34. package/src/lib/Check.object.ts +0 -105
  35. package/src/lib/Test.object.ts +0 -40
  36. package/src/lib/decorator.ts +0 -463
  37. package/src/lib/rules.json +0 -25
  38. package/src/lib/rules.ts +0 -5
  39. package/src/rules/QW-CUI-C1.ts +0 -22
  40. package/tsconfig.json +0 -43
  41. package/tsconfig.prod.json +0 -20
  42. package/validate-rules.js +0 -42
  43. package/webpack.config.js +0 -30
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.QW_CUI_C1 = void 0;
13
+ const applicability_1 = require("@qualweb/util/applicability");
14
+ const evaluation_1 = require("@qualweb/core/evaluation");
15
+ const Check_object_1 = require("../lib/Check.object");
16
+ class QW_CUI_C1 extends Check_object_1.Check {
17
+ execute(element) {
18
+ const test = new evaluation_1.Test();
19
+ console.log(element);
20
+ test.verdict = evaluation_1.Verdict.WARNING;
21
+ test.resultCode = 'W1';
22
+ test.addElement(element);
23
+ this.addTestResult(test);
24
+ }
25
+ }
26
+ __decorate([
27
+ applicability_1.ElementExists,
28
+ __metadata("design:type", Function),
29
+ __metadata("design:paramtypes", [Function]),
30
+ __metadata("design:returntype", void 0)
31
+ ], QW_CUI_C1.prototype, "execute", null);
32
+ exports.QW_CUI_C1 = QW_CUI_C1;
@@ -0,0 +1,2 @@
1
+ export * from './QW-CUI-C1';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/checks/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -0,0 +1,17 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./QW-CUI-C1"), exports);
@@ -0,0 +1,3 @@
1
+ export { CUIChecksModule as CUIChecks } from './CuiChecksModule';
2
+ export { CUIChecksRunner } from './CuiChecksRunner';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CUIChecksRunner = exports.CUIChecks = void 0;
4
+ var CuiChecksModule_1 = require("./CuiChecksModule");
5
+ Object.defineProperty(exports, "CUIChecks", { enumerable: true, get: function () { return CuiChecksModule_1.CUIChecksModule; } });
6
+ var CuiChecksRunner_1 = require("./CuiChecksRunner");
7
+ Object.defineProperty(exports, "CUIChecksRunner", { enumerable: true, get: function () { return CuiChecksRunner_1.CUIChecksRunner; } });
@@ -0,0 +1,9 @@
1
+ import type { ModuleTranslator } from '@qualweb/core/locale';
2
+ import { Tester } from '@qualweb/core/evaluation';
3
+ export declare class CUIChecksTester extends Tester {
4
+ init(translator: ModuleTranslator): this;
5
+ execute(): void;
6
+ private executeChecks;
7
+ private executeCheck;
8
+ }
9
+ //# sourceMappingURL=CUIChecksTester.object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CUIChecksTester.object.d.ts","sourceRoot":"","sources":["../../src/lib/CUIChecksTester.object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAIlD,qBAAa,eAAgB,SAAQ,MAAM;IAClC,IAAI,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI;IASxC,OAAO,IAAI,IAAI;IAItB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,YAAY;CAcrB"}
@@ -0,0 +1,71 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.CUIChecksTester = void 0;
30
+ const evaluation_1 = require("@qualweb/core/evaluation");
31
+ const mapping_1 = __importDefault(require("./mapping"));
32
+ const checks = __importStar(require("../checks"));
33
+ class CUIChecksTester extends evaluation_1.Tester {
34
+ init(translator) {
35
+ for (const check in checks) {
36
+ const checkObject = new checks[check](translator);
37
+ this.assertions.set(checkObject.getCode(), checkObject);
38
+ this.toExecute[checkObject.getCode()] = true;
39
+ }
40
+ return this;
41
+ }
42
+ execute() {
43
+ this.executeChecks();
44
+ }
45
+ executeChecks() {
46
+ var _a;
47
+ const selectors = Object.keys(mapping_1.default);
48
+ for (const selector of selectors !== null && selectors !== void 0 ? selectors : []) {
49
+ for (const check of (_a = mapping_1.default[selector]) !== null && _a !== void 0 ? _a : []) {
50
+ if (this.toExecute[check]) {
51
+ this.executeCheck(check, selector);
52
+ }
53
+ }
54
+ }
55
+ }
56
+ executeCheck(check, selector) {
57
+ var _a;
58
+ const checkObject = this.assertions.get(check);
59
+ if (checkObject) {
60
+ const elements = window.qwPage.getElements(selector);
61
+ if (elements.length > 0) {
62
+ elements.forEach((element) => { var _a; return (_a = checkObject.execute) === null || _a === void 0 ? void 0 : _a.call(checkObject, element); });
63
+ }
64
+ else {
65
+ (_a = checkObject.execute) === null || _a === void 0 ? void 0 : _a.call(checkObject);
66
+ }
67
+ this.report.addAssertionResult(checkObject);
68
+ }
69
+ }
70
+ }
71
+ exports.CUIChecksTester = CUIChecksTester;
@@ -0,0 +1,21 @@
1
+ import type { ModuleTranslator } from '@qualweb/core/locale';
2
+ import type { TranslationValues } from '@qualweb/locale';
3
+ import type { QWElement } from '@qualweb/qw-element';
4
+ import type { Assertion, Level, Principle, Test } from '@qualweb/core/evaluation';
5
+ import { Guideline } from '@qualweb/core/evaluation';
6
+ declare abstract class Check extends Guideline {
7
+ protected readonly check: Assertion;
8
+ protected readonly translator: ModuleTranslator;
9
+ constructor(translator: ModuleTranslator);
10
+ protected translate(resultCode: string, values?: TranslationValues): string;
11
+ getCode(): string;
12
+ getMapping(): string;
13
+ hasPrincipleAndLevels(principles: Principle[], levels: Level[]): boolean;
14
+ abstract execute(element?: QWElement): void;
15
+ getFinalResults(): Assertion;
16
+ protected addTestResult(test: Test): void;
17
+ private generateOutcome;
18
+ private addDescription;
19
+ }
20
+ export { Check };
21
+ //# sourceMappingURL=Check.object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Check.object.d.ts","sourceRoot":"","sources":["../../src/lib/Check.object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAc,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAW,MAAM,0BAA0B,CAAC;AAI9D,uBAAe,KAAM,SAAQ,SAAS;IACpC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IACpC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;gBAEpC,UAAU,EAAE,gBAAgB;IAexC,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM;IAIpE,OAAO,IAAI,MAAM;IAIjB,UAAU,IAAI,MAAM;IAIpB,qBAAqB,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO;aAM/D,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,IAAI;IAE3C,eAAe,IAAI,SAAS;IAKnC,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAYzC,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,cAAc;CAQvB;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Check = void 0;
7
+ const evaluation_1 = require("@qualweb/core/evaluation");
8
+ const checks_json_1 = __importDefault(require("./checks.json"));
9
+ class Check extends evaluation_1.Guideline {
10
+ constructor(translator) {
11
+ super();
12
+ this.translator = translator;
13
+ const check = checks_json_1.default[new.target.name];
14
+ check.metadata.passed = 0;
15
+ check.metadata.warning = 0;
16
+ check.metadata.failed = 0;
17
+ check.metadata.inapplicable = 0;
18
+ check.metadata.outcome = evaluation_1.Verdict.INAPPLICABLE;
19
+ check.results = new Array();
20
+ this.check = check;
21
+ this.translator.translateAssertion(this.check);
22
+ }
23
+ translate(resultCode, values) {
24
+ return this.translator.translateTest(this.check.code, resultCode, values);
25
+ }
26
+ getCode() {
27
+ return this.check.code;
28
+ }
29
+ getMapping() {
30
+ return this.check.mapping;
31
+ }
32
+ hasPrincipleAndLevels(principles, levels) {
33
+ return this.check.metadata['success-criteria'].some((sc) => principles.includes(sc.principle) && levels.includes(sc.level));
34
+ }
35
+ getFinalResults() {
36
+ this.generateOutcome();
37
+ return this.check;
38
+ }
39
+ addTestResult(test) {
40
+ if (!test.description || test.description.trim() === '') {
41
+ test.description = this.translate(test.resultCode);
42
+ }
43
+ this.check.results.push(test);
44
+ if (test.verdict && test.verdict !== evaluation_1.Verdict.INAPPLICABLE) {
45
+ this.check.metadata[test.verdict]++;
46
+ }
47
+ }
48
+ generateOutcome() {
49
+ if (this.check.metadata.failed) {
50
+ this.check.metadata.outcome = evaluation_1.Verdict.FAILED;
51
+ }
52
+ else if (this.check.metadata.warning) {
53
+ this.check.metadata.outcome = evaluation_1.Verdict.WARNING;
54
+ }
55
+ else if (this.check.metadata.passed) {
56
+ this.check.metadata.outcome = evaluation_1.Verdict.PASSED;
57
+ }
58
+ else {
59
+ this.check.metadata.outcome = evaluation_1.Verdict.INAPPLICABLE;
60
+ this.check.metadata.inapplicable = 1;
61
+ }
62
+ if (this.check.results.length > 0) {
63
+ this.addDescription();
64
+ }
65
+ }
66
+ addDescription() {
67
+ var _a;
68
+ for (const result of (_a = this.check.results) !== null && _a !== void 0 ? _a : []) {
69
+ if (result.verdict === this.check.metadata.outcome) {
70
+ this.check.metadata.description = result.description;
71
+ break;
72
+ }
73
+ }
74
+ }
75
+ }
76
+ exports.Check = Check;
@@ -0,0 +1,25 @@
1
+ {
2
+ "QW_CUI_C1": {
3
+ "name": "Testing check",
4
+ "code": "QW-CUI-C1",
5
+ "description": "This is a test.",
6
+ "metadata": {
7
+ "target": {
8
+ "element": "title"
9
+ },
10
+ "success-criteria": [
11
+ {
12
+ "name": "2.4.2",
13
+ "level": "A",
14
+ "principle": "Operable",
15
+ "url": "https://www.w3.org/WAI/WCAG21/Understanding/page-titled",
16
+ "url_tr": "https://www.w3.org/TR/WCAG21/#page-titled"
17
+ }
18
+ ],
19
+ "related": ["G88", "H25"],
20
+ "url": "https://www.w3.org/WAI/standards-guidelines/act/rules/2779a5/",
21
+ "type": ["ACTRule", "TestCase"],
22
+ "a11yReq": ["WCAG21:title"]
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,5 @@
1
+ declare const _default: {
2
+ '*': string[];
3
+ };
4
+ export default _default;
5
+ //# sourceMappingURL=mapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../src/lib/mapping.ts"],"names":[],"mappings":";;;AAAA,wBAEE"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
4
+ '*': ['QW-CUI-C1']
5
+ };
package/package.json CHANGED
@@ -1,46 +1,50 @@
1
1
  {
2
2
  "name": "@qualweb/cui-checks",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "Accessibility tests for conversational user interfaces",
5
- "main": "dist/cui.bundle.js",
5
+ "files": [
6
+ "dist/*"
7
+ ],
8
+ "exports": {
9
+ ".": {
10
+ "require": "./dist/__webpack/cui.bundle.js",
11
+ "types": "./dist/index.d.ts"
12
+ },
13
+ "./lib/*": {
14
+ "require": "./dist/lib/*"
15
+ },
16
+ "./CuiChecksModule": {
17
+ "require": "./dist/CuiChecksModule.js",
18
+ "types": "./dist/CuiChecksModule.d.ts"
19
+ }
20
+ },
6
21
  "scripts": {
7
22
  "tsc": "tsc",
8
23
  "test": "mocha",
9
- "validate:rules": "node validate-rules.js",
10
- "compile:rules": "node compile-rules.js",
11
- "lint": "eslint src --ext .ts",
12
- "lint:fix": "eslint src --ext .ts --fix",
24
+ "lint": "eslint",
13
25
  "format": "prettier src/**/*.ts --write",
14
- "prebuild": "npm run validate:rules && npm run compile:rules && rimraf prebuild && tsc --build tsconfig.prod.json",
15
- "build": "npm run prebuild && rimraf dist && webpack --mode production && rimraf prebuild",
26
+ "build": "rimraf dist && tsc --build tsconfig.prod.json && webpack",
16
27
  "prepublishOnly": "npm run build"
17
28
  },
18
29
  "author": "",
19
30
  "license": "ISC",
20
31
  "devDependencies": {
21
- "@qualweb/dom": "0.2.10",
22
- "@qualweb/locale": "0.1.18",
23
- "@qualweb/qw-page": "0.2.23",
24
- "@qualweb/types": "0.7.27",
25
- "@qualweb/util": "0.5.41",
32
+ "@qualweb/core": "^0.8.0",
33
+ "@qualweb/locale": "0.2.0",
34
+ "@qualweb/qw-page": "0.3.0",
35
+ "@qualweb/util": "0.6.0",
26
36
  "@tsconfig/recommended": "^1.0.3",
27
37
  "@types/mocha": "^10.0.6",
28
38
  "@types/node": "^16.11.11",
29
39
  "@types/node-fetch": "^2.6.11",
30
- "ajv": "^6.12.6",
31
40
  "chai": "^4.4.1",
32
- "eslint": "^8.56.0",
33
41
  "mocha": "^10.2.0",
34
- "node-fetch": "^2.6.7",
35
42
  "prettier": "^3.1.1",
36
- "puppeteer": "^21.6.1",
43
+ "puppeteer": "^22.12.1",
37
44
  "rimraf": "^5.0.5",
38
45
  "ts-node": "^10.9.2",
39
46
  "typescript": "^4.7.4",
40
47
  "webpack": "^5.89.0",
41
48
  "webpack-cli": "^4.9.1"
42
- },
43
- "dependencies": {
44
- "@qualweb/cui-checks": "^0.1.2"
45
49
  }
46
50
  }
package/.mocharc.js DELETED
@@ -1,3 +0,0 @@
1
- const baseOptions = require('../../.mocharc.base.js');
2
-
3
- module.exports = baseOptions;
package/CHANGELOG.md DELETED
@@ -1,19 +0,0 @@
1
- # @qualweb/cui-checks
2
-
3
- ## 0.1.2
4
-
5
- ### Patch Changes
6
-
7
- - e3dc9b4f: Allow build
8
- - Updated dependencies [e3dc9b4f]
9
- - @qualweb/cui-checks@0.1.2
10
-
11
- ## 0.1.1
12
-
13
- ### Patch Changes
14
-
15
- - 18f78236: First version of cui-checks
16
- - 2c1920f8: CUI checks
17
- - Updated dependencies [18f78236]
18
- - Updated dependencies [2c1920f8]
19
- - @qualweb/cui-checks@0.1.1
package/compile-rules.js DELETED
@@ -1,23 +0,0 @@
1
- const fs = require('fs');
2
-
3
- const rules = fs.readdirSync('./src/rules');
4
-
5
- fs.writeFileSync('./src/lib/rules.ts', '');
6
-
7
- const stream = fs.createWriteStream('./src/lib/rules.ts', { flags: 'a' })
8
-
9
- for (const rule of rules || []) {
10
- const _rule = rule.split('.')[0].replace(/-/g, '_');
11
- stream.write(`import ${_rule} from '../rules/${rule.split('.')[0]}';\n`);
12
- }
13
-
14
- stream.write('\nexport {\n');
15
-
16
- for (const rule of rules || []) {
17
- const _rule = rule.split('.')[0].replace(/-/g, '_');
18
- stream.write(` ${_rule},\n`);
19
- }
20
-
21
- stream.write('};\n');
22
-
23
- stream.end();
@@ -1,115 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://json-schema.org/draft/2020-12/schema",
4
- "title": "CUI Checks for Qualweb schema",
5
- "description": "Defines the valid structure of CUI Checks for use in Qualweb",
6
- "type": "object",
7
- "allOf": [{
8
- "patternProperties": {
9
- "^QW_CUI_C\\d+$": {
10
- "type": "object",
11
- "additionalProperties": false,
12
- "required": [
13
- "name",
14
- "code",
15
- "description",
16
- "metadata"
17
- ],
18
- "properties": {
19
- "name": {
20
- "type": "string"
21
- },
22
- "code": {
23
- "type": "string",
24
- "pattern": "^QW-CUI-C\\d+$"
25
- },
26
- "description": {
27
- "type": "string"
28
- },
29
- "metadata": {
30
- "type": "object",
31
- "additionalProperties": false,
32
- "properties": {
33
- "required": [
34
- "target",
35
- "success-criteria",
36
- "related",
37
- "url",
38
- "type",
39
- "a11yReq"
40
- ],
41
- "target": {
42
- "type": "object",
43
- "additionalProperties": false,
44
- "properties": {
45
- "required": ["element"],
46
- "element": {
47
- "type": ["string", "array"],
48
- "items": {
49
- "type": "string"
50
- }
51
- },
52
- "attributes": {
53
- "type": ["string", "array"],
54
- "items": {
55
- "type": "string"
56
- }
57
- }
58
- }
59
- },
60
- "success-criteria": {
61
- "type": "array",
62
- "items": {
63
- "type": "object",
64
- "additionalProperties": false,
65
- "required": ["name", "level", "principle", "url"],
66
- "properties": {
67
- "name": {
68
- "type": "string",
69
- "pattern": "^\\d+\\.\\d+\\.\\d+$"
70
- },
71
- "level": {
72
- "type": "string",
73
- "enum": ["A", "AA", "AAA"]
74
- },
75
- "principle": {
76
- "type": "string",
77
- "enum": ["Perceivable", "Operable", "Understandable", "Robust"]
78
- },
79
- "url": {
80
- "type": "string"
81
- },
82
- "url_tr": {
83
- "type": "string"
84
- }
85
- }
86
- }
87
- },
88
- "related": {
89
- "type": "array",
90
- "items": {
91
- "type": "string"
92
- }
93
- },
94
- "url": {
95
- "type": "string"
96
- },
97
- "type": {
98
- "type": "array",
99
- "items": {
100
- "type": "string"
101
- }
102
- },
103
- "a11yReq": {
104
- "type": "array",
105
- "items": {
106
- "type": "string"
107
- }
108
- }
109
- }
110
- }
111
- }
112
- }
113
- }
114
- }]
115
- }
@@ -1 +0,0 @@
1
- (()=>{"use strict";var e={160:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var l=Object.getOwnPropertyDescriptor(t,n);l&&!("get"in l?!t.__esModule:l.writable||l.configurable)||(l={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,l)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),l=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return l(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.CUIChecks=void 0;const o=s(n(526));t.CUIChecks=class CUIChecks{constructor(e,t){this.rules={},this.rulesToExecute={},this.report={type:"cui-checks",metadata:{passed:0,warning:0,failed:0,inapplicable:0},assertions:{}};for(const t of Object.keys(o)||[]){const n=t.replace(/_/g,"-");this.rules[n]=new o[t](e),this.rulesToExecute[n]=!0}t&&this.configure(t)}configure(e){var t,n,i;this.resetConfiguration(),e.rules&&(e.rules=e.rules.map((e=>e.toLowerCase().startsWith("qw")?e.toUpperCase().trim():e.trim()))),e.exclude&&(e.exclude=e.exclude.map((e=>e.toLowerCase().startsWith("qw")?e.toUpperCase().trim():e.trim())));for(const l of Object.keys(this.rules)||[])e.principles&&0!==e.principles.length?e.levels&&0!==e.levels.length?this.rules[l].hasPrincipleAndLevels(e.principles,e.levels)||(this.rulesToExecute[l]=!1):this.rules[l].hasPrincipleAndLevels(e.principles,["A","AA","AAA"])||(this.rulesToExecute[l]=!1):e.levels&&0!==e.levels.length&&(this.rules[l].hasPrincipleAndLevels(["Perceivable","Operable","Understandable","Robust"],e.levels)||(this.rulesToExecute[l]=!1)),e.principles||e.levels?e.rules&&0!==e.rules.length&&(e.rules.includes(l)||e.rules.includes(null===(n=this.rules[l])||void 0===n?void 0:n.getRuleMapping()))&&(this.rulesToExecute[l]=!0):e.rules&&0!==e.rules.length&&(e.rules.includes(l)||e.rules.includes(null===(t=this.rules[l])||void 0===t?void 0:t.getRuleMapping())?this.rulesToExecute[l]=!0:this.rulesToExecute[l]=!1),e.exclude&&0!==e.exclude.length&&(e.exclude.includes(l)||e.exclude.includes(null===(i=this.rules[l])||void 0===i?void 0:i.getRuleMapping()))&&(this.rulesToExecute[l]=!1)}resetConfiguration(){var e;for(const t in null!==(e=this.rulesToExecute)&&void 0!==e?e:{})this.rulesToExecute[t]=!0}executeRule(e,t){const n=window.qwPage.getElements(t);if(n.length>0)for(const t of null!=n?n:[])this.rules[e].execute(t);else this.rules[e].execute(void 0);this.report.assertions[e]=this.rules[e].getFinalResults(),this.report.metadata[this.report.assertions[e].metadata.outcome]++}getReport(){return this.report}}},168:e=>{e.exports=class Check{constructor(e,t){this.rule=e,this.locale=t}getRuleMapping(){return this.rule.mapping}hasPrincipleAndLevels(e,t){var n;let i=!1;for(const l of null!==(n=this.rule.metadata["success-criteria"])&&void 0!==n?n:[])e.includes(l.principle)&&t.includes(l.level)&&(i=!0);return i}getFinalResults(){return this.outcomeRule(),this.rule}getNumberOfPassedResults(){return this.rule.metadata.passed}getNumberOfWarningResults(){return this.rule.metadata.warning}getNumberOfFailedResults(){return this.rule.metadata.failed}addTestResult(e){e.description&&""!==e.description.trim()||(e.description=this.getTranslation(e.resultCode)),this.rule.results.push(e),e.verdict&&"inapplicable"!==e.verdict&&this.rule.metadata[e.verdict]++}getTranslation(e,t){var n,i,l,s,o,r;let u="";if(u=(null===(l=null===(i=null===(n=this.locale.translate["act-rules"])||void 0===n?void 0:n[this.rule.code])||void 0===i?void 0:i.results)||void 0===l?void 0:l[e])?null===(s=this.locale.translate["act-rules"][this.rule.code].results)||void 0===s?void 0:s[e]:null===(r=null===(o=this.locale.fallback["act-rules"])||void 0===o?void 0:o[this.rule.code].results)||void 0===r?void 0:r[e],t)for(const e of Object.keys(t)||[])u=u.replace(new RegExp(`{${e}}`,"g"),t[e].toString());return u}outcomeRule(){this.rule.metadata.failed>0?this.rule.metadata.outcome="failed":this.rule.metadata.warning>0?this.rule.metadata.outcome="warning":this.rule.metadata.passed>0?this.rule.metadata.outcome="passed":(this.rule.metadata.outcome="inapplicable",this.rule.metadata.inapplicable=1),this.rule.results.length>0&&this.addDescription()}addDescription(){var e;for(const t of null!==(e=this.rule.results)&&void 0!==e?e:[])if(t.verdict===this.rule.metadata.outcome){this.rule.metadata.description=t.description;break}}}},911:e=>{e.exports=class Test{constructor(e,t,n){this.verdict=null!=e?e:"inapplicable",this.description=null!=t?t:"",this.resultCode=null!=n?n:"I1",this.elements=new Array,this.attributes=new Array}addElement(e,t=!0,n=!1,i){const l=e.getElementHtmlCode(t,n),s=e.getElementSelector();let o;i&&(o=window.AccessibilityUtils.getAccessibleName(e)),this.elements.push({htmlCode:l,pointer:s,accessibleName:o})}addElements(e,t=!0,n=!1,i){for(const l of null!=e?e:[])this.addElement(l,t,n,i)}}},175:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ElementIsNotInert=t.ElementIsSemanticLink=t.ElementIsNonText=t.ElementIsImage=t.ElementHasCSSRules=t.ElementHasNegativeTabIndex=t.ElementIsVisibleOrInAccessibilityTree=t.ElementIsNotHidden=t.isInMainContext=t.IsLangSubTagValid=t.IsHTMLDocument=t.ElementAllowsNameFromContent=t.ElementIsNotWidget=t.ElementIsWidget=t.ElementHasOneOfTheFollowingRoles=t.ElementIsNot=t.ElementIsVisible=t.ElementSrcAttributeFilenameEqualsAccessibleName=t.ElementIsInAccessibilityTree=t.ElementHasTextNode=t.ElementHasText=t.ElementHasNonEmptyAttribute=t.IfElementHasTagNameMustHaveAttributeRole=t.ElementHasAttributeValue=t.ElementHasAttributeRole=t.ElementHasAttribute=t.ElementHasAttributes=t.ElementIsHTMLElement=t.ElementExists=t.CUICheckDecorator=void 0;const l=i(n(354));t.CUICheckDecorator=function(e){const t=function(){var t,n,i,s,o,r,u,a,c,d,f,m,p,v,h,g;const E=arguments[0],b=l.default[e.name];b.metadata.passed=0,b.metadata.warning=0,b.metadata.failed=0,b.metadata.inapplicable=0,b.metadata.outcome="inapplicable";try{b.name=null!==(i=null===(n=null===(t=E.translate["act-rules"])||void 0===t?void 0:t[b.code])||void 0===n?void 0:n.name)&&void 0!==i?i:null===(o=null===(s=E.fallback["act-rules"])||void 0===s?void 0:s[b.code])||void 0===o?void 0:o.name,b.description=null!==(a=null===(u=null===(r=E.translate["act-rules"])||void 0===r?void 0:r[b.code])||void 0===u?void 0:u.description)&&void 0!==a?a:null===(d=null===(c=E.fallback["act-rules"])||void 0===c?void 0:c[b.code])||void 0===d?void 0:d.description,b.metadata.description=null!==(v=null===(p=null===(m=null===(f=E.translate["act-rules"])||void 0===f?void 0:f[b.code])||void 0===m?void 0:m.results)||void 0===p?void 0:p.I1)&&void 0!==v?v:null===(g=null===(h=E.fallback["act-rules"])||void 0===h?void 0:h[b.code].results)||void 0===g?void 0:g.I1}catch(e){console.error(e)}b.results=new Array;const w=function(){return new e(b,E)};return w.prototype=e.prototype,new w};return t.prototype=e.prototype,t},t.ElementExists=function(e,t,n){const i=n.value;n.value=function(){if(arguments[0])return i.apply(this,arguments)}},t.ElementIsHTMLElement=function(e,t,n){const i=n.value;n.value=function(){if(arguments[0].isElementHTMLElement())return i.apply(this,arguments)}},t.ElementHasAttributes=function(e,t,n){const i=n.value;n.value=function(){if(arguments[0].elementHasAttributes())return i.apply(this,arguments)}},t.ElementHasAttribute=function(e){return function(t,n,i){const l=i.value;i.value=function(){if(arguments[0].elementHasAttribute(e))return l.apply(this,arguments)}}},t.ElementHasNonEmptyAttribute=function(e){return function(t,n,i){const l=i.value;i.value=function(){const t=arguments[0].getElementAttribute(e);if(t&&t.trim())return l.apply(this,arguments)}}},t.ElementHasAttributeRole=function(e){return function(t,n,i){const l=i.value;i.value=function(){const t=window.AccessibilityUtils.getElementRole(arguments[0]);if(!t||t===e)return l.apply(this,arguments)}}},t.ElementHasAttributeValue=function(e,t){return function(n,i,l){const s=l.value;l.value=function(){const n=arguments[0].getElementAttribute(e);if(n&&n===t)return s.apply(this,arguments)}}},t.IfElementHasTagNameMustHaveAttributeRole=function(e,t){return function(n,i,l){const s=l.value;l.value=function(){if(arguments[0].getElementTagName()!==e)return s.apply(this,arguments);{const e=arguments[0].getElementAttribute("role");if(!e||e===t)return s.apply(this,arguments)}}}},t.ElementHasText=function(e,t,n){const i=n.value;n.value=function(){const e=arguments[0];if(""!==window.DomUtils.getTrimmedText(e))return i.apply(this,arguments)}},t.ElementHasTextNode=function(e,t,n){const i=n.value;n.value=function(){if(arguments[0].elementHasTextNode())return i.apply(this,arguments)}},t.ElementIsInAccessibilityTree=function(e,t,n){const i=n.value;n.value=function(){if(window.AccessibilityUtils.isElementInAT(arguments[0]))return i.apply(this,arguments)}},t.ElementHasNegativeTabIndex=function(e,t,n){const i=n.value;n.value=function(){const e=arguments[0].getElementAttribute("tabindex");if(e&&parseInt(e)<=-1)return i.apply(this,arguments)}},t.ElementIsNotInert=function(e,t,n){const i=n.value;n.value=function(){let e=!0;if(arguments[0].elementHasAttribute("inert")){if("false"!==arguments[0].getElementAttribute("inert")&&(e=!1),!e)return}let t=!0,n=arguments[0].getElementParent();for(;n;){const e=n.getElementAttribute("inert");e&&"true"===e&&(t=!1),n=n.getElementParent()}if(t&&!window.qwPage.pageHasOpenDialog())return i.apply(this,arguments)}},t.ElementIsVisibleOrInAccessibilityTree=function(e,t,n){const i=n.value;n.value=function(){if(window.qwPage.getElements("*").filter((e=>e.hasTextNode()&&(window.DomUtils.isElementVisible(e)||window.AccessibilityUtils.isElementInAT(e)))).length>0)return i.apply(this,arguments)}},t.ElementIsNotHidden=function(e,t,n){const i=n.value;n.value=function(){if(!window.DomUtils.isElementHidden(arguments[0]))return i.apply(this,arguments)}},t.ElementSrcAttributeFilenameEqualsAccessibleName=function(e,t,n){const i=n.value;n.value=function(){const e=arguments[0].getElementAttribute("src"),t=arguments[0].getElementAttribute("srcset"),n=arguments[0].getElementParent();let l=new Array;if(e){const t=e.split("/");l=[t[t.length-1].trim().toLowerCase()]}if(t){const e=t.split(",");for(const t of e||[]){const e=t.split(" ")[0].split("/");l.push(e[e.length-1].trim().toLowerCase())}}if(n){if("picture"===n.getElementTagName()){const e=n.getElements("source");for(const t of e){const e=t.getElementAttribute("srcset");if(e){const t=e.split("/");l.push(t[t.length-1].trim().toLowerCase())}}}}const s=window.AccessibilityUtils.getAccessibleName(arguments[0]);if(s&&l&&l.includes(s.toLowerCase()))return i.apply(this,arguments)}},t.isInMainContext=function(e,t,n){const i=n.value;n.value=function(){const e=arguments[0].getElementAttribute("_documentSelector");if(!e||!e.includes(">"))return i.apply(this,arguments)}},t.ElementIsVisible=function(e,t,n){const i=n.value;n.value=function(){if(window.DomUtils.isElementVisible(arguments[0]))return i.apply(this,arguments)}},t.ElementIsNot=function(e){return function(t,n,i){const l=i.value;i.value=function(){const t=arguments[0].getElementTagName();if(t&&!e.includes(t))return l.apply(this,arguments)}}},t.ElementHasOneOfTheFollowingRoles=function(e){return function(t,n,i){const l=i.value;i.value=function(){const t=window.AccessibilityUtils.getElementRole(arguments[0]);if(t&&e.includes(t))return l.apply(this,arguments)}}},t.ElementIsWidget=function(e,t,n){const i=n.value;n.value=function(){if(window.AccessibilityUtils.isElementWidget(arguments[0]))return i.apply(this,arguments)}},t.ElementIsNotWidget=function(e,t,n){const i=n.value;n.value=function(){if(!window.AccessibilityUtils.isElementWidget(arguments[0]))return i.apply(this,arguments)}},t.ElementAllowsNameFromContent=function(e,t,n){const i=n.value;n.value=function(){if(window.AccessibilityUtils.allowsNameFromContent(arguments[0]))return i.apply(this,arguments)}},t.IsHTMLDocument=function(e,t,n){const i=n.value;n.value=function(){let e=!1;const t=window.qwPage.getElement("html");if(t&&(e="true"===t.getElementAttribute("nonHTMLPage")),!e)return i.apply(this,arguments)}},t.ElementHasCSSRules=function(e,t,n){const i=n.value;n.value=function(){if(arguments[0].getCSSRules())return i.apply(this,arguments)}},t.IsLangSubTagValid=function(e){return function(t,n,i){const l=i.value;i.value=function(){const t=arguments[0].getElementAttribute(e);if(t&&(n=t.split("-")[0],window.AccessibilityUtils.languages.hasOwnProperty(n.toLowerCase())))return l.apply(this,arguments);var n}}},t.ElementIsImage=function(e,t,n){const i=n.value;n.value=function(){const e=arguments[0],t=window.AccessibilityUtils.getElementRole(e);if("img"===e.getElementTagName()||"img"===t)return i.apply(this,arguments)}},t.ElementIsNonText=function(e,t,n){const i=n.value;n.value=function(){const e=arguments[0];if(window.DomUtils.objectElementIsNonText(e))return i.apply(this,arguments)}};const s=["link","doc-backlink","doc-biblioref","doc-glossref","doc-noteref"];t.ElementIsSemanticLink=function(e,t,n){const i=n.value;n.value=function(){const e=arguments[0],t=window.AccessibilityUtils.getElementRole(e);if(t&&s.includes(t))return i.apply(this,arguments)}}},526:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.QW_CUI_C1=void 0;const l=i(n(153));t.QW_CUI_C1=l.default},153:function(e,t,n){var i=this&&this.__decorate||function(e,t,n,i){var l,s=arguments.length,o=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,n,i);else for(var r=e.length-1;r>=0;r--)(l=e[r])&&(o=(s<3?l(o):s>3?l(t,n,o):l(t,n))||o);return s>3&&o&&Object.defineProperty(t,n,o),o},l=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const o=n(175),r=s(n(911)),u=s(n(168));let a=class QW_CUI_C1 extends u.default{constructor(e,t){super(e,t)}execute(e){console.log(e);const t=new r.default;t.verdict="warning",t.resultCode="W1",super.addTestResult(t)}};a=i([o.CUICheckDecorator,l("design:paramtypes",[Object,Object])],a),e.exports=a},354:e=>{e.exports=JSON.parse('{"QW_CUI_C1":{"name":"Testing check","code":"QW-CUI-C1","description":"This is a test.","metadata":{"target":{"element":"title"},"success-criteria":[{"name":"2.4.2","level":"A","principle":"Operable","url":"https://www.w3.org/WAI/WCAG21/Understanding/page-titled","url_tr":"https://www.w3.org/TR/WCAG21/#page-titled"}],"related":["G88","H25"],"url":"https://www.w3.org/WAI/standards-guidelines/act/rules/2779a5/","type":["ACTRule","TestCase"],"a11yReq":["WCAG21:title"]}}}')}},t={};var n=function n(i){var l=t[i];if(void 0!==l)return l.exports;var s=t[i]={exports:{}};return e[i].call(s.exports,s,s.exports,n),s.exports}(160);for(var i in n)this[i]=n[i];n.__esModule&&Object.defineProperty(this,"__esModule",{value:!0})})();