@samsara-dev/appwright 0.6.1 → 0.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.
- package/AGENTS.md +1 -0
- package/CHANGELOG.md +6 -0
- package/dist/providers/browserstack/index.d.ts.map +1 -1
- package/dist/providers/browserstack/index.js +34 -8
- package/dist/tests/browserstack.permissions.spec.d.ts +2 -0
- package/dist/tests/browserstack.permissions.spec.d.ts.map +1 -0
- package/dist/tests/browserstack.permissions.spec.js +93 -0
- package/dist/types/index.d.ts +19 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -45,6 +45,7 @@ npm run changeset # prepare release notes when changes ship
|
|
|
45
45
|
- Inspect Playwright fixtures: `rg -n "extend<TestLevelFixtures" src/fixture` (fallback: `grep -rn "extend<TestLevelFixtures" src/fixture`)
|
|
46
46
|
- Track vision helpers: `rg -n "AppwrightVision" src/vision` (fallback: `grep -rn "AppwrightVision" src/vision`)
|
|
47
47
|
- Find targeted tests: `rg -n "\\.spec\\.ts" src/tests` (fallback: `grep -rn "\.spec\.ts" src/tests`)
|
|
48
|
+
- Review BrowserStack permission prompts wiring: `rg -n "permissionPrompts" src/providers src/types`
|
|
48
49
|
|
|
49
50
|
## 6. Definition of Done
|
|
50
51
|
- `npm run lint && npm run build && npm test -- --run` must all pass locally
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# appwright
|
|
2
2
|
|
|
3
|
+
## 0.7.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 3f00c08: Add device-level controls for BrowserStack permission prompts, including Android auto-grant toggles and iOS alert behaviour that respects the iOS 13 capability flip.
|
|
8
|
+
|
|
3
9
|
## 0.6.1
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
|
@@ -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;AAsDtC,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;YAiBZ,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;IAuFlD,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;
|
|
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;AAsDtC,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;YAiBZ,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;IAuFlD,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;CAuHrB"}
|
|
@@ -250,6 +250,7 @@ class BrowserStackDeviceProvider {
|
|
|
250
250
|
if (!process.env[envVarKey]) {
|
|
251
251
|
throw new Error(`process.env.${envVarKey} is not set. Did the file upload work?`);
|
|
252
252
|
}
|
|
253
|
+
const permissionPrompts = deviceConfig?.permissionPrompts;
|
|
253
254
|
const bstackOptions = {
|
|
254
255
|
debug: true,
|
|
255
256
|
interactiveDebugging: true,
|
|
@@ -296,6 +297,38 @@ class BrowserStackDeviceProvider {
|
|
|
296
297
|
}
|
|
297
298
|
}
|
|
298
299
|
}
|
|
300
|
+
const capabilities = {
|
|
301
|
+
"bstack:options": bstackOptions,
|
|
302
|
+
"appium:app": process.env[envVarKey],
|
|
303
|
+
"appium:fullReset": true,
|
|
304
|
+
"appium:settings[snapshotMaxDepth]": 62,
|
|
305
|
+
};
|
|
306
|
+
if (platformName === types_1.Platform.ANDROID) {
|
|
307
|
+
const grantPreference = permissionPrompts?.android?.grantPermissions;
|
|
308
|
+
if (grantPreference !== "manual") {
|
|
309
|
+
capabilities["appium:autoGrantPermissions"] =
|
|
310
|
+
typeof grantPreference === "boolean" ? grantPreference : true;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
if (platformName === types_1.Platform.IOS) {
|
|
314
|
+
const iosBehavior = permissionPrompts?.ios?.behavior ?? "accept";
|
|
315
|
+
if (iosBehavior !== "manual") {
|
|
316
|
+
const osVersionNumeric = parseFloat(deviceConfig.osVersion);
|
|
317
|
+
const isFlipped = !Number.isNaN(osVersionNumeric) && osVersionNumeric >= 13;
|
|
318
|
+
const acceptKey = isFlipped
|
|
319
|
+
? "appium:autoDismissAlerts"
|
|
320
|
+
: "appium:autoAcceptAlerts";
|
|
321
|
+
const dismissKey = isFlipped
|
|
322
|
+
? "appium:autoAcceptAlerts"
|
|
323
|
+
: "appium:autoDismissAlerts";
|
|
324
|
+
if (iosBehavior === "accept") {
|
|
325
|
+
capabilities[acceptKey] = true;
|
|
326
|
+
}
|
|
327
|
+
if (iosBehavior === "dismiss") {
|
|
328
|
+
capabilities[dismissKey] = true;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
299
332
|
return {
|
|
300
333
|
port: 443,
|
|
301
334
|
path: "/wd/hub",
|
|
@@ -304,14 +337,7 @@ class BrowserStackDeviceProvider {
|
|
|
304
337
|
user: process.env.BROWSERSTACK_USERNAME,
|
|
305
338
|
key: process.env.BROWSERSTACK_ACCESS_KEY,
|
|
306
339
|
hostname: "hub.browserstack.com",
|
|
307
|
-
capabilities
|
|
308
|
-
"bstack:options": bstackOptions,
|
|
309
|
-
"appium:autoGrantPermissions": true,
|
|
310
|
-
"appium:app": process.env[envVarKey],
|
|
311
|
-
"appium:autoAcceptAlerts": true,
|
|
312
|
-
"appium:fullReset": true,
|
|
313
|
-
"appium:settings[snapshotMaxDepth]": 62,
|
|
314
|
-
},
|
|
340
|
+
capabilities,
|
|
315
341
|
};
|
|
316
342
|
}
|
|
317
343
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browserstack.permissions.spec.d.ts","sourceRoot":"","sources":["../../src/tests/browserstack.permissions.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const browserstack_1 = require("../providers/browserstack");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
const makeEnvKey = (projectName) => `BROWSERSTACK_APP_URL_${projectName.toUpperCase()}`;
|
|
7
|
+
const baseDevice = {
|
|
8
|
+
provider: "browserstack",
|
|
9
|
+
name: "Test Device",
|
|
10
|
+
osVersion: "14",
|
|
11
|
+
};
|
|
12
|
+
const makeProvider = (platform, deviceOverrides = {}) => {
|
|
13
|
+
const projectName = "mobile";
|
|
14
|
+
const project = {
|
|
15
|
+
name: projectName,
|
|
16
|
+
use: {
|
|
17
|
+
buildPath: "bs://app-url",
|
|
18
|
+
platform,
|
|
19
|
+
expectTimeout: 5_000,
|
|
20
|
+
device: {
|
|
21
|
+
...baseDevice,
|
|
22
|
+
...deviceOverrides,
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
const provider = new browserstack_1.BrowserStackDeviceProvider(project, undefined);
|
|
27
|
+
process.env[makeEnvKey(projectName)] = "bs://app-url";
|
|
28
|
+
return { provider, projectName };
|
|
29
|
+
};
|
|
30
|
+
(0, vitest_1.afterEach)(() => {
|
|
31
|
+
delete process.env.BROWSERSTACK_USERNAME;
|
|
32
|
+
delete process.env.BROWSERSTACK_ACCESS_KEY;
|
|
33
|
+
Object.keys(process.env)
|
|
34
|
+
.filter((key) => key.startsWith("BROWSERSTACK_APP_URL_"))
|
|
35
|
+
.forEach((key) => delete process.env[key]);
|
|
36
|
+
});
|
|
37
|
+
(0, vitest_1.describe)("BrowserStack permission prompt capabilities", () => {
|
|
38
|
+
(0, vitest_1.test)("android defaults to auto-granting permissions", () => {
|
|
39
|
+
const { provider } = makeProvider(types_1.Platform.ANDROID);
|
|
40
|
+
const config = provider.createConfig();
|
|
41
|
+
(0, vitest_1.expect)(config.capabilities["appium:autoGrantPermissions"]).toBe(true);
|
|
42
|
+
});
|
|
43
|
+
(0, vitest_1.test)("android manual mode omits autoGrantPermissions capability", () => {
|
|
44
|
+
const { provider } = makeProvider(types_1.Platform.ANDROID, {
|
|
45
|
+
permissionPrompts: { android: { grantPermissions: "manual" } },
|
|
46
|
+
});
|
|
47
|
+
const config = provider.createConfig();
|
|
48
|
+
(0, vitest_1.expect)(config.capabilities).not.toHaveProperty("appium:autoGrantPermissions");
|
|
49
|
+
});
|
|
50
|
+
(0, vitest_1.test)("ios defaults to accepting alerts below iOS 13", () => {
|
|
51
|
+
const { provider } = makeProvider(types_1.Platform.IOS, {
|
|
52
|
+
osVersion: "12.4",
|
|
53
|
+
});
|
|
54
|
+
const config = provider.createConfig();
|
|
55
|
+
(0, vitest_1.expect)(config.capabilities["appium:autoAcceptAlerts"]).toBe(true);
|
|
56
|
+
(0, vitest_1.expect)(config.capabilities["appium:autoDismissAlerts"]).toBeUndefined();
|
|
57
|
+
});
|
|
58
|
+
(0, vitest_1.test)("ios defaults to accepting alerts on iOS 13+ using flipped capability", () => {
|
|
59
|
+
const { provider } = makeProvider(types_1.Platform.IOS, {
|
|
60
|
+
osVersion: "14.0",
|
|
61
|
+
});
|
|
62
|
+
const config = provider.createConfig();
|
|
63
|
+
(0, vitest_1.expect)(config.capabilities["appium:autoDismissAlerts"]).toBe(true);
|
|
64
|
+
(0, vitest_1.expect)(config.capabilities["appium:autoAcceptAlerts"]).toBeUndefined();
|
|
65
|
+
});
|
|
66
|
+
(0, vitest_1.test)("ios manual mode omits alert capabilities", () => {
|
|
67
|
+
const { provider } = makeProvider(types_1.Platform.IOS, {
|
|
68
|
+
osVersion: "15",
|
|
69
|
+
permissionPrompts: { ios: { behavior: "manual" } },
|
|
70
|
+
});
|
|
71
|
+
const config = provider.createConfig();
|
|
72
|
+
(0, vitest_1.expect)(config.capabilities).not.toHaveProperty("appium:autoAcceptAlerts");
|
|
73
|
+
(0, vitest_1.expect)(config.capabilities).not.toHaveProperty("appium:autoDismissAlerts");
|
|
74
|
+
});
|
|
75
|
+
(0, vitest_1.test)("ios dismiss behavior sets appropriate capability", () => {
|
|
76
|
+
const { provider } = makeProvider(types_1.Platform.IOS, {
|
|
77
|
+
osVersion: "12.0",
|
|
78
|
+
permissionPrompts: { ios: { behavior: "dismiss" } },
|
|
79
|
+
});
|
|
80
|
+
const config = provider.createConfig();
|
|
81
|
+
(0, vitest_1.expect)(config.capabilities["appium:autoDismissAlerts"]).toBe(true);
|
|
82
|
+
(0, vitest_1.expect)(config.capabilities["appium:autoAcceptAlerts"]).toBeUndefined();
|
|
83
|
+
});
|
|
84
|
+
(0, vitest_1.test)("ios dismiss on 13+ flips to autoAcceptAlerts capability", () => {
|
|
85
|
+
const { provider } = makeProvider(types_1.Platform.IOS, {
|
|
86
|
+
osVersion: "16.0",
|
|
87
|
+
permissionPrompts: { ios: { behavior: "dismiss" } },
|
|
88
|
+
});
|
|
89
|
+
const config = provider.createConfig();
|
|
90
|
+
(0, vitest_1.expect)(config.capabilities["appium:autoAcceptAlerts"]).toBe(true);
|
|
91
|
+
(0, vitest_1.expect)(config.capabilities["appium:autoDismissAlerts"]).toBeUndefined();
|
|
92
|
+
});
|
|
93
|
+
});
|
package/dist/types/index.d.ts
CHANGED
|
@@ -126,6 +126,25 @@ export type BrowserStackConfig = {
|
|
|
126
126
|
* ```
|
|
127
127
|
*/
|
|
128
128
|
updateAppSettings?: IosAppSettings;
|
|
129
|
+
/**
|
|
130
|
+
* Controls how BrowserStack handles system permission prompts for this device.
|
|
131
|
+
* Defaults to automatically granting Android permissions and accepting iOS alerts.
|
|
132
|
+
*/
|
|
133
|
+
permissionPrompts?: BrowserStackPermissionPrompts;
|
|
134
|
+
};
|
|
135
|
+
export type BrowserStackPermissionPrompts = {
|
|
136
|
+
android?: {
|
|
137
|
+
/**
|
|
138
|
+
* When true, auto-grant Android app permissions on install. Set to false to disable, or "manual" to omit the capability entirely.
|
|
139
|
+
*/
|
|
140
|
+
grantPermissions?: boolean | "manual";
|
|
141
|
+
};
|
|
142
|
+
ios?: {
|
|
143
|
+
/**
|
|
144
|
+
* Desired handling for iOS permission alerts. Defaults to "accept" and accounts for the iOS 13+ capability flip.
|
|
145
|
+
*/
|
|
146
|
+
behavior?: "accept" | "dismiss" | "manual";
|
|
147
|
+
};
|
|
129
148
|
};
|
|
130
149
|
export type LambdaTestConfig = {
|
|
131
150
|
provider: "lambdatest";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAEtE,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,WAAW,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9B;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7B;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IAEpB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,KAAK,GAAG,mBAAmB,CAAC;IAEjE;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,kBAAkB,GAClB,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,cAAc,CAAC;IAEzB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAEhC;;;OAGG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAErC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;;;;;;;;OAcG;IACH,iBAAiB,CAAC,EAAE,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|