@clawdtesting/puppeteer 1.0.3 → 1.0.5

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/client.d.ts CHANGED
@@ -15,7 +15,7 @@ export declare class ClawdTest {
15
15
  check(page: Page, testName: string, stepName: string): Promise<{
16
16
  sessionResult: import("./types").SessionResult;
17
17
  stepId: string;
18
- status: "passed" | "failed" | "new";
18
+ status: "match" | "unresolved" | "new";
19
19
  diffScore: number;
20
20
  isNew: boolean;
21
21
  diffImageUrl: string | null;
package/dist/client.js CHANGED
@@ -41,6 +41,8 @@ class ClawdTest {
41
41
  baselineBranch: sessionOptions.baselineBranch,
42
42
  });
43
43
  const { sessionId } = response.data;
44
+ // Auto-resize viewport to match session config
45
+ await page.setViewport(sessionOptions.viewport);
44
46
  return new session_1.ClawdTestSession(sessionId, page, this.apiClient, sessionOptions.viewport);
45
47
  }
46
48
  /**
package/dist/session.js CHANGED
@@ -50,8 +50,15 @@ class ClawdTestSession {
50
50
  filename: `${options.stepName}.png`,
51
51
  contentType: 'image/png',
52
52
  });
53
- if (options.metadata) {
54
- formData.append('metadata', JSON.stringify(options.metadata));
53
+ const metadata = { ...options.metadata };
54
+ if (options.ignoreRegions && options.ignoreRegions.length > 0) {
55
+ metadata.ignoreRegions = options.ignoreRegions;
56
+ }
57
+ if (options.matchLevel) {
58
+ metadata.matchLevel = options.matchLevel;
59
+ }
60
+ if (Object.keys(metadata).length > 0) {
61
+ formData.append('metadata', JSON.stringify(metadata));
55
62
  }
56
63
  const response = await this.apiClient.post(`/sessions/${this.sessionId}/steps`, formData, {
57
64
  headers: formData.getHeaders(),
package/dist/types.d.ts CHANGED
@@ -20,7 +20,7 @@ export interface SessionOptions {
20
20
  }
21
21
  export interface StepResult {
22
22
  stepId: string;
23
- status: 'passed' | 'failed' | 'new';
23
+ status: 'match' | 'unresolved' | 'new';
24
24
  diffScore: number;
25
25
  isNew: boolean;
26
26
  diffImageUrl: string | null;
@@ -33,15 +33,18 @@ export interface SessionResult {
33
33
  failedSteps: number;
34
34
  newSteps: number;
35
35
  }
36
+ export interface Region {
37
+ x: number;
38
+ y: number;
39
+ width: number;
40
+ height: number;
41
+ }
36
42
  export interface CheckOptions {
37
43
  stepName: string;
38
44
  fullPage?: boolean;
39
45
  selector?: string;
40
- clip?: {
41
- x: number;
42
- y: number;
43
- width: number;
44
- height: number;
45
- };
46
+ clip?: Region;
47
+ ignoreRegions?: Region[];
48
+ matchLevel?: 'strict' | 'layout';
46
49
  metadata?: Record<string, any>;
47
50
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clawdtesting/puppeteer",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Visual Testing SDK for Puppeteer",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/client.ts CHANGED
@@ -46,6 +46,9 @@ export class ClawdTest {
46
46
 
47
47
  const { sessionId } = response.data;
48
48
 
49
+ // Auto-resize viewport to match session config
50
+ await page.setViewport(sessionOptions.viewport);
51
+
49
52
  return new ClawdTestSession(
50
53
  sessionId,
51
54
  page,
package/src/session.ts CHANGED
@@ -65,8 +65,15 @@ export class ClawdTestSession {
65
65
  contentType: 'image/png',
66
66
  });
67
67
 
68
- if (options.metadata) {
69
- formData.append('metadata', JSON.stringify(options.metadata));
68
+ const metadata: Record<string, any> = { ...options.metadata };
69
+ if (options.ignoreRegions && options.ignoreRegions.length > 0) {
70
+ metadata.ignoreRegions = options.ignoreRegions;
71
+ }
72
+ if (options.matchLevel) {
73
+ metadata.matchLevel = options.matchLevel;
74
+ }
75
+ if (Object.keys(metadata).length > 0) {
76
+ formData.append('metadata', JSON.stringify(metadata));
70
77
  }
71
78
 
72
79
  const response = await this.apiClient.post(
package/src/types.ts CHANGED
@@ -22,7 +22,7 @@ export interface SessionOptions {
22
22
 
23
23
  export interface StepResult {
24
24
  stepId: string;
25
- status: 'passed' | 'failed' | 'new';
25
+ status: 'match' | 'unresolved' | 'new';
26
26
  diffScore: number;
27
27
  isNew: boolean;
28
28
  diffImageUrl: string | null;
@@ -37,15 +37,19 @@ export interface SessionResult {
37
37
  newSteps: number;
38
38
  }
39
39
 
40
+ export interface Region {
41
+ x: number;
42
+ y: number;
43
+ width: number;
44
+ height: number;
45
+ }
46
+
40
47
  export interface CheckOptions {
41
48
  stepName: string;
42
49
  fullPage?: boolean;
43
50
  selector?: string;
44
- clip?: {
45
- x: number;
46
- y: number;
47
- width: number;
48
- height: number;
49
- };
51
+ clip?: Region;
52
+ ignoreRegions?: Region[];
53
+ matchLevel?: 'strict' | 'layout';
50
54
  metadata?: Record<string, any>;
51
55
  }