@astur-mobile/core 0.1.0-beta.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.
@@ -0,0 +1,392 @@
1
+ import { mkdir, writeFile } from 'node:fs/promises';
2
+ import { dirname } from 'node:path';
3
+ import { materializeCapabilities, normalizeCapabilities } from './config.js';
4
+ import { AsturError } from './errors.js';
5
+ import { createInspectorSession } from './inspector.js';
6
+ import { preparePointerTargetForKeyboard } from './keyboard.js';
7
+ import { by, findElements, MobileLocator } from './locator.js';
8
+ import { delay } from './wait.js';
9
+ export class AsturDevice {
10
+ capabilities;
11
+ deviceInfo;
12
+ session;
13
+ constructor(session) {
14
+ this.session = session;
15
+ this.capabilities = session.capabilities;
16
+ this.deviceInfo = session.deviceInfo;
17
+ }
18
+ app = {
19
+ install: async (path) => {
20
+ const appPath = path ?? this.capabilities.app?.path;
21
+ if (!appPath) {
22
+ throw new AsturError('APP_PATH_REQUIRED', 'No app path was provided.');
23
+ }
24
+ await this.session.installApp(appPath);
25
+ },
26
+ uninstall: async (target) => {
27
+ await this.session.uninstallApp(appIdentifier(this.capabilities, target));
28
+ },
29
+ launch: async (options) => {
30
+ await this.session.launchApp(options);
31
+ },
32
+ terminate: async () => {
33
+ await this.session.terminateApp();
34
+ },
35
+ clearData: async (target) => {
36
+ await this.session.clearAppData(appIdentifier(this.capabilities, target));
37
+ },
38
+ clearCache: async (target) => {
39
+ await this.session.clearAppCache(appIdentifier(this.capabilities, target));
40
+ },
41
+ reset: async (options) => {
42
+ await this.session.resetApp(options);
43
+ }
44
+ };
45
+ gestures = {
46
+ tap: async (point, options) => {
47
+ await this.tap(point, options);
48
+ },
49
+ doubleTap: async (point, options) => {
50
+ await this.doubleTap(point, options);
51
+ },
52
+ longPress: async (point, options) => {
53
+ await this.longPress(point, options);
54
+ },
55
+ pressAndHold: async (point, options) => {
56
+ await this.pressAndHold(point, options);
57
+ },
58
+ swipe: async (gesture) => {
59
+ await this.swipe(gesture);
60
+ },
61
+ drag: async (gesture) => {
62
+ await this.drag(gesture);
63
+ }
64
+ };
65
+ navigation = {
66
+ back: async () => {
67
+ await this.back();
68
+ },
69
+ home: async () => {
70
+ await this.home();
71
+ },
72
+ recentApps: async () => {
73
+ await this.recentApps();
74
+ }
75
+ };
76
+ orientation = {
77
+ set: async (orientation) => {
78
+ await this.setOrientation(orientation);
79
+ },
80
+ portrait: async () => {
81
+ await this.setOrientation('portrait');
82
+ },
83
+ landscape: async () => {
84
+ await this.setOrientation('landscape');
85
+ }
86
+ };
87
+ system = {
88
+ lock: async () => {
89
+ await this.lock();
90
+ },
91
+ unlock: async () => {
92
+ await this.unlock();
93
+ },
94
+ isLocked: async () => this.isLocked()
95
+ };
96
+ permissions = {
97
+ grant: async (permission, target) => {
98
+ if (!this.session.grantPermission) {
99
+ throw new AsturError('PERMISSIONS_NOT_SUPPORTED', `${this.deviceInfo.platform} does not expose permission control yet.`);
100
+ }
101
+ await this.session.grantPermission(appIdentifier(this.capabilities, target), permission);
102
+ },
103
+ revoke: async (permission, target) => {
104
+ if (!this.session.revokePermission) {
105
+ throw new AsturError('PERMISSIONS_NOT_SUPPORTED', `${this.deviceInfo.platform} does not expose permission control yet.`);
106
+ }
107
+ await this.session.revokePermission(appIdentifier(this.capabilities, target), permission);
108
+ }
109
+ };
110
+ keyboard = {
111
+ isVisible: async () => {
112
+ if (!this.session.getKeyboardState) {
113
+ return false;
114
+ }
115
+ return (await this.session.getKeyboardState()).visible;
116
+ },
117
+ dismiss: async () => {
118
+ if (!this.session.dismissKeyboard) {
119
+ throw new AsturError('KEYBOARD_NOT_SUPPORTED', `${this.deviceInfo.platform} does not expose soft keyboard control yet.`);
120
+ }
121
+ await this.session.dismissKeyboard();
122
+ },
123
+ hide: async () => {
124
+ await this.keyboard.dismiss();
125
+ },
126
+ show: async (target) => {
127
+ if (!target) {
128
+ const visible = this.session.getKeyboardState
129
+ ? (await this.session.getKeyboardState().catch(() => ({ visible: false }))).visible
130
+ : false;
131
+ if (visible) {
132
+ return;
133
+ }
134
+ throw new AsturError('KEYBOARD_TARGET_REQUIRED', 'Showing the mobile keyboard requires a text-input locator. Use device.keyboard.show(device.getById("field")) or locator.tap({ keyboard: "preserve" }).');
135
+ }
136
+ const locator = target instanceof MobileLocator ? target : this.find(target);
137
+ await locator.tap({ keyboard: 'preserve' });
138
+ }
139
+ };
140
+ files = {
141
+ push: async (localPath, remotePath) => {
142
+ if (!this.session.pushFile) {
143
+ throw unsupportedFilesError(this.deviceInfo.platform);
144
+ }
145
+ await this.session.pushFile(localPath, remotePath);
146
+ },
147
+ pull: async (remotePath) => {
148
+ if (!this.session.pullFile) {
149
+ throw unsupportedFilesError(this.deviceInfo.platform);
150
+ }
151
+ return this.session.pullFile(remotePath);
152
+ },
153
+ save: async (remotePath, localPath) => {
154
+ if (this.session.saveFile) {
155
+ await this.session.saveFile(remotePath, localPath);
156
+ return;
157
+ }
158
+ if (!this.session.pullFile) {
159
+ throw unsupportedFilesError(this.deviceInfo.platform);
160
+ }
161
+ await writeLocalFile(localPath, await this.session.pullFile(remotePath));
162
+ },
163
+ remove: async (remotePath) => {
164
+ if (!this.session.removeFile) {
165
+ throw unsupportedFilesError(this.deviceInfo.platform);
166
+ }
167
+ await this.session.removeFile(remotePath);
168
+ },
169
+ list: async (remotePath) => {
170
+ if (!this.session.listFiles) {
171
+ throw unsupportedFilesError(this.deviceInfo.platform);
172
+ }
173
+ return this.session.listFiles(remotePath);
174
+ }
175
+ };
176
+ find(selector) {
177
+ return new MobileLocator(this.session, selector);
178
+ }
179
+ async findAll(selector) {
180
+ return this.find(selector).all();
181
+ }
182
+ async findMany(selectors) {
183
+ if (this.session.findManyElements) {
184
+ return this.session.findManyElements(selectors);
185
+ }
186
+ const root = await this.session.getTree();
187
+ return selectors.flatMap((selector) => findElements(root, selector));
188
+ }
189
+ locator(selector) {
190
+ return this.find(selector);
191
+ }
192
+ getByLabel(value, options) {
193
+ return this.find(by.label(value, options));
194
+ }
195
+ getByA11y(value, options) {
196
+ return this.find(by.a11y(value, options));
197
+ }
198
+ getByText(value, options) {
199
+ return this.find(by.text(value, options));
200
+ }
201
+ getByTestId(value, options) {
202
+ return this.find(by.testId(value, options));
203
+ }
204
+ getById(value, options) {
205
+ return this.find(by.id(value, options));
206
+ }
207
+ getByRole(role, options) {
208
+ return this.find(by.role(role, options));
209
+ }
210
+ getByType(value, options) {
211
+ return this.find(by.type(value, options));
212
+ }
213
+ inspector(options) {
214
+ return createInspectorSession(this.session, options);
215
+ }
216
+ async suggestLocators(selector) {
217
+ return this.inspector().generateLocator(selector);
218
+ }
219
+ async tap(point, options = {}) {
220
+ await preparePointerTargetForKeyboard(this.session, point, options.keyboard);
221
+ await this.session.tap(point);
222
+ }
223
+ async doubleTap(point, options = {}) {
224
+ await preparePointerTargetForKeyboard(this.session, point, options.keyboard);
225
+ if (this.session.doubleTap) {
226
+ await this.session.doubleTap(point, options);
227
+ return;
228
+ }
229
+ await this.session.tap(point);
230
+ await delay(options.intervalMs ?? 80);
231
+ await this.session.tap(point);
232
+ }
233
+ async longPress(point, options) {
234
+ await preparePointerTargetForKeyboard(this.session, point, options?.keyboard);
235
+ await this.session.longPress(point, options);
236
+ }
237
+ async pressAndHold(point, options) {
238
+ await this.longPress(point, options);
239
+ }
240
+ async setOrientation(orientation) {
241
+ if (!this.session.setOrientation) {
242
+ throw new AsturError('ORIENTATION_NOT_SUPPORTED', `${this.deviceInfo.platform} does not expose orientation control yet.`);
243
+ }
244
+ await this.session.setOrientation(orientation);
245
+ }
246
+ async pressKey(key) {
247
+ await this.session.pressKey(key);
248
+ }
249
+ async back() {
250
+ await this.pressKey('BACK');
251
+ }
252
+ async home() {
253
+ await this.pressKey('HOME');
254
+ }
255
+ async recentApps() {
256
+ await this.pressKey('APP_SWITCH');
257
+ }
258
+ async recents() {
259
+ await this.recentApps();
260
+ }
261
+ async lock() {
262
+ await this.session.lockDevice();
263
+ }
264
+ async unlock() {
265
+ await this.session.unlockDevice();
266
+ }
267
+ async isLocked() {
268
+ return this.session.isDeviceLocked();
269
+ }
270
+ async swipe(gesture) {
271
+ await this.session.swipe(gesture);
272
+ }
273
+ async drag(gesture) {
274
+ await this.session.drag(gesture);
275
+ }
276
+ async screenshot(options = {}) {
277
+ const image = await this.session.screenshot();
278
+ if (options.path) {
279
+ await writeLocalFile(options.path, image);
280
+ }
281
+ return image;
282
+ }
283
+ async startRecording() {
284
+ if (!this.session.startRecording) {
285
+ throw new AsturError('RECORDING_NOT_SUPPORTED', `${this.deviceInfo.platform} does not support native video recording yet.`);
286
+ }
287
+ await this.session.startRecording();
288
+ }
289
+ async stopRecording(options = {}) {
290
+ if (!this.session.stopRecording) {
291
+ throw new AsturError('RECORDING_NOT_SUPPORTED', `${this.deviceInfo.platform} does not support native video recording yet.`);
292
+ }
293
+ return this.session.stopRecording(options);
294
+ }
295
+ async tree() {
296
+ return this.session.getTree();
297
+ }
298
+ async viewport() {
299
+ if (this.session.getViewport) {
300
+ return this.session.getViewport();
301
+ }
302
+ return (await this.session.getTree()).bounds;
303
+ }
304
+ async openWeb(url) {
305
+ await this.session.openWeb(url);
306
+ }
307
+ async contexts() {
308
+ if (!this.session.listContexts) {
309
+ return [nativeContext()];
310
+ }
311
+ const contexts = await this.session.listContexts();
312
+ return contexts.some((context) => context.type === 'native')
313
+ ? contexts
314
+ : [nativeContext(), ...contexts];
315
+ }
316
+ async webViewEndpoint(selector) {
317
+ if (!this.session.connectWebView) {
318
+ throw new AsturError('WEBVIEW_NOT_SUPPORTED', `${this.deviceInfo.platform} does not expose WebView DOM contexts yet.`);
319
+ }
320
+ return this.session.connectWebView(selector);
321
+ }
322
+ async close() {
323
+ await this.session.close();
324
+ }
325
+ }
326
+ async function writeLocalFile(path, contents) {
327
+ await mkdir(dirname(path), { recursive: true });
328
+ await writeFile(path, contents);
329
+ }
330
+ function unsupportedFilesError(platform) {
331
+ return new AsturError('FILE_TRANSFER_NOT_SUPPORTED', `${platform} does not expose device file transfer yet.`);
332
+ }
333
+ function nativeContext() {
334
+ return {
335
+ id: 'native',
336
+ type: 'native',
337
+ title: 'Native'
338
+ };
339
+ }
340
+ function appIdentifier(capabilities, target) {
341
+ const app = typeof target === 'object' ? target : capabilities.app;
342
+ const identifier = typeof target === 'string'
343
+ ? target
344
+ : app?.packageName ?? app?.bundleId;
345
+ if (!identifier) {
346
+ throw new AsturError('APP_IDENTIFIER_REQUIRED', 'App management requires app.packageName on Android or app.bundleId on iOS.');
347
+ }
348
+ return identifier;
349
+ }
350
+ export class AsturRuntime {
351
+ drivers = new Map();
352
+ register(driver) {
353
+ this.drivers.set(driver.platform, driver);
354
+ return this;
355
+ }
356
+ async doctor() {
357
+ const checks = await Promise.all([...this.drivers.values()].map((driver) => driver.doctor()));
358
+ return checks.flat();
359
+ }
360
+ async listDevices(platform) {
361
+ const drivers = platform ? [this.requireDriver(platform)] : [...this.drivers.values()];
362
+ const devices = await Promise.all(drivers.map((driver) => driver.listDevices()));
363
+ return devices.flat();
364
+ }
365
+ async createDevice(config) {
366
+ const capabilities = await materializeCapabilities(normalizeCapabilities(config));
367
+ const driver = this.requireDriver(capabilities.platform);
368
+ const session = await driver.createSession(capabilities);
369
+ const app = session.capabilities.app;
370
+ if (app?.path) {
371
+ const identifier = app.packageName ?? app.bundleId;
372
+ if (identifier && session.isAppInstalled) {
373
+ const installed = await session.isAppInstalled(identifier).catch(() => false);
374
+ if (!installed) {
375
+ await session.installApp(app.path);
376
+ }
377
+ }
378
+ else {
379
+ await session.installApp(app.path);
380
+ }
381
+ }
382
+ return new AsturDevice(session);
383
+ }
384
+ requireDriver(platform) {
385
+ const driver = this.drivers.get(platform);
386
+ if (!driver) {
387
+ throw new AsturError('DRIVER_NOT_REGISTERED', `No Astur driver registered for ${platform}.`);
388
+ }
389
+ return driver;
390
+ }
391
+ }
392
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
package/dist/wait.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ export interface WaitOptions {
2
+ timeout?: number;
3
+ interval?: number;
4
+ message?: string;
5
+ }
6
+ export declare function waitFor<T>(predicate: () => Promise<T | undefined | false | null>, options?: WaitOptions): Promise<T>;
7
+ export declare function delay(ms: number): Promise<void>;
8
+ //# sourceMappingURL=wait.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../src/wait.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,OAAO,CAAC,CAAC,EAC7B,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC,EACtD,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,CAAC,CAAC,CAoBZ;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
package/dist/wait.js ADDED
@@ -0,0 +1,24 @@
1
+ import { TimeoutError } from './errors.js';
2
+ export async function waitFor(predicate, options = {}) {
3
+ const timeout = options.timeout ?? 10_000;
4
+ const interval = options.interval ?? 250;
5
+ const startedAt = Date.now();
6
+ let lastError;
7
+ while (Date.now() - startedAt <= timeout) {
8
+ try {
9
+ const value = await predicate();
10
+ if (value) {
11
+ return value;
12
+ }
13
+ }
14
+ catch (error) {
15
+ lastError = error;
16
+ }
17
+ await delay(interval);
18
+ }
19
+ throw new TimeoutError(options.message ?? `Timed out after ${timeout} ms`, { lastError });
20
+ }
21
+ export function delay(ms) {
22
+ return new Promise((resolve) => setTimeout(resolve, ms));
23
+ }
24
+ //# sourceMappingURL=wait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait.js","sourceRoot":"","sources":["../src/wait.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQ3C,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,SAAsD,EACtD,UAAuB,EAAE;IAEzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC;IAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,SAAkB,CAAC;IAEvB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;YAChC,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC;QAED,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,OAAO,IAAI,mBAAmB,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@astur-mobile/core",
3
+ "version": "0.1.0-beta.0",
4
+ "description": "Core Astur runtime, sessions, locators, and auto-waiting.",
5
+ "license": "Apache-2.0",
6
+ "author": "Amr Salem",
7
+ "type": "module",
8
+ "main": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
14
+ }
15
+ },
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
19
+ "files": [
20
+ "dist"
21
+ ],
22
+ "scripts": {
23
+ "build": "tsc -b"
24
+ },
25
+ "dependencies": {
26
+ "@astur-mobile/protocol": "0.1.0-beta.0"
27
+ },
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "git+https://github.com/Astur-mobile/Astur.git",
31
+ "directory": "packages/core"
32
+ },
33
+ "homepage": "https://astur-mobile.github.io/Astur/",
34
+ "bugs": {
35
+ "url": "https://github.com/Astur-mobile/Astur/issues"
36
+ }
37
+ }