@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.
@@ -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
- if (!process.argv.includes('--quiet') && !process.argv.includes('-q')) {
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
  });
@@ -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,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtE,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
+ {"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,SA8GvB,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"}
@@ -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
- console.log(chalk_1.default.yellow(' No temp snapshots found. Run your tests first.'));
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
- let approved = 0;
71
+ const approvedNames = [];
72
+ const failed = [];
68
73
  for (const snapName of tempNames) {
69
74
  try {
70
75
  store.approve(snapName);
71
- console.log(chalk_1.default.green(` ✓ Approved: ${snapName}`));
72
- approved++;
76
+ approvedNames.push(snapName);
77
+ if (!options.json)
78
+ console.log(chalk_1.default.green(` ✓ Approved: ${snapName}`));
73
79
  }
74
80
  catch (err) {
75
- logger_1.logger.error(` ✗ Failed to approve "${snapName}": ${err.message}`);
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
- console.log();
79
- console.log(chalk_1.default.cyan(` ${approved}/${tempNames.length} snapshot(s) approved.`));
80
- console.log(chalk_1.default.gray(' git add .testivai/baselines/'));
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
- console.log(chalk_1.default.green(` ✓ Approved: ${name}`));
88
- console.log(chalk_1.default.gray(` git add .testivai/baselines/${name}/`));
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
- logger_1.logger.error(err.message);
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":"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"}
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"}
@@ -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;AAiGpC,eAAO,MAAM,WAAW,SAoMpB,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"}
@@ -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;AAMpC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,SA8CtB,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"}
@@ -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 when any snapshot is changed (overrides config failOnDiff)')
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
- autoOpen: options.open ?? config.autoOpen,
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
- console.log();
43
- console.log(chalk_1.default.cyan.bold(' ═══ TestivAI Visual Report ═══'));
44
- console.log(` Total: ${summary.total} | Passed: ${summary.passed} | Changed: ${summary.changed} | New: ${summary.newSnapshots}`);
45
- if (summary.newSnapshots > 0) {
46
- console.log(chalk_1.default.gray(' New baselines: npx testivai approve --all (then commit .testivai/baselines/)'));
47
- }
48
- if (summary.changed > 0) {
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
- const failOnDiff = options.failOnDiff ?? config.failOnDiff;
52
- if (failOnDiff && summary.changed > 0) {
53
- process.exitCode = 1;
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
- logger_1.logger.error('Report generation failed:', error);
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;AAEzC;;;;;;;;;;GAUG;AACU,QAAA,aAAa,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CACV,oFAAoF;IAClF,8FAA8F,CACjG;KACA,MAAM,CAAC,gBAAgB,EAAE,0EAA0E,CAAC;KACpG,MAAM,CAAC,QAAQ,EAAE,+DAA+D,CAAC;KACjF,MAAM,CAAC,KAAK,EAAE,OAAiD,EAAE,EAAE;IAClE,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAA,8BAAe,EAAC,WAAW,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,IAAA,0BAAc,EAAC;YAC5B,WAAW;YACX,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,eAAe;YAC9C,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,QAAQ,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ;YACzC,oEAAoE;YACpE,+DAA+D;YAC/D,8DAA8D;SAE/D,CAAC,CAAC;QAEH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAC3B,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CACT,YAAY,OAAO,CAAC,KAAK,gBAAgB,OAAO,CAAC,MAAM,iBAAiB,OAAO,CAAC,OAAO,aAAa,OAAO,CAAC,YAAY,EAAE,CAC3H,CAAC;QACF,IAAI,OAAO,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC,CAAC;QAC9G,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,SAAS,IAAI,eAAe,yDAAyD,CAAC,CACtH,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC;QAC3D,IAAI,UAAU,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testivai/witness",
3
- "version": "1.6.0",
3
+ "version": "1.7.0",
4
4
  "description": "Framework-agnostic visual regression testing CLI for TestivAI",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",