@qualweb/best-practices 0.0.0-develop-20231124154536 → 0.0.0-develop-20241204125016

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 (104) hide show
  1. package/README.md +51 -0
  2. package/dist/BestPracticesModule.d.ts +10 -0
  3. package/dist/BestPracticesModule.d.ts.map +1 -0
  4. package/dist/BestPracticesModule.js +19 -0
  5. package/dist/BestPracticesRunner.d.ts +9 -0
  6. package/dist/BestPracticesRunner.d.ts.map +1 -0
  7. package/dist/BestPracticesRunner.js +17 -0
  8. package/dist/__webpack/bp.bundle.js +1 -0
  9. package/dist/best-practices/QW-BP1.d.ts +7 -0
  10. package/dist/best-practices/QW-BP1.d.ts.map +1 -0
  11. package/dist/best-practices/QW-BP1.js +37 -0
  12. package/dist/best-practices/QW-BP10.d.ts +7 -0
  13. package/dist/best-practices/QW-BP10.d.ts.map +1 -0
  14. package/dist/best-practices/QW-BP10.js +35 -0
  15. package/dist/best-practices/QW-BP11.d.ts +7 -0
  16. package/dist/best-practices/QW-BP11.d.ts.map +1 -0
  17. package/dist/best-practices/QW-BP11.js +52 -0
  18. package/dist/best-practices/QW-BP12.d.ts +7 -0
  19. package/dist/best-practices/QW-BP12.d.ts.map +1 -0
  20. package/dist/best-practices/QW-BP12.js +65 -0
  21. package/dist/best-practices/QW-BP13.d.ts +7 -0
  22. package/dist/best-practices/QW-BP13.d.ts.map +1 -0
  23. package/dist/best-practices/QW-BP13.js +47 -0
  24. package/dist/best-practices/QW-BP15.d.ts +8 -0
  25. package/dist/best-practices/QW-BP15.d.ts.map +1 -0
  26. package/dist/best-practices/QW-BP15.js +44 -0
  27. package/dist/best-practices/QW-BP17.d.ts +7 -0
  28. package/dist/best-practices/QW-BP17.d.ts.map +1 -0
  29. package/dist/best-practices/QW-BP17.js +26 -0
  30. package/dist/best-practices/QW-BP18.d.ts +11 -0
  31. package/dist/best-practices/QW-BP18.d.ts.map +1 -0
  32. package/dist/best-practices/QW-BP18.js +135 -0
  33. package/dist/best-practices/QW-BP19.d.ts +7 -0
  34. package/dist/best-practices/QW-BP19.d.ts.map +1 -0
  35. package/dist/best-practices/QW-BP19.js +39 -0
  36. package/dist/best-practices/QW-BP2.d.ts +7 -0
  37. package/dist/best-practices/QW-BP2.d.ts.map +1 -0
  38. package/dist/best-practices/QW-BP2.js +51 -0
  39. package/dist/best-practices/QW-BP20.d.ts +7 -0
  40. package/dist/best-practices/QW-BP20.d.ts.map +1 -0
  41. package/dist/best-practices/QW-BP20.js +41 -0
  42. package/dist/best-practices/QW-BP21.d.ts +7 -0
  43. package/dist/best-practices/QW-BP21.d.ts.map +1 -0
  44. package/dist/best-practices/QW-BP21.js +40 -0
  45. package/dist/best-practices/QW-BP22.d.ts +7 -0
  46. package/dist/best-practices/QW-BP22.d.ts.map +1 -0
  47. package/dist/best-practices/QW-BP22.js +40 -0
  48. package/dist/best-practices/QW-BP23.d.ts +7 -0
  49. package/dist/best-practices/QW-BP23.d.ts.map +1 -0
  50. package/dist/best-practices/QW-BP23.js +44 -0
  51. package/dist/best-practices/QW-BP24.d.ts +7 -0
  52. package/dist/best-practices/QW-BP24.d.ts.map +1 -0
  53. package/dist/best-practices/QW-BP24.js +47 -0
  54. package/dist/best-practices/QW-BP25.d.ts +7 -0
  55. package/dist/best-practices/QW-BP25.d.ts.map +1 -0
  56. package/dist/best-practices/QW-BP25.js +38 -0
  57. package/dist/best-practices/QW-BP26.d.ts +7 -0
  58. package/dist/best-practices/QW-BP26.d.ts.map +1 -0
  59. package/dist/best-practices/QW-BP26.js +38 -0
  60. package/dist/best-practices/QW-BP27.d.ts +7 -0
  61. package/dist/best-practices/QW-BP27.d.ts.map +1 -0
  62. package/dist/best-practices/QW-BP27.js +38 -0
  63. package/dist/best-practices/QW-BP28.d.ts +7 -0
  64. package/dist/best-practices/QW-BP28.d.ts.map +1 -0
  65. package/dist/best-practices/QW-BP28.js +38 -0
  66. package/dist/best-practices/QW-BP29.d.ts +7 -0
  67. package/dist/best-practices/QW-BP29.d.ts.map +1 -0
  68. package/dist/best-practices/QW-BP29.js +48 -0
  69. package/dist/best-practices/QW-BP4.d.ts +7 -0
  70. package/dist/best-practices/QW-BP4.d.ts.map +1 -0
  71. package/dist/best-practices/QW-BP4.js +35 -0
  72. package/dist/best-practices/QW-BP5.d.ts +7 -0
  73. package/dist/best-practices/QW-BP5.d.ts.map +1 -0
  74. package/dist/best-practices/QW-BP5.js +21 -0
  75. package/dist/best-practices/QW-BP6.d.ts +7 -0
  76. package/dist/best-practices/QW-BP6.d.ts.map +1 -0
  77. package/dist/best-practices/QW-BP6.js +38 -0
  78. package/dist/best-practices/QW-BP7.d.ts +7 -0
  79. package/dist/best-practices/QW-BP7.d.ts.map +1 -0
  80. package/dist/best-practices/QW-BP7.js +39 -0
  81. package/dist/best-practices/QW-BP8.d.ts +8 -0
  82. package/dist/best-practices/QW-BP8.d.ts.map +1 -0
  83. package/dist/best-practices/QW-BP8.js +71 -0
  84. package/dist/best-practices/QW-BP9.d.ts +7 -0
  85. package/dist/best-practices/QW-BP9.d.ts.map +1 -0
  86. package/dist/best-practices/QW-BP9.js +53 -0
  87. package/dist/best-practices/index.d.ts +27 -0
  88. package/dist/best-practices/index.d.ts.map +1 -0
  89. package/dist/best-practices/index.js +42 -0
  90. package/dist/index.d.ts +3 -0
  91. package/dist/index.d.ts.map +1 -0
  92. package/dist/index.js +7 -0
  93. package/dist/lib/BestPractice.object.d.ts +21 -0
  94. package/dist/lib/BestPractice.object.d.ts.map +1 -0
  95. package/dist/lib/BestPractice.object.js +76 -0
  96. package/dist/lib/BestPracticesTester.object.d.ts +8 -0
  97. package/dist/lib/BestPracticesTester.object.d.ts.map +1 -0
  98. package/dist/lib/BestPracticesTester.object.js +67 -0
  99. package/dist/lib/bestPractices.json +318 -0
  100. package/dist/lib/mapping.d.ts +24 -0
  101. package/dist/lib/mapping.d.ts.map +1 -0
  102. package/dist/lib/mapping.js +24 -0
  103. package/package.json +26 -26
  104. package/dist/bp.bundle.js +0 -1
@@ -0,0 +1,35 @@
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_BP4 = void 0;
13
+ const applicability_1 = require("@qualweb/util/applicability");
14
+ const evaluation_1 = require("@qualweb/core/evaluation");
15
+ const BestPractice_object_1 = require("../lib/BestPractice.object");
16
+ class QW_BP4 extends BestPractice_object_1.BestPractice {
17
+ execute(element) {
18
+ const aCount = element.getNumberOfSiblingsWithTheSameTag();
19
+ if (aCount >= 10) {
20
+ const test = new evaluation_1.Test(evaluation_1.Verdict.FAILED, undefined, 'F1');
21
+ if (element.getElementParent()) {
22
+ test.addElement(element);
23
+ }
24
+ this.addTestResult(test);
25
+ }
26
+ }
27
+ }
28
+ exports.QW_BP4 = QW_BP4;
29
+ __decorate([
30
+ applicability_1.ElementExists,
31
+ (0, applicability_1.ElementIsNotChildOf)('nav'),
32
+ __metadata("design:type", Function),
33
+ __metadata("design:paramtypes", [Function]),
34
+ __metadata("design:returntype", void 0)
35
+ ], QW_BP4.prototype, "execute", null);
@@ -0,0 +1,7 @@
1
+ import type { QWElement } from '@qualweb/qw-element';
2
+ import { BestPractice } from '../lib/BestPractice.object';
3
+ declare class QW_BP5 extends BestPractice {
4
+ execute(element?: QWElement): void;
5
+ }
6
+ export { QW_BP5 };
7
+ //# sourceMappingURL=QW-BP5.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QW-BP5.d.ts","sourceRoot":"","sources":["../../src/best-practices/QW-BP5.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,cAAM,MAAO,SAAQ,YAAY;IAC/B,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,IAAI;CAcnC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QW_BP5 = void 0;
4
+ const evaluation_1 = require("@qualweb/core/evaluation");
5
+ const BestPractice_object_1 = require("../lib/BestPractice.object");
6
+ class QW_BP5 extends BestPractice_object_1.BestPractice {
7
+ execute(element) {
8
+ const test = new evaluation_1.Test();
9
+ if (!element) {
10
+ test.verdict = evaluation_1.Verdict.PASSED;
11
+ test.resultCode = 'P1';
12
+ }
13
+ else {
14
+ test.verdict = evaluation_1.Verdict.FAILED;
15
+ test.resultCode = 'F1';
16
+ test.addElement(element);
17
+ }
18
+ this.addTestResult(test);
19
+ }
20
+ }
21
+ exports.QW_BP5 = QW_BP5;
@@ -0,0 +1,7 @@
1
+ import type { QWElement } from '@qualweb/qw-element';
2
+ import { BestPractice } from '../lib/BestPractice.object';
3
+ declare class QW_BP6 extends BestPractice {
4
+ execute(element: QWElement): void;
5
+ }
6
+ export { QW_BP6 };
7
+ //# sourceMappingURL=QW-BP6.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QW-BP6.d.ts","sourceRoot":"","sources":["../../src/best-practices/QW-BP6.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,cAAM,MAAO,SAAQ,YAAY;IAE/B,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;CAgBlC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,38 @@
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_BP6 = void 0;
13
+ const applicability_1 = require("@qualweb/util/applicability");
14
+ const evaluation_1 = require("@qualweb/core/evaluation");
15
+ const BestPractice_object_1 = require("../lib/BestPractice.object");
16
+ class QW_BP6 extends BestPractice_object_1.BestPractice {
17
+ execute(element) {
18
+ const test = new evaluation_1.Test();
19
+ const titleText = element.getElementText();
20
+ if (titleText.length < 100) {
21
+ test.verdict = evaluation_1.Verdict.PASSED;
22
+ test.resultCode = 'P1';
23
+ }
24
+ else {
25
+ test.verdict = evaluation_1.Verdict.FAILED;
26
+ test.resultCode = 'F1';
27
+ }
28
+ test.addElement(element);
29
+ this.addTestResult(test);
30
+ }
31
+ }
32
+ exports.QW_BP6 = QW_BP6;
33
+ __decorate([
34
+ applicability_1.ElementExists,
35
+ __metadata("design:type", Function),
36
+ __metadata("design:paramtypes", [Function]),
37
+ __metadata("design:returntype", void 0)
38
+ ], QW_BP6.prototype, "execute", null);
@@ -0,0 +1,7 @@
1
+ import type { QWElement } from '@qualweb/qw-element';
2
+ import { BestPractice } from '../lib/BestPractice.object';
3
+ declare class QW_BP7 extends BestPractice {
4
+ execute(element: QWElement): void;
5
+ }
6
+ export { QW_BP7 };
7
+ //# sourceMappingURL=QW-BP7.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QW-BP7.d.ts","sourceRoot":"","sources":["../../src/best-practices/QW-BP7.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,cAAM,MAAO,SAAQ,YAAY;IAE/B,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;CAiBlC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,39 @@
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_BP7 = void 0;
13
+ const applicability_1 = require("@qualweb/util/applicability");
14
+ const evaluation_1 = require("@qualweb/core/evaluation");
15
+ const BestPractice_object_1 = require("../lib/BestPractice.object");
16
+ class QW_BP7 extends BestPractice_object_1.BestPractice {
17
+ execute(element) {
18
+ const test = new evaluation_1.Test();
19
+ const titleText = element.getElementText().replace(/\s/g, '');
20
+ const regExp = new RegExp('@([[:punct:]]{4,})@iU');
21
+ if (!regExp.test(titleText)) {
22
+ test.verdict = evaluation_1.Verdict.PASSED;
23
+ test.resultCode = `P1`;
24
+ }
25
+ else {
26
+ test.verdict = evaluation_1.Verdict.FAILED;
27
+ test.resultCode = `F1`;
28
+ }
29
+ test.addElement(element);
30
+ this.addTestResult(test);
31
+ }
32
+ }
33
+ exports.QW_BP7 = QW_BP7;
34
+ __decorate([
35
+ applicability_1.ElementExists,
36
+ __metadata("design:type", Function),
37
+ __metadata("design:paramtypes", [Function]),
38
+ __metadata("design:returntype", void 0)
39
+ ], QW_BP7.prototype, "execute", null);
@@ -0,0 +1,8 @@
1
+ import type { QWElement } from '@qualweb/qw-element';
2
+ import { BestPractice } from '../lib/BestPractice.object';
3
+ declare class QW_BP8 extends BestPractice {
4
+ execute(element: QWElement): void;
5
+ checkApplicability(element: QWElement): boolean;
6
+ }
7
+ export { QW_BP8 };
8
+ //# sourceMappingURL=QW-BP8.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QW-BP8.d.ts","sourceRoot":"","sources":["../../src/best-practices/QW-BP8.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,cAAM,MAAO,SAAQ,YAAY;IAG/B,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;IAuCjC,kBAAkB,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO;CAiBhD;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,71 @@
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_BP8 = void 0;
13
+ const applicability_1 = require("@qualweb/util/applicability");
14
+ const evaluation_1 = require("@qualweb/core/evaluation");
15
+ const BestPractice_object_1 = require("../lib/BestPractice.object");
16
+ class QW_BP8 extends BestPractice_object_1.BestPractice {
17
+ execute(element) {
18
+ const test = new evaluation_1.Test();
19
+ const descendants = element.getElements('*');
20
+ const images = element.getElements('img');
21
+ const svgs = element.getElements('svg');
22
+ let hasMoreElements = false;
23
+ if (descendants.length > images.length + svgs.length) {
24
+ hasMoreElements = this.checkApplicability(element);
25
+ }
26
+ if (!hasMoreElements) {
27
+ const svgANames = new Array();
28
+ for (const svg of svgs || []) {
29
+ const aName = window.AccessibilityUtils.getAccessibleNameSVG(svg);
30
+ if (aName && aName.trim() !== '') {
31
+ svgANames.push(aName);
32
+ }
33
+ }
34
+ const aName = window.AccessibilityUtils.getAccessibleName(element);
35
+ if ((aName && aName.trim() !== '') || svgANames.length > 0) {
36
+ test.verdict = evaluation_1.Verdict.PASSED;
37
+ test.resultCode = 'P1';
38
+ }
39
+ else {
40
+ test.verdict = evaluation_1.Verdict.FAILED;
41
+ test.resultCode = 'F1';
42
+ }
43
+ test.addElement(element, true, true);
44
+ this.addTestResult(test);
45
+ }
46
+ }
47
+ checkApplicability(element) {
48
+ var _a;
49
+ let hasMoreElements = false;
50
+ for (const child of (_a = element.getElementChildren()) !== null && _a !== void 0 ? _a : []) {
51
+ const tagName = child.getElementTagName();
52
+ if (tagName !== 'img' && tagName !== 'svg') {
53
+ const text = child.getElementText();
54
+ const isVisible = window.DomUtils.isElementVisible(child);
55
+ const accessibleName = window.AccessibilityUtils.getAccessibleName(child);
56
+ if (isVisible && (text.trim() !== '' || (accessibleName && !this.checkApplicability(child)))) {
57
+ hasMoreElements = true;
58
+ }
59
+ }
60
+ }
61
+ return hasMoreElements;
62
+ }
63
+ }
64
+ exports.QW_BP8 = QW_BP8;
65
+ __decorate([
66
+ applicability_1.ElementExists,
67
+ (0, applicability_1.ElementHasVisibleChild)('img, svg'),
68
+ __metadata("design:type", Function),
69
+ __metadata("design:paramtypes", [Function]),
70
+ __metadata("design:returntype", void 0)
71
+ ], QW_BP8.prototype, "execute", null);
@@ -0,0 +1,7 @@
1
+ import type { QWElement } from '@qualweb/qw-element';
2
+ import { BestPractice } from '../lib/BestPractice.object';
3
+ declare class QW_BP9 extends BestPractice {
4
+ execute(element: QWElement): Promise<void>;
5
+ }
6
+ export { QW_BP9 };
7
+ //# sourceMappingURL=QW-BP9.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QW-BP9.d.ts","sourceRoot":"","sources":["../../src/best-practices/QW-BP9.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,cAAM,MAAO,SAAQ,YAAY;IAGzB,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAoBjD;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,53 @@
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
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
12
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13
+ return new (P || (P = Promise))(function (resolve, reject) {
14
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
15
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
16
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
17
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
18
+ });
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.QW_BP9 = void 0;
22
+ const applicability_1 = require("@qualweb/util/applicability");
23
+ const evaluation_1 = require("@qualweb/core/evaluation");
24
+ const BestPractice_object_1 = require("../lib/BestPractice.object");
25
+ class QW_BP9 extends BestPractice_object_1.BestPractice {
26
+ execute(element) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ const headers = element.getElements('th');
29
+ if (headers.length === 0) {
30
+ const caption = element.getElements('caption');
31
+ const test = new evaluation_1.Test();
32
+ if (caption.length !== 0) {
33
+ test.verdict = evaluation_1.Verdict.PASSED;
34
+ test.resultCode = 'P1';
35
+ }
36
+ else {
37
+ test.verdict = evaluation_1.Verdict.FAILED;
38
+ test.resultCode = 'F1';
39
+ }
40
+ test.addElement(element);
41
+ this.addTestResult(test);
42
+ }
43
+ });
44
+ }
45
+ }
46
+ exports.QW_BP9 = QW_BP9;
47
+ __decorate([
48
+ applicability_1.ElementExists,
49
+ (0, applicability_1.ElementDoesNotHaveChild)('th'),
50
+ __metadata("design:type", Function),
51
+ __metadata("design:paramtypes", [Function]),
52
+ __metadata("design:returntype", Promise)
53
+ ], QW_BP9.prototype, "execute", null);
@@ -0,0 +1,27 @@
1
+ export * from './QW-BP1';
2
+ export * from './QW-BP10';
3
+ export * from './QW-BP11';
4
+ export * from './QW-BP12';
5
+ export * from './QW-BP13';
6
+ export * from './QW-BP15';
7
+ export * from './QW-BP17';
8
+ export * from './QW-BP18';
9
+ export * from './QW-BP19';
10
+ export * from './QW-BP2';
11
+ export * from './QW-BP20';
12
+ export * from './QW-BP21';
13
+ export * from './QW-BP22';
14
+ export * from './QW-BP23';
15
+ export * from './QW-BP24';
16
+ export * from './QW-BP25';
17
+ export * from './QW-BP26';
18
+ export * from './QW-BP27';
19
+ export * from './QW-BP28';
20
+ export * from './QW-BP29';
21
+ export * from './QW-BP4';
22
+ export * from './QW-BP5';
23
+ export * from './QW-BP6';
24
+ export * from './QW-BP7';
25
+ export * from './QW-BP8';
26
+ export * from './QW-BP9';
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/best-practices/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
@@ -0,0 +1,42 @@
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-BP1"), exports);
18
+ __exportStar(require("./QW-BP10"), exports);
19
+ __exportStar(require("./QW-BP11"), exports);
20
+ __exportStar(require("./QW-BP12"), exports);
21
+ __exportStar(require("./QW-BP13"), exports);
22
+ __exportStar(require("./QW-BP15"), exports);
23
+ __exportStar(require("./QW-BP17"), exports);
24
+ __exportStar(require("./QW-BP18"), exports);
25
+ __exportStar(require("./QW-BP19"), exports);
26
+ __exportStar(require("./QW-BP2"), exports);
27
+ __exportStar(require("./QW-BP20"), exports);
28
+ __exportStar(require("./QW-BP21"), exports);
29
+ __exportStar(require("./QW-BP22"), exports);
30
+ __exportStar(require("./QW-BP23"), exports);
31
+ __exportStar(require("./QW-BP24"), exports);
32
+ __exportStar(require("./QW-BP25"), exports);
33
+ __exportStar(require("./QW-BP26"), exports);
34
+ __exportStar(require("./QW-BP27"), exports);
35
+ __exportStar(require("./QW-BP28"), exports);
36
+ __exportStar(require("./QW-BP29"), exports);
37
+ __exportStar(require("./QW-BP4"), exports);
38
+ __exportStar(require("./QW-BP5"), exports);
39
+ __exportStar(require("./QW-BP6"), exports);
40
+ __exportStar(require("./QW-BP7"), exports);
41
+ __exportStar(require("./QW-BP8"), exports);
42
+ __exportStar(require("./QW-BP9"), exports);
@@ -0,0 +1,3 @@
1
+ export { BestPracticesModule as BestPractices } from './BestPracticesModule';
2
+ export { BestPracticesRunner } from './BestPracticesRunner';
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,mBAAmB,IAAI,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BestPracticesRunner = exports.BestPractices = void 0;
4
+ var BestPracticesModule_1 = require("./BestPracticesModule");
5
+ Object.defineProperty(exports, "BestPractices", { enumerable: true, get: function () { return BestPracticesModule_1.BestPracticesModule; } });
6
+ var BestPracticesRunner_1 = require("./BestPracticesRunner");
7
+ Object.defineProperty(exports, "BestPracticesRunner", { enumerable: true, get: function () { return BestPracticesRunner_1.BestPracticesRunner; } });
@@ -0,0 +1,21 @@
1
+ import type { TranslationValues } from '@qualweb/locale';
2
+ import type { QWElement } from '@qualweb/qw-element';
3
+ import type { Level, Principle, Assertion, Test } from '@qualweb/core/evaluation';
4
+ import { Guideline } from '@qualweb/core/evaluation';
5
+ import { ModuleTranslator } from '@qualweb/core/locale';
6
+ declare abstract class BestPractice extends Guideline {
7
+ protected readonly bestPractice: Assertion;
8
+ private readonly translator;
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
+ getFinalResults(): Assertion;
15
+ abstract execute(element?: QWElement): void;
16
+ protected addTestResult(test: Test): void;
17
+ private generateOutcome;
18
+ private addDescription;
19
+ }
20
+ export { BestPractice };
21
+ //# sourceMappingURL=BestPractice.object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BestPractice.object.d.ts","sourceRoot":"","sources":["../../src/lib/BestPractice.object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAc,SAAS,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAC9F,OAAO,EAAW,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,uBAAe,YAAa,SAAQ,SAAS;IAC3C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;gBAElC,UAAU,EAAE,gBAAgB;IAgBxC,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;IAMxE,eAAe,IAAI,SAAS;aAKnB,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,IAAI;IAElD,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAYzC,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,cAAc;CAQvB;AAED,OAAO,EAAE,YAAY,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.BestPractice = void 0;
7
+ const evaluation_1 = require("@qualweb/core/evaluation");
8
+ const bestPractices_json_1 = __importDefault(require("./bestPractices.json"));
9
+ class BestPractice extends evaluation_1.Guideline {
10
+ constructor(translator) {
11
+ super();
12
+ this.translator = translator;
13
+ const bestPractice = bestPractices_json_1.default[new.target.name];
14
+ bestPractice.metadata.passed = 0;
15
+ bestPractice.metadata.warning = 0;
16
+ bestPractice.metadata.failed = 0;
17
+ bestPractice.metadata.inapplicable = 0;
18
+ bestPractice.metadata.outcome = evaluation_1.Verdict.INAPPLICABLE;
19
+ bestPractice.results = new Array();
20
+ this.bestPractice = bestPractice;
21
+ this.translator.translateAssertion(this.bestPractice);
22
+ }
23
+ translate(resultCode, values) {
24
+ return this.translator.translateTest(this.bestPractice.code, resultCode, values);
25
+ }
26
+ getCode() {
27
+ return this.bestPractice.code;
28
+ }
29
+ getMapping() {
30
+ return this.bestPractice.mapping;
31
+ }
32
+ hasPrincipleAndLevels(principles, levels) {
33
+ return this.bestPractice.metadata['success-criteria'].some((sc) => principles.includes(sc.principle) && levels.includes(sc.level));
34
+ }
35
+ getFinalResults() {
36
+ this.generateOutcome();
37
+ return this.bestPractice;
38
+ }
39
+ addTestResult(test) {
40
+ if (!test.description || test.description.trim() === '') {
41
+ test.description = this.translate(test.resultCode);
42
+ }
43
+ this.bestPractice.results.push(test);
44
+ if (test.verdict && test.verdict !== evaluation_1.Verdict.INAPPLICABLE) {
45
+ this.bestPractice.metadata[test.verdict]++;
46
+ }
47
+ }
48
+ generateOutcome() {
49
+ if (this.bestPractice.metadata.failed) {
50
+ this.bestPractice.metadata.outcome = evaluation_1.Verdict.FAILED;
51
+ }
52
+ else if (this.bestPractice.metadata.warning) {
53
+ this.bestPractice.metadata.outcome = evaluation_1.Verdict.WARNING;
54
+ }
55
+ else if (this.bestPractice.metadata.passed) {
56
+ this.bestPractice.metadata.outcome = evaluation_1.Verdict.PASSED;
57
+ }
58
+ else {
59
+ this.bestPractice.metadata.outcome = evaluation_1.Verdict.INAPPLICABLE;
60
+ this.bestPractice.metadata.inapplicable = 1;
61
+ }
62
+ if (this.bestPractice.results.length > 0) {
63
+ this.addDescription();
64
+ }
65
+ }
66
+ addDescription() {
67
+ var _a;
68
+ for (const result of (_a = this.bestPractice.results) !== null && _a !== void 0 ? _a : []) {
69
+ if (result.verdict === this.bestPractice.metadata.outcome) {
70
+ this.bestPractice.metadata.description = result.description;
71
+ break;
72
+ }
73
+ }
74
+ }
75
+ }
76
+ exports.BestPractice = BestPractice;
@@ -0,0 +1,8 @@
1
+ import type { ModuleTranslator } from '@qualweb/core/locale';
2
+ import { Tester } from '@qualweb/core/evaluation';
3
+ export declare class BestPracticesTester extends Tester {
4
+ init(translator: ModuleTranslator): this;
5
+ execute(): void;
6
+ private executeBestPractice;
7
+ }
8
+ //# sourceMappingURL=BestPracticesTester.object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BestPracticesTester.object.d.ts","sourceRoot":"","sources":["../../src/lib/BestPracticesTester.object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAIlD,qBAAa,mBAAoB,SAAQ,MAAM;IACtC,IAAI,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI;IASxC,OAAO,IAAI,IAAI;IAUtB,OAAO,CAAC,mBAAmB;CAa5B"}
@@ -0,0 +1,67 @@
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.BestPracticesTester = void 0;
30
+ const evaluation_1 = require("@qualweb/core/evaluation");
31
+ const mapping_1 = __importDefault(require("./mapping"));
32
+ const bestPractices = __importStar(require("../best-practices"));
33
+ class BestPracticesTester extends evaluation_1.Tester {
34
+ init(translator) {
35
+ for (const bestPractice in bestPractices) {
36
+ const bestPracticeObject = new bestPractices[bestPractice](translator);
37
+ this.assertions.set(bestPracticeObject.getCode(), bestPracticeObject);
38
+ this.toExecute[bestPracticeObject.getCode()] = true;
39
+ }
40
+ return this;
41
+ }
42
+ execute() {
43
+ var _a;
44
+ for (const selector in mapping_1.default !== null && mapping_1.default !== void 0 ? mapping_1.default : []) {
45
+ for (const bestPractice of (_a = mapping_1.default[selector]) !== null && _a !== void 0 ? _a : []) {
46
+ if (this.toExecute[bestPractice]) {
47
+ this.executeBestPractice(bestPractice, selector);
48
+ }
49
+ }
50
+ }
51
+ }
52
+ executeBestPractice(bestPractice, selector) {
53
+ var _a;
54
+ const bestPracticeObject = this.assertions.get(bestPractice);
55
+ if (bestPracticeObject) {
56
+ const elements = window.qwPage.getElements(selector);
57
+ if (elements.length > 0) {
58
+ elements.forEach((element) => { var _a; return (_a = bestPracticeObject.execute) === null || _a === void 0 ? void 0 : _a.call(bestPracticeObject, element); });
59
+ }
60
+ else {
61
+ (_a = bestPracticeObject.execute) === null || _a === void 0 ? void 0 : _a.call(bestPracticeObject);
62
+ }
63
+ this.report.addAssertionResult(bestPracticeObject);
64
+ }
65
+ }
66
+ }
67
+ exports.BestPracticesTester = BestPracticesTester;