@sudobility/testomniac_runner_service 0.1.79 → 0.1.80
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/dist/expertise/accessibility-expertise.d.ts +2 -0
- package/dist/expertise/accessibility-expertise.d.ts.map +1 -1
- package/dist/expertise/accessibility-expertise.js +39 -0
- package/dist/expertise/accessibility-expertise.js.map +1 -1
- package/dist/expertise/security-expertise.d.ts +2 -0
- package/dist/expertise/security-expertise.d.ts.map +1 -1
- package/dist/expertise/security-expertise.js +54 -0
- package/dist/expertise/security-expertise.js.map +1 -1
- package/dist/scanner/page-health-evaluator.d.ts +1 -1
- package/dist/scanner/page-health-evaluator.d.ts.map +1 -1
- package/dist/scanner/page-health-evaluator.js +155 -0
- package/dist/scanner/page-health-evaluator.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,5 +7,7 @@ export declare class AccessibilityExpertise implements Expertise {
|
|
|
7
7
|
private checkFormLabels;
|
|
8
8
|
private checkImageAltCoverage;
|
|
9
9
|
private checkDialogLabelling;
|
|
10
|
+
private checkPositiveTabindex;
|
|
11
|
+
private checkAutoplayMedia;
|
|
10
12
|
}
|
|
11
13
|
//# sourceMappingURL=accessibility-expertise.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accessibility-expertise.d.ts","sourceRoot":"","sources":["../../src/expertise/accessibility-expertise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAMpE,qBAAa,sBAAuB,YAAW,SAAS;IACtD,IAAI,SAAmB;IAEvB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"accessibility-expertise.d.ts","sourceRoot":"","sources":["../../src/expertise/accessibility-expertise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAMpE,qBAAa,sBAAuB,YAAW,SAAS;IACtD,IAAI,SAAmB;IAEvB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,EAAE;IAc9C,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,iBAAiB;IA4BzB,OAAO,CAAC,eAAe;IAoCvB,OAAO,CAAC,qBAAqB;IAgC7B,OAAO,CAAC,oBAAoB;IAgC5B,OAAO,CAAC,qBAAqB;IAwB7B,OAAO,CAAC,kBAAkB;CAqB3B"}
|
|
@@ -10,6 +10,8 @@ export class AccessibilityExpertise {
|
|
|
10
10
|
outcomes.push(this.checkFormLabels(context.html));
|
|
11
11
|
outcomes.push(this.checkImageAltCoverage(context.html));
|
|
12
12
|
outcomes.push(this.checkDialogLabelling(context.html));
|
|
13
|
+
outcomes.push(this.checkPositiveTabindex(context.html));
|
|
14
|
+
outcomes.push(this.checkAutoplayMedia(context.html));
|
|
13
15
|
return outcomes;
|
|
14
16
|
}
|
|
15
17
|
checkDocumentLanguage(html) {
|
|
@@ -127,5 +129,42 @@ export class AccessibilityExpertise {
|
|
|
127
129
|
result: "pass",
|
|
128
130
|
};
|
|
129
131
|
}
|
|
132
|
+
checkPositiveTabindex(html) {
|
|
133
|
+
const tabindexMatches = html.match(/\btabindex=["'](\d+)["']/gi) ?? [];
|
|
134
|
+
const positiveTabindexes = tabindexMatches.filter(m => {
|
|
135
|
+
const val = parseInt(m.replace(/\btabindex=["']|["']/gi, ""), 10);
|
|
136
|
+
return val > 0;
|
|
137
|
+
});
|
|
138
|
+
if (positiveTabindexes.length > 0) {
|
|
139
|
+
return {
|
|
140
|
+
expected: "Elements should not use positive tabindex values (disrupts natural tab order)",
|
|
141
|
+
observed: `${positiveTabindexes.length} element(s) have positive tabindex values`,
|
|
142
|
+
result: "warning",
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
expected: "Elements should not use positive tabindex values (disrupts natural tab order)",
|
|
147
|
+
observed: "No positive tabindex values detected",
|
|
148
|
+
result: "pass",
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
checkAutoplayMedia(html) {
|
|
152
|
+
const autoplayVideo = /<video\b[^>]*\bautoplay\b/gi.test(html) &&
|
|
153
|
+
!/<video\b[^>]*\bmuted\b/gi.test(html);
|
|
154
|
+
const autoplayAudio = /<audio\b[^>]*\bautoplay\b/gi.test(html);
|
|
155
|
+
if (autoplayVideo || autoplayAudio) {
|
|
156
|
+
const type = autoplayVideo ? "video" : "audio";
|
|
157
|
+
return {
|
|
158
|
+
expected: "Media should not autoplay with sound",
|
|
159
|
+
observed: `Detected ${type} element with autoplay attribute (without muted)`,
|
|
160
|
+
result: "warning",
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
return {
|
|
164
|
+
expected: "Media should not autoplay with sound",
|
|
165
|
+
observed: "No autoplaying unmuted media detected",
|
|
166
|
+
result: "pass",
|
|
167
|
+
};
|
|
168
|
+
}
|
|
130
169
|
}
|
|
131
170
|
//# sourceMappingURL=accessibility-expertise.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accessibility-expertise.js","sourceRoot":"","sources":["../../src/expertise/accessibility-expertise.ts"],"names":[],"mappings":"AAEA,SAAS,YAAY,CAAC,IAAY,EAAE,KAAa;IAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,OAAO,sBAAsB;IACjC,IAAI,GAAG,eAAe,CAAC;IAEvB,QAAQ,CAAC,OAAyB;QAChC,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAClD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"accessibility-expertise.js","sourceRoot":"","sources":["../../src/expertise/accessibility-expertise.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,5 +8,7 @@ export declare class SecurityExpertise implements Expertise {
|
|
|
8
8
|
evaluate(context: ExpertiseContext): Outcome[];
|
|
9
9
|
private checkApiKeysInUrls;
|
|
10
10
|
private checkInsecureRequests;
|
|
11
|
+
private checkInsecureFormActions;
|
|
12
|
+
private checkWrongInputTypes;
|
|
11
13
|
}
|
|
12
14
|
//# sourceMappingURL=security-expertise.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-expertise.d.ts","sourceRoot":"","sources":["../../src/expertise/security-expertise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAOpE;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,SAAS;IACjD,IAAI,SAAc;IAElB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"security-expertise.d.ts","sourceRoot":"","sources":["../../src/expertise/security-expertise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAOpE;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,SAAS;IACjD,IAAI,SAAc;IAElB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,EAAE;IAW9C,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,qBAAqB;IAyB7B,OAAO,CAAC,wBAAwB;IA6BhC,OAAO,CAAC,oBAAoB;CA4C7B"}
|
|
@@ -12,6 +12,8 @@ export class SecurityExpertise {
|
|
|
12
12
|
const outcomes = [];
|
|
13
13
|
outcomes.push(...this.checkApiKeysInUrls(context));
|
|
14
14
|
outcomes.push(...this.checkInsecureRequests(context));
|
|
15
|
+
outcomes.push(this.checkInsecureFormActions(context));
|
|
16
|
+
outcomes.push(this.checkWrongInputTypes(context.html));
|
|
15
17
|
return outcomes;
|
|
16
18
|
}
|
|
17
19
|
checkApiKeysInUrls(context) {
|
|
@@ -57,5 +59,57 @@ export class SecurityExpertise {
|
|
|
57
59
|
},
|
|
58
60
|
];
|
|
59
61
|
}
|
|
62
|
+
checkInsecureFormActions(context) {
|
|
63
|
+
const pageUrl = context.currentUrl || context.initialUrl || "";
|
|
64
|
+
const isHttps = pageUrl.startsWith("https://");
|
|
65
|
+
if (!isHttps) {
|
|
66
|
+
return {
|
|
67
|
+
expected: "Forms should not submit over insecure HTTP",
|
|
68
|
+
observed: "Page is not HTTPS, skipping check",
|
|
69
|
+
result: "pass",
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const httpForms = context.html.match(/<form\b[^>]*action=["']http:\/\/[^"']+["'][^>]*>/gi);
|
|
73
|
+
if (httpForms && httpForms.length > 0) {
|
|
74
|
+
return {
|
|
75
|
+
expected: "Forms should not submit over insecure HTTP on HTTPS pages",
|
|
76
|
+
observed: `${httpForms.length} form(s) submit to HTTP URLs instead of HTTPS`,
|
|
77
|
+
result: "error",
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
expected: "Forms should not submit over insecure HTTP on HTTPS pages",
|
|
82
|
+
observed: "All form actions use HTTPS or relative URLs",
|
|
83
|
+
result: "pass",
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
checkWrongInputTypes(html) {
|
|
87
|
+
const textInputs = html.match(/<input\b[^>]*type=["']text["'][^>]*>/gi) ?? [];
|
|
88
|
+
const mistyped = [];
|
|
89
|
+
for (const input of textInputs) {
|
|
90
|
+
const lower = input.toLowerCase();
|
|
91
|
+
if (/\b(name|placeholder|id|autocomplete)=["'][^"']*(email)[^"']*["']/i.test(lower)) {
|
|
92
|
+
mistyped.push('email field using type="text"');
|
|
93
|
+
}
|
|
94
|
+
else if (/\b(name|placeholder|id|autocomplete)=["'][^"']*(phone|tel)[^"']*["']/i.test(lower)) {
|
|
95
|
+
mistyped.push('phone field using type="text"');
|
|
96
|
+
}
|
|
97
|
+
else if (/\b(name|placeholder|id|autocomplete)=["'][^"']*(url|website)[^"']*["']/i.test(lower)) {
|
|
98
|
+
mistyped.push('URL field using type="text"');
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (mistyped.length > 0) {
|
|
102
|
+
return {
|
|
103
|
+
expected: "Input fields should use semantic types (email, tel, url) for better validation",
|
|
104
|
+
observed: `${mistyped.length} input(s) use type="text" instead: ${mistyped.slice(0, 3).join(", ")}`,
|
|
105
|
+
result: "warning",
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
expected: "Input fields should use semantic types (email, tel, url) for better validation",
|
|
110
|
+
observed: "Input types appear appropriate",
|
|
111
|
+
result: "pass",
|
|
112
|
+
};
|
|
113
|
+
}
|
|
60
114
|
}
|
|
61
115
|
//# sourceMappingURL=security-expertise.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-expertise.js","sourceRoot":"","sources":["../../src/expertise/security-expertise.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAG;IACvB,qEAAqE;IACrE,8BAA8B;CAC/B,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IAC5B,IAAI,GAAG,UAAU,CAAC;IAElB,QAAQ,CAAC,OAAyB;QAChC,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;QACnD,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"security-expertise.js","sourceRoot":"","sources":["../../src/expertise/security-expertise.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import type { BrowserAdapter } from "../adapter";
|
|
|
3
3
|
* A page health issue found during browser-side evaluation.
|
|
4
4
|
*/
|
|
5
5
|
export interface PageHealthIssue {
|
|
6
|
-
type: "broken_image" | "element_overlap" | "dead_social_button" | "broken_link_pattern" | "cart_math_error" | "grammar_error" | "defunct_service" | "missing_price" | "inconsistent_grid" | "empty_link" | "broken_anchor" | "missing_noopener";
|
|
6
|
+
type: "broken_image" | "element_overlap" | "dead_social_button" | "broken_link_pattern" | "cart_math_error" | "grammar_error" | "defunct_service" | "missing_price" | "inconsistent_grid" | "empty_link" | "broken_anchor" | "missing_noopener" | "horizontal_overflow" | "truncated_text" | "invalid_price" | "invalid_discount" | "invalid_rating" | "unlabeled_button" | "small_touch_target";
|
|
7
7
|
severity: "error" | "warning";
|
|
8
8
|
title: string;
|
|
9
9
|
description: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-health-evaluator.d.ts","sourceRoot":"","sources":["../../src/scanner/page-health-evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EACA,cAAc,GACd,iBAAiB,GACjB,oBAAoB,GACpB,qBAAqB,GACrB,iBAAiB,GACjB,eAAe,GACf,iBAAiB,GACjB,eAAe,GACf,mBAAmB,GACnB,YAAY,GACZ,eAAe,GACf,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"page-health-evaluator.d.ts","sourceRoot":"","sources":["../../src/scanner/page-health-evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EACA,cAAc,GACd,iBAAiB,GACjB,oBAAoB,GACpB,qBAAqB,GACrB,iBAAiB,GACjB,eAAe,GACf,iBAAiB,GACjB,eAAe,GACf,mBAAmB,GACnB,YAAY,GACZ,eAAe,GACf,kBAAkB,GAClB,qBAAqB,GACrB,gBAAgB,GAChB,eAAe,GACf,kBAAkB,GAClB,gBAAgB,GAChB,kBAAkB,GAClB,oBAAoB,CAAC;IACzB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,eAAe,EAAE,CAAC,CA4kB5B"}
|
|
@@ -314,6 +314,161 @@ export async function evaluatePageHealth(adapter) {
|
|
|
314
314
|
description: `Links opening in new tab without rel="noopener" are a security risk (reverse tabnabbing)`,
|
|
315
315
|
});
|
|
316
316
|
}
|
|
317
|
+
// =========================================================================
|
|
318
|
+
// 14. Horizontal overflow — unintended horizontal scrollbar
|
|
319
|
+
// =========================================================================
|
|
320
|
+
if (document.documentElement.scrollWidth >
|
|
321
|
+
document.documentElement.clientWidth + 5) {
|
|
322
|
+
found.push({
|
|
323
|
+
type: "horizontal_overflow",
|
|
324
|
+
severity: "warning",
|
|
325
|
+
title: "Page has horizontal overflow",
|
|
326
|
+
description: `Page width (${document.documentElement.scrollWidth}px) exceeds viewport (${document.documentElement.clientWidth}px), causing horizontal scrollbar`,
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
// =========================================================================
|
|
330
|
+
// 15. Truncated text — important content hidden by overflow
|
|
331
|
+
// =========================================================================
|
|
332
|
+
const truncatedEls = Array.from(document.querySelectorAll("h1, h2, h3, a, button, [class*='title'], [class*='name'], [class*='price']"));
|
|
333
|
+
let truncatedCount = 0;
|
|
334
|
+
for (const el of truncatedEls.slice(0, 40)) {
|
|
335
|
+
const style = window.getComputedStyle(el);
|
|
336
|
+
if (style.overflow === "hidden" &&
|
|
337
|
+
style.textOverflow === "ellipsis" &&
|
|
338
|
+
el.scrollWidth > el.clientWidth + 2) {
|
|
339
|
+
truncatedCount++;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
if (truncatedCount > 0) {
|
|
343
|
+
found.push({
|
|
344
|
+
type: "truncated_text",
|
|
345
|
+
severity: "warning",
|
|
346
|
+
title: `${truncatedCount} element(s) have truncated text`,
|
|
347
|
+
description: "Important text (headings, links, titles, prices) is being cut off by CSS overflow",
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
// =========================================================================
|
|
351
|
+
// 16. Invalid prices — $0.00, negative, or NaN prices
|
|
352
|
+
// =========================================================================
|
|
353
|
+
const priceEls = Array.from(document.querySelectorAll('[class*="price"], [class*="amount"], [class*="cost"]'));
|
|
354
|
+
const invalidPrices = [];
|
|
355
|
+
for (const el of priceEls) {
|
|
356
|
+
const text = el.textContent?.trim() || "";
|
|
357
|
+
const priceMatch = text.match(/[$€£]\s*(-?[\d,.]+)/);
|
|
358
|
+
if (priceMatch) {
|
|
359
|
+
const val = parseFloat(priceMatch[1].replace(/,/g, ""));
|
|
360
|
+
if (val <= 0 || isNaN(val)) {
|
|
361
|
+
invalidPrices.push(`"${text.slice(0, 30)}" (${val})`);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
if (invalidPrices.length > 0) {
|
|
366
|
+
found.push({
|
|
367
|
+
type: "invalid_price",
|
|
368
|
+
severity: "error",
|
|
369
|
+
title: `${invalidPrices.length} invalid price(s): zero, negative, or NaN`,
|
|
370
|
+
description: `Invalid prices found: ${invalidPrices.slice(0, 3).join(", ")}`,
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
// =========================================================================
|
|
374
|
+
// 17. Sale price higher than original — discount makes no sense
|
|
375
|
+
// =========================================================================
|
|
376
|
+
const saleContainers = Array.from(document.querySelectorAll('[class*="price"], [class*="sale"]'));
|
|
377
|
+
for (const container of saleContainers) {
|
|
378
|
+
const strikes = container.querySelectorAll("del, s, strike, .ec_product_price_old, [class*='original'], [class*='was'], [class*='old_price']");
|
|
379
|
+
if (strikes.length === 0)
|
|
380
|
+
continue;
|
|
381
|
+
for (const strike of Array.from(strikes)) {
|
|
382
|
+
const origMatch = strike.textContent?.match(/[$€£]\s*([\d,.]+)/);
|
|
383
|
+
const containerText = container.textContent || "";
|
|
384
|
+
const allPrices = Array.from(containerText.matchAll(/[$€£]\s*([\d,.]+)/g));
|
|
385
|
+
if (origMatch && allPrices.length >= 2) {
|
|
386
|
+
const original = parseFloat(origMatch[1].replace(/,/g, ""));
|
|
387
|
+
const prices = allPrices.map(m => parseFloat(m[1].replace(/,/g, "")));
|
|
388
|
+
const salePrice = prices.find(p => p !== original && p < original * 2);
|
|
389
|
+
if (salePrice != null && salePrice > original) {
|
|
390
|
+
found.push({
|
|
391
|
+
type: "invalid_discount",
|
|
392
|
+
severity: "error",
|
|
393
|
+
title: "Sale price is higher than original price",
|
|
394
|
+
description: `Original: $${original.toFixed(2)}, Sale: $${salePrice.toFixed(2)}`,
|
|
395
|
+
});
|
|
396
|
+
break;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
// =========================================================================
|
|
402
|
+
// 18. Invalid star ratings — values > 5 or < 0
|
|
403
|
+
// =========================================================================
|
|
404
|
+
const ratingEls = Array.from(document.querySelectorAll('[class*="rating"], [class*="stars"], [aria-label*="rating"]'));
|
|
405
|
+
for (const el of ratingEls) {
|
|
406
|
+
const text = el.textContent?.trim() || "";
|
|
407
|
+
const ariaLabel = el.getAttribute("aria-label") || "";
|
|
408
|
+
const combined = text + " " + ariaLabel;
|
|
409
|
+
const ratingMatch = combined.match(/([\d.]+)\s*(?:\/\s*5|out\s*of\s*5|stars?)/i);
|
|
410
|
+
if (ratingMatch) {
|
|
411
|
+
const val = parseFloat(ratingMatch[1]);
|
|
412
|
+
if (val > 5 || val < 0) {
|
|
413
|
+
found.push({
|
|
414
|
+
type: "invalid_rating",
|
|
415
|
+
severity: "error",
|
|
416
|
+
title: `Invalid rating value: ${val}`,
|
|
417
|
+
description: `Star rating of ${val} is outside the valid 0-5 range`,
|
|
418
|
+
});
|
|
419
|
+
break;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
// =========================================================================
|
|
424
|
+
// 19. Icon-only buttons without accessible labels
|
|
425
|
+
// =========================================================================
|
|
426
|
+
const buttons = Array.from(document.querySelectorAll('button, [role="button"], a[class*="btn"], a[class*="button"]'));
|
|
427
|
+
let unlabeledCount = 0;
|
|
428
|
+
for (const btn of buttons.slice(0, 30)) {
|
|
429
|
+
const text = btn.textContent?.trim() || "";
|
|
430
|
+
const ariaLabel = btn.getAttribute("aria-label") || "";
|
|
431
|
+
const title = btn.getAttribute("title") || "";
|
|
432
|
+
const hasImg = !!btn.querySelector("img, svg, [class*='icon']");
|
|
433
|
+
const isVisible = btn.offsetParent !== null;
|
|
434
|
+
if (isVisible &&
|
|
435
|
+
hasImg &&
|
|
436
|
+
text.length === 0 &&
|
|
437
|
+
ariaLabel.length === 0 &&
|
|
438
|
+
title.length === 0) {
|
|
439
|
+
unlabeledCount++;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
if (unlabeledCount > 0) {
|
|
443
|
+
found.push({
|
|
444
|
+
type: "unlabeled_button",
|
|
445
|
+
severity: "warning",
|
|
446
|
+
title: `${unlabeledCount} icon-only button(s) without accessible label`,
|
|
447
|
+
description: "Buttons with only icons and no text, aria-label, or title attribute are inaccessible to screen readers",
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
// =========================================================================
|
|
451
|
+
// 20. Small touch targets — interactive elements < 44x44px
|
|
452
|
+
// =========================================================================
|
|
453
|
+
const touchTargets = Array.from(document.querySelectorAll("a, button, input, select, [role='button']"));
|
|
454
|
+
let smallTargetCount = 0;
|
|
455
|
+
for (const el of touchTargets.slice(0, 50)) {
|
|
456
|
+
const rect = el.getBoundingClientRect();
|
|
457
|
+
if (rect.width > 0 &&
|
|
458
|
+
rect.height > 0 &&
|
|
459
|
+
rect.width < 24 &&
|
|
460
|
+
rect.height < 24) {
|
|
461
|
+
smallTargetCount++;
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
if (smallTargetCount > 0) {
|
|
465
|
+
found.push({
|
|
466
|
+
type: "small_touch_target",
|
|
467
|
+
severity: "warning",
|
|
468
|
+
title: `${smallTargetCount} interactive element(s) smaller than 24x24px`,
|
|
469
|
+
description: "Small touch targets are difficult to tap on mobile devices (WCAG recommends minimum 44x44px)",
|
|
470
|
+
});
|
|
471
|
+
}
|
|
317
472
|
return found;
|
|
318
473
|
});
|
|
319
474
|
for (const r of results) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-health-evaluator.js","sourceRoot":"","sources":["../../src/scanner/page-health-evaluator.ts"],"names":[],"mappings":"AAwBA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAuB;IAEvB,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC1C,MAAM,KAAK,GAKN,EAAE,CAAC;QAER,4EAA4E;QAC5E,0DAA0D;QAC1D,4EAA4E;QAC5E,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IACE,GAAG,CAAC,QAAQ;gBACZ,GAAG,CAAC,YAAY,KAAK,CAAC;gBACtB,GAAG,CAAC,GAAG;gBACP,GAAG,CAAC,YAAY,KAAK,IAAI,EACzB,CAAC;gBACD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;gBAC7D,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,GAAG,YAAY,CAAC,MAAM,2BAA2B;gBACxD,WAAW,EAAE,+BAA+B,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,YAAY,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;aAC1J,CAAC,CAAC;QACL,CAAC;QAED,4EAA4E;QAC5E,kEAAkE;QAClE,4EAA4E;QAC5E,MAAM,oBAAoB,GACxB,2DAA2D,CAAC;QAC9D,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAC/B,QAAQ,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAChD,CAAC;QACF,MAAM,kBAAkB,GAAa,EAAE,CAAC;QACxC,KAAK,MAAM,EAAE,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACpD,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;gBAAE,SAAS;YAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACtC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAChD,IACE,KAAK;gBACL,KAAK,KAAK,EAAE;gBACZ,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACnB,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,EAClD,CAAC;gBACD,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC;gBACjE,MAAM,SAAS,GACb,KAAK,CAAC,OAAO;oBACb,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACvE,kBAAkB,CAAC,IAAI,CAAC,IAAI,MAAM,kBAAkB,SAAS,GAAG,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QACD,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,iBAAiB;gBACvB,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,GAAG,kBAAkB,CAAC,MAAM,yDAAyD;gBAC5F,WAAW,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;aACvD,CAAC,CAAC;QACL,CAAC;QAED,4EAA4E;QAC5E,oEAAoE;QACpE,4EAA4E;QAC5E,MAAM,cAAc,GAAG;YACrB,UAAU;YACV,SAAS;YACT,UAAU;YACV,WAAW;YACX,OAAO;YACP,OAAO;YACP,SAAS;YACT,UAAU;SACX,CAAC;QACF,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAC1B,QAAQ,CAAC,gBAAgB,CAAC,qCAAqC,CAAC,CACjE,CAAC;QACF,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YACvC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAAE,SAAS;YACzD,MAAM,MAAM,GACV,EAAE,CAAC,OAAO,KAAK,GAAG;gBAClB,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;gBACvB,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC;YAClC,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;YACnE,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC5C,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;gBACpE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,oBAAoB;gBAC1B,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,GAAG,UAAU,CAAC,MAAM,4CAA4C;gBACvE,WAAW,EAAE,iCAAiC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aACtE,CAAC,CAAC;QACL,CAAC;QAED,4EAA4E;QAC5E,oEAAoE;QACpE,4EAA4E;QAC5E,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,mBAAmB,CAAC;QACpC,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAClC,IAAI,MAAM,CAAC,sCAAsC,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CACzE,CAAC;QACF,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAClC,IAAI,MAAM,CAAC,kBAAkB,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CACrD,CAAC;QACF,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CACpC,IAAI,MAAM,CACR,2CAA2C,GAAG,OAAO,CAAC,MAAM,EAC5D,GAAG,CACJ,CACF,CAAC;QAEF,IAAI,aAAa,IAAI,aAAa,IAAI,eAAe,EAAE,CAAC;YACtD,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YAChE,MAAM,UAAU,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;YAC/D,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC;gBAC3C,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,iBAAiB;oBACvB,QAAQ,EAAE,OAAO;oBACjB,KAAK,EAAE,qDAAqD;oBAC5D,WAAW,EAAE,cAAc,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;iBAClK,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,2DAA2D;QAC3D,4EAA4E;QAC5E,MAAM,eAAe,GAAG;YACtB,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,YAAY,EAAE;YAClD,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,UAAU,EAAE;YAC9C,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,EAAE,aAAa,EAAE;YACpD,EAAE,OAAO,EAAE,sBAAsB,EAAE,GAAG,EAAE,aAAa,EAAE;SACxD,CAAC;QACF,KAAK,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,eAAe,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,eAAe;oBACrB,QAAQ,EAAE,SAAS;oBACnB,KAAK,EAAE,mBAAmB,KAAK,CAAC,CAAC,CAAC,GAAG;oBACrC,WAAW,EAAE,aAAa,GAAG,6BAA6B;iBAC3D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,oDAAoD;QACpD,4EAA4E;QAC5E,MAAM,eAAe,GAAG;YACtB,EAAE,OAAO,EAAE,8BAA8B,EAAE,IAAI,EAAE,SAAS,EAAE;YAC5D,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,SAAS,EAAE;YAClD,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE;SAChD,CAAC;QACF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC3E,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,eAAe,EAAE,CAAC;YAChD,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC3C,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC;gBAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC5C,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,iBAAiB;wBACvB,QAAQ,EAAE,SAAS;wBACnB,KAAK,EAAE,4BAA4B,IAAI,EAAE;wBACzC,WAAW,EAAE,qCAAqC,IAAI,kCAAkC;qBACzF,CAAC,CAAC;oBACH,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,gEAAgE;QAChE,4EAA4E;QAC5E,MAAM,oBAAoB,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CACnD,qEAAqE,CACtE,CAAC;QACF,MAAM,YAAY,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAC3C,4DAA4D,CAC7D,CAAC;QACF,MAAM,eAAe,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAC9C,+CAA+C,CAChD,CAAC;QACF,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEnE,IAAI,oBAAoB,IAAI,CAAC,eAAe,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,4CAA4C;gBACnD,WAAW,EACT,4EAA4E;aAC/E,CAAC,CAAC;QACL,CAAC;QACD,IAAI,kBAAkB,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,mCAAmC;gBAC1C,WAAW,EACT,2FAA2F;aAC9F,CAAC,CAAC;QACL,CAAC;QAED,4EAA4E;QAC5E,kFAAkF;QAClF,4EAA4E;QAC5E,MAAM,SAAS,GAAG,QAAQ,CAAC,gBAAgB,CACzC,+DAA+D,CAChE,CAAC;QACF,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;iBAClC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;iBAC5C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACtB,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACxB,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;gBACtE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAC7B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,GAAG,GAAG,CAC/C,CAAC;gBACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,mBAAmB;wBACzB,QAAQ,EAAE,SAAS;wBACnB,KAAK,EAAE,2BAA2B,QAAQ,CAAC,MAAM,+BAA+B;wBAChF,WAAW,EAAE,0BAA0B,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,QAAQ,CAAC,MAAM,mCAAmC;qBACzH,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,yEAAyE;QACzE,4EAA4E;QAC5E,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CACjC,wCAAwC,CACzC,CAAC;QACF,IAAI,YAAY,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YAChC,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,eAAe;oBACrB,QAAQ,EAAE,SAAS;oBACnB,KAAK,EAAE,iCAAiC,OAAO,cAAc,MAAM,EAAE;oBACrE,WAAW,EAAE,2BAA2B,OAAO,iBAAiB,MAAM,wCAAwC;iBAC/G,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,2EAA2E;QAC3E,4EAA4E;QAC5E,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAC5B,QAAQ,CAAC,gBAAgB,CACvB,qDAAqD,CACtD,CACF,CAAC;QACF,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC5B,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;gBAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;gBACxD,IAAI,UAAU,EAAE,CAAC;oBACf,SAAS,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YACD,IACE,SAAS,GAAG,CAAC;gBACb,SAAS,CAAC,MAAM,GAAG,CAAC;gBACpB,SAAS,KAAK,SAAS,CAAC,MAAM,EAC9B,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,eAAe;oBACrB,QAAQ,EAAE,SAAS;oBACnB,KAAK,EAAE,sBAAsB,SAAS,mCAAmC,SAAS,CAAC,MAAM,GAAG;oBAC5F,WAAW,EAAE,iCAAiC,SAAS,QAAQ,SAAS,CAAC,MAAM,yBAAyB;iBACzG,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,gEAAgE;QAChE,4EAA4E;QAC5E,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9D,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;YACnC,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,KAAK,IAAI,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC;YAC/D,IACE,SAAS;gBACT,IAAI;gBACJ,IAAI,CAAC,MAAM,GAAG,CAAC;gBACf,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,oBAAoB,CAAC,EACxD,CAAC;gBACD,cAAc,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;QACD,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,GAAG,cAAc,mCAAmC;gBAC3D,WAAW,EAAE,SAAS,cAAc,qDAAqD;aAC1F,CAAC,CAAC;QACL,CAAC;QAED,4EAA4E;QAC5E,uEAAuE;QACvE,4EAA4E;QAC5E,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACvC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,GAAG,aAAa,CAAC,MAAM,wBAAwB;gBACtD,WAAW,EAAE,6BAA6B,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aACjF,CAAC,CAAC;QACL,CAAC;QAED,4EAA4E;QAC5E,6DAA6D;QAC7D,4EAA4E;QAC5E,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,GAAG,GAAG,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACxC,IACE,MAAM,KAAK,QAAQ;gBACnB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBACvB,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EACzB,CAAC;gBACD,mBAAmB,EAAE,CAAC;YACxB,CAAC;QACH,CAAC;QACD,IAAI,mBAAmB,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,kBAAkB;gBACxB,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,GAAG,mBAAmB,0CAA0C;gBACvE,WAAW,EAAE,0FAA0F;aACxG,CAAC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,CAAC,CAAC,IAA+B;YACvC,QAAQ,EAAE,CAAC,CAAC,QAA+B;YAC3C,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"page-health-evaluator.js","sourceRoot":"","sources":["../../src/scanner/page-health-evaluator.ts"],"names":[],"mappings":"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"}
|