nfunc-mcp 0.3.0 → 0.5.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.
- package/README.md +121 -379
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/mappers/a11yDedupe.js +38 -7
- package/dist/mappers/a11yDedupe.js.map +1 -1
- package/dist/mappers/defectFormatter.d.ts +9 -1
- package/dist/mappers/defectFormatter.js +53 -13
- package/dist/mappers/defectFormatter.js.map +1 -1
- package/dist/mappers/labFieldComparator.d.ts +62 -0
- package/dist/mappers/labFieldComparator.js +134 -0
- package/dist/mappers/labFieldComparator.js.map +1 -0
- package/dist/mappers/priorityMapper.d.ts +42 -0
- package/dist/mappers/priorityMapper.js +58 -0
- package/dist/mappers/priorityMapper.js.map +1 -1
- package/dist/mappers/psiAggregator.d.ts +130 -0
- package/dist/mappers/psiAggregator.js +293 -0
- package/dist/mappers/psiAggregator.js.map +1 -0
- package/dist/mappers/runComparator.d.ts +85 -0
- package/dist/mappers/runComparator.js +165 -0
- package/dist/mappers/runComparator.js.map +1 -0
- package/dist/mappers/wcagLevels.d.ts +73 -0
- package/dist/mappers/wcagLevels.js +320 -0
- package/dist/mappers/wcagLevels.js.map +1 -0
- package/dist/mappers/webVitalsMapper.d.ts +52 -0
- package/dist/mappers/webVitalsMapper.js +131 -0
- package/dist/mappers/webVitalsMapper.js.map +1 -0
- package/dist/tools/accessibility.d.ts +1 -0
- package/dist/tools/accessibility.js +488 -63
- package/dist/tools/accessibility.js.map +1 -1
- package/dist/tools/lighthouse.js +370 -102
- package/dist/tools/lighthouse.js.map +1 -1
- package/dist/tools/performanceAudit.d.ts +2 -0
- package/dist/tools/performanceAudit.js +446 -0
- package/dist/tools/performanceAudit.js.map +1 -0
- package/dist/tools/performanceAuditPlan.d.ts +2 -0
- package/dist/tools/performanceAuditPlan.js +438 -0
- package/dist/tools/performanceAuditPlan.js.map +1 -0
- package/dist/utils/batchState.d.ts +75 -0
- package/dist/utils/batchState.js +128 -0
- package/dist/utils/batchState.js.map +1 -0
- package/dist/utils/csvReader.d.ts +20 -0
- package/dist/utils/csvReader.js +172 -0
- package/dist/utils/csvReader.js.map +1 -0
- package/dist/utils/httpClient.d.ts +84 -0
- package/dist/utils/httpClient.js +171 -0
- package/dist/utils/httpClient.js.map +1 -0
- package/dist/utils/outputParsers.js +26 -30
- package/dist/utils/outputParsers.js.map +1 -1
- package/dist/utils/psiAuth.d.ts +26 -0
- package/dist/utils/psiAuth.js +36 -0
- package/dist/utils/psiAuth.js.map +1 -0
- package/dist/utils/psiParser.d.ts +135 -0
- package/dist/utils/psiParser.js +200 -0
- package/dist/utils/psiParser.js.map +1 -0
- package/dist/utils/publicUrl.d.ts +17 -0
- package/dist/utils/publicUrl.js +115 -0
- package/dist/utils/publicUrl.js.map +1 -0
- package/dist/utils/sitemapReader.d.ts +27 -0
- package/dist/utils/sitemapReader.js +272 -0
- package/dist/utils/sitemapReader.js.map +1 -0
- package/dist/utils/urlClassifier.d.ts +45 -0
- package/dist/utils/urlClassifier.js +267 -0
- package/dist/utils/urlClassifier.js.map +1 -0
- package/dist/utils/urlInput.d.ts +30 -0
- package/dist/utils/urlInput.js +130 -0
- package/dist/utils/urlInput.js.map +1 -0
- package/docs/manual.md +769 -0
- package/docs/psi-report-spec.md +174 -0
- package/package.json +13 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a11yDedupe.js","sourceRoot":"","sources":["../../src/mappers/a11yDedupe.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAA6B,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AAOzE
|
|
1
|
+
{"version":3,"file":"a11yDedupe.js","sourceRoot":"","sources":["../../src/mappers/a11yDedupe.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { LighthouseAuditRef, Pa11yViolation } from "../utils/outputParsers.js";
|
|
2
|
+
import { type TargetLevel } from "./wcagLevels.js";
|
|
2
3
|
import type { Finding } from "../types.js";
|
|
3
4
|
export declare function formatLighthouseFinding(audit: LighthouseAuditRef): Finding | null;
|
|
4
5
|
export interface StaticAnalysisIssue {
|
|
@@ -12,4 +13,11 @@ export interface StaticAnalysisIssue {
|
|
|
12
13
|
category?: string;
|
|
13
14
|
}
|
|
14
15
|
export declare function formatStaticAnalysisFinding(issue: StaticAnalysisIssue): Finding | null;
|
|
15
|
-
|
|
16
|
+
/**
|
|
17
|
+
* One pa11y violation → a Finding, priced by WCAG conformance.
|
|
18
|
+
*
|
|
19
|
+
* `target` is the conformance level the project has committed to (AA for
|
|
20
|
+
* essentially all commercial work). It decides whether a criterion is a gap or
|
|
21
|
+
* an enhancement, so it belongs in the finding, not just the summary.
|
|
22
|
+
*/
|
|
23
|
+
export declare function formatA11yFinding(violation: Pa11yViolation, target?: TargetLevel): Finding | null;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { lighthouseImpactToPriority,
|
|
1
|
+
import { lighthouseImpactToPriority, staticAnalysisToPriority, wcagConformanceToPriority, } from "./priorityMapper.js";
|
|
2
|
+
import { criterionByNumber } from "./wcagLevels.js";
|
|
2
3
|
/**
|
|
3
4
|
* Parenthesised measurement, or nothing at all.
|
|
4
5
|
*
|
|
@@ -283,41 +284,80 @@ function axeDescription(violation) {
|
|
|
283
284
|
? `${cleaned}. Flagged by axe as ${violation.impact ?? "unrated"} impact; assistive-tech users are likely affected.`
|
|
284
285
|
: `axe rule "${violation.code}" failed; assistive-tech users are likely affected.`;
|
|
285
286
|
}
|
|
286
|
-
|
|
287
|
+
/**
|
|
288
|
+
* One pa11y violation → a Finding, priced by WCAG conformance.
|
|
289
|
+
*
|
|
290
|
+
* `target` is the conformance level the project has committed to (AA for
|
|
291
|
+
* essentially all commercial work). It decides whether a criterion is a gap or
|
|
292
|
+
* an enhancement, so it belongs in the finding, not just the summary.
|
|
293
|
+
*/
|
|
294
|
+
export function formatA11yFinding(violation, target = "AA") {
|
|
287
295
|
if (violation.type === "notice")
|
|
288
296
|
return null;
|
|
297
|
+
const criterion = violation.criterion ? criterionByNumber(violation.criterion) : null;
|
|
298
|
+
const { priority, blocksTarget } = wcagConformanceToPriority(violation.wcagLevel, target, {
|
|
299
|
+
axeImpact: violation.impact,
|
|
300
|
+
needsReview: violation.needsReview,
|
|
301
|
+
});
|
|
302
|
+
if (!priority)
|
|
303
|
+
return null;
|
|
304
|
+
// Every finding says which criterion it maps to and whether that criterion is
|
|
305
|
+
// required at the committed level. Without it a reader cannot tell a
|
|
306
|
+
// conformance gap from a best-practice nit, and the two carry very different
|
|
307
|
+
// consequences.
|
|
308
|
+
const wcagEvidence = criterion
|
|
309
|
+
? {
|
|
310
|
+
wcag_criterion: criterion.number,
|
|
311
|
+
wcag_name: criterion.name,
|
|
312
|
+
wcag_level: criterion.level,
|
|
313
|
+
blocks_target: blocksTarget,
|
|
314
|
+
}
|
|
315
|
+
: { wcag_criterion: null, wcag_level: "not-a-criterion", blocks_target: false };
|
|
289
316
|
if (violation.runner === "axe") {
|
|
290
|
-
const priority = axeImpactToPriority(violation.impact, violation.needsReview);
|
|
291
|
-
if (!priority)
|
|
292
|
-
return null;
|
|
293
317
|
return {
|
|
294
318
|
priority,
|
|
295
319
|
title: violation.message.replace(/\s*\(https?:\/\/[^)]*\)\s*$/, "").trim() || violation.code,
|
|
296
|
-
description: axeDescription(violation),
|
|
320
|
+
description: withConformanceNote(axeDescription(violation), criterion, blocksTarget, target),
|
|
297
321
|
evidence: {
|
|
298
322
|
rule_code: violation.code,
|
|
299
323
|
selector: violation.selector,
|
|
300
324
|
runner: "axe",
|
|
325
|
+
...wcagEvidence,
|
|
301
326
|
...(violation.impact ? { axe_impact: violation.impact } : {}),
|
|
302
327
|
...(violation.needsReview ? { needs_manual_review: true } : {}),
|
|
303
328
|
},
|
|
304
329
|
};
|
|
305
330
|
}
|
|
306
|
-
const priority = a11yTechniqueToPriority(violation.technique, violation.wcagLevel);
|
|
307
|
-
if (!priority)
|
|
308
|
-
return null;
|
|
309
331
|
const describe = lookupA11yTemplate(violation.technique);
|
|
310
|
-
const description = describe
|
|
311
|
-
? describe(violation)
|
|
312
|
-
: fallbackA11yDescription(violation);
|
|
332
|
+
const description = describe ? describe(violation) : fallbackA11yDescription(violation);
|
|
313
333
|
return {
|
|
314
334
|
priority,
|
|
315
335
|
title: violation.message.split(/\.\s|\.$/)[0] || violation.code,
|
|
316
|
-
description,
|
|
336
|
+
description: withConformanceNote(description, criterion, blocksTarget, target),
|
|
317
337
|
evidence: {
|
|
318
338
|
rule_code: violation.code,
|
|
319
339
|
selector: violation.selector,
|
|
340
|
+
...wcagEvidence,
|
|
320
341
|
},
|
|
321
342
|
};
|
|
322
343
|
}
|
|
344
|
+
/**
|
|
345
|
+
* Append what the finding means for the conformance claim.
|
|
346
|
+
*
|
|
347
|
+
* A defect description says what is broken for users. This says what it costs
|
|
348
|
+
* the project — and for a Level A failure under an AA commitment, that is the
|
|
349
|
+
* sentence a release manager needs, not the technique name.
|
|
350
|
+
*/
|
|
351
|
+
function withConformanceNote(description, criterion, blocksTarget, target) {
|
|
352
|
+
if (!criterion) {
|
|
353
|
+
return `${description} This is a best-practice check, not a WCAG success criterion — worth fixing, but it does not affect a conformance claim.`;
|
|
354
|
+
}
|
|
355
|
+
if (!blocksTarget) {
|
|
356
|
+
return `${description} Maps to WCAG ${criterion.number} ${criterion.name} (Level ${criterion.level}), which is above the committed Level ${target} target — an enhancement, not a conformance gap.`;
|
|
357
|
+
}
|
|
358
|
+
if (criterion.level === "A") {
|
|
359
|
+
return `${description} Fails WCAG ${criterion.number} ${criterion.name} at Level A. Level A is the floor: while this fails, Level ${target} conformance is not achievable regardless of how the other criteria score.`;
|
|
360
|
+
}
|
|
361
|
+
return `${description} Fails WCAG ${criterion.number} ${criterion.name} at Level ${criterion.level}, which is required for the committed Level ${target} target.`;
|
|
362
|
+
}
|
|
323
363
|
//# sourceMappingURL=defectFormatter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defectFormatter.js","sourceRoot":"","sources":["../../src/mappers/defectFormatter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"defectFormatter.js","sourceRoot":"","sources":["../../src/mappers/defectFormatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lab versus field disagreement — the reason this tool exists.
|
|
3
|
+
*
|
|
4
|
+
* A Lighthouse run is a simulation on one machine under one throttling
|
|
5
|
+
* profile. CrUX is what actually happened to real people. When the two agree,
|
|
6
|
+
* confidence is high. When they disagree, the direction of the disagreement is
|
|
7
|
+
* itself the finding, and it is not available from any other tool in this MCP.
|
|
8
|
+
*
|
|
9
|
+
* The Five Below homepage is the canonical case: lab CLS 0 against field CLS
|
|
10
|
+
* 0.55, and lab LCP 11.6 s against field LCP 2.8 s — both metrics inverted, in
|
|
11
|
+
* opposite directions, on one page. A report built on the lab numbers alone
|
|
12
|
+
* led with an LCP emergency real users were not experiencing and missed a
|
|
13
|
+
* layout-shift failure that 70% of them were.
|
|
14
|
+
*/
|
|
15
|
+
import type { Priority } from "../types.js";
|
|
16
|
+
import type { CruxMetric, LabMetrics, ParsedCrux, WebVital } from "../utils/psiParser.js";
|
|
17
|
+
export type LabFieldVerdict = "confirmed" | "worse_in_field" | "worse_in_lab" | "both_pass";
|
|
18
|
+
export interface MetricComparison {
|
|
19
|
+
metric: WebVital;
|
|
20
|
+
label: string;
|
|
21
|
+
lab: number | null;
|
|
22
|
+
lab_display: string | null;
|
|
23
|
+
field_p75: number;
|
|
24
|
+
field_display: string;
|
|
25
|
+
field_source: CruxMetric["source"];
|
|
26
|
+
verdict: LabFieldVerdict;
|
|
27
|
+
note: string;
|
|
28
|
+
}
|
|
29
|
+
/** Lighthouse audit ids, for matching a lab finding back to the vital it measures. */
|
|
30
|
+
export declare const AUDIT_TO_VITAL: Record<string, WebVital>;
|
|
31
|
+
/**
|
|
32
|
+
* Compare every field metric that has a lab counterpart.
|
|
33
|
+
*
|
|
34
|
+
* `both_pass` rows are returned rather than filtered, because the comparison
|
|
35
|
+
* table in the report is a statement about coverage — a reader needs to see
|
|
36
|
+
* that LCP was checked and agreed, not infer it from an absence.
|
|
37
|
+
*/
|
|
38
|
+
export declare function compareLabField(lab: LabMetrics, field: ParsedCrux | null): MetricComparison[];
|
|
39
|
+
/**
|
|
40
|
+
* Promote, but never past a diagnostic's ceiling.
|
|
41
|
+
*
|
|
42
|
+
* `webVitalsMapper` caps FCP and TTFB at P2 because they explain a Core Web
|
|
43
|
+
* Vital rather than being one. Field confirmation makes a finding more
|
|
44
|
+
* certain, not more important, so an unguarded promotion quietly defeated that
|
|
45
|
+
* cap and put FCP at P1 above the LCP it was describing.
|
|
46
|
+
*/
|
|
47
|
+
export declare function promote(priority: Priority, vital?: WebVital): Priority;
|
|
48
|
+
export declare function demote(priority: Priority): Priority;
|
|
49
|
+
/**
|
|
50
|
+
* How a verdict should move a finding's priority.
|
|
51
|
+
*
|
|
52
|
+
* Field observation outranks simulation, so the two adjustments are not
|
|
53
|
+
* symmetric in what they mean: a promotion says "real users confirm this", a
|
|
54
|
+
* demotion says "only the simulation saw this". A demoted finding is tagged
|
|
55
|
+
* rather than dropped — the lab number is still true, it just is not evidence
|
|
56
|
+
* of user harm, and silently deleting it would hide a genuine regression
|
|
57
|
+
* signal from anyone comparing runs over time.
|
|
58
|
+
*/
|
|
59
|
+
export declare function adjustmentFor(verdict: LabFieldVerdict): {
|
|
60
|
+
direction: "promote" | "demote" | "none";
|
|
61
|
+
tag?: string;
|
|
62
|
+
};
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lab versus field disagreement — the reason this tool exists.
|
|
3
|
+
*
|
|
4
|
+
* A Lighthouse run is a simulation on one machine under one throttling
|
|
5
|
+
* profile. CrUX is what actually happened to real people. When the two agree,
|
|
6
|
+
* confidence is high. When they disagree, the direction of the disagreement is
|
|
7
|
+
* itself the finding, and it is not available from any other tool in this MCP.
|
|
8
|
+
*
|
|
9
|
+
* The Five Below homepage is the canonical case: lab CLS 0 against field CLS
|
|
10
|
+
* 0.55, and lab LCP 11.6 s against field LCP 2.8 s — both metrics inverted, in
|
|
11
|
+
* opposite directions, on one page. A report built on the lab numbers alone
|
|
12
|
+
* led with an LCP emergency real users were not experiencing and missed a
|
|
13
|
+
* layout-shift failure that 70% of them were.
|
|
14
|
+
*/
|
|
15
|
+
import { classifyVital, formatVitalValue, isCoreVital, vitalLabel } from "./webVitalsMapper.js";
|
|
16
|
+
/**
|
|
17
|
+
* Lab audits that measure the same thing as a field metric.
|
|
18
|
+
*
|
|
19
|
+
* INP is deliberately absent, and its absence is load-bearing. Lighthouse
|
|
20
|
+
* cannot produce an INP value at all — INP requires a real interaction, and a
|
|
21
|
+
* lab run never interacts with the page. Total Blocking Time is a *proxy* for
|
|
22
|
+
* responsiveness, not the same measurement, so comparing them would manufacture
|
|
23
|
+
* agreement or disagreement out of two different quantities. INP field findings
|
|
24
|
+
* therefore pass through the comparator untouched, which is why the systemic
|
|
25
|
+
* collapse rule in the aggregator has to exist.
|
|
26
|
+
*/
|
|
27
|
+
const LAB_EQUIVALENT = {
|
|
28
|
+
lcp: "lcpMs",
|
|
29
|
+
cls: "cls",
|
|
30
|
+
fcp: "fcpMs",
|
|
31
|
+
ttfb: "ttfbMs",
|
|
32
|
+
};
|
|
33
|
+
/** Lighthouse audit ids, for matching a lab finding back to the vital it measures. */
|
|
34
|
+
export const AUDIT_TO_VITAL = {
|
|
35
|
+
"largest-contentful-paint": "lcp",
|
|
36
|
+
"cumulative-layout-shift": "cls",
|
|
37
|
+
"first-contentful-paint": "fcp",
|
|
38
|
+
"server-response-time": "ttfb",
|
|
39
|
+
};
|
|
40
|
+
function noteFor(verdict, vital, labDisplay, fieldDisplay) {
|
|
41
|
+
const name = vitalLabel(vital);
|
|
42
|
+
switch (verdict) {
|
|
43
|
+
case "confirmed":
|
|
44
|
+
return `${name} fails in the lab (${labDisplay}) and for real users (${fieldDisplay}). Confirmed by two independent measurements — treat as real and fix.`;
|
|
45
|
+
case "worse_in_field":
|
|
46
|
+
return `The lab run passed ${name} at ${labDisplay}, but real users are at ${fieldDisplay}. The test environment is not reproducing what people actually experience — a real-world network, device class, geography or a third-party script that only loads in production. This is the highest-value finding type here, because no local tool can surface it.`;
|
|
47
|
+
case "worse_in_lab":
|
|
48
|
+
return `${name} fails in the lab (${labDisplay}) but real users are at ${fieldDisplay}, which passes. The lab profile is harsher than this page's actual audience. Treat the lab number as a stress signal rather than a user-experienced defect, and prioritise accordingly.`;
|
|
49
|
+
case "both_pass":
|
|
50
|
+
return `${name} is within target in both the lab (${labDisplay}) and the field (${fieldDisplay}).`;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Compare every field metric that has a lab counterpart.
|
|
55
|
+
*
|
|
56
|
+
* `both_pass` rows are returned rather than filtered, because the comparison
|
|
57
|
+
* table in the report is a statement about coverage — a reader needs to see
|
|
58
|
+
* that LCP was checked and agreed, not infer it from an absence.
|
|
59
|
+
*/
|
|
60
|
+
export function compareLabField(lab, field) {
|
|
61
|
+
if (!field)
|
|
62
|
+
return [];
|
|
63
|
+
const comparisons = [];
|
|
64
|
+
for (const [vital, labKey] of Object.entries(LAB_EQUIVALENT)) {
|
|
65
|
+
const fieldMetric = field.metrics[vital];
|
|
66
|
+
if (!fieldMetric)
|
|
67
|
+
continue;
|
|
68
|
+
const labValue = lab[labKey];
|
|
69
|
+
const fieldFails = classifyVital(vital, fieldMetric.p75) !== "good";
|
|
70
|
+
// No lab reading is not a pass; it is an unknown, and the field number
|
|
71
|
+
// stands on its own.
|
|
72
|
+
const labFails = labValue === null ? fieldFails : classifyVital(vital, labValue) !== "good";
|
|
73
|
+
const verdict = labFails && fieldFails ? "confirmed"
|
|
74
|
+
: !labFails && fieldFails ? "worse_in_field"
|
|
75
|
+
: labFails && !fieldFails ? "worse_in_lab"
|
|
76
|
+
: "both_pass";
|
|
77
|
+
const labDisplay = labValue === null ? null : formatVitalValue(vital, labValue);
|
|
78
|
+
const fieldDisplay = formatVitalValue(vital, fieldMetric.p75);
|
|
79
|
+
comparisons.push({
|
|
80
|
+
metric: vital,
|
|
81
|
+
label: vitalLabel(vital),
|
|
82
|
+
lab: labValue,
|
|
83
|
+
lab_display: labDisplay,
|
|
84
|
+
field_p75: fieldMetric.p75,
|
|
85
|
+
field_display: fieldDisplay,
|
|
86
|
+
field_source: fieldMetric.source,
|
|
87
|
+
verdict,
|
|
88
|
+
note: noteFor(verdict, vital, labDisplay, fieldDisplay),
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
return comparisons;
|
|
92
|
+
}
|
|
93
|
+
const UP = { P1: "P1", P2: "P1", P3: "P2" };
|
|
94
|
+
const DOWN = { P1: "P2", P2: "P3", P3: "P3" };
|
|
95
|
+
/**
|
|
96
|
+
* Promote, but never past a diagnostic's ceiling.
|
|
97
|
+
*
|
|
98
|
+
* `webVitalsMapper` caps FCP and TTFB at P2 because they explain a Core Web
|
|
99
|
+
* Vital rather than being one. Field confirmation makes a finding more
|
|
100
|
+
* certain, not more important, so an unguarded promotion quietly defeated that
|
|
101
|
+
* cap and put FCP at P1 above the LCP it was describing.
|
|
102
|
+
*/
|
|
103
|
+
export function promote(priority, vital) {
|
|
104
|
+
const promoted = UP[priority];
|
|
105
|
+
if (vital && !isCoreVital(vital) && promoted === "P1")
|
|
106
|
+
return "P2";
|
|
107
|
+
return promoted;
|
|
108
|
+
}
|
|
109
|
+
export function demote(priority) {
|
|
110
|
+
return DOWN[priority];
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* How a verdict should move a finding's priority.
|
|
114
|
+
*
|
|
115
|
+
* Field observation outranks simulation, so the two adjustments are not
|
|
116
|
+
* symmetric in what they mean: a promotion says "real users confirm this", a
|
|
117
|
+
* demotion says "only the simulation saw this". A demoted finding is tagged
|
|
118
|
+
* rather than dropped — the lab number is still true, it just is not evidence
|
|
119
|
+
* of user harm, and silently deleting it would hide a genuine regression
|
|
120
|
+
* signal from anyone comparing runs over time.
|
|
121
|
+
*/
|
|
122
|
+
export function adjustmentFor(verdict) {
|
|
123
|
+
switch (verdict) {
|
|
124
|
+
case "confirmed":
|
|
125
|
+
return { direction: "promote", tag: "field_confirmed" };
|
|
126
|
+
case "worse_in_field":
|
|
127
|
+
return { direction: "promote", tag: "field_only" };
|
|
128
|
+
case "worse_in_lab":
|
|
129
|
+
return { direction: "demote", tag: "lab_only" };
|
|
130
|
+
default:
|
|
131
|
+
return { direction: "none" };
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=labFieldComparator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"labFieldComparator.js","sourceRoot":"","sources":["../../src/mappers/labFieldComparator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Finding, Priority } from "../types.js";
|
|
2
|
+
import { type TargetLevel, type WcagConformanceLevel } from "./wcagLevels.js";
|
|
2
3
|
export type { Priority };
|
|
3
4
|
export declare function lighthouseScoreToPriority(score: number): Priority | null;
|
|
4
5
|
/**
|
|
@@ -42,3 +43,44 @@ export declare function axeImpactToPriority(impact: string | undefined, needsRev
|
|
|
42
43
|
export declare function a11yTechniqueToPriority(technique: string, wcagLevel: string): Priority | null;
|
|
43
44
|
export declare function staticAnalysisToPriority(source: "eslint" | "semgrep", severity: number | string, category?: string): Priority | null;
|
|
44
45
|
export declare function sortFindingsByPriority<T extends Finding>(findings: T[]): T[];
|
|
46
|
+
export interface ConformancePriority {
|
|
47
|
+
priority: Priority | null;
|
|
48
|
+
/** True when this failure prevents conformance at the committed target. */
|
|
49
|
+
blocksTarget: boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Priority from WCAG conformance rather than from a technique table.
|
|
53
|
+
*
|
|
54
|
+
* The levels are cumulative: claiming AA requires meeting every Level A
|
|
55
|
+
* criterion as well, so a Level A failure is not merely "one more issue" — it
|
|
56
|
+
* puts the committed target out of reach entirely until it is fixed. A page
|
|
57
|
+
* with three Level A failures cannot be AA conformant no matter how clean its
|
|
58
|
+
* AA-specific criteria are, and the priority scheme should say so.
|
|
59
|
+
*
|
|
60
|
+
* Level A failure → P1 blocks the floor; conformance impossible
|
|
61
|
+
* Level AA failure → P2 blocks an AA commitment
|
|
62
|
+
* Above the target → P3 an enhancement, not a gap (see below)
|
|
63
|
+
* No criterion → P3 best-practice rule; never blocks a release
|
|
64
|
+
*
|
|
65
|
+
* This replaces the Phase 13 technique table, which ranked findings by how bad
|
|
66
|
+
* the defect felt rather than by what it does to a conformance claim. That
|
|
67
|
+
* table existed because mapping level → priority naively made almost everything
|
|
68
|
+
* P1; the answer here is not to flatten the levels but to report the count of
|
|
69
|
+
* *distinct failing criteria* alongside, so "7 findings" reads as "5 Level A
|
|
70
|
+
* criteria failing" instead of an undifferentiated wall of P1s.
|
|
71
|
+
*
|
|
72
|
+
* Criteria above the target are deliberately not failures. Orium's checklist
|
|
73
|
+
* makes the same point: AAA findings against an AA commitment are enhancement
|
|
74
|
+
* opportunities, and counting them as gaps overstates the compliance position.
|
|
75
|
+
* `target_size` is the one that bites in practice — it is 2.5.5, Level AAA in
|
|
76
|
+
* WCAG 2.1, so it should not fail an AA audit.
|
|
77
|
+
*
|
|
78
|
+
* Two demotions apply afterwards. axe's `needsFurtherReview` marks a rule that
|
|
79
|
+
* could not decide on its own, and a maybe should not gate a release as hard as
|
|
80
|
+
* a certainty. An axe impact of `minor` marks a real but negligible defect —
|
|
81
|
+
* the "very minor AA issue" tier.
|
|
82
|
+
*/
|
|
83
|
+
export declare function wcagConformanceToPriority(level: WcagConformanceLevel | "unknown", target: TargetLevel, options?: {
|
|
84
|
+
axeImpact?: string;
|
|
85
|
+
needsReview?: boolean;
|
|
86
|
+
}): ConformancePriority;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isRequiredFor, } from "./wcagLevels.js";
|
|
1
2
|
const PRIORITY_ORDER = { P1: 0, P2: 1, P3: 2 };
|
|
2
3
|
export function lighthouseScoreToPriority(score) {
|
|
3
4
|
if (score < 50)
|
|
@@ -160,4 +161,61 @@ export function staticAnalysisToPriority(source, severity, category) {
|
|
|
160
161
|
export function sortFindingsByPriority(findings) {
|
|
161
162
|
return findings.sort((a, b) => PRIORITY_ORDER[a.priority] - PRIORITY_ORDER[b.priority]);
|
|
162
163
|
}
|
|
164
|
+
const DEMOTE = { P1: "P2", P2: "P3", P3: "P3" };
|
|
165
|
+
/**
|
|
166
|
+
* Priority from WCAG conformance rather than from a technique table.
|
|
167
|
+
*
|
|
168
|
+
* The levels are cumulative: claiming AA requires meeting every Level A
|
|
169
|
+
* criterion as well, so a Level A failure is not merely "one more issue" — it
|
|
170
|
+
* puts the committed target out of reach entirely until it is fixed. A page
|
|
171
|
+
* with three Level A failures cannot be AA conformant no matter how clean its
|
|
172
|
+
* AA-specific criteria are, and the priority scheme should say so.
|
|
173
|
+
*
|
|
174
|
+
* Level A failure → P1 blocks the floor; conformance impossible
|
|
175
|
+
* Level AA failure → P2 blocks an AA commitment
|
|
176
|
+
* Above the target → P3 an enhancement, not a gap (see below)
|
|
177
|
+
* No criterion → P3 best-practice rule; never blocks a release
|
|
178
|
+
*
|
|
179
|
+
* This replaces the Phase 13 technique table, which ranked findings by how bad
|
|
180
|
+
* the defect felt rather than by what it does to a conformance claim. That
|
|
181
|
+
* table existed because mapping level → priority naively made almost everything
|
|
182
|
+
* P1; the answer here is not to flatten the levels but to report the count of
|
|
183
|
+
* *distinct failing criteria* alongside, so "7 findings" reads as "5 Level A
|
|
184
|
+
* criteria failing" instead of an undifferentiated wall of P1s.
|
|
185
|
+
*
|
|
186
|
+
* Criteria above the target are deliberately not failures. Orium's checklist
|
|
187
|
+
* makes the same point: AAA findings against an AA commitment are enhancement
|
|
188
|
+
* opportunities, and counting them as gaps overstates the compliance position.
|
|
189
|
+
* `target_size` is the one that bites in practice — it is 2.5.5, Level AAA in
|
|
190
|
+
* WCAG 2.1, so it should not fail an AA audit.
|
|
191
|
+
*
|
|
192
|
+
* Two demotions apply afterwards. axe's `needsFurtherReview` marks a rule that
|
|
193
|
+
* could not decide on its own, and a maybe should not gate a release as hard as
|
|
194
|
+
* a certainty. An axe impact of `minor` marks a real but negligible defect —
|
|
195
|
+
* the "very minor AA issue" tier.
|
|
196
|
+
*/
|
|
197
|
+
export function wcagConformanceToPriority(level, target, options = {}) {
|
|
198
|
+
if (level === "unknown") {
|
|
199
|
+
return { priority: "P3", blocksTarget: false };
|
|
200
|
+
}
|
|
201
|
+
const blocksTarget = isRequiredFor(level, target);
|
|
202
|
+
let priority;
|
|
203
|
+
if (!blocksTarget) {
|
|
204
|
+
priority = "P3"; // beyond the committed level
|
|
205
|
+
}
|
|
206
|
+
else if (level === "A") {
|
|
207
|
+
priority = "P1";
|
|
208
|
+
}
|
|
209
|
+
else if (level === "AA") {
|
|
210
|
+
priority = "P2";
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
priority = "P2"; // AAA, only when AAA is the committed target
|
|
214
|
+
}
|
|
215
|
+
if (options.needsReview)
|
|
216
|
+
priority = DEMOTE[priority];
|
|
217
|
+
if (options.axeImpact === "minor")
|
|
218
|
+
priority = DEMOTE[priority];
|
|
219
|
+
return { priority, blocksTarget };
|
|
220
|
+
}
|
|
163
221
|
//# sourceMappingURL=priorityMapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"priorityMapper.js","sourceRoot":"","sources":["../../src/mappers/priorityMapper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"priorityMapper.js","sourceRoot":"","sources":["../../src/mappers/priorityMapper.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,GAGd,MAAM,iBAAiB,CAAC;AAIzB,MAAM,cAAc,GAA6B,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AAEzE,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAC5B,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAC5B,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAa,EACb,MAA0B;IAE1B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAElE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;IAC1C,IAAI,MAAM,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,kBAAkB,GAA6B;IACnD,6CAA6C;IAC7C,GAAG,EAAE,IAAI,EAAE,+CAA+C;IAC1D,GAAG,EAAE,IAAI,EAAE,6BAA6B;IACxC,GAAG,EAAE,IAAI,EAAE,wCAAwC;IACnD,KAAK,EAAE,IAAI,EAAE,2BAA2B;IACxC,KAAK,EAAE,IAAI,EAAE,0CAA0C;IACvD,GAAG,EAAE,IAAI,EAAE,gCAAgC;IAC3C,GAAG,EAAE,IAAI,EAAE,kBAAkB;IAC7B,GAAG,EAAE,IAAI,EAAE,iCAAiC;IAC5C,GAAG,EAAE,IAAI,EAAE,iDAAiD;IAC5D,GAAG,EAAE,IAAI,EAAE,kCAAkC;IAC7C,GAAG,EAAE,IAAI,EAAE,kCAAkC;IAC7C,IAAI,EAAE,IAAI,EAAE,sCAAsC;IAClD,GAAG,EAAE,IAAI,EAAE,yBAAyB;IACpC,GAAG,EAAE,IAAI,EAAE,wBAAwB;IACnC,GAAG,EAAE,IAAI,EAAE,iCAAiC;IAC5C,IAAI,EAAE,IAAI,EAAE,gCAAgC;IAE5C,oDAAoD;IACpD,GAAG,EAAE,IAAI,EAAE,eAAe;IAC1B,GAAG,EAAE,IAAI,EAAE,mCAAmC;IAC9C,IAAI,EAAE,IAAI,EAAE,yBAAyB;IACrC,GAAG,EAAE,IAAI,EAAE,6CAA6C;IACxD,GAAG,EAAE,IAAI,EAAE,qBAAqB;IAChC,GAAG,EAAE,IAAI,EAAE,mBAAmB;IAC9B,GAAG,EAAE,IAAI,EAAE,yBAAyB;IACpC,GAAG,EAAE,IAAI,EAAE,2BAA2B;IACtC,GAAG,EAAE,IAAI,EAAE,uBAAuB;IAClC,GAAG,EAAE,IAAI,EAAE,kCAAkC;IAC7C,GAAG,EAAE,IAAI,EAAE,sBAAsB;IACjC,cAAc,EAAE,IAAI,EAAE,6CAA6C;IACnE,GAAG,EAAE,IAAI,EAAE,2BAA2B;IACtC,IAAI,EAAE,IAAI,EAAE,iCAAiC;IAC7C,GAAG,EAAE,IAAI,EAAE,0BAA0B;IACrC,GAAG,EAAE,IAAI,EAAE,oCAAoC;IAE/C,iBAAiB;IACjB,GAAG,EAAE,IAAI,EAAE,4CAA4C;IACvD,KAAK,EAAE,IAAI,EAAE,qCAAqC;IAClD,GAAG,EAAE,IAAI,EAAE,kCAAkC;IAC7C,EAAE,EAAE,IAAI,EAAE,uCAAuC;IACjD,GAAG,EAAE,IAAI,EAAE,mCAAmC;CAC/C,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAA0B,EAC1B,WAAgC;IAEhC,MAAM,IAAI,GACR,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI;QAC5B,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI;YAC7B,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI;gBAC9B,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI;oBAC3B,CAAC,CAAC,IAAI,CAAC,CAAC,+BAA+B;IAEzC,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,SAAiB,EACjB,SAAiB;IAEjB,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,OAAO,GAAG,EAAE,CAAC;QACX,MAAM,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;QAChB,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,OAAO,GAAG,CAAC;YAAE,MAAM;QACvB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAA4B,EAC5B,QAAyB,EACzB,QAAiB;IAEjB,6DAA6D;IAC7D,IAAI,MAAM,KAAK,SAAS,IAAI,QAAQ,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IACjE,IAAI,MAAM,KAAK,QAAQ,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1F,IAAI,MAAM,KAAK,QAAQ,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,6CAA6C;IAC7C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAoB,QAAa;IACrE,OAAO,QAAQ,CAAC,IAAI,CAClB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAClE,CAAC;AACJ,CAAC;AAGD,MAAM,MAAM,GAA+B,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AAQ5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAuC,EACvC,MAAmB,EACnB,UAAyD,EAAE;IAE3D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClD,IAAI,QAAkB,CAAC;IAEvB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,QAAQ,GAAG,IAAI,CAAC,CAAC,6BAA6B;IAChD,CAAC;SAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;QACzB,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;SAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1B,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,IAAI,CAAC,CAAC,6CAA6C;IAChE,CAAC;IAED,IAAI,OAAO,CAAC,WAAW;QAAE,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO;QAAE,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE/D,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;AACpC,CAAC"}
|