@samsara-dev/appwright 0.12.0 → 0.13.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/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # appwright
2
2
 
3
+ ## 0.13.0
4
+
5
+ ### Minor Changes
6
+
7
+ - d318ac5: Add `gptDriver.setTestId()` for explicit session attribution
8
+
9
+ Worker-scoped fixtures (e.g. login) previously inherited the testId from
10
+ whichever Playwright test triggered the worker first, causing MobileBoost
11
+ sessions to be mis-attributed. `setTestId(id)` lets callers tag these
12
+ shared sessions with a descriptive ID (e.g. "worker-login-setup").
13
+
14
+ The override takes priority over `testIdFormat` and `test.info().testId`,
15
+ and is cleared automatically on `reset()`.
16
+
3
17
  ## 0.12.0
4
18
 
5
19
  ### Minor Changes
@@ -100,6 +100,13 @@ export declare class Device {
100
100
  assertBulk: (conditions: string[]) => Promise<void>;
101
101
  checkBulk: (conditions: string[]) => Promise<Record<string, boolean>>;
102
102
  extract: (extractions: string[]) => Promise<Record<string, any>>;
103
+ /**
104
+ * Override the testId for the current GPT Driver session.
105
+ * Use in worker-scoped fixtures to tag shared sessions (e.g. login)
106
+ * with a descriptive ID instead of inheriting a random test's ID.
107
+ * Cleared automatically on reset().
108
+ */
109
+ setTestId: (testId: string) => void;
103
110
  /**
104
111
  * Reset the GPT Driver session so the next call creates a fresh instance.
105
112
  * Call between tests in persistent device fixtures for per-test isolation.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/device/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/device/index.ts"],"names":[],"mappings":"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"}
@@ -282,6 +282,15 @@ let Device = (() => {
282
282
  extract: async (extractions) => {
283
283
  return await this.gptDriverProvider().extract(extractions);
284
284
  },
285
+ /**
286
+ * Override the testId for the current GPT Driver session.
287
+ * Use in worker-scoped fixtures to tag shared sessions (e.g. login)
288
+ * with a descriptive ID instead of inheriting a random test's ID.
289
+ * Cleared automatically on reset().
290
+ */
291
+ setTestId: (testId) => {
292
+ this.gptDriverProvider().setTestId(testId);
293
+ },
285
294
  /**
286
295
  * Reset the GPT Driver session so the next call creates a fresh instance.
287
296
  * Call between tests in persistent device fixtures for per-test isolation.
@@ -27,6 +27,10 @@ export interface GptDriverApi {
27
27
  setSessionSucceeded(): Promise<void>;
28
28
  /** Mark the MobileBoost session as failed. Call after test fails. */
29
29
  setSessionFailed(): Promise<void>;
30
+ /** Override the testId for the current GPT Driver session. */
31
+ setTestId(testId: string): void;
32
+ /** Reset the GPT Driver session so the next call creates a fresh instance. */
33
+ reset(): void;
30
34
  }
31
35
  /**
32
36
  * GptDriverProvider wraps the gpt-driver-node SDK for AI-powered test automation.
@@ -43,6 +47,7 @@ export declare class GptDriverProvider implements GptDriverApi {
43
47
  private options?;
44
48
  private driver;
45
49
  private testIdWarned;
50
+ private testIdOverride?;
46
51
  constructor(webDriverClient: WebDriverClient, options?: GptDriverConfig | undefined);
47
52
  /**
48
53
  * Reset the underlying GptDriver instance so the next call creates a fresh
@@ -52,6 +57,24 @@ export declare class GptDriverProvider implements GptDriverApi {
52
57
  * without recreating the Device or WebDriver connection.
53
58
  */
54
59
  reset(): void;
60
+ /**
61
+ * Override the testId used for the next GPT Driver session.
62
+ *
63
+ * When set, this value takes priority over both `testIdFormat` and
64
+ * Playwright's `testInfo.testId`. Cleared on `reset()` so each test
65
+ * can set its own override independently.
66
+ *
67
+ * Typical use: tag a worker-scoped login fixture with a descriptive ID
68
+ * (e.g. "worker-login-setup") so MobileBoost sessions aren't
69
+ * mis-attributed to whichever test triggered the worker first.
70
+ */
71
+ setTestId(testId: string): void;
72
+ /**
73
+ * Mutate the underlying gpt-driver-node testId at runtime.
74
+ * gpt-driver-node declares testId as private in TS but it's a plain
75
+ * JS property at runtime — safe to mutate directly.
76
+ */
77
+ private applyDriverTestId;
55
78
  /**
56
79
  * Resolve the testId for the current test context.
57
80
  * Uses the custom testIdFormat callback if configured, otherwise falls back
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gptDriver/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,WAAW,CAAC;AAG3D,OAAO,KAAK,EAAE,eAAe,EAAc,MAAM,UAAU,CAAC;AAK5D;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7D,yEAAyE;IACzE,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,qEAAqE;IACrE,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED;;;;;;;;;GASG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IAKlD,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,OAAO,CAAC;IALlB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,YAAY,CAAS;gBAGnB,eAAe,EAAE,eAAe,EAChC,OAAO,CAAC,EAAE,eAAe,YAAA;IAGnC;;;;;;OAMG;IACH,KAAK,IAAI,IAAI;IAKb;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,aAAa;IAMf,SAAS,CACb,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,IAAI,CAAC;IAgBV,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/C,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAajE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAY5D,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAYpC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;CAWxC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gptDriver/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,WAAW,CAAC;AAG3D,OAAO,KAAK,EAAE,eAAe,EAAc,MAAM,UAAU,CAAC;AAK5D;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7D,yEAAyE;IACzE,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,qEAAqE;IACrE,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,8DAA8D;IAC9D,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,8EAA8E;IAC9E,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IAMlD,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,OAAO,CAAC;IANlB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAC,CAAS;gBAGtB,eAAe,EAAE,eAAe,EAChC,OAAO,CAAC,EAAE,eAAe,YAAA;IAGnC;;;;;;OAMG;IACH,KAAK,IAAI,IAAI;IAMb;;;;;;;;;;OAUG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK/B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,SAAS;IA6BjB,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,aAAa;IAMf,SAAS,CACb,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,IAAI,CAAC;IAgBV,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/C,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAajE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAY5D,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAYpC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;CAWxC"}
@@ -79,6 +79,7 @@ let GptDriverProvider = (() => {
79
79
  options;
80
80
  driver = null;
81
81
  testIdWarned = false;
82
+ testIdOverride;
82
83
  constructor(webDriverClient, options) {
83
84
  this.webDriverClient = webDriverClient;
84
85
  this.options = options;
@@ -93,6 +94,34 @@ let GptDriverProvider = (() => {
93
94
  reset() {
94
95
  this.driver = null;
95
96
  this.testIdWarned = false;
97
+ this.testIdOverride = undefined;
98
+ }
99
+ /**
100
+ * Override the testId used for the next GPT Driver session.
101
+ *
102
+ * When set, this value takes priority over both `testIdFormat` and
103
+ * Playwright's `testInfo.testId`. Cleared on `reset()` so each test
104
+ * can set its own override independently.
105
+ *
106
+ * Typical use: tag a worker-scoped login fixture with a descriptive ID
107
+ * (e.g. "worker-login-setup") so MobileBoost sessions aren't
108
+ * mis-attributed to whichever test triggered the worker first.
109
+ */
110
+ setTestId(testId) {
111
+ this.testIdOverride = testId;
112
+ this.applyDriverTestId(testId);
113
+ }
114
+ /**
115
+ * Mutate the underlying gpt-driver-node testId at runtime.
116
+ * gpt-driver-node declares testId as private in TS but it's a plain
117
+ * JS property at runtime — safe to mutate directly.
118
+ */
119
+ applyDriverTestId(testId) {
120
+ if (this.driver && "testId" in this.driver) {
121
+ this.driver.testId = testId;
122
+ return true;
123
+ }
124
+ return false;
96
125
  }
97
126
  /**
98
127
  * Resolve the testId for the current test context.
@@ -131,7 +160,9 @@ let GptDriverProvider = (() => {
131
160
  driver: this.webDriverClient,
132
161
  serverConfig: { url: this.getAppiumUrl() },
133
162
  cachingMode: "INTERACTION_REGION",
134
- testId: this.resolveTestId(test_1.default.info()) ?? `test-${Date.now()}`,
163
+ testId: this.testIdOverride ??
164
+ this.resolveTestId(test_1.default.info()) ??
165
+ `test-${Date.now()}`,
135
166
  ...(this.options?.additionalUserContext != null && {
136
167
  additionalUserContext: this.options.additionalUserContext,
137
168
  }),
@@ -147,18 +178,17 @@ let GptDriverProvider = (() => {
147
178
  }
148
179
  // Update testId to current test context so persistent device fixtures
149
180
  // report the correct test in GPT Driver API calls.
150
- // gpt-driver-node declares testId as private in TS but it's a plain
151
- // JS property at runtime — safe to mutate directly.
152
- // TODO: Replace with public setTestId() if gpt-driver-node exposes one.
153
- const currentTestId = this.resolveTestId(test_1.default.info());
154
- if (currentTestId && "testId" in driver) {
155
- driver.testId = currentTestId;
156
- }
157
- else if (currentTestId && !this.testIdWarned) {
158
- console.warn("[GptDriver] Cannot update testId — property not found on driver instance. " +
159
- "GPT Driver sessions may be attributed to the wrong test. " +
160
- "Check if gpt-driver-node renamed or removed the testId field.");
161
- this.testIdWarned = true;
181
+ // Skip when a manual override is active the caller owns the testId.
182
+ if (!this.testIdOverride) {
183
+ const currentTestId = this.resolveTestId(test_1.default.info());
184
+ if (currentTestId) {
185
+ if (!this.applyDriverTestId(currentTestId) && !this.testIdWarned) {
186
+ console.warn("[GptDriver] Cannot update testId property not found on driver instance. " +
187
+ "GPT Driver sessions may be attributed to the wrong test. " +
188
+ "Check if gpt-driver-node renamed or removed the testId field.");
189
+ this.testIdWarned = true;
190
+ }
191
+ }
162
192
  }
163
193
  return driver;
164
194
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@samsara-dev/appwright",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"