@mobilewright/test 0.0.25 → 0.0.27
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/fixtures.d.ts +1 -3
- package/dist/fixtures.d.ts.map +1 -1
- package/dist/fixtures.js +58 -19
- package/dist/fixtures.js.map +1 -1
- package/package.json +5 -4
package/dist/fixtures.d.ts
CHANGED
|
@@ -3,12 +3,10 @@ import type { Device, Screen } from '@mobilewright/core';
|
|
|
3
3
|
type MobilewrightTestFixtures = {
|
|
4
4
|
screen: Screen;
|
|
5
5
|
bundleId: string | undefined;
|
|
6
|
-
};
|
|
7
|
-
type MobilewrightWorkerFixtures = {
|
|
8
6
|
platform: 'ios' | 'android' | undefined;
|
|
9
7
|
deviceName: RegExp | undefined;
|
|
10
8
|
device: Device;
|
|
11
9
|
};
|
|
12
|
-
export declare const test: import("playwright/test").TestType<import("playwright/test").PlaywrightTestArgs & import("playwright/test").PlaywrightTestOptions & MobilewrightTestFixtures, import("playwright/test").PlaywrightWorkerArgs & import("playwright/test").PlaywrightWorkerOptions
|
|
10
|
+
export declare const test: import("playwright/test").TestType<import("playwright/test").PlaywrightTestArgs & import("playwright/test").PlaywrightTestOptions & MobilewrightTestFixtures, import("playwright/test").PlaywrightWorkerArgs & import("playwright/test").PlaywrightWorkerOptions>;
|
|
13
11
|
export { expect };
|
|
14
12
|
//# sourceMappingURL=fixtures.d.ts.map
|
package/dist/fixtures.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../src/fixtures.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../src/fixtures.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEzD,KAAK,wBAAwB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;IACxC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAUF,eAAO,MAAM,IAAI,mQAwGf,CAAC;AAEH,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
package/dist/fixtures.js
CHANGED
|
@@ -1,30 +1,69 @@
|
|
|
1
1
|
import { test as base } from '@playwright/test';
|
|
2
2
|
import { mkdir, readFile, unlink } from 'node:fs/promises';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
|
-
import {
|
|
4
|
+
import { createDevicePoolClient, connectDevice, loadConfig, toArray, } from 'mobilewright';
|
|
5
5
|
import { expect } from '@mobilewright/core';
|
|
6
|
+
let cachedClient;
|
|
7
|
+
function getClient() {
|
|
8
|
+
if (!cachedClient) {
|
|
9
|
+
cachedClient = createDevicePoolClient();
|
|
10
|
+
}
|
|
11
|
+
return cachedClient;
|
|
12
|
+
}
|
|
6
13
|
export const test = base.extend({
|
|
7
14
|
bundleId: [async ({}, use) => {
|
|
8
15
|
const config = await loadConfig();
|
|
9
16
|
await use(config.bundleId);
|
|
10
17
|
}, { option: true }],
|
|
11
|
-
platform: [undefined, { option: true
|
|
12
|
-
deviceName: [undefined, { option: true
|
|
13
|
-
device:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
platform: [undefined, { option: true }],
|
|
19
|
+
deviceName: [undefined, { option: true }],
|
|
20
|
+
device: async ({ platform, deviceName, bundleId }, use) => {
|
|
21
|
+
const config = await loadConfig();
|
|
22
|
+
const merged = {
|
|
23
|
+
...config,
|
|
24
|
+
...(platform && { platform }),
|
|
25
|
+
...(deviceName && { deviceName }),
|
|
26
|
+
};
|
|
27
|
+
if (merged.platform !== 'ios' && merged.platform !== 'android') {
|
|
28
|
+
throw new Error(`Unsupported platform: "${merged.platform}". Must be "ios" or "android".`);
|
|
29
|
+
}
|
|
30
|
+
const client = getClient();
|
|
31
|
+
const handle = await client.allocate({
|
|
32
|
+
platform: merged.platform,
|
|
33
|
+
deviceNamePattern: merged.deviceName?.source,
|
|
34
|
+
deviceId: merged.deviceId,
|
|
35
|
+
});
|
|
36
|
+
const device = await connectDevice({
|
|
37
|
+
platform: handle.platform,
|
|
38
|
+
deviceId: handle.deviceId,
|
|
39
|
+
driverConfig: merged.driver,
|
|
40
|
+
url: merged.url,
|
|
41
|
+
timeout: merged.timeout,
|
|
42
|
+
});
|
|
43
|
+
try {
|
|
44
|
+
for (const appPath of toArray(merged.installApps)) {
|
|
45
|
+
const installed = await client.isAppInstalled(handle.allocationId, appPath);
|
|
46
|
+
if (!installed) {
|
|
47
|
+
await device.installApp(appPath);
|
|
48
|
+
await client.recordAppInstalled(handle.allocationId, appPath);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (bundleId) {
|
|
52
|
+
try {
|
|
53
|
+
await device.terminateApp(bundleId);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// app may not be running
|
|
57
|
+
}
|
|
58
|
+
await device.launchApp(bundleId);
|
|
22
59
|
}
|
|
23
|
-
const launcher = merged.platform === 'android' ? android : ios;
|
|
24
|
-
const device = await launcher.launch(merged);
|
|
25
60
|
await use(device);
|
|
26
|
-
|
|
27
|
-
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
await device.disconnect();
|
|
64
|
+
await client.release(handle.allocationId);
|
|
65
|
+
}
|
|
66
|
+
},
|
|
28
67
|
screen: async ({ device, video }, use, testInfo) => {
|
|
29
68
|
const videoMode = typeof video === 'object' ? video.mode : video;
|
|
30
69
|
const shouldRecord = videoMode === 'on' || videoMode === 'retain-on-failure';
|
|
@@ -37,7 +76,7 @@ export const test = base.extend({
|
|
|
37
76
|
await device.startRecording({ output: videoPath });
|
|
38
77
|
}
|
|
39
78
|
catch {
|
|
40
|
-
//
|
|
79
|
+
// recording may not be supported — continue without it
|
|
41
80
|
}
|
|
42
81
|
}
|
|
43
82
|
await use(device.screen);
|
|
@@ -53,7 +92,7 @@ export const test = base.extend({
|
|
|
53
92
|
await unlink(videoPath).catch(() => { });
|
|
54
93
|
}
|
|
55
94
|
catch {
|
|
56
|
-
//
|
|
95
|
+
// best effort — recording may have failed to start
|
|
57
96
|
}
|
|
58
97
|
}
|
|
59
98
|
if (testInfo.status !== testInfo.expectedStatus) {
|
|
@@ -62,7 +101,7 @@ export const test = base.extend({
|
|
|
62
101
|
await testInfo.attach('screenshot-on-failure', { body: screenshot, contentType: 'image/png' });
|
|
63
102
|
}
|
|
64
103
|
catch {
|
|
65
|
-
//
|
|
104
|
+
// device may be disconnected
|
|
66
105
|
}
|
|
67
106
|
}
|
|
68
107
|
},
|
package/dist/fixtures.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../src/fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,
|
|
1
|
+
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../src/fixtures.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mobilewright/test",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.27",
|
|
4
4
|
"description": "Test fixtures for Mobilewright",
|
|
5
5
|
"homepage": "https://mobilewright.dev",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -29,8 +29,9 @@
|
|
|
29
29
|
"dist"
|
|
30
30
|
],
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@mobilewright/core": "^0.0.
|
|
33
|
-
"@mobilewright/protocol": "^0.0.
|
|
34
|
-
"@playwright/test": "1.58.2"
|
|
32
|
+
"@mobilewright/core": "^0.0.27",
|
|
33
|
+
"@mobilewright/protocol": "^0.0.27",
|
|
34
|
+
"@playwright/test": "1.58.2",
|
|
35
|
+
"mobilewright": "^0.0.27"
|
|
35
36
|
}
|
|
36
37
|
}
|