@samsara-dev/appwright 0.10.1 → 0.12.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 +26 -0
- package/dist/device/index.d.ts +35 -0
- package/dist/device/index.d.ts.map +1 -1
- package/dist/device/index.js +54 -0
- package/dist/fixture/index.d.ts.map +1 -1
- package/dist/fixture/index.js +1 -5
- package/dist/gptDriver/index.d.ts +8 -0
- package/dist/gptDriver/index.d.ts.map +1 -1
- package/dist/gptDriver/index.js +11 -0
- package/dist/providers/appiumSettings.d.ts +6 -1
- package/dist/providers/appiumSettings.d.ts.map +1 -1
- package/dist/providers/appiumSettings.js +9 -0
- package/dist/providers/awsDeviceFarm/index.d.ts.map +1 -1
- package/dist/providers/awsDeviceFarm/index.js +4 -1
- package/dist/providers/browserstack/index.d.ts.map +1 -1
- package/dist/providers/browserstack/index.js +3 -1
- package/dist/providers/emulator/index.d.ts.map +1 -1
- package/dist/providers/emulator/index.js +3 -1
- package/dist/providers/lambdatest/index.d.ts.map +1 -1
- package/dist/providers/lambdatest/index.js +4 -0
- package/dist/providers/local/index.d.ts.map +1 -1
- package/dist/providers/local/index.js +3 -1
- package/dist/types/index.d.ts +40 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# appwright
|
|
2
2
|
|
|
3
|
+
## 0.12.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- faa7395: Add `noReset` option to all device configs and `APPWRIGHT_NO_RESET` environment variable. When enabled, the app is not uninstalled/reinstalled between sessions — Appium installs the app only if not already present. Useful for local development iteration with an already-configured app.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- cd55807: Add `device.gptDriver.reset()` for per-test GPT Driver session isolation
|
|
12
|
+
|
|
13
|
+
## 0.11.0
|
|
14
|
+
|
|
15
|
+
### Minor Changes
|
|
16
|
+
|
|
17
|
+
- 44ab1a5: Add `setNetworkConnection` method to Device class for controlling Android network connectivity via Appium's `mobile: setConnectivity` command. Supports toggling wifi, mobile data, and airplane mode.
|
|
18
|
+
|
|
19
|
+
## 0.10.2
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- 73b9057: Fix device fixture teardown: sync test result before session close
|
|
24
|
+
|
|
25
|
+
The non-persistent `device` fixture called `syncTestDetails` after `device.close()`, causing BrowserStack to reject updates to closed sessions with 422. Also mapped raw Playwright status values (`timedOut`, `interrupted`) to BrowserStack-compatible `passed`/`failed` and wrapped the call in error handling to prevent sync failures from masking real test errors.
|
|
26
|
+
|
|
27
|
+
Added `Device.finalizeTest(testInfo)` public method that reuses existing `mapPlaywrightStatus`, `failureReason`, and `safeSync` helpers, matching the persistent fixture's behavior.
|
|
28
|
+
|
|
3
29
|
## 0.10.1
|
|
4
30
|
|
|
5
31
|
### Patch Changes
|
package/dist/device/index.d.ts
CHANGED
|
@@ -22,6 +22,12 @@ export declare class Device {
|
|
|
22
22
|
constructor(webDriverClient: WebDriverClient, bundleId: string | undefined, timeoutOpts: TimeoutOptions, provider: string, deviceProvider?: DeviceProvider, cleanupCallback?: () => Promise<void>, gptDriverOptions?: GptDriverConfig | undefined);
|
|
23
23
|
attachDeviceProvider(provider: DeviceProvider): void;
|
|
24
24
|
enablePersistentStatusSync(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Sync the final test result to the device provider (e.g. BrowserStack).
|
|
27
|
+
* Must be called BEFORE close() — once the WebDriver session is deleted,
|
|
28
|
+
* providers reject further updates.
|
|
29
|
+
*/
|
|
30
|
+
finalizeTest(testInfo: TestInfo): Promise<void>;
|
|
25
31
|
ensurePersistentLifecycle(testInfo: TestInfo): Promise<void>;
|
|
26
32
|
preparePersistentTest(testInfo: TestInfo): Promise<void>;
|
|
27
33
|
finalizePersistentTest(testInfo: TestInfo): Promise<void>;
|
|
@@ -94,6 +100,11 @@ export declare class Device {
|
|
|
94
100
|
assertBulk: (conditions: string[]) => Promise<void>;
|
|
95
101
|
checkBulk: (conditions: string[]) => Promise<Record<string, boolean>>;
|
|
96
102
|
extract: (extractions: string[]) => Promise<Record<string, any>>;
|
|
103
|
+
/**
|
|
104
|
+
* Reset the GPT Driver session so the next call creates a fresh instance.
|
|
105
|
+
* Call between tests in persistent device fixtures for per-test isolation.
|
|
106
|
+
*/
|
|
107
|
+
reset: () => void;
|
|
97
108
|
};
|
|
98
109
|
/**
|
|
99
110
|
* Closes the automation session. This is called automatically after each test.
|
|
@@ -214,6 +225,28 @@ export declare class Device {
|
|
|
214
225
|
* ```
|
|
215
226
|
*/
|
|
216
227
|
backgroundApp(seconds?: number): Promise<void>;
|
|
228
|
+
/**
|
|
229
|
+
* Sets network connectivity for the device (Android only).
|
|
230
|
+
* Uses Appium's `mobile: setConnectivity` command to control wifi, data, and airplane mode.
|
|
231
|
+
*
|
|
232
|
+
* @param options.wifi - Enable/disable WiFi
|
|
233
|
+
* @param options.data - Enable/disable mobile data
|
|
234
|
+
* @param options.airplaneMode - Enable/disable airplane mode (default: false)
|
|
235
|
+
*
|
|
236
|
+
* @example
|
|
237
|
+
* ```ts
|
|
238
|
+
* // Go offline (airplane mode)
|
|
239
|
+
* await device.setNetworkConnection({ wifi: false, data: false, airplaneMode: true });
|
|
240
|
+
*
|
|
241
|
+
* // Go back online
|
|
242
|
+
* await device.setNetworkConnection({ wifi: true, data: false, airplaneMode: false });
|
|
243
|
+
* ```
|
|
244
|
+
*/
|
|
245
|
+
setNetworkConnection(options: {
|
|
246
|
+
wifi: boolean;
|
|
247
|
+
data: boolean;
|
|
248
|
+
airplaneMode?: boolean;
|
|
249
|
+
}): Promise<void>;
|
|
217
250
|
/**
|
|
218
251
|
* Retrieves text content from the clipboard of the mobile device. This is useful
|
|
219
252
|
* after a "copy to clipboard" action has been performed. This returns base64 encoded string.
|
|
@@ -309,6 +342,8 @@ export declare class Device {
|
|
|
309
342
|
* });
|
|
310
343
|
*/
|
|
311
344
|
updatePermissionSettings(settings: IosPermissionSettings): Promise<void>;
|
|
345
|
+
/** @private */
|
|
346
|
+
private assertAndroid;
|
|
312
347
|
/**
|
|
313
348
|
* Validates that the current platform is iOS and provider is BrowserStack.
|
|
314
349
|
* @private
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/device/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,WAAW,CAAC;AAE3D,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,QAAQ,EACR,cAAc,EACd,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,KAAK,gBAAgB,EAAqB,MAAM,cAAc,CAAC;AAIxE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAO7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,KAAK,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,qBAAa,MAAM;IASf,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,QAAQ;IAGhB,OAAO,CAAC,gBAAgB,CAAC;IAd3B,OAAO,CAAC,kBAAkB,CAAC,CAAqB;IAChD,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,mBAAmB,CAAC,CAAS;IACrC,OAAO,CAAC,eAAe,CAAC,CAAsB;IAC9C,OAAO,CAAC,kBAAkB,CAAkC;gBAGlD,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,WAAW,EAAE,cAAc,EAC3B,QAAQ,EAAE,MAAM,EACxB,cAAc,CAAC,EAAE,cAAc,EAC/B,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAC7B,gBAAgB,CAAC,EAAE,eAAe,YAAA;IAM5C,oBAAoB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAIpD,0BAA0B,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/device/index.ts"],"names":[],"mappings":"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"}
|
package/dist/device/index.js
CHANGED
|
@@ -50,6 +50,7 @@ let Device = (() => {
|
|
|
50
50
|
let _terminateApp_decorators;
|
|
51
51
|
let _activateApp_decorators;
|
|
52
52
|
let _backgroundApp_decorators;
|
|
53
|
+
let _setNetworkConnection_decorators;
|
|
53
54
|
let _getClipboardText_decorators;
|
|
54
55
|
let _setMockCameraView_decorators;
|
|
55
56
|
let _pause_decorators;
|
|
@@ -68,6 +69,7 @@ let Device = (() => {
|
|
|
68
69
|
_terminateApp_decorators = [utils_1.boxedStep];
|
|
69
70
|
_activateApp_decorators = [utils_1.boxedStep];
|
|
70
71
|
_backgroundApp_decorators = [utils_1.boxedStep];
|
|
72
|
+
_setNetworkConnection_decorators = [utils_1.boxedStep];
|
|
71
73
|
_getClipboardText_decorators = [utils_1.boxedStep];
|
|
72
74
|
_setMockCameraView_decorators = [utils_1.boxedStep];
|
|
73
75
|
_pause_decorators = [utils_1.boxedStep];
|
|
@@ -83,6 +85,7 @@ let Device = (() => {
|
|
|
83
85
|
__esDecorate(this, null, _terminateApp_decorators, { kind: "method", name: "terminateApp", static: false, private: false, access: { has: obj => "terminateApp" in obj, get: obj => obj.terminateApp }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
84
86
|
__esDecorate(this, null, _activateApp_decorators, { kind: "method", name: "activateApp", static: false, private: false, access: { has: obj => "activateApp" in obj, get: obj => obj.activateApp }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
85
87
|
__esDecorate(this, null, _backgroundApp_decorators, { kind: "method", name: "backgroundApp", static: false, private: false, access: { has: obj => "backgroundApp" in obj, get: obj => obj.backgroundApp }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
88
|
+
__esDecorate(this, null, _setNetworkConnection_decorators, { kind: "method", name: "setNetworkConnection", static: false, private: false, access: { has: obj => "setNetworkConnection" in obj, get: obj => obj.setNetworkConnection }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
86
89
|
__esDecorate(this, null, _getClipboardText_decorators, { kind: "method", name: "getClipboardText", static: false, private: false, access: { has: obj => "getClipboardText" in obj, get: obj => obj.getClipboardText }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
87
90
|
__esDecorate(this, null, _setMockCameraView_decorators, { kind: "method", name: "setMockCameraView", static: false, private: false, access: { has: obj => "setMockCameraView" in obj, get: obj => obj.setMockCameraView }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
88
91
|
__esDecorate(this, null, _pause_decorators, { kind: "method", name: "pause", static: false, private: false, access: { has: obj => "pause" in obj, get: obj => obj.pause }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
@@ -122,6 +125,16 @@ let Device = (() => {
|
|
|
122
125
|
enablePersistentStatusSync() {
|
|
123
126
|
this.persistentSyncEnabled = true;
|
|
124
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Sync the final test result to the device provider (e.g. BrowserStack).
|
|
130
|
+
* Must be called BEFORE close() — once the WebDriver session is deleted,
|
|
131
|
+
* providers reject further updates.
|
|
132
|
+
*/
|
|
133
|
+
async finalizeTest(testInfo) {
|
|
134
|
+
const status = this.mapPlaywrightStatus(testInfo.status);
|
|
135
|
+
const reason = status === "failed" ? this.failureReason(testInfo) : undefined;
|
|
136
|
+
await this.safeSync({ name: testInfo.title, status, reason });
|
|
137
|
+
}
|
|
125
138
|
async ensurePersistentLifecycle(testInfo) {
|
|
126
139
|
if (!this.shouldSyncPersistent()) {
|
|
127
140
|
return;
|
|
@@ -269,6 +282,13 @@ let Device = (() => {
|
|
|
269
282
|
extract: async (extractions) => {
|
|
270
283
|
return await this.gptDriverProvider().extract(extractions);
|
|
271
284
|
},
|
|
285
|
+
/**
|
|
286
|
+
* Reset the GPT Driver session so the next call creates a fresh instance.
|
|
287
|
+
* Call between tests in persistent device fixtures for per-test isolation.
|
|
288
|
+
*/
|
|
289
|
+
reset: () => {
|
|
290
|
+
this._gptDriverProvider?.reset();
|
|
291
|
+
},
|
|
272
292
|
};
|
|
273
293
|
/**
|
|
274
294
|
* Closes the automation session. This is called automatically after each test.
|
|
@@ -527,6 +547,33 @@ let Device = (() => {
|
|
|
527
547
|
},
|
|
528
548
|
]);
|
|
529
549
|
}
|
|
550
|
+
/**
|
|
551
|
+
* Sets network connectivity for the device (Android only).
|
|
552
|
+
* Uses Appium's `mobile: setConnectivity` command to control wifi, data, and airplane mode.
|
|
553
|
+
*
|
|
554
|
+
* @param options.wifi - Enable/disable WiFi
|
|
555
|
+
* @param options.data - Enable/disable mobile data
|
|
556
|
+
* @param options.airplaneMode - Enable/disable airplane mode (default: false)
|
|
557
|
+
*
|
|
558
|
+
* @example
|
|
559
|
+
* ```ts
|
|
560
|
+
* // Go offline (airplane mode)
|
|
561
|
+
* await device.setNetworkConnection({ wifi: false, data: false, airplaneMode: true });
|
|
562
|
+
*
|
|
563
|
+
* // Go back online
|
|
564
|
+
* await device.setNetworkConnection({ wifi: true, data: false, airplaneMode: false });
|
|
565
|
+
* ```
|
|
566
|
+
*/
|
|
567
|
+
async setNetworkConnection(options) {
|
|
568
|
+
this.assertAndroid("setNetworkConnection");
|
|
569
|
+
await this.webDriverClient.executeScript("mobile: setConnectivity", [
|
|
570
|
+
{
|
|
571
|
+
wifi: options.wifi,
|
|
572
|
+
data: options.data,
|
|
573
|
+
airplaneMode: options.airplaneMode ?? false,
|
|
574
|
+
},
|
|
575
|
+
]);
|
|
576
|
+
}
|
|
530
577
|
/**
|
|
531
578
|
* Retrieves text content from the clipboard of the mobile device. This is useful
|
|
532
579
|
* after a "copy to clipboard" action has been performed. This returns base64 encoded string.
|
|
@@ -702,6 +749,13 @@ let Device = (() => {
|
|
|
702
749
|
async updatePermissionSettings(settings) {
|
|
703
750
|
return this.updateAppSettings({ "Permission Settings": settings });
|
|
704
751
|
}
|
|
752
|
+
/** @private */
|
|
753
|
+
assertAndroid(methodName) {
|
|
754
|
+
if (this.getPlatform() !== types_1.Platform.ANDROID) {
|
|
755
|
+
throw new Error(`${methodName} is only supported on Android. ` +
|
|
756
|
+
`Current platform: ${this.getPlatform()}`);
|
|
757
|
+
}
|
|
758
|
+
}
|
|
705
759
|
/**
|
|
706
760
|
* Validates that the current platform is iOS and provider is BrowserStack.
|
|
707
761
|
* @private
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fixture/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,aAAa,EAMd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AA2GnC,KAAK,iBAAiB,GAAG;IACvB;;;OAGG;IACH,cAAc,EAAE,cAAc,CAAC;IAE/B;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fixture/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,aAAa,EAMd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AA2GnC,KAAK,iBAAiB,GAAG;IACvB;;;OAGG;IACH,cAAc,EAAE,cAAc,CAAC;IAE/B;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,IAAI,uRAyFf,CAAC;AA8BH;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM;2BACY,gBAAgB,YAAY,aAAa;;;;;;;EAUtE,CAAC"}
|
package/dist/fixture/index.js
CHANGED
|
@@ -98,16 +98,12 @@ exports.test = test_1.test.extend({
|
|
|
98
98
|
await applyIosAppSettings(testInfo.project, device);
|
|
99
99
|
await deviceProvider.syncTestDetails?.({ name: testInfo.title });
|
|
100
100
|
await use(device);
|
|
101
|
+
await device.finalizeTest(testInfo);
|
|
101
102
|
await device.close();
|
|
102
103
|
if (deviceProviderName === "emulator" ||
|
|
103
104
|
deviceProviderName === "local-device") {
|
|
104
105
|
await (0, appium_1.stopAppiumServer)();
|
|
105
106
|
}
|
|
106
|
-
await deviceProvider.syncTestDetails?.({
|
|
107
|
-
name: testInfo.title,
|
|
108
|
-
status: testInfo.status,
|
|
109
|
-
reason: testInfo.error?.message,
|
|
110
|
-
});
|
|
111
107
|
},
|
|
112
108
|
persistentDevice: [
|
|
113
109
|
async ({}, use, workerInfo) => {
|
|
@@ -44,6 +44,14 @@ export declare class GptDriverProvider implements GptDriverApi {
|
|
|
44
44
|
private driver;
|
|
45
45
|
private testIdWarned;
|
|
46
46
|
constructor(webDriverClient: WebDriverClient, options?: GptDriverConfig | undefined);
|
|
47
|
+
/**
|
|
48
|
+
* Reset the underlying GptDriver instance so the next call creates a fresh
|
|
49
|
+
* MobileBoost session with a new constructor invocation.
|
|
50
|
+
*
|
|
51
|
+
* Use in persistent device fixtures to get per-test session isolation
|
|
52
|
+
* without recreating the Device or WebDriver connection.
|
|
53
|
+
*/
|
|
54
|
+
reset(): void;
|
|
47
55
|
/**
|
|
48
56
|
* Resolve the testId for the current test context.
|
|
49
57
|
* 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;;;;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;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"}
|
package/dist/gptDriver/index.js
CHANGED
|
@@ -83,6 +83,17 @@ let GptDriverProvider = (() => {
|
|
|
83
83
|
this.webDriverClient = webDriverClient;
|
|
84
84
|
this.options = options;
|
|
85
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Reset the underlying GptDriver instance so the next call creates a fresh
|
|
88
|
+
* MobileBoost session with a new constructor invocation.
|
|
89
|
+
*
|
|
90
|
+
* Use in persistent device fixtures to get per-test session isolation
|
|
91
|
+
* without recreating the Device or WebDriver connection.
|
|
92
|
+
*/
|
|
93
|
+
reset() {
|
|
94
|
+
this.driver = null;
|
|
95
|
+
this.testIdWarned = false;
|
|
96
|
+
}
|
|
86
97
|
/**
|
|
87
98
|
* Resolve the testId for the current test context.
|
|
88
99
|
* Uses the custom testIdFormat callback if configured, otherwise falls back
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
import { AppiumSettings, Platform } from "../types";
|
|
1
|
+
import { AppiumSettings, DeviceConfig, Platform } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Resolves the noReset flag from device config and the APPWRIGHT_NO_RESET env var.
|
|
4
|
+
* When true, the app is not uninstalled/reinstalled between sessions.
|
|
5
|
+
*/
|
|
6
|
+
export declare function resolveNoReset(deviceConfig: DeviceConfig): boolean;
|
|
2
7
|
type AppiumCapabilities = Record<string, unknown>;
|
|
3
8
|
type AppiumSettingsOptions = {
|
|
4
9
|
includeBrowserStackSettings?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appiumSettings.d.ts","sourceRoot":"","sources":["../../src/providers/appiumSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"appiumSettings.d.ts","sourceRoot":"","sources":["../../src/providers/appiumSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAElE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAKlE;AAED,KAAK,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAElD,KAAK,qBAAqB,GAAG;IAC3B,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,iCAAiC,CAAC,EAAE,OAAO,CAAC;CAC7C,CAAC;AAEF,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,YAAY,EAAE,QAAQ,GAAG,SAAS,uCA4CnC;AAED,wBAAgB,iCAAiC,CAC/C,YAAY,EAAE,kBAAkB,EAChC,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,YAAY,EAAE,QAAQ,GAAG,SAAS,EAClC,OAAO,GAAE,qBAA0B,QAqFpC"}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveNoReset = resolveNoReset;
|
|
3
4
|
exports.buildAppiumUpdateSettings = buildAppiumUpdateSettings;
|
|
4
5
|
exports.applyAppiumSettingsToCapabilities = applyAppiumSettingsToCapabilities;
|
|
5
6
|
const types_1 = require("../types");
|
|
7
|
+
/**
|
|
8
|
+
* Resolves the noReset flag from device config and the APPWRIGHT_NO_RESET env var.
|
|
9
|
+
* When true, the app is not uninstalled/reinstalled between sessions.
|
|
10
|
+
*/
|
|
11
|
+
function resolveNoReset(deviceConfig) {
|
|
12
|
+
return (process.env.APPWRIGHT_NO_RESET === "true" ||
|
|
13
|
+
("noReset" in deviceConfig && deviceConfig.noReset === true));
|
|
14
|
+
}
|
|
6
15
|
function buildAppiumUpdateSettings(appiumSettings, platformName) {
|
|
7
16
|
if (!appiumSettings) {
|
|
8
17
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/awsDeviceFarm/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,eAAe,EACf,cAAc,EAGf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/awsDeviceFarm/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,eAAe,EACf,cAAc,EAGf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAgCtC,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,gBAAgB,CAAC,CAAS;gBAGhC,OAAO,EAAE,WAAW,CAAC,eAAe,CAAC,EACrC,WAAW,EAAE,MAAM,GAAG,SAAS;IAwD3B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B5B,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IA6D5B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtC,OAAO,CAAC,iBAAiB;YASX,iBAAiB;YA6CjB,uBAAuB;YAmCvB,mBAAmB;YAgCnB,oBAAoB;IA0ClC,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,iBAAiB;YAiDX,UAAU;WA4CX,aAAa,CACxB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;mBAiFnC,iBAAiB;mBA6BjB,wBAAwB;IAwB7C,OAAO,CAAC,MAAM,CAAC,oBAAoB;YAQrB,iBAAiB;CAgBhC"}
|
|
@@ -10,6 +10,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
10
10
|
const types_1 = require("../../types");
|
|
11
11
|
const device_1 = require("../../device");
|
|
12
12
|
const logger_1 = require("../../logger");
|
|
13
|
+
const appiumSettings_1 = require("../appiumSettings");
|
|
13
14
|
const client_device_farm_1 = require("@aws-sdk/client-device-farm");
|
|
14
15
|
const client_sts_1 = require("@aws-sdk/client-sts");
|
|
15
16
|
const utils_1 = require("../../utils");
|
|
@@ -260,11 +261,13 @@ class AWSDeviceFarmProvider {
|
|
|
260
261
|
buildCapabilities(session) {
|
|
261
262
|
const isAndroid = this.platform === types_1.Platform.ANDROID;
|
|
262
263
|
const automationName = isAndroid ? "UiAutomator2" : "XCUITest";
|
|
264
|
+
const noReset = (0, appiumSettings_1.resolveNoReset)(this.deviceConfig);
|
|
263
265
|
const capabilities = {
|
|
264
266
|
platformName: isAndroid ? "Android" : "iOS",
|
|
265
267
|
"appium:automationName": automationName,
|
|
266
268
|
"appium:newCommandTimeout": 240,
|
|
267
|
-
"appium:
|
|
269
|
+
"appium:fullReset": !noReset,
|
|
270
|
+
"appium:noReset": noReset,
|
|
268
271
|
};
|
|
269
272
|
// CRITICAL: Include app capability for Appium to work
|
|
270
273
|
// This is required when appPackage/appActivity are not provided
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/browserstack/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,eAAe,EACf,cAAc,EAGf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/browserstack/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,eAAe,EACf,cAAc,EAGf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AA4DtC,qBAAa,0BAA2B,YAAW,cAAc;IAC/D,OAAO,CAAC,cAAc,CAAC,CAA6B;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,OAAO,CAA+B;gBAG5C,OAAO,EAAE,WAAW,CAAC,eAAe,CAAC,EACrC,WAAW,EAAE,MAAM,GAAG,SAAS;IAU3B,WAAW;IA0EX,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAMlC,OAAO,CAAC,cAAc;YASR,YAAY;YAoCZ,iBAAiB;YAKjB,yBAAyB;WAK1B,aAAa,CACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IA2GlD,eAAe,CAAC,OAAO,EAAE;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf;IA2BD,OAAO,CAAC,YAAY;CA0LrB"}
|
|
@@ -356,10 +356,12 @@ class BrowserStackDeviceProvider {
|
|
|
356
356
|
}
|
|
357
357
|
}
|
|
358
358
|
}
|
|
359
|
+
const noReset = (0, appiumSettings_1.resolveNoReset)(deviceConfig);
|
|
359
360
|
const capabilities = {
|
|
360
361
|
"bstack:options": bstackOptions,
|
|
361
362
|
"appium:app": process.env[envVarKey],
|
|
362
|
-
"appium:fullReset":
|
|
363
|
+
"appium:fullReset": !noReset,
|
|
364
|
+
"appium:noReset": noReset,
|
|
363
365
|
};
|
|
364
366
|
if (platformName === types_1.Platform.ANDROID) {
|
|
365
367
|
capabilities["appium:settings[snapshotMaxDepth]"] =
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/emulator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,cAAc,EAIf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/emulator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,cAAc,EAIf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAWtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C,qBAAa,gBAAiB,YAAW,cAAc;IAInD,OAAO,CAAC,OAAO;IAHjB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAGT,OAAO,EAAE,WAAW,CAAC,eAAe,CAAC,EAC7C,WAAW,EAAE,MAAM,GAAG,SAAS;IAS3B,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B,WAAW;YA8BH,YAAY;YA2BZ,YAAY;CA0D3B"}
|
|
@@ -67,6 +67,7 @@ Follow the steps mentioned in ${androidSimulatorConfigDocLink} to run test on An
|
|
|
67
67
|
appPackageName = packageName;
|
|
68
68
|
appLaunchableActivity = launchableActivity;
|
|
69
69
|
}
|
|
70
|
+
const noReset = (0, appiumSettings_1.resolveNoReset)(deviceConfig);
|
|
70
71
|
// Build capabilities with configurable appium settings
|
|
71
72
|
const capabilities = {
|
|
72
73
|
"appium:deviceName": deviceConfig.name,
|
|
@@ -77,7 +78,8 @@ Follow the steps mentioned in ${androidSimulatorConfigDocLink} to run test on An
|
|
|
77
78
|
"appium:autoGrantPermissions": true,
|
|
78
79
|
"appium:app": this.project.use.buildPath,
|
|
79
80
|
"appium:autoAcceptAlerts": true,
|
|
80
|
-
"appium:fullReset":
|
|
81
|
+
"appium:fullReset": !noReset,
|
|
82
|
+
"appium:noReset": noReset,
|
|
81
83
|
"appium:deviceOrientation": deviceConfig.orientation,
|
|
82
84
|
"appium:wdaLaunchTimeout": 300_000,
|
|
83
85
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/lambdatest/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAoB,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/lambdatest/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAoB,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAyDtC,qBAAa,wBAAyB,YAAW,cAAc;IAM3D,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,WAAW;IANrB,OAAO,CAAC,cAAc,CAAC,CAA2B;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,WAAW,CAAgC;gBAGzC,OAAO,EAAE,WAAW,CAAC,eAAe,CAAC,EACrC,WAAW,EAAE,MAAM,GAAG,SAAS;IASnC,WAAW;IA8DX,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAMlC,OAAO,CAAC,cAAc;YASR,YAAY;WAkBb,aAAa,CACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IA+ElD,eAAe,CAAC,OAAO,EAAE;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf;IA0BD,OAAO,CAAC,oBAAoB;IAuB5B,OAAO,CAAC,YAAY;CAkDrB"}
|
|
@@ -11,6 +11,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
11
11
|
const device_1 = require("../../device");
|
|
12
12
|
const logger_1 = require("../../logger");
|
|
13
13
|
const utils_1 = require("./utils");
|
|
14
|
+
const appiumSettings_1 = require("../appiumSettings");
|
|
14
15
|
const browserStackToLambdaTest = {
|
|
15
16
|
deviceName: {
|
|
16
17
|
"Google Pixel 8": "Pixel 8",
|
|
@@ -248,6 +249,7 @@ class LambdaTestDeviceProvider {
|
|
|
248
249
|
if (!process.env[envVarKey]) {
|
|
249
250
|
throw new Error(`process.env.${envVarKey} is not set. Did the file upload work?`);
|
|
250
251
|
}
|
|
252
|
+
const noReset = (0, appiumSettings_1.resolveNoReset)(deviceConfig);
|
|
251
253
|
return {
|
|
252
254
|
port: 443,
|
|
253
255
|
protocol: "https",
|
|
@@ -271,6 +273,8 @@ class LambdaTestDeviceProvider {
|
|
|
271
273
|
project: this.projectName,
|
|
272
274
|
autoGrantPermissions: true,
|
|
273
275
|
autoAcceptAlerts: true,
|
|
276
|
+
fullReset: !noReset,
|
|
277
|
+
noReset,
|
|
274
278
|
isRealMobile: true,
|
|
275
279
|
enableImageInjection: this.project.use.device
|
|
276
280
|
?.enableCameraImageInjection,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/local/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,cAAc,EAIf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/local/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,cAAc,EAIf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAgB/C,qBAAa,mBAAoB,YAAW,cAAc;IAItD,OAAO,CAAC,OAAO;IAHjB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAGT,OAAO,EAAE,WAAW,CAAC,eAAe,CAAC,EAC7C,WAAW,EAAE,MAAM,GAAG,SAAS;IAS3B,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B,WAAW;YAgBH,YAAY;YA4BZ,YAAY;CAqE3B"}
|
|
@@ -70,6 +70,7 @@ To specify a device, use the udid property. Run "adb devices" to get the UDID fo
|
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
+
const noReset = (0, appiumSettings_1.resolveNoReset)(deviceConfig);
|
|
73
74
|
// Build capabilities with configurable appium settings
|
|
74
75
|
const capabilities = {
|
|
75
76
|
"appium:deviceName": deviceConfig.name,
|
|
@@ -79,7 +80,8 @@ To specify a device, use the udid property. Run "adb devices" to get the UDID fo
|
|
|
79
80
|
"appium:autoGrantPermissions": true,
|
|
80
81
|
"appium:app": this.project.use.buildPath,
|
|
81
82
|
"appium:autoAcceptAlerts": true,
|
|
82
|
-
"appium:fullReset":
|
|
83
|
+
"appium:fullReset": !noReset,
|
|
84
|
+
"appium:noReset": noReset,
|
|
83
85
|
"appium:deviceOrientation": deviceConfig.orientation,
|
|
84
86
|
};
|
|
85
87
|
if (platformName == types_1.Platform.ANDROID) {
|
package/dist/types/index.d.ts
CHANGED
|
@@ -198,6 +198,14 @@ export type BrowserStackConfig = {
|
|
|
198
198
|
* Defaults to automatically granting Android permissions and accepting iOS alerts.
|
|
199
199
|
*/
|
|
200
200
|
permissionPrompts?: BrowserStackPermissionPrompts;
|
|
201
|
+
/**
|
|
202
|
+
* When true, the app is not uninstalled/reinstalled between sessions.
|
|
203
|
+
* The app will be installed automatically if not already present on the device.
|
|
204
|
+
* Useful for local development when iterating on tests with an already-configured app.
|
|
205
|
+
* Can also be enabled via the APPWRIGHT_NO_RESET environment variable.
|
|
206
|
+
* Defaults to false (full reset).
|
|
207
|
+
*/
|
|
208
|
+
noReset?: boolean;
|
|
201
209
|
};
|
|
202
210
|
export type BrowserStackPermissionPrompts = {
|
|
203
211
|
android?: {
|
|
@@ -247,6 +255,14 @@ export type LambdaTestConfig = {
|
|
|
247
255
|
* Default is false.
|
|
248
256
|
*/
|
|
249
257
|
tunnel?: boolean;
|
|
258
|
+
/**
|
|
259
|
+
* When true, the app is not uninstalled/reinstalled between sessions.
|
|
260
|
+
* The app will be installed automatically if not already present on the device.
|
|
261
|
+
* Useful for local development when iterating on tests with an already-configured app.
|
|
262
|
+
* Can also be enabled via the APPWRIGHT_NO_RESET environment variable.
|
|
263
|
+
* Defaults to false (full reset).
|
|
264
|
+
*/
|
|
265
|
+
noReset?: boolean;
|
|
250
266
|
};
|
|
251
267
|
export type AWSDeviceFarmInteractionMode = "INTERACTIVE" | "NO_VIDEO" | "VIDEO_ONLY";
|
|
252
268
|
export type AWSDeviceFarmConfig = {
|
|
@@ -303,6 +319,14 @@ export type AWSDeviceFarmConfig = {
|
|
|
303
319
|
* Any additional capabilities that should be merged into the Appium session.
|
|
304
320
|
*/
|
|
305
321
|
additionalCapabilities?: Record<string, unknown>;
|
|
322
|
+
/**
|
|
323
|
+
* When true, the app is not uninstalled/reinstalled between sessions.
|
|
324
|
+
* The app will be installed automatically if not already present on the device.
|
|
325
|
+
* Useful for local development when iterating on tests with an already-configured app.
|
|
326
|
+
* Can also be enabled via the APPWRIGHT_NO_RESET environment variable.
|
|
327
|
+
* Defaults to false (full reset).
|
|
328
|
+
*/
|
|
329
|
+
noReset?: boolean;
|
|
306
330
|
/**
|
|
307
331
|
* IAM role ARN to assume before making Device Farm API calls.
|
|
308
332
|
* When provided, Appwright will use STS AssumeRole to obtain temporary credentials.
|
|
@@ -433,6 +457,14 @@ export type LocalDeviceConfig = {
|
|
|
433
457
|
* Appium settings for controlling UIAutomator2/XCUITest behavior.
|
|
434
458
|
*/
|
|
435
459
|
appiumSettings?: AppiumSettings;
|
|
460
|
+
/**
|
|
461
|
+
* When true, the app is not uninstalled/reinstalled between sessions.
|
|
462
|
+
* The app will be installed automatically if not already present on the device.
|
|
463
|
+
* Useful for local development when iterating on tests with an already-configured app.
|
|
464
|
+
* Can also be enabled via the APPWRIGHT_NO_RESET environment variable.
|
|
465
|
+
* Defaults to false (full reset).
|
|
466
|
+
*/
|
|
467
|
+
noReset?: boolean;
|
|
436
468
|
};
|
|
437
469
|
/**
|
|
438
470
|
* Configuration for running tests on an Android or iOS emulator.
|
|
@@ -454,6 +486,14 @@ export type EmulatorConfig = {
|
|
|
454
486
|
* Appium settings for controlling UIAutomator2/XCUITest behavior.
|
|
455
487
|
*/
|
|
456
488
|
appiumSettings?: AppiumSettings;
|
|
489
|
+
/**
|
|
490
|
+
* When true, the app is not uninstalled/reinstalled between sessions.
|
|
491
|
+
* The app will be installed automatically if not already present on the device.
|
|
492
|
+
* Useful for local development when iterating on tests with an already-configured app.
|
|
493
|
+
* Can also be enabled via the APPWRIGHT_NO_RESET environment variable.
|
|
494
|
+
* Defaults to false (full reset).
|
|
495
|
+
*/
|
|
496
|
+
noReset?: boolean;
|
|
457
497
|
};
|
|
458
498
|
/**
|
|
459
499
|
* iOS permission settings structure (based on BrowserStack API).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|