@testivai/witness 1.6.0 → 1.7.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/bin/testivai.js +6 -1
- package/dist/bin/testivai.js.map +1 -1
- package/dist/commands/approve.d.ts.map +1 -1
- package/dist/commands/approve.js +33 -11
- package/dist/commands/approve.js.map +1 -1
- package/dist/commands/exit-codes.d.ts +22 -0
- package/dist/commands/exit-codes.d.ts.map +1 -0
- package/dist/commands/exit-codes.js +17 -0
- package/dist/commands/exit-codes.js.map +1 -0
- package/dist/commands/init.d.ts +11 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +74 -11
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/report.d.ts +10 -0
- package/dist/commands/report.d.ts.map +1 -1
- package/dist/commands/report.js +41 -14
- package/dist/commands/report.js.map +1 -1
- package/package.json +1 -1
package/dist/bin/testivai.js
CHANGED
|
@@ -26,7 +26,12 @@ program
|
|
|
26
26
|
.description('TestivAI Witness SDK - Framework-agnostic visual regression testing')
|
|
27
27
|
.version(packageJson.version, '-V, --version', 'Display version number')
|
|
28
28
|
.hook('preAction', () => {
|
|
29
|
-
|
|
29
|
+
// Keep stdout clean for machine-readable output: no banner under --json
|
|
30
|
+
// (or --quiet/-q). Agents parse stdout as a single JSON document.
|
|
31
|
+
const quiet = process.argv.includes('--quiet') ||
|
|
32
|
+
process.argv.includes('-q') ||
|
|
33
|
+
process.argv.includes('--json');
|
|
34
|
+
if (!quiet) {
|
|
30
35
|
showBanner();
|
|
31
36
|
}
|
|
32
37
|
});
|
package/dist/bin/testivai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testivai.js","sourceRoot":"","sources":["../../src/bin/testivai.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,2CAA+C;AAC/C,2CAA+C;AAC/C,yCAA6C;AAC7C,iDAAqD;AACrD,iDAAqD;AACrD,+CAAmD;AAEnD,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAElD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,iBAAiB;AACjB,MAAM,UAAU,GAAG,GAAG,EAAE;IACtB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC,CAAC;AAEF,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,qEAAqE,CAAC;KAClF,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,wBAAwB,CAAC;KACvE,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IACtB,
|
|
1
|
+
{"version":3,"file":"testivai.js","sourceRoot":"","sources":["../../src/bin/testivai.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,2CAA+C;AAC/C,2CAA+C;AAC/C,yCAA6C;AAC7C,iDAAqD;AACrD,iDAAqD;AACrD,+CAAmD;AAEnD,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAElD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,iBAAiB;AACjB,MAAM,UAAU,GAAG,GAAG,EAAE;IACtB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC,CAAC;AAEF,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,qEAAqE,CAAC;KAClF,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,wBAAwB,CAAC;KACvE,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IACtB,wEAAwE;IACxE,kEAAkE;IAClE,MAAM,KAAK,GACT,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,UAAU,EAAE,CAAC;IACf,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,iBAAiB;AACjB,OAAO;KACJ,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC;KAChD,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;KACvD,MAAM,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;AAE1C,eAAe;AACf,OAAO,CAAC,UAAU,CAAC,kBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,kBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,gBAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,wBAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,wBAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAElC,kBAAkB;AAClB,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,mCAAmC;AACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approve.d.ts","sourceRoot":"","sources":["../../src/commands/approve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"approve.d.ts","sourceRoot":"","sources":["../../src/commands/approve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,cAAc,SA2HvB,CAAC"}
|
package/dist/commands/approve.js
CHANGED
|
@@ -14,6 +14,7 @@ exports.approveCommand = new commander_1.Command('approve')
|
|
|
14
14
|
.option('--all', 'Approve all changed/new snapshots')
|
|
15
15
|
.option('--undo', 'Undo the last approval (restore previous baseline)')
|
|
16
16
|
.option('--dry-run', 'Show what would be approved without modifying any files')
|
|
17
|
+
.option('--json', 'Print a machine-readable result to stdout instead of the pretty output')
|
|
17
18
|
.action(async (name, options) => {
|
|
18
19
|
try {
|
|
19
20
|
const cwd = process.cwd();
|
|
@@ -61,34 +62,55 @@ exports.approveCommand = new commander_1.Command('approve')
|
|
|
61
62
|
if (options.all) {
|
|
62
63
|
const tempNames = store.listTemp();
|
|
63
64
|
if (tempNames.length === 0) {
|
|
64
|
-
|
|
65
|
+
if (options.json)
|
|
66
|
+
process.stdout.write(JSON.stringify({ approved: [], failed: [] }) + '\n');
|
|
67
|
+
else
|
|
68
|
+
console.log(chalk_1.default.yellow(' No temp snapshots found. Run your tests first.'));
|
|
65
69
|
return;
|
|
66
70
|
}
|
|
67
|
-
|
|
71
|
+
const approvedNames = [];
|
|
72
|
+
const failed = [];
|
|
68
73
|
for (const snapName of tempNames) {
|
|
69
74
|
try {
|
|
70
75
|
store.approve(snapName);
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
approvedNames.push(snapName);
|
|
77
|
+
if (!options.json)
|
|
78
|
+
console.log(chalk_1.default.green(` ✓ Approved: ${snapName}`));
|
|
73
79
|
}
|
|
74
80
|
catch (err) {
|
|
75
|
-
|
|
81
|
+
failed.push({ name: snapName, error: err.message });
|
|
82
|
+
if (!options.json)
|
|
83
|
+
logger_1.logger.error(` ✗ Failed to approve "${snapName}": ${err.message}`);
|
|
76
84
|
}
|
|
77
85
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
86
|
+
if (options.json) {
|
|
87
|
+
process.stdout.write(JSON.stringify({ approved: approvedNames, failed }) + '\n');
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
console.log();
|
|
91
|
+
console.log(chalk_1.default.cyan(` ${approvedNames.length}/${tempNames.length} snapshot(s) approved.`));
|
|
92
|
+
console.log(chalk_1.default.gray(' git add .testivai/baselines/'));
|
|
93
|
+
}
|
|
94
|
+
if (failed.length > 0)
|
|
95
|
+
process.exitCode = 1;
|
|
81
96
|
return;
|
|
82
97
|
}
|
|
83
98
|
// ── Approve specific name ─────────────────────────────────────────────
|
|
84
99
|
if (name) {
|
|
85
100
|
try {
|
|
86
101
|
store.approve(name);
|
|
87
|
-
|
|
88
|
-
|
|
102
|
+
if (options.json)
|
|
103
|
+
process.stdout.write(JSON.stringify({ approved: [name], failed: [] }) + '\n');
|
|
104
|
+
else {
|
|
105
|
+
console.log(chalk_1.default.green(` ✓ Approved: ${name}`));
|
|
106
|
+
console.log(chalk_1.default.gray(` git add .testivai/baselines/${name}/`));
|
|
107
|
+
}
|
|
89
108
|
}
|
|
90
109
|
catch (err) {
|
|
91
|
-
|
|
110
|
+
if (options.json)
|
|
111
|
+
process.stdout.write(JSON.stringify({ approved: [], failed: [{ name, error: err.message }] }) + '\n');
|
|
112
|
+
else
|
|
113
|
+
logger_1.logger.error(err.message);
|
|
92
114
|
process.exit(1);
|
|
93
115
|
}
|
|
94
116
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approve.js","sourceRoot":"","sources":["../../src/commands/approve.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,kDAA0B;AAC1B,8CAAmD;AACnD,4CAAyC;AAE5B,QAAA,cAAc,GAAG,IAAI,mBAAO,CAAC,SAAS,CAAC;KACjD,WAAW,CAAC,2CAA2C,CAAC;KACxD,QAAQ,CAAC,QAAQ,EAAE,sDAAsD,CAAC;KAC1E,MAAM,CAAC,OAAO,EAAE,mCAAmC,CAAC;KACpD,MAAM,CAAC,QAAQ,EAAE,oDAAoD,CAAC;KACtE,MAAM,CAAC,WAAW,EAAE,yDAAyD,CAAC;KAC9E,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,
|
|
1
|
+
{"version":3,"file":"approve.js","sourceRoot":"","sources":["../../src/commands/approve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `testivai report` exit-code contract (public, agent-facing).
|
|
3
|
+
*
|
|
4
|
+
* 0 pass — no changes (and no new snapshots, or --allow-new)
|
|
5
|
+
* 1 changed — at least one snapshot differs from its baseline
|
|
6
|
+
* 2 new-only — no changes, but new snapshots exist (no baseline yet)
|
|
7
|
+
*
|
|
8
|
+
* Codes are only enforced when the gate is on (`--fail-on-diff` or config
|
|
9
|
+
* `failOnDiff`); otherwise the command is report-only and exits 0.
|
|
10
|
+
*/
|
|
11
|
+
export interface ExitSummary {
|
|
12
|
+
changed: number;
|
|
13
|
+
newSnapshots: number;
|
|
14
|
+
}
|
|
15
|
+
export declare const EXIT_PASS = 0;
|
|
16
|
+
export declare const EXIT_CHANGED = 1;
|
|
17
|
+
export declare const EXIT_NEW_ONLY = 2;
|
|
18
|
+
export declare function reportExitCode(summary: ExitSummary, opts: {
|
|
19
|
+
gate: boolean;
|
|
20
|
+
allowNew?: boolean;
|
|
21
|
+
}): number;
|
|
22
|
+
//# sourceMappingURL=exit-codes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exit-codes.d.ts","sourceRoot":"","sources":["../../src/commands/exit-codes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,wBAAgB,cAAc,CAC5B,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1C,MAAM,CAKR"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EXIT_NEW_ONLY = exports.EXIT_CHANGED = exports.EXIT_PASS = void 0;
|
|
4
|
+
exports.reportExitCode = reportExitCode;
|
|
5
|
+
exports.EXIT_PASS = 0;
|
|
6
|
+
exports.EXIT_CHANGED = 1;
|
|
7
|
+
exports.EXIT_NEW_ONLY = 2;
|
|
8
|
+
function reportExitCode(summary, opts) {
|
|
9
|
+
if (!opts.gate)
|
|
10
|
+
return exports.EXIT_PASS;
|
|
11
|
+
if (summary.changed > 0)
|
|
12
|
+
return exports.EXIT_CHANGED;
|
|
13
|
+
if (summary.newSnapshots > 0 && !opts.allowNew)
|
|
14
|
+
return exports.EXIT_NEW_ONLY;
|
|
15
|
+
return exports.EXIT_PASS;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=exit-codes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exit-codes.js","sourceRoot":"","sources":["../../src/commands/exit-codes.ts"],"names":[],"mappings":";;;AAmBA,wCAQC;AAZY,QAAA,SAAS,GAAG,CAAC,CAAC;AACd,QAAA,YAAY,GAAG,CAAC,CAAC;AACjB,QAAA,aAAa,GAAG,CAAC,CAAC;AAE/B,SAAgB,cAAc,CAC5B,OAAoB,EACpB,IAA2C;IAE3C,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE,OAAO,iBAAS,CAAC;IACjC,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC;QAAE,OAAO,oBAAY,CAAC;IAC7C,IAAI,OAAO,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;QAAE,OAAO,qBAAa,CAAC;IACrE,OAAO,iBAAS,CAAC;AACnB,CAAC"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
export declare function isPlaywrightProject(cwd: string): boolean;
|
|
3
|
+
/**
|
|
4
|
+
* Scaffold a Playwright + local-mode project: `.testivai/config.json`
|
|
5
|
+
* (mode: local), the baselines directory, and the .gitignore entries.
|
|
6
|
+
*
|
|
7
|
+
* This is the local-first, no-account setup — deliberately NOT the CDP
|
|
8
|
+
* `browserPort` sidecar config, which does not apply to the Playwright
|
|
9
|
+
* reporter flow. Idempotent: an existing config is left untouched unless
|
|
10
|
+
* `force` is set. Returns the list of paths created/updated.
|
|
11
|
+
*/
|
|
12
|
+
export declare function scaffoldPlaywrightLocal(cwd: string, force?: boolean): string[];
|
|
2
13
|
export declare const initCommand: Command;
|
|
3
14
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuEpC,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAcxD;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,MAAM,EAAE,CA+B5E;AAYD,eAAO,MAAM,WAAW,SA4NpB,CAAC"}
|
package/dist/commands/init.js
CHANGED
|
@@ -37,6 +37,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.initCommand = void 0;
|
|
40
|
+
exports.isPlaywrightProject = isPlaywrightProject;
|
|
41
|
+
exports.scaffoldPlaywrightLocal = scaffoldPlaywrightLocal;
|
|
40
42
|
const commander_1 = require("commander");
|
|
41
43
|
const chalk_1 = __importDefault(require("chalk"));
|
|
42
44
|
const fs = __importStar(require("fs"));
|
|
@@ -114,6 +116,44 @@ function isPlaywrightProject(cwd) {
|
|
|
114
116
|
return false;
|
|
115
117
|
}
|
|
116
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* Scaffold a Playwright + local-mode project: `.testivai/config.json`
|
|
121
|
+
* (mode: local), the baselines directory, and the .gitignore entries.
|
|
122
|
+
*
|
|
123
|
+
* This is the local-first, no-account setup — deliberately NOT the CDP
|
|
124
|
+
* `browserPort` sidecar config, which does not apply to the Playwright
|
|
125
|
+
* reporter flow. Idempotent: an existing config is left untouched unless
|
|
126
|
+
* `force` is set. Returns the list of paths created/updated.
|
|
127
|
+
*/
|
|
128
|
+
function scaffoldPlaywrightLocal(cwd, force = false) {
|
|
129
|
+
const created = [];
|
|
130
|
+
if (force || !(0, local_config_1.localConfigExists)(cwd)) {
|
|
131
|
+
(0, local_config_1.createDefaultConfig)(cwd, { mode: 'local' });
|
|
132
|
+
created.push('.testivai/config.json');
|
|
133
|
+
}
|
|
134
|
+
// Race-free: mkdir recursive never throws on an existing dir and returns the
|
|
135
|
+
// first path it created (undefined if it already existed) — no check-then-act.
|
|
136
|
+
const baselinesDir = path.join(cwd, '.testivai', 'baselines');
|
|
137
|
+
if (fs.mkdirSync(baselinesDir, { recursive: true })) {
|
|
138
|
+
created.push('.testivai/baselines/');
|
|
139
|
+
}
|
|
140
|
+
// Race-free: read-or-empty instead of exists-then-read; appendFileSync
|
|
141
|
+
// creates the file when it's absent, so no separate write branch is needed.
|
|
142
|
+
const gitignorePath = path.join(cwd, '.gitignore');
|
|
143
|
+
const block = '\n# TestivAI local mode\n.testivai/temp/\nvisual-report/\n';
|
|
144
|
+
let existing = '';
|
|
145
|
+
try {
|
|
146
|
+
existing = fs.readFileSync(gitignorePath, 'utf-8');
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
existing = '';
|
|
150
|
+
}
|
|
151
|
+
if (!existing.includes('.testivai/temp/')) {
|
|
152
|
+
fs.appendFileSync(gitignorePath, block);
|
|
153
|
+
created.push('.gitignore');
|
|
154
|
+
}
|
|
155
|
+
return created;
|
|
156
|
+
}
|
|
117
157
|
function printBox(lines) {
|
|
118
158
|
const width = Math.max(...lines.map((l) => l.length)) + 4;
|
|
119
159
|
console.log(chalk_1.default.cyan(' ┌' + '─'.repeat(width) + '┐'));
|
|
@@ -127,9 +167,43 @@ exports.initCommand = new commander_1.Command('init')
|
|
|
127
167
|
.description('Initialize TestivAI Witness SDK in your project')
|
|
128
168
|
.option('-f, --force', 'Overwrite existing configuration files')
|
|
129
169
|
.option('-y, --yes', 'Skip prompts and use auto-detected framework')
|
|
170
|
+
.option('--json', 'Print a machine-readable result to stdout (Playwright projects)')
|
|
130
171
|
.action(async (options) => {
|
|
131
172
|
try {
|
|
132
173
|
const cwd = process.cwd();
|
|
174
|
+
// ── Playwright projects: dedicated reporter + local mode ──────────────
|
|
175
|
+
// Detect FIRST — before --yes / framework detection — so a Playwright
|
|
176
|
+
// repo always gets the reporter flow and .testivai/config.json, never
|
|
177
|
+
// the CDP browserPort sidecar config.
|
|
178
|
+
if (isPlaywrightProject(cwd)) {
|
|
179
|
+
const created = scaffoldPlaywrightLocal(cwd, options.force ?? false);
|
|
180
|
+
if (options.json) {
|
|
181
|
+
process.stdout.write(JSON.stringify({ framework: 'playwright', mode: 'local', created }) + '\n');
|
|
182
|
+
return; // exit 0
|
|
183
|
+
}
|
|
184
|
+
console.log();
|
|
185
|
+
console.log(chalk_1.default.green.bold(' ✓ TestivAI is set up for Playwright (local mode).'));
|
|
186
|
+
if (created.length > 0) {
|
|
187
|
+
created.forEach((f) => console.log(chalk_1.default.green(` ✓ ${f}`)));
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
console.log(chalk_1.default.gray(' (already configured — nothing to change)'));
|
|
191
|
+
}
|
|
192
|
+
console.log();
|
|
193
|
+
console.log(chalk_1.default.cyan(' 1. Add the reporter to playwright.config.ts:'));
|
|
194
|
+
console.log(chalk_1.default.gray(' reporter: [') + chalk_1.default.white("['list'], ['@testivai/witness-playwright/reporter']") + chalk_1.default.gray('],'));
|
|
195
|
+
console.log();
|
|
196
|
+
console.log(chalk_1.default.cyan(' 2. Capture a snapshot in a test:'));
|
|
197
|
+
console.log(chalk_1.default.gray(" import { snapshot } from '@testivai/witness-playwright';"));
|
|
198
|
+
console.log(chalk_1.default.gray(" await snapshot(page, testInfo, 'homepage');"));
|
|
199
|
+
console.log();
|
|
200
|
+
console.log(chalk_1.default.cyan(' 3. Run, review, approve:'));
|
|
201
|
+
console.log(chalk_1.default.gray(' npx playwright test'));
|
|
202
|
+
console.log(chalk_1.default.gray(' open visual-report/index.html'));
|
|
203
|
+
console.log(chalk_1.default.gray(' npx testivai approve --all # then commit .testivai/baselines/'));
|
|
204
|
+
console.log();
|
|
205
|
+
return; // exit 0
|
|
206
|
+
}
|
|
133
207
|
// ── Auto-detect mode (--yes flag) ─────────────────────────────────────
|
|
134
208
|
if (options.yes) {
|
|
135
209
|
logger_1.logger.info('Initializing TestivAI Witness SDK...');
|
|
@@ -154,17 +228,6 @@ ${chalk_1.default.gray('For more information, see: https://docs.testiv.ai')}
|
|
|
154
228
|
logger_1.logger.success('Initialization complete!');
|
|
155
229
|
return;
|
|
156
230
|
}
|
|
157
|
-
// ── Playwright early-exit ──────────────────────────────────────────────
|
|
158
|
-
if (isPlaywrightProject(cwd)) {
|
|
159
|
-
console.log();
|
|
160
|
-
console.log(chalk_1.default.yellow('⚠ Playwright detected in this project.'));
|
|
161
|
-
console.log();
|
|
162
|
-
console.log('For Playwright, use the dedicated SDK instead:');
|
|
163
|
-
console.log(chalk_1.default.cyan(' npm install @testivai/witness-playwright'));
|
|
164
|
-
console.log(chalk_1.default.gray(' Docs: https://testiv.ai/docs#playwright'));
|
|
165
|
-
console.log();
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
231
|
// ── Interactive wizard ─────────────────────────────────────────────────
|
|
169
232
|
console.log();
|
|
170
233
|
console.log(chalk_1.default.cyan.bold(' ╔══════════════════════════════════════╗'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,16 @@ import { Command } from 'commander';
|
|
|
9
9
|
* then shells out to this command for diffing, tolerances, the report, and
|
|
10
10
|
* CI exit codes. The JS adapters call generateReport() in-process; this is
|
|
11
11
|
* the same pipeline behind a CLI.
|
|
12
|
+
*
|
|
13
|
+
* Exit codes (a public contract, applied when the gate is on — `--fail-on-diff`
|
|
14
|
+
* or config `failOnDiff`):
|
|
15
|
+
* 0 pass — nothing changed (and no new snapshots, unless --allow-new)
|
|
16
|
+
* 1 changed — at least one snapshot differs from its baseline
|
|
17
|
+
* 2 new-only — no changes, but new snapshots exist (no baseline yet).
|
|
18
|
+
* Distinct from failures so first runs / added tests aren't
|
|
19
|
+
* mistaken for regressions. Pass `--allow-new` to treat new
|
|
20
|
+
* snapshots as passing (exit 0).
|
|
21
|
+
* Without the gate, the command always exits 0 (report-only).
|
|
12
22
|
*/
|
|
13
23
|
export declare const reportCommand: Command;
|
|
14
24
|
//# sourceMappingURL=report.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,aAAa,SA6DtB,CAAC"}
|
package/dist/commands/report.js
CHANGED
|
@@ -9,6 +9,7 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
9
9
|
const generator_1 = require("../report/generator");
|
|
10
10
|
const local_config_1 = require("../config/local-config");
|
|
11
11
|
const logger_1 = require("../utils/logger");
|
|
12
|
+
const exit_codes_1 = require("./exit-codes");
|
|
12
13
|
/**
|
|
13
14
|
* `testivai report` — compare temp captures against baselines and write the
|
|
14
15
|
* HTML report + results.json.
|
|
@@ -19,11 +20,23 @@ const logger_1 = require("../utils/logger");
|
|
|
19
20
|
* then shells out to this command for diffing, tolerances, the report, and
|
|
20
21
|
* CI exit codes. The JS adapters call generateReport() in-process; this is
|
|
21
22
|
* the same pipeline behind a CLI.
|
|
23
|
+
*
|
|
24
|
+
* Exit codes (a public contract, applied when the gate is on — `--fail-on-diff`
|
|
25
|
+
* or config `failOnDiff`):
|
|
26
|
+
* 0 pass — nothing changed (and no new snapshots, unless --allow-new)
|
|
27
|
+
* 1 changed — at least one snapshot differs from its baseline
|
|
28
|
+
* 2 new-only — no changes, but new snapshots exist (no baseline yet).
|
|
29
|
+
* Distinct from failures so first runs / added tests aren't
|
|
30
|
+
* mistaken for regressions. Pass `--allow-new` to treat new
|
|
31
|
+
* snapshots as passing (exit 0).
|
|
32
|
+
* Without the gate, the command always exits 0 (report-only).
|
|
22
33
|
*/
|
|
23
34
|
exports.reportCommand = new commander_1.Command('report')
|
|
24
35
|
.description('Compare captured temp snapshots against baselines and generate the visual report. ' +
|
|
25
36
|
'For non-JS adapters: write .testivai/temp/<name>/screenshot.png (+ dom.html), then run this.')
|
|
26
|
-
.option('--fail-on-diff', 'Exit non-zero
|
|
37
|
+
.option('--fail-on-diff', 'Exit non-zero on changes (1) / new-only (2); overrides config failOnDiff')
|
|
38
|
+
.option('--allow-new', 'Treat new snapshots as passing (exit 0) — for first runs before baselines exist')
|
|
39
|
+
.option('--json', 'Print the machine-readable results.json payload to stdout instead of the pretty summary')
|
|
27
40
|
.option('--open', 'Open the HTML report in a browser (overrides config autoOpen)')
|
|
28
41
|
.action(async (options) => {
|
|
29
42
|
try {
|
|
@@ -33,28 +46,42 @@ exports.reportCommand = new commander_1.Command('report')
|
|
|
33
46
|
projectRoot,
|
|
34
47
|
reportDir: config.reportDir ?? 'visual-report',
|
|
35
48
|
threshold: config.threshold,
|
|
36
|
-
|
|
49
|
+
// Never pop a browser open while emitting machine output.
|
|
50
|
+
autoOpen: options.json ? false : (options.open ?? config.autoOpen),
|
|
37
51
|
// NOTE: `version` here is the results.json SCHEMA version (a public
|
|
38
52
|
// contract), not the package version — conflating them shipped
|
|
39
53
|
// results.json files labeled 1.3.1. Omitted → schema default.
|
|
40
54
|
});
|
|
41
55
|
const { summary } = report;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
console.log(chalk_1.default.gray(` Review: ${config.reportDir ?? 'visual-report'}/index.html — approve with: npx testivai approve <name>`));
|
|
56
|
+
// Exit-code contract (only enforced when the gate is on).
|
|
57
|
+
const gate = options.failOnDiff ?? config.failOnDiff ?? false;
|
|
58
|
+
const exitCode = (0, exit_codes_1.reportExitCode)(summary, { gate, allowNew: options.allowNew });
|
|
59
|
+
if (options.json) {
|
|
60
|
+
// `report` IS the results.json schema — emit it verbatim so agents get
|
|
61
|
+
// one stable, parseable contract (summary + per-snapshot regions).
|
|
62
|
+
process.stdout.write(JSON.stringify(report, null, 2) + '\n');
|
|
50
63
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
64
|
+
else {
|
|
65
|
+
console.log();
|
|
66
|
+
console.log(chalk_1.default.cyan.bold(' ═══ TestivAI Visual Report ═══'));
|
|
67
|
+
console.log(` Total: ${summary.total} | Passed: ${summary.passed} | Changed: ${summary.changed} | New: ${summary.newSnapshots}`);
|
|
68
|
+
if (summary.newSnapshots > 0) {
|
|
69
|
+
console.log(chalk_1.default.gray(' New baselines: npx testivai approve --all (then commit .testivai/baselines/)'));
|
|
70
|
+
}
|
|
71
|
+
if (summary.changed > 0) {
|
|
72
|
+
console.log(chalk_1.default.gray(` Review: ${config.reportDir ?? 'visual-report'}/index.html — approve with: npx testivai approve <name>`));
|
|
73
|
+
}
|
|
54
74
|
}
|
|
75
|
+
// exitCode is already 0 when the gate is off (report-only).
|
|
76
|
+
process.exitCode = exitCode;
|
|
55
77
|
}
|
|
56
78
|
catch (error) {
|
|
57
|
-
|
|
79
|
+
if (options.json) {
|
|
80
|
+
process.stdout.write(JSON.stringify({ error: error instanceof Error ? error.message : String(error) }) + '\n');
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
logger_1.logger.error('Report generation failed:', error);
|
|
84
|
+
}
|
|
58
85
|
process.exit(1);
|
|
59
86
|
}
|
|
60
87
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,kDAA0B;AAC1B,mDAAqD;AACrD,yDAAyD;AACzD,4CAAyC;
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"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"}
|