@vera-ci/playwright-reporter 0.2.0-beta.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -11
- package/dist/fixtures.d.ts +0 -71
- package/dist/fixtures.d.ts.map +0 -1
- package/dist/fixtures.js +0 -168
- package/dist/fixtures.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,4 @@ import VeraReporter from "./reporter.js";
|
|
|
3
3
|
export default VeraReporter;
|
|
4
4
|
export { veraSnapshot } from "./screenshot.js";
|
|
5
5
|
export type { VeraSnapshotOptions } from "./screenshot.js";
|
|
6
|
-
export { veraTest, veraFixtures, runAxe } from "./fixtures.js";
|
|
7
|
-
export type { VeraAxeOptions, VeraPage } from "./fixtures.js";
|
|
8
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,QAAQ,GACT,MAAM,YAAY,CAAC;AAEpB,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,eAAe,YAAY,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,QAAQ,GACT,MAAM,YAAY,CAAC;AAEpB,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,eAAe,YAAY,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAU/B,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,eAAe,YAAY,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAU/B,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,eAAe,YAAY,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vera-ci/playwright-reporter",
|
|
3
|
-
"version": "0.2.0
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Playwright reporter for Vera CI — upload test results, screenshots, traces, and videos.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -17,12 +17,6 @@
|
|
|
17
17
|
"import": "./dist/screenshot.js",
|
|
18
18
|
"require": "./dist/screenshot.js",
|
|
19
19
|
"default": "./dist/screenshot.js"
|
|
20
|
-
},
|
|
21
|
-
"./fixtures": {
|
|
22
|
-
"types": "./dist/fixtures.d.ts",
|
|
23
|
-
"import": "./dist/fixtures.js",
|
|
24
|
-
"require": "./dist/fixtures.js",
|
|
25
|
-
"default": "./dist/fixtures.js"
|
|
26
20
|
}
|
|
27
21
|
},
|
|
28
22
|
"files": [
|
|
@@ -38,11 +32,7 @@
|
|
|
38
32
|
"peerDependencies": {
|
|
39
33
|
"@playwright/test": ">=1.49.0"
|
|
40
34
|
},
|
|
41
|
-
"optionalDependencies": {
|
|
42
|
-
"@axe-core/playwright": "^4.8.0"
|
|
43
|
-
},
|
|
44
35
|
"devDependencies": {
|
|
45
|
-
"@axe-core/playwright": "^4.11.1",
|
|
46
36
|
"@playwright/test": "^1.52.0",
|
|
47
37
|
"@types/node": "^22.19.11",
|
|
48
38
|
"typescript": "^5.9.3"
|
package/dist/fixtures.d.ts
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* fixtures.ts — Axe accessibility scanning integration for @vera-ci/playwright-reporter
|
|
3
|
-
*
|
|
4
|
-
* Provides:
|
|
5
|
-
* - runAxe() — run an axe scan on the live page and attach results as an annotation
|
|
6
|
-
* - veraFixtures — Playwright fixture object for use with base.extend()
|
|
7
|
-
* - veraTest — pre-extended test base (convenience re-export)
|
|
8
|
-
*
|
|
9
|
-
* @axe-core/playwright is an optionalDependency — it installs automatically alongside the
|
|
10
|
-
* reporter. If somehow unavailable, axe is silently skipped without failing the test.
|
|
11
|
-
*
|
|
12
|
-
* Usage:
|
|
13
|
-
*
|
|
14
|
-
* // test-setup.ts
|
|
15
|
-
* export { veraTest as test, expect } from '@vera-ci/playwright-reporter';
|
|
16
|
-
*
|
|
17
|
-
* // my-test.spec.ts
|
|
18
|
-
* import { test } from '../test-setup';
|
|
19
|
-
* test('homepage', async ({ page, vera }) => {
|
|
20
|
-
* await page.goto('/');
|
|
21
|
-
* await vera.screenshot('homepage'); // screenshot + axe in one call
|
|
22
|
-
* await vera.runAxe('mobile'); // axe only (no screenshot)
|
|
23
|
-
* });
|
|
24
|
-
*/
|
|
25
|
-
import type { Page } from "@playwright/test";
|
|
26
|
-
export interface VeraAxeOptions {
|
|
27
|
-
/** WCAG rule tags to include. Defaults to reporter-level axe.tags, then ['wcag2a', 'wcag2aa']. */
|
|
28
|
-
tags?: string[];
|
|
29
|
-
/** Per-call rule overrides, e.g. { 'color-contrast': { enabled: false } } */
|
|
30
|
-
rules?: Record<string, {
|
|
31
|
-
enabled: boolean;
|
|
32
|
-
}>;
|
|
33
|
-
}
|
|
34
|
-
/** The 'vera' fixture object exposed to tests. */
|
|
35
|
-
export interface VeraPage {
|
|
36
|
-
/**
|
|
37
|
-
* Take a named screenshot and run axe on the live page.
|
|
38
|
-
* Attaches screenshot to the test (for Vera CI upload) and axe results as an annotation.
|
|
39
|
-
*/
|
|
40
|
-
screenshot(name: string, options?: {
|
|
41
|
-
fullPage?: boolean;
|
|
42
|
-
axe?: VeraAxeOptions;
|
|
43
|
-
}): Promise<void>;
|
|
44
|
-
/**
|
|
45
|
-
* Run axe on the live page without taking a screenshot.
|
|
46
|
-
* Useful for teams keeping page.screenshot() directly.
|
|
47
|
-
*/
|
|
48
|
-
runAxe(name: string, options?: VeraAxeOptions): Promise<void>;
|
|
49
|
-
}
|
|
50
|
-
type VeraFixtures = {
|
|
51
|
-
vera: VeraPage;
|
|
52
|
-
};
|
|
53
|
-
/**
|
|
54
|
-
* Run an axe scan and push a 'vera:axe' annotation to the current test.
|
|
55
|
-
* The annotation body is picked up by the ingestion pipeline when processing
|
|
56
|
-
* the Playwright JSON report.
|
|
57
|
-
*
|
|
58
|
-
* @param page The Playwright Page to scan.
|
|
59
|
-
* @param snapshotName Name used to correlate the scan with a snapshot.
|
|
60
|
-
* @param options Per-call overrides (tags, rules).
|
|
61
|
-
* @param defaults Project-level defaults from playwright.config.ts reporter options.
|
|
62
|
-
*/
|
|
63
|
-
export declare function runAxe(page: Page, snapshotName: string, options?: VeraAxeOptions, defaults?: VeraAxeOptions): Promise<void>;
|
|
64
|
-
export declare const veraFixtures: {
|
|
65
|
-
vera: ({ page }: {
|
|
66
|
-
page: Page;
|
|
67
|
-
}, use: (r: VeraPage) => Promise<void>) => Promise<void>;
|
|
68
|
-
};
|
|
69
|
-
export declare const veraTest: import("@playwright/test").TestType<import("@playwright/test").PlaywrightTestArgs & import("@playwright/test").PlaywrightTestOptions & VeraFixtures, import("@playwright/test").PlaywrightWorkerArgs & import("@playwright/test").PlaywrightWorkerOptions>;
|
|
70
|
-
export { expect } from "@playwright/test";
|
|
71
|
-
//# sourceMappingURL=fixtures.d.ts.map
|
package/dist/fixtures.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../src/fixtures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAO7C,MAAM,WAAW,cAAc;IAC7B,kGAAkG;IAClG,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC9C;AAED,kDAAkD;AAClD,MAAM,WAAW,QAAQ;IACvB;;;OAGG;IACH,UAAU,CACR,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,cAAc,CAAA;KAAE,GACrD,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED,KAAK,YAAY,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAMvC;;;;;;;;;GASG;AACH,wBAAsB,MAAM,CAC1B,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,cAAc,EACxB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,IAAI,CAAC,CAkEf;AAMD,eAAO,MAAM,YAAY;qBAGX;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,OACnB,CAAC,CAAC,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC;CAqEtC,CAAC;AAMF,eAAO,MAAM,QAAQ,4PAA8C,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/fixtures.js
DELETED
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* fixtures.ts — Axe accessibility scanning integration for @vera-ci/playwright-reporter
|
|
3
|
-
*
|
|
4
|
-
* Provides:
|
|
5
|
-
* - runAxe() — run an axe scan on the live page and attach results as an annotation
|
|
6
|
-
* - veraFixtures — Playwright fixture object for use with base.extend()
|
|
7
|
-
* - veraTest — pre-extended test base (convenience re-export)
|
|
8
|
-
*
|
|
9
|
-
* @axe-core/playwright is an optionalDependency — it installs automatically alongside the
|
|
10
|
-
* reporter. If somehow unavailable, axe is silently skipped without failing the test.
|
|
11
|
-
*
|
|
12
|
-
* Usage:
|
|
13
|
-
*
|
|
14
|
-
* // test-setup.ts
|
|
15
|
-
* export { veraTest as test, expect } from '@vera-ci/playwright-reporter';
|
|
16
|
-
*
|
|
17
|
-
* // my-test.spec.ts
|
|
18
|
-
* import { test } from '../test-setup';
|
|
19
|
-
* test('homepage', async ({ page, vera }) => {
|
|
20
|
-
* await page.goto('/');
|
|
21
|
-
* await vera.screenshot('homepage'); // screenshot + axe in one call
|
|
22
|
-
* await vera.runAxe('mobile'); // axe only (no screenshot)
|
|
23
|
-
* });
|
|
24
|
-
*/
|
|
25
|
-
import { test as baseTest } from "@playwright/test";
|
|
26
|
-
// ---------------------------------------------------------------------------
|
|
27
|
-
// runAxe — runs axe on the live page and pushes annotation
|
|
28
|
-
// ---------------------------------------------------------------------------
|
|
29
|
-
/**
|
|
30
|
-
* Run an axe scan and push a 'vera:axe' annotation to the current test.
|
|
31
|
-
* The annotation body is picked up by the ingestion pipeline when processing
|
|
32
|
-
* the Playwright JSON report.
|
|
33
|
-
*
|
|
34
|
-
* @param page The Playwright Page to scan.
|
|
35
|
-
* @param snapshotName Name used to correlate the scan with a snapshot.
|
|
36
|
-
* @param options Per-call overrides (tags, rules).
|
|
37
|
-
* @param defaults Project-level defaults from playwright.config.ts reporter options.
|
|
38
|
-
*/
|
|
39
|
-
export async function runAxe(page, snapshotName, options, defaults) {
|
|
40
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
41
|
-
let axeModule;
|
|
42
|
-
try {
|
|
43
|
-
// Dynamic import so the reporter loads fine if @axe-core/playwright is not installed
|
|
44
|
-
axeModule = await import("@axe-core/playwright");
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
const msg = `[vera] @axe-core/playwright not available — skipping axe scan for "${snapshotName}"`;
|
|
48
|
-
if (typeof process !== "undefined" && process.stderr) {
|
|
49
|
-
process.stderr.write(msg + "\n");
|
|
50
|
-
}
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
const AxeBuilder = axeModule.default ?? axeModule.AxeBuilder;
|
|
54
|
-
if (!AxeBuilder) {
|
|
55
|
-
process.stderr.write(`[vera] Could not find AxeBuilder in @axe-core/playwright — skipping "${snapshotName}"\n`);
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
const resolvedTags = options?.tags ?? defaults?.tags ?? ["wcag2a", "wcag2aa"];
|
|
59
|
-
const resolvedRules = options?.rules ?? defaults?.rules;
|
|
60
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
61
|
-
let builder = new AxeBuilder({ page }).withTags(resolvedTags);
|
|
62
|
-
if (resolvedRules) {
|
|
63
|
-
builder = builder.options({ rules: resolvedRules });
|
|
64
|
-
}
|
|
65
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
66
|
-
let results;
|
|
67
|
-
try {
|
|
68
|
-
results = await builder.analyze();
|
|
69
|
-
}
|
|
70
|
-
catch (err) {
|
|
71
|
-
// Never fail the test — log and return
|
|
72
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
73
|
-
if (typeof process !== "undefined" && process.stderr) {
|
|
74
|
-
process.stderr.write(`[vera] Axe scan failed for "${snapshotName}": ${message}\n`);
|
|
75
|
-
}
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
// Attach scan results as a Playwright annotation.
|
|
79
|
-
// The Vera CI ingestion pipeline reads this when processing the report JSON.
|
|
80
|
-
baseTest.info().annotations.push({
|
|
81
|
-
type: "vera:axe",
|
|
82
|
-
description: JSON.stringify({
|
|
83
|
-
snapshotName,
|
|
84
|
-
result: {
|
|
85
|
-
violations: results.violations,
|
|
86
|
-
passes: results.passes.length,
|
|
87
|
-
incomplete: results.incomplete.length,
|
|
88
|
-
inapplicable: results.inapplicable.length,
|
|
89
|
-
axeVersion: results.testEngine?.version,
|
|
90
|
-
rulesConfig: {
|
|
91
|
-
tags: resolvedTags,
|
|
92
|
-
...(resolvedRules ? { rules: resolvedRules } : {}),
|
|
93
|
-
},
|
|
94
|
-
},
|
|
95
|
-
}),
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
// ---------------------------------------------------------------------------
|
|
99
|
-
// veraFixtures — Playwright fixture definition
|
|
100
|
-
// ---------------------------------------------------------------------------
|
|
101
|
-
export const veraFixtures = {
|
|
102
|
-
// eslint-disable-next-line no-empty-pattern
|
|
103
|
-
vera: async ({ page }, use) => {
|
|
104
|
-
// Track which attachment names have already been axe-scanned so the
|
|
105
|
-
// teardown auto-scan doesn't duplicate results.
|
|
106
|
-
const axeScannedNames = new Set();
|
|
107
|
-
const veraPage = {
|
|
108
|
-
async screenshot(name, options) {
|
|
109
|
-
const { axe: axeOptions, ...screenshotOptions } = options ?? {};
|
|
110
|
-
// Take screenshot and attach for Vera CI upload
|
|
111
|
-
const projectName = baseTest.info().project.name;
|
|
112
|
-
const attachmentName = projectName ? `${name}--${projectName}` : name;
|
|
113
|
-
const screenshot = await page.screenshot({
|
|
114
|
-
type: "png",
|
|
115
|
-
...screenshotOptions,
|
|
116
|
-
});
|
|
117
|
-
await baseTest.info().attach(attachmentName, {
|
|
118
|
-
body: screenshot,
|
|
119
|
-
contentType: "image/png",
|
|
120
|
-
});
|
|
121
|
-
// Capture accessibility tree alongside screenshot (same as veraSnapshot)
|
|
122
|
-
try {
|
|
123
|
-
const ariaSnapshot = await page.locator("body").ariaSnapshot();
|
|
124
|
-
if (ariaSnapshot) {
|
|
125
|
-
await baseTest.info().attach(`${attachmentName}.dom`, {
|
|
126
|
-
body: Buffer.from(ariaSnapshot, "utf-8"),
|
|
127
|
-
contentType: "text/plain",
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
catch {
|
|
132
|
-
// Non-fatal — ariaSnapshot requires Playwright >= 1.49
|
|
133
|
-
}
|
|
134
|
-
// Run axe on the live page (attaches annotation).
|
|
135
|
-
// Use attachmentName so the ingestion pipeline can correlate axe results
|
|
136
|
-
// with the correct snapshot (attachment names include the project suffix).
|
|
137
|
-
await runAxe(page, attachmentName, axeOptions);
|
|
138
|
-
axeScannedNames.add(attachmentName);
|
|
139
|
-
},
|
|
140
|
-
async runAxe(name, options) {
|
|
141
|
-
await runAxe(page, name, options);
|
|
142
|
-
axeScannedNames.add(name);
|
|
143
|
-
},
|
|
144
|
-
};
|
|
145
|
-
await use(veraPage);
|
|
146
|
-
// ---------------------------------------------------------------------------
|
|
147
|
-
// Auto-axe teardown — runs axe for any image attachments not yet scanned.
|
|
148
|
-
// This covers tests that capture screenshots via page.screenshot() directly
|
|
149
|
-
// without going through vera.screenshot().
|
|
150
|
-
// ---------------------------------------------------------------------------
|
|
151
|
-
const info = baseTest.info();
|
|
152
|
-
if (info.status !== "skipped") {
|
|
153
|
-
for (const attachment of info.attachments) {
|
|
154
|
-
if (!attachment.contentType.startsWith("image/"))
|
|
155
|
-
continue;
|
|
156
|
-
if (axeScannedNames.has(attachment.name))
|
|
157
|
-
continue;
|
|
158
|
-
await runAxe(page, attachment.name);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
},
|
|
162
|
-
};
|
|
163
|
-
// ---------------------------------------------------------------------------
|
|
164
|
-
// veraTest — convenience re-export
|
|
165
|
-
// ---------------------------------------------------------------------------
|
|
166
|
-
export const veraTest = baseTest.extend(veraFixtures);
|
|
167
|
-
export { expect } from "@playwright/test";
|
|
168
|
-
//# sourceMappingURL=fixtures.js.map
|
package/dist/fixtures.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../src/fixtures.ts"],"names":[],"mappings":"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"}
|