cbrowser 18.23.0 → 18.25.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/analysis/accessibility-empathy.d.ts.map +1 -1
- package/dist/analysis/accessibility-empathy.js +60 -11
- package/dist/analysis/accessibility-empathy.js.map +1 -1
- package/dist/analysis/agent-ready-audit.d.ts.map +1 -1
- package/dist/analysis/agent-ready-audit.js +115 -3
- package/dist/analysis/agent-ready-audit.js.map +1 -1
- package/dist/analysis/competitive-benchmark.d.ts.map +1 -1
- package/dist/analysis/competitive-benchmark.js +6 -1
- package/dist/analysis/competitive-benchmark.js.map +1 -1
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +4 -2
- package/dist/browser.js.map +1 -1
- package/dist/cli.js +35 -0
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/mcp-tools/base/audit-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/audit-tools.js +7 -0
- package/dist/mcp-tools/base/audit-tools.js.map +1 -1
- package/dist/mcp-tools/base/index.d.ts +1 -1
- package/dist/mcp-tools/base/index.js +1 -1
- package/dist/mcp-tools/base/remediation-tools.js +1 -1
- package/dist/mcp-tools/base/remediation-tools.js.map +1 -1
- package/dist/mcp-tools/base/visual-testing-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/visual-testing-tools.js +112 -0
- package/dist/mcp-tools/base/visual-testing-tools.js.map +1 -1
- package/dist/remediation/structured-data.d.ts +13 -0
- package/dist/remediation/structured-data.d.ts.map +1 -1
- package/dist/remediation/structured-data.js +130 -21
- package/dist/remediation/structured-data.js.map +1 -1
- package/dist/types.d.ts +33 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/visual/distance-metrics.d.ts +260 -0
- package/dist/visual/distance-metrics.d.ts.map +1 -0
- package/dist/visual/distance-metrics.js +914 -0
- package/dist/visual/distance-metrics.js.map +1 -0
- package/dist/visual/index.d.ts +1 -0
- package/dist/visual/index.d.ts.map +1 -1
- package/dist/visual/index.js +1 -0
- package/dist/visual/index.js.map +1 -1
- package/dist/visual/regression.d.ts +89 -0
- package/dist/visual/regression.d.ts.map +1 -1
- package/dist/visual/regression.js +446 -5
- package/dist/visual/regression.js.map +1 -1
- package/docs/Tools-Overview.md +18 -5
- package/package.json +2 -1
|
@@ -12,6 +12,7 @@ import { existsSync, readFileSync, writeFileSync, mkdirSync, unlinkSync } from "
|
|
|
12
12
|
import { join } from "path";
|
|
13
13
|
import { homedir } from "os";
|
|
14
14
|
import { CBrowser } from "../browser.js";
|
|
15
|
+
import { computeCombinedDistance, computeSmartBaseline, compareAgainstSmartBaseline, computeTransportMap, } from "./distance-metrics.js";
|
|
15
16
|
/**
|
|
16
17
|
* Get the path to visual baselines storage
|
|
17
18
|
*/
|
|
@@ -150,6 +151,339 @@ export function deleteVisualBaseline(name) {
|
|
|
150
151
|
saveVisualBaselines(filtered);
|
|
151
152
|
return true;
|
|
152
153
|
}
|
|
154
|
+
// ── Smart Baseline Storage ──
|
|
155
|
+
function getSmartBaselinesPath() {
|
|
156
|
+
const baseDir = process.env.CBROWSER_DATA_DIR || join(homedir(), ".cbrowser");
|
|
157
|
+
const dir = join(baseDir, "smart-baselines");
|
|
158
|
+
if (!existsSync(dir))
|
|
159
|
+
mkdirSync(dir, { recursive: true });
|
|
160
|
+
return dir;
|
|
161
|
+
}
|
|
162
|
+
function loadSmartBaselines() {
|
|
163
|
+
const indexPath = join(getSmartBaselinesPath(), "smart-baselines.json");
|
|
164
|
+
if (!existsSync(indexPath))
|
|
165
|
+
return [];
|
|
166
|
+
try {
|
|
167
|
+
const data = JSON.parse(readFileSync(indexPath, "utf-8"));
|
|
168
|
+
// Restore Float64Arrays from JSON
|
|
169
|
+
return (data.baselines || []).map((b) => ({
|
|
170
|
+
...b,
|
|
171
|
+
barycenter: {
|
|
172
|
+
r: new Float64Array(b.barycenter.r),
|
|
173
|
+
g: new Float64Array(b.barycenter.g),
|
|
174
|
+
b: new Float64Array(b.barycenter.b),
|
|
175
|
+
},
|
|
176
|
+
}));
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
return [];
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
function saveSmartBaselines(baselines) {
|
|
183
|
+
const indexPath = join(getSmartBaselinesPath(), "smart-baselines.json");
|
|
184
|
+
// Convert Float64Arrays to regular arrays for JSON
|
|
185
|
+
const serializable = baselines.map(b => ({
|
|
186
|
+
...b,
|
|
187
|
+
barycenter: {
|
|
188
|
+
r: Array.from(b.barycenter.r),
|
|
189
|
+
g: Array.from(b.barycenter.g),
|
|
190
|
+
b: Array.from(b.barycenter.b),
|
|
191
|
+
},
|
|
192
|
+
}));
|
|
193
|
+
writeFileSync(indexPath, JSON.stringify({ baselines: serializable, updated: new Date().toISOString() }, null, 2));
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Capture a Smart Barycenter Baseline.
|
|
197
|
+
*
|
|
198
|
+
* Takes N screenshots of a URL with delays between captures,
|
|
199
|
+
* computes the Wasserstein barycenter (optimal consensus),
|
|
200
|
+
* rejects outlier captures, and selects the median reference image.
|
|
201
|
+
*
|
|
202
|
+
* The result is a baseline that represents the "typical" rendering —
|
|
203
|
+
* robust to timing variations, dynamic content, animation states,
|
|
204
|
+
* and other sources of non-deterministic rendering.
|
|
205
|
+
*
|
|
206
|
+
* @since v18.0.0
|
|
207
|
+
* @see https://github.com/alexandriashai/cbrowser/issues/158
|
|
208
|
+
*/
|
|
209
|
+
export async function captureSmartBaseline(url, name, options = {}) {
|
|
210
|
+
const numCaptures = options.numCaptures || 5;
|
|
211
|
+
const captureDelay = options.captureDelay || 1500;
|
|
212
|
+
const browser = new CBrowser({
|
|
213
|
+
device: options.device,
|
|
214
|
+
viewportWidth: options.viewport?.width || 1920,
|
|
215
|
+
viewportHeight: options.viewport?.height || 1080,
|
|
216
|
+
});
|
|
217
|
+
const screenshotsPath = join(getSmartBaselinesPath(), "screenshots");
|
|
218
|
+
if (!existsSync(screenshotsPath))
|
|
219
|
+
mkdirSync(screenshotsPath, { recursive: true });
|
|
220
|
+
const capturePaths = [];
|
|
221
|
+
try {
|
|
222
|
+
await browser.launch();
|
|
223
|
+
await browser.navigate(url);
|
|
224
|
+
// Wait if specified
|
|
225
|
+
if (options.waitFor) {
|
|
226
|
+
if (typeof options.waitFor === "number") {
|
|
227
|
+
await new Promise(resolve => setTimeout(resolve, options.waitFor));
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
const page = await browser.getPage();
|
|
231
|
+
await page.waitForSelector(options.waitFor, { timeout: 10000 }).catch(() => { });
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
const page = await browser.getPage();
|
|
235
|
+
// Capture N screenshots
|
|
236
|
+
for (let i = 0; i < numCaptures; i++) {
|
|
237
|
+
const id = `${name.toLowerCase().replace(/[^a-z0-9]+/g, "-")}-${Date.now()}-${i}`;
|
|
238
|
+
const capturePath = join(screenshotsPath, `${id}.png`);
|
|
239
|
+
if (options.selector) {
|
|
240
|
+
const element = page.locator(options.selector).first();
|
|
241
|
+
await element.screenshot({ path: capturePath });
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
await page.screenshot({ path: capturePath, fullPage: false });
|
|
245
|
+
}
|
|
246
|
+
capturePaths.push(capturePath);
|
|
247
|
+
// Delay between captures (except last)
|
|
248
|
+
if (i < numCaptures - 1) {
|
|
249
|
+
await new Promise(resolve => setTimeout(resolve, captureDelay));
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
finally {
|
|
254
|
+
await browser.close();
|
|
255
|
+
}
|
|
256
|
+
// Compute smart baseline
|
|
257
|
+
const baseline = await computeSmartBaseline(capturePaths, name, url, {
|
|
258
|
+
downscale: 0.5,
|
|
259
|
+
outlierThreshold: options.outlierThreshold || 2.0,
|
|
260
|
+
});
|
|
261
|
+
// Save to index
|
|
262
|
+
const baselines = loadSmartBaselines();
|
|
263
|
+
const filtered = baselines.filter(b => b.name !== name);
|
|
264
|
+
filtered.push(baseline);
|
|
265
|
+
saveSmartBaselines(filtered);
|
|
266
|
+
return baseline;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* List all smart baselines
|
|
270
|
+
*/
|
|
271
|
+
export function listSmartBaselines() {
|
|
272
|
+
return loadSmartBaselines();
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Get a smart baseline by name
|
|
276
|
+
*/
|
|
277
|
+
export function getSmartBaseline(name) {
|
|
278
|
+
return loadSmartBaselines().find(b => b.name === name);
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Delete a smart baseline and its screenshots
|
|
282
|
+
*/
|
|
283
|
+
export function deleteSmartBaseline(name) {
|
|
284
|
+
const baselines = loadSmartBaselines();
|
|
285
|
+
const baseline = baselines.find(b => b.name === name);
|
|
286
|
+
if (!baseline)
|
|
287
|
+
return false;
|
|
288
|
+
// Delete capture files
|
|
289
|
+
for (const path of baseline.capturePaths) {
|
|
290
|
+
if (existsSync(path))
|
|
291
|
+
unlinkSync(path);
|
|
292
|
+
}
|
|
293
|
+
const filtered = baselines.filter(b => b.name !== name);
|
|
294
|
+
saveSmartBaselines(filtered);
|
|
295
|
+
return true;
|
|
296
|
+
}
|
|
297
|
+
export async function runSmartRegression(url, baselineName, options = {}) {
|
|
298
|
+
const baseline = getSmartBaseline(baselineName);
|
|
299
|
+
if (!baseline) {
|
|
300
|
+
return {
|
|
301
|
+
baselineName,
|
|
302
|
+
url,
|
|
303
|
+
passed: false,
|
|
304
|
+
analysis: {
|
|
305
|
+
overallStatus: "fail",
|
|
306
|
+
summary: `Smart baseline "${baselineName}" not found. Capture one first with captureSmartBaseline().`,
|
|
307
|
+
changes: [],
|
|
308
|
+
similarityScore: 0,
|
|
309
|
+
productionReady: false,
|
|
310
|
+
confidence: 1,
|
|
311
|
+
},
|
|
312
|
+
baselineScreenshot: "",
|
|
313
|
+
currentScreenshot: "",
|
|
314
|
+
timestamp: new Date().toISOString(),
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
// Capture current screenshot
|
|
318
|
+
const browser = new CBrowser({
|
|
319
|
+
viewportWidth: baseline.url ? 1920 : 1920,
|
|
320
|
+
viewportHeight: 1080,
|
|
321
|
+
});
|
|
322
|
+
const screenshotsPath = getVisualScreenshotsPath();
|
|
323
|
+
const currentPath = join(screenshotsPath, `current-${Date.now()}.png`);
|
|
324
|
+
try {
|
|
325
|
+
await browser.launch();
|
|
326
|
+
await browser.navigate(url);
|
|
327
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
328
|
+
const page = await browser.getPage();
|
|
329
|
+
await page.screenshot({ path: currentPath, fullPage: false });
|
|
330
|
+
}
|
|
331
|
+
finally {
|
|
332
|
+
await browser.close();
|
|
333
|
+
}
|
|
334
|
+
// Compare against smart baseline
|
|
335
|
+
const result = await compareAgainstSmartBaseline(currentPath, baseline, options.wassersteinConfig);
|
|
336
|
+
// Use adaptive threshold from baseline (or override)
|
|
337
|
+
const threshold = options.threshold || baseline.adaptiveThreshold;
|
|
338
|
+
const passed = result.normalizedScore >= threshold;
|
|
339
|
+
const changes = [];
|
|
340
|
+
let overallStatus = "pass";
|
|
341
|
+
if (!passed) {
|
|
342
|
+
if (result.normalizedScore < threshold - 0.15) {
|
|
343
|
+
overallStatus = "fail";
|
|
344
|
+
changes.push({
|
|
345
|
+
type: "layout",
|
|
346
|
+
severity: "breaking",
|
|
347
|
+
region: { x: 0, y: 0, width: 1920, height: 1080 },
|
|
348
|
+
description: `Visual change exceeds smart baseline variance (score: ${result.normalizedScore.toFixed(3)}, threshold: ${threshold.toFixed(3)}, variance ratio: ${result.varianceRatio.toFixed(1)}σ)`,
|
|
349
|
+
reasoning: result.withinVariance
|
|
350
|
+
? "Change is within observed render variance but below threshold"
|
|
351
|
+
: "Change exceeds the natural variance observed during baseline creation",
|
|
352
|
+
confidence: 0.92,
|
|
353
|
+
suggestion: "This appears to be a real visual change, not rendering noise",
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
overallStatus = "warning";
|
|
358
|
+
changes.push({
|
|
359
|
+
type: "content",
|
|
360
|
+
severity: "warning",
|
|
361
|
+
region: { x: 0, y: 0, width: 1920, height: 1080 },
|
|
362
|
+
description: `Marginal visual change near smart baseline threshold (score: ${result.normalizedScore.toFixed(3)}, threshold: ${threshold.toFixed(3)})`,
|
|
363
|
+
reasoning: "Change is close to the boundary of expected variance",
|
|
364
|
+
confidence: 0.8,
|
|
365
|
+
suggestion: "May be a real change or an unusually noisy render — consider re-running",
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
const channelInfo = result.details.channelDistances
|
|
370
|
+
? ` | R: ${result.details.channelDistances.r.toFixed(4)}, G: ${result.details.channelDistances.g.toFixed(4)}, B: ${result.details.channelDistances.b.toFixed(4)}`
|
|
371
|
+
: '';
|
|
372
|
+
return {
|
|
373
|
+
baselineName,
|
|
374
|
+
url,
|
|
375
|
+
passed,
|
|
376
|
+
analysis: {
|
|
377
|
+
overallStatus,
|
|
378
|
+
summary: passed
|
|
379
|
+
? `Visual regression passed (score: ${result.normalizedScore.toFixed(3)} ≥ adaptive threshold: ${threshold.toFixed(3)}, within ${result.varianceRatio.toFixed(1)}σ of baseline variance)`
|
|
380
|
+
: `Visual regression ${overallStatus}: score ${result.normalizedScore.toFixed(3)} < threshold ${threshold.toFixed(3)}`,
|
|
381
|
+
changes,
|
|
382
|
+
similarityScore: result.normalizedScore,
|
|
383
|
+
productionReady: passed,
|
|
384
|
+
confidence: 0.92,
|
|
385
|
+
rawAnalysis: `Smart baseline comparison (${baseline.numCaptures} captures, ${baseline.numOutliers} outliers rejected, adaptive threshold ${threshold.toFixed(3)})${channelInfo} | ${result.details.computeTimeMs?.toFixed(0)}ms`,
|
|
386
|
+
},
|
|
387
|
+
baselineScreenshot: baseline.referencePath,
|
|
388
|
+
currentScreenshot: currentPath,
|
|
389
|
+
timestamp: new Date().toISOString(),
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Generate a Visual Transport Map between two screenshots.
|
|
394
|
+
*
|
|
395
|
+
* Shows WHERE visual mass moved, not just THAT it changed.
|
|
396
|
+
* Produces:
|
|
397
|
+
* - A heatmap of change magnitude per grid cell
|
|
398
|
+
* - Flow arrows showing how content shifted
|
|
399
|
+
* - Hotspot regions with the most significant changes
|
|
400
|
+
* - An SVG overlay visualization
|
|
401
|
+
*
|
|
402
|
+
* Can be used standalone or after a regression test to visualize what changed.
|
|
403
|
+
*
|
|
404
|
+
* @since v18.0.0 (Phase 3)
|
|
405
|
+
* @see https://github.com/alexandriashai/cbrowser/issues/158
|
|
406
|
+
*/
|
|
407
|
+
export async function generateTransportMap(baselinePath, currentPath, config) {
|
|
408
|
+
return computeTransportMap(baselinePath, currentPath, config);
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Run visual regression with transport map visualization.
|
|
412
|
+
*
|
|
413
|
+
* Combines Phase 1 (Wasserstein distance) with Phase 3 (transport map)
|
|
414
|
+
* for a complete "what changed and where" analysis.
|
|
415
|
+
*/
|
|
416
|
+
export async function runRegressionWithTransportMap(url, baselineName, options = {}) {
|
|
417
|
+
// Check for smart baseline first, fall back to regular
|
|
418
|
+
const smartBaseline = getSmartBaseline(baselineName);
|
|
419
|
+
const regularBaseline = getVisualBaseline(baselineName);
|
|
420
|
+
if (!smartBaseline && !regularBaseline) {
|
|
421
|
+
return {
|
|
422
|
+
baselineName,
|
|
423
|
+
url,
|
|
424
|
+
passed: false,
|
|
425
|
+
analysis: {
|
|
426
|
+
overallStatus: "fail",
|
|
427
|
+
summary: `Baseline "${baselineName}" not found.`,
|
|
428
|
+
changes: [],
|
|
429
|
+
similarityScore: 0,
|
|
430
|
+
productionReady: false,
|
|
431
|
+
confidence: 1,
|
|
432
|
+
},
|
|
433
|
+
baselineScreenshot: "",
|
|
434
|
+
currentScreenshot: "",
|
|
435
|
+
timestamp: new Date().toISOString(),
|
|
436
|
+
};
|
|
437
|
+
}
|
|
438
|
+
const baselineScreenshot = smartBaseline?.referencePath || regularBaseline.screenshotPath;
|
|
439
|
+
// Capture current screenshot
|
|
440
|
+
const browser = new CBrowser({ viewportWidth: 1920, viewportHeight: 1080 });
|
|
441
|
+
const screenshotsPath = getVisualScreenshotsPath();
|
|
442
|
+
const currentPath = join(screenshotsPath, `current-${Date.now()}.png`);
|
|
443
|
+
try {
|
|
444
|
+
await browser.launch();
|
|
445
|
+
await browser.navigate(url);
|
|
446
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
447
|
+
const page = await browser.getPage();
|
|
448
|
+
await page.screenshot({ path: currentPath, fullPage: false });
|
|
449
|
+
}
|
|
450
|
+
finally {
|
|
451
|
+
await browser.close();
|
|
452
|
+
}
|
|
453
|
+
// Run Wasserstein analysis
|
|
454
|
+
const analysis = await performWassersteinAnalysis(baselineScreenshot, currentPath, options);
|
|
455
|
+
// Generate transport map
|
|
456
|
+
const transportMap = await computeTransportMap(baselineScreenshot, currentPath, options.transportMapConfig);
|
|
457
|
+
// Save SVG to disk
|
|
458
|
+
let transportMapSvgPath; // eslint-disable-line prefer-const
|
|
459
|
+
const baseDir = process.env.CBROWSER_DATA_DIR || join(homedir(), ".cbrowser");
|
|
460
|
+
const mapsDir = join(baseDir, "transport-maps");
|
|
461
|
+
if (!existsSync(mapsDir))
|
|
462
|
+
mkdirSync(mapsDir, { recursive: true });
|
|
463
|
+
transportMapSvgPath = join(mapsDir, `transport-map-${Date.now()}.svg`);
|
|
464
|
+
writeFileSync(transportMapSvgPath, transportMap.svg);
|
|
465
|
+
// Enhance analysis summary with transport map data
|
|
466
|
+
const hotspotSummary = transportMap.hotspots.length > 0
|
|
467
|
+
? ` | Hotspots: ${transportMap.hotspots.map(h => h.description).join('; ')}`
|
|
468
|
+
: '';
|
|
469
|
+
const threshold = options.threshold || 0.85;
|
|
470
|
+
const passed = analysis.similarityScore >= threshold;
|
|
471
|
+
return {
|
|
472
|
+
baselineName,
|
|
473
|
+
url,
|
|
474
|
+
passed,
|
|
475
|
+
analysis: {
|
|
476
|
+
...analysis,
|
|
477
|
+
summary: analysis.summary + hotspotSummary,
|
|
478
|
+
rawAnalysis: (analysis.rawAnalysis || '') + ` | Transport map: ${transportMap.flows.length} flows, ${transportMap.hotspots.length} hotspots, cost ${transportMap.totalCost.toFixed(4)}, ${transportMap.computeTimeMs.toFixed(0)}ms`,
|
|
479
|
+
},
|
|
480
|
+
baselineScreenshot,
|
|
481
|
+
currentScreenshot: currentPath,
|
|
482
|
+
timestamp: new Date().toISOString(),
|
|
483
|
+
transportMap,
|
|
484
|
+
transportMapSvgPath,
|
|
485
|
+
};
|
|
486
|
+
}
|
|
153
487
|
/**
|
|
154
488
|
* Analyze visual differences using AI
|
|
155
489
|
*/
|
|
@@ -225,9 +559,11 @@ Respond ONLY with the JSON, no other text.`;
|
|
|
225
559
|
{ type: "base64", media_type: "image/png", data: currentImage },
|
|
226
560
|
],
|
|
227
561
|
}));
|
|
228
|
-
//
|
|
229
|
-
|
|
230
|
-
const analysis =
|
|
562
|
+
// Use Wasserstein-enhanced analysis (v18.0.0) with byte-diff fallback
|
|
563
|
+
const distanceMetric = options.distanceMetric || 'wasserstein';
|
|
564
|
+
const analysis = distanceMetric === 'wasserstein' || distanceMetric === 'combined'
|
|
565
|
+
? await performWassersteinAnalysis(baselinePath, currentPath, options).catch(() => performHeuristicAnalysis(baselinePath, currentPath, options))
|
|
566
|
+
: performHeuristicAnalysis(baselinePath, currentPath, options);
|
|
231
567
|
// Clean up
|
|
232
568
|
if (existsSync(requestPath)) {
|
|
233
569
|
unlinkSync(requestPath);
|
|
@@ -238,8 +574,13 @@ Respond ONLY with the JSON, no other text.`;
|
|
|
238
574
|
catch (e) {
|
|
239
575
|
console.debug(`[CBrowser] AI visual analysis failed, using heuristics: ${e.message}`);
|
|
240
576
|
}
|
|
241
|
-
// Fallback:
|
|
242
|
-
|
|
577
|
+
// Fallback: Use Wasserstein if available, byte-diff otherwise
|
|
578
|
+
try {
|
|
579
|
+
return await performWassersteinAnalysis(baselinePath, currentPath, options);
|
|
580
|
+
}
|
|
581
|
+
catch {
|
|
582
|
+
return performHeuristicAnalysis(baselinePath, currentPath, options);
|
|
583
|
+
}
|
|
243
584
|
}
|
|
244
585
|
/**
|
|
245
586
|
* Perform heuristic visual analysis when AI is not available.
|
|
@@ -370,6 +711,106 @@ function performHeuristicAnalysis(baselinePath, currentPath, options = {}) {
|
|
|
370
711
|
rawAnalysis: "Byte-level PNG comparison (AI analysis not available)",
|
|
371
712
|
};
|
|
372
713
|
}
|
|
714
|
+
/**
|
|
715
|
+
* Perform Wasserstein-enhanced visual analysis.
|
|
716
|
+
* Uses Sliced Wasserstein Distance for robust comparison that handles
|
|
717
|
+
* sub-pixel shifts, anti-aliasing, and font rendering differences.
|
|
718
|
+
*
|
|
719
|
+
* @since v18.0.0
|
|
720
|
+
* @see https://github.com/alexandriashai/cbrowser/issues/158
|
|
721
|
+
*/
|
|
722
|
+
async function performWassersteinAnalysis(baselinePath, currentPath, options = {}) {
|
|
723
|
+
const result = await computeCombinedDistance(baselinePath, currentPath, { byteDiff: 0.2, wasserstein: 0.8 }, {
|
|
724
|
+
numProjections: 64,
|
|
725
|
+
compareMode: 'combined',
|
|
726
|
+
downscale: 0.5,
|
|
727
|
+
ignoreRegions: options.ignoreRegions,
|
|
728
|
+
...options.wassersteinConfig,
|
|
729
|
+
});
|
|
730
|
+
const similarityScore = Math.round(result.normalizedScore * 100) / 100;
|
|
731
|
+
const changes = [];
|
|
732
|
+
let overallStatus = "pass";
|
|
733
|
+
if (similarityScore < 0.7) {
|
|
734
|
+
changes.push({
|
|
735
|
+
type: "layout",
|
|
736
|
+
severity: "breaking",
|
|
737
|
+
region: { x: 0, y: 0, width: 1920, height: 1080 },
|
|
738
|
+
description: `Significant visual differences detected (Wasserstein distance: ${result.distance.toFixed(4)})`,
|
|
739
|
+
reasoning: "Optimal transport analysis shows substantial redistribution of visual content",
|
|
740
|
+
confidence: 0.9,
|
|
741
|
+
suggestion: "Review the visual changes manually — layout or content has materially changed",
|
|
742
|
+
});
|
|
743
|
+
overallStatus = "fail";
|
|
744
|
+
}
|
|
745
|
+
else if (similarityScore < 0.85) {
|
|
746
|
+
changes.push({
|
|
747
|
+
type: "content",
|
|
748
|
+
severity: "warning",
|
|
749
|
+
region: { x: 0, y: 0, width: 1920, height: 1080 },
|
|
750
|
+
description: `Moderate visual differences detected (Wasserstein distance: ${result.distance.toFixed(4)})`,
|
|
751
|
+
reasoning: "Optimal transport analysis shows meaningful visual distribution change",
|
|
752
|
+
confidence: 0.85,
|
|
753
|
+
suggestion: "Review to confirm changes are expected",
|
|
754
|
+
});
|
|
755
|
+
overallStatus = "warning";
|
|
756
|
+
}
|
|
757
|
+
else if (similarityScore < 0.98) {
|
|
758
|
+
changes.push({
|
|
759
|
+
type: "style",
|
|
760
|
+
severity: "info",
|
|
761
|
+
region: { x: 0, y: 0, width: 1920, height: 1080 },
|
|
762
|
+
description: `Minor visual differences detected (Wasserstein distance: ${result.distance.toFixed(4)})`,
|
|
763
|
+
reasoning: "Sub-pixel or rendering engine differences — within normal variation",
|
|
764
|
+
confidence: 0.8,
|
|
765
|
+
});
|
|
766
|
+
}
|
|
767
|
+
// Sensitivity adjustments
|
|
768
|
+
if (options.sensitivity === "low" && overallStatus === "warning") {
|
|
769
|
+
overallStatus = "pass";
|
|
770
|
+
}
|
|
771
|
+
else if (options.sensitivity === "high" && changes.length === 0 && result.distance > 0.001) {
|
|
772
|
+
changes.push({
|
|
773
|
+
type: "style",
|
|
774
|
+
severity: "info",
|
|
775
|
+
region: { x: 0, y: 0, width: 1920, height: 1080 },
|
|
776
|
+
description: "Very minor visual change detected by Wasserstein analysis",
|
|
777
|
+
reasoning: "Slight distribution shift detected at high sensitivity",
|
|
778
|
+
confidence: 0.5,
|
|
779
|
+
});
|
|
780
|
+
overallStatus = "warning";
|
|
781
|
+
}
|
|
782
|
+
// Cross-browser: Wasserstein naturally handles font rendering differences
|
|
783
|
+
// much better than byte-diff, so thresholds are less aggressive
|
|
784
|
+
if (options.crossBrowser) {
|
|
785
|
+
if (overallStatus === "fail" && similarityScore >= 0.55) {
|
|
786
|
+
overallStatus = "warning";
|
|
787
|
+
if (changes.length > 0) {
|
|
788
|
+
changes[0].severity = "warning";
|
|
789
|
+
changes[0].reasoning = "Cross-browser rendering differences (Wasserstein is robust to font/anti-aliasing variation)";
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
if (overallStatus === "warning" && similarityScore >= 0.70) {
|
|
793
|
+
overallStatus = "pass";
|
|
794
|
+
if (changes.length > 0) {
|
|
795
|
+
changes[0].severity = "acceptable";
|
|
796
|
+
}
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
const channelInfo = result.details.channelDistances
|
|
800
|
+
? ` | R: ${result.details.channelDistances.r.toFixed(4)}, G: ${result.details.channelDistances.g.toFixed(4)}, B: ${result.details.channelDistances.b.toFixed(4)}, Spatial: ${result.details.channelDistances.spatial.toFixed(4)}`
|
|
801
|
+
: '';
|
|
802
|
+
return {
|
|
803
|
+
overallStatus,
|
|
804
|
+
summary: changes.length === 0
|
|
805
|
+
? `No significant visual changes detected (Wasserstein similarity: ${similarityScore})`
|
|
806
|
+
: `Found ${changes.length} visual change(s) with ${overallStatus} status`,
|
|
807
|
+
changes,
|
|
808
|
+
similarityScore,
|
|
809
|
+
productionReady: overallStatus !== "fail",
|
|
810
|
+
confidence: 0.9, // Higher than byte-diff (0.75) — Wasserstein is more robust
|
|
811
|
+
rawAnalysis: `Sliced Wasserstein Distance analysis (${result.details.numProjections} projections, ${result.details.computeTimeMs?.toFixed(0)}ms)${channelInfo}`,
|
|
812
|
+
};
|
|
813
|
+
}
|
|
373
814
|
/**
|
|
374
815
|
* Run visual regression test against a baseline
|
|
375
816
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regression.js","sourceRoot":"","sources":["../../src/visual/regression.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"regression.js","sourceRoot":"","sources":["../../src/visual/regression.ts"],"names":[],"mappings":"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"}
|
package/docs/Tools-Overview.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
**Stop writing brittle test scripts. Start having conversations with your browser.**
|
|
10
10
|
|
|
11
|
-
CBrowser provides
|
|
11
|
+
CBrowser provides 91 MCP tools that let Claude automate browsers using natural language. No CSS selectors. No XPath. No "element not found" errors at 3am. Just describe what you want to do, and CBrowser figures out the rest.
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -32,8 +32,8 @@ CBrowser fixes this with AI-powered automation that:
|
|
|
32
32
|
|
|
33
33
|
| Tier | Tools | Access | Best For |
|
|
34
34
|
|------|-------|--------|----------|
|
|
35
|
-
| **Demo** |
|
|
36
|
-
| **Enterprise** |
|
|
35
|
+
| **Demo** | 91 tools (72 real + 19 stubs) | Free at `demo.cbrowser.ai/mcp` | Evaluation, small projects, learning |
|
|
36
|
+
| **Enterprise** | 91 tools (all real) | Self-hosted or authenticated | Production use, marketing intelligence, stealth testing |
|
|
37
37
|
|
|
38
38
|
The Demo tier gives you everything you need to automate browsers, run tests, and simulate users. Enterprise adds autonomous AI execution, marketing campaign analysis, and bot detection bypass for authorized testing.
|
|
39
39
|
|
|
@@ -127,10 +127,23 @@ Enterprise adds capabilities that require either:
|
|
|
127
127
|
| Stealth Mode | Constitutional bypass requires signed authorization |
|
|
128
128
|
| Cloudflare Handling | Challenge bypass for authorized domains only |
|
|
129
129
|
|
|
130
|
+
### Enterprise-Only Tools (19 total)
|
|
131
|
+
|
|
132
|
+
These tools return "Enterprise feature" stubs in Demo and work fully in Enterprise:
|
|
133
|
+
|
|
134
|
+
| Category | Tools | Why Enterprise |
|
|
135
|
+
|----------|-------|----------------|
|
|
136
|
+
| **API Key Management** (4) | `set_api_key`, `clear_api_key`, `api_key_status`, `get_api_key_prompt` | Manages Anthropic API credentials for server-side AI |
|
|
137
|
+
| **Autonomous Journey** (1) | `cognitive_journey_autonomous` | AI drives browser without human orchestration |
|
|
138
|
+
| **Marketing Execution** (5) | `marketing_campaign_run`, `marketing_influence_matrix`, `marketing_lever_analysis`, `marketing_funnel_analyze`, `marketing_compete` | Runs campaigns with real cognitive journeys |
|
|
139
|
+
| **Marketing Discovery** (2) | `marketing_audience_discover`, `marketing_discover_status` | Long-running audience discovery jobs |
|
|
140
|
+
| **Stealth Mode** (5) | `stealth_status`, `stealth_enable`, `stealth_check`, `stealth_disable`, `stealth_diagnose` | Bot detection bypass requires authorization |
|
|
141
|
+
| **Cloudflare Handling** (2) | `cloudflare_detect`, `cloudflare_wait` | Challenge bypass for authorized domains |
|
|
142
|
+
|
|
130
143
|
**Demo users can still:**
|
|
131
144
|
- Set up marketing campaigns and report results manually
|
|
132
145
|
- Run cognitive journeys with Claude orchestrating (no server-side autonomy)
|
|
133
|
-
- Use all
|
|
146
|
+
- Use all 72 core automation, testing, and persona tools
|
|
134
147
|
|
|
135
148
|
[Contact for Enterprise →](mailto:alexandria.shai.eden@gmail.com)
|
|
136
149
|
|
|
@@ -146,4 +159,4 @@ Enterprise adds capabilities that require either:
|
|
|
146
159
|
|
|
147
160
|
---
|
|
148
161
|
|
|
149
|
-
*Last updated:
|
|
162
|
+
*Last updated: v18.22.0*
|