@keepsnappy/appium-driver 0.0.0-stage → 0.1.0-alpha.11

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.
Files changed (44) hide show
  1. package/README.md +37 -2
  2. package/dist/src/browserstack.d.ts +24 -0
  3. package/dist/src/browserstack.js +54 -0
  4. package/dist/src/browserstack.js.map +1 -0
  5. package/dist/src/cli.d.ts +2 -0
  6. package/dist/src/cli.js +8 -0
  7. package/dist/src/cli.js.map +1 -0
  8. package/dist/src/index.d.ts +10 -0
  9. package/dist/src/index.js +11 -0
  10. package/dist/src/index.js.map +1 -0
  11. package/dist/src/journey.d.ts +43 -0
  12. package/dist/src/journey.js +2 -0
  13. package/dist/src/journey.js.map +1 -0
  14. package/dist/src/links.d.ts +35 -0
  15. package/dist/src/links.js +87 -0
  16. package/dist/src/links.js.map +1 -0
  17. package/dist/src/load.d.ts +4 -0
  18. package/dist/src/load.js +23 -0
  19. package/dist/src/load.js.map +1 -0
  20. package/dist/src/platform.d.ts +63 -0
  21. package/dist/src/platform.js +145 -0
  22. package/dist/src/platform.js.map +1 -0
  23. package/dist/src/run.d.ts +92 -0
  24. package/dist/src/run.js +157 -0
  25. package/dist/src/run.js.map +1 -0
  26. package/dist/src/selectors.d.ts +25 -0
  27. package/dist/src/selectors.js +57 -0
  28. package/dist/src/selectors.js.map +1 -0
  29. package/dist/src/session.d.ts +156 -0
  30. package/dist/src/session.js +449 -0
  31. package/dist/src/session.js.map +1 -0
  32. package/dist/src/snapshot.d.ts +64 -0
  33. package/dist/src/snapshot.js +197 -0
  34. package/dist/src/snapshot.js.map +1 -0
  35. package/dist/src/tokens.d.ts +14 -0
  36. package/dist/src/tokens.js +28 -0
  37. package/dist/src/tokens.js.map +1 -0
  38. package/dist/src/version.d.ts +14 -0
  39. package/dist/src/version.js +69 -0
  40. package/dist/src/version.js.map +1 -0
  41. package/dist/src/webdriver.d.ts +83 -0
  42. package/dist/src/webdriver.js +233 -0
  43. package/dist/src/webdriver.js.map +1 -0
  44. package/package.json +37 -4
@@ -0,0 +1,233 @@
1
+ import { IOS } from './platform.js';
2
+ import { id } from './selectors.js';
3
+ import { idMatcher } from './snapshot.js';
4
+ const ELEMENT_KEY = 'element-6066-11e4-a52e-4f735466cecf';
5
+ // A touch with no hold reaches the app as touchstart and touchend in one frame; Maestro's taps hold ~108 ms.
6
+ const TAP_HOLD_MS = 100;
7
+ export const realSleep = (ms) => new Promise((r) => setTimeout(r, ms));
8
+ export class WdError extends Error {
9
+ wdError;
10
+ constructor(message, wdError) {
11
+ super(message);
12
+ this.wdError = wdError;
13
+ }
14
+ }
15
+ /** A minimal W3C WebDriver client that times every command, sent to returned. */
16
+ export class Driver {
17
+ bundleId;
18
+ platform;
19
+ headers;
20
+ hub;
21
+ fetch;
22
+ log;
23
+ now;
24
+ sleep;
25
+ sessionId = null;
26
+ context = {};
27
+ viewport = null;
28
+ rects = new Map();
29
+ constructor(o) {
30
+ this.bundleId = o.bundleId;
31
+ this.platform = o.platform ?? IOS;
32
+ this.headers = o.headers ?? {};
33
+ this.hub = o.hub.replace(/\/+$/, '');
34
+ this.fetch = o.fetch ?? fetch;
35
+ this.log = o.log;
36
+ this.now = o.now ?? Date.now;
37
+ this.sleep = o.sleep ?? realSleep;
38
+ }
39
+ async cmd(method, path, body) {
40
+ const url = `${this.hub}${path.startsWith('/session') || !this.sessionId ? path : `/session/${this.sessionId}${path}`}`;
41
+ const t0 = this.now();
42
+ let res;
43
+ let json;
44
+ try {
45
+ res = await this.fetch(url, {
46
+ method,
47
+ headers: { 'Content-Type': 'application/json', ...this.headers },
48
+ ...(body === undefined ? {} : { body: JSON.stringify(body) }),
49
+ });
50
+ json = await res.json().catch(() => ({}));
51
+ }
52
+ finally {
53
+ this.log.push({ ...this.context, cmd: `${method} ${path.replace(/\/element\/[^/]+/, '/element/:id')}`, t: t0, ms: this.now() - t0, status: res?.status ?? 0 });
54
+ }
55
+ const value = json?.value;
56
+ if (!res.ok || (value && typeof value === 'object' && value.error)) {
57
+ // WDA puts the whole element tree into some messages.
58
+ throw new WdError(`${method} ${path}: ${value?.error ?? res.status} ${String(value?.message ?? '').slice(0, 300)}`.trim(), value?.error ?? String(res.status));
59
+ }
60
+ return value;
61
+ }
62
+ async start(capabilities) {
63
+ const value = await this.cmd('POST', '/session', { capabilities: { alwaysMatch: capabilities } });
64
+ this.sessionId = value.sessionId;
65
+ return value;
66
+ }
67
+ execute(script, arg) {
68
+ return this.cmd('POST', '/execute/sync', { script, args: arg === undefined ? [] : [arg] });
69
+ }
70
+ /** The first match, inside `parent` when given, or null. */
71
+ async find(using, value, parent) {
72
+ try {
73
+ const el = await this.cmd('POST', parent ? `/element/${parent}/element` : '/element', { using, value });
74
+ return el[ELEMENT_KEY] ?? Object.values(el)[0];
75
+ }
76
+ catch (e) {
77
+ if (e instanceof WdError && e.wdError === 'no such element')
78
+ return null;
79
+ throw e;
80
+ }
81
+ }
82
+ async findAll(using, value, parent) {
83
+ const path = parent ? `/element/${parent}/elements` : '/elements';
84
+ const list = await this.cmd('POST', path, { using, value });
85
+ return (list ?? []).map((el) => el[ELEMENT_KEY] ?? Object.values(el)[0]);
86
+ }
87
+ async screen() {
88
+ this.viewport ??= await this.cmd('GET', '/window/rect');
89
+ return this.viewport;
90
+ }
91
+ /** On screen: in the tree with a frame that overlaps the window. `full` asks for the whole frame inside it. */
92
+ async onScreen(el, full = false) {
93
+ let r;
94
+ try {
95
+ r = await this.cmd('GET', `/element/${el}/rect`);
96
+ }
97
+ catch (e) {
98
+ // Gone between the lookup and this read.
99
+ if (e instanceof WdError && e.wdError === 'stale element reference')
100
+ return false;
101
+ throw e;
102
+ }
103
+ const w = await this.screen();
104
+ if (!r || r.width <= 0 || r.height <= 0)
105
+ return false;
106
+ this.rects.set(el, r);
107
+ if (full)
108
+ return r.x >= 0 && r.y >= 0 && r.x + r.width <= w.width && r.y + r.height <= w.height;
109
+ return r.x < w.width && r.y < w.height && r.x + r.width > 0 && r.y + r.height > 0;
110
+ }
111
+ /** The first element the selector matches on screen, or null. */
112
+ async findShown(sel, full = false) {
113
+ let parent;
114
+ if (sel.childOf !== undefined) {
115
+ const p = await this.findShown(id(sel.childOf));
116
+ if (!p)
117
+ return null;
118
+ parent = p;
119
+ }
120
+ for (const { using, value } of this.platform.locators(sel)) {
121
+ if (this.platform.singleFindFirst) {
122
+ const first = await this.find(using, value, parent);
123
+ if (!first)
124
+ continue;
125
+ if (await this.onScreen(first, full))
126
+ return first;
127
+ }
128
+ for (const el of await this.findAll(using, value, parent)) {
129
+ if (await this.onScreen(el, full))
130
+ return el;
131
+ }
132
+ }
133
+ return null;
134
+ }
135
+ /**
136
+ * For each selector, whether an element it matches is on screen: what `findShown` answers, one by one. With `group` the
137
+ * selectors that are only an id are asked together in one lookup (when the platform has one), then each match is told
138
+ * apart by its resource id; that costs one tree walk however many are missing, where one by one costs a walk for each.
139
+ */
140
+ async shownMany(sels, group) {
141
+ const out = sels.map(() => false);
142
+ const tests = sels.map((s) => (s.id !== undefined && s.text === undefined && s.childOf === undefined ? idMatcher(s.id) : null));
143
+ const grouped = group && this.platform.anyOfIds ? tests.flatMap((t, i) => (t ? [i] : [])) : [];
144
+ if (grouped.length >= 2) {
145
+ const { using, value } = this.platform.anyOfIds(grouped.map((i) => sels[i].id));
146
+ for (const el of await this.findAll(using, value)) {
147
+ const wanted = grouped.filter((i) => !out[i]);
148
+ if (wanted.length === 0)
149
+ break;
150
+ let resourceId;
151
+ try {
152
+ resourceId = String(await this.cmd('GET', `/element/${el}/attribute/resource-id`));
153
+ }
154
+ catch (e) {
155
+ // Gone between the lookup and this read; any other failure is not "gone".
156
+ if (e instanceof WdError && e.wdError === 'stale element reference')
157
+ continue;
158
+ throw e;
159
+ }
160
+ const hits = wanted.filter((i) => tests[i](resourceId));
161
+ if (hits.length > 0 && (await this.onScreen(el)))
162
+ for (const i of hits)
163
+ out[i] = true;
164
+ }
165
+ }
166
+ for (let i = 0; i < sels.length; i++)
167
+ if (!grouped.includes(i) || grouped.length < 2)
168
+ out[i] = Boolean(await this.findShown(sels[i]));
169
+ return out;
170
+ }
171
+ async click(el) {
172
+ await this.cmd('POST', `/element/${el}/click`, {});
173
+ }
174
+ /**
175
+ * A touch at the centre of the element's frame (inside the window), not WDA's element click, which looks for a
176
+ * hittable point and misses a full-screen container such as a video tile.
177
+ */
178
+ async tapElement(el) {
179
+ const r = this.rects.get(el) ?? (await this.cmd('GET', `/element/${el}/rect`));
180
+ const w = await this.screen();
181
+ const x = Math.round(Math.min(Math.max(r.x + r.width / 2, 1), w.width - 1));
182
+ const y = Math.round(Math.min(Math.max(r.y + r.height / 2, 1), w.height - 1));
183
+ await this.cmd('POST', '/actions', {
184
+ actions: [
185
+ {
186
+ type: 'pointer',
187
+ id: 'finger1',
188
+ parameters: { pointerType: 'touch' },
189
+ actions: [
190
+ { type: 'pointerMove', duration: 0, x, y },
191
+ { type: 'pointerDown', button: 0 },
192
+ { type: 'pause', duration: TAP_HOLD_MS },
193
+ { type: 'pointerUp', button: 0 },
194
+ ],
195
+ },
196
+ ],
197
+ });
198
+ await this.cmd('DELETE', '/actions').catch(() => null);
199
+ }
200
+ /** One finger from to to over durationMs, in window points. */
201
+ async drag(from, to, durationMs) {
202
+ await this.cmd('POST', '/actions', {
203
+ actions: [
204
+ {
205
+ type: 'pointer',
206
+ id: 'finger1',
207
+ parameters: { pointerType: 'touch' },
208
+ actions: [
209
+ { type: 'pointerMove', duration: 0, x: from.x, y: from.y },
210
+ { type: 'pointerDown', button: 0 },
211
+ { type: 'pointerMove', duration: durationMs, x: to.x, y: to.y },
212
+ { type: 'pointerUp', button: 0 },
213
+ ],
214
+ },
215
+ ],
216
+ });
217
+ await this.cmd('DELETE', '/actions').catch(() => null);
218
+ }
219
+ /** Stop, then start, so the process is a fresh one. */
220
+ async relaunch(bundleId = this.bundleId) {
221
+ await this.execute('mobile: terminateApp', this.platform.appArg(bundleId));
222
+ await this.execute('mobile: activateApp', this.platform.appArg(bundleId));
223
+ }
224
+ activate(bundleId = this.bundleId) {
225
+ return this.execute('mobile: activateApp', this.platform.appArg(bundleId));
226
+ }
227
+ async end() {
228
+ if (!this.sessionId)
229
+ return;
230
+ await this.cmd('DELETE', `/session/${this.sessionId}`).catch(() => null);
231
+ }
232
+ }
233
+ //# sourceMappingURL=webdriver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webdriver.js","sourceRoot":"","sources":["../../src/webdriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAiB,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,EAAE,EAAiB,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,WAAW,GAAG,qCAAqC,CAAC;AAE1D,6GAA6G;AAC7G,MAAM,WAAW,GAAG,GAAG,CAAC;AAYxB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAU,EAAiB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAE9F,MAAM,OAAO,OAAQ,SAAQ,KAAK;IACM;IAAtC,YAAY,OAAe,EAAW,OAAe;QACnD,KAAK,CAAC,OAAO,CAAC,CAAC;QADqB,YAAO,GAAP,OAAO,CAAQ;IAErD,CAAC;CACF;AAqBD,iFAAiF;AACjF,MAAM,OAAO,MAAM;IACR,QAAQ,CAAS;IACjB,QAAQ,CAAW;IACnB,OAAO,CAAyB;IAChC,GAAG,CAAS;IACZ,KAAK,CAAY;IACjB,GAAG,CAAoB;IACvB,GAAG,CAAe;IAClB,KAAK,CAAgC;IAC9C,SAAS,GAAkB,IAAI,CAAC;IAChC,OAAO,GAA4B,EAAE,CAAC;IAC9B,QAAQ,GAAgB,IAAI,CAAC;IACpB,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;IAEjD,YAAY,CAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAK,KAAmB,CAAC;QAC7C,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAc,EAAE,IAAY,EAAE,IAAc;QACpD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,EAAE,CAAC;QACxH,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,IAAI,GAAyB,CAAC;QAC9B,IAAI,IAAS,CAAC;QACd,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC1B,MAAM;gBACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;gBAChE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;aAC9D,CAAC,CAAC;YACH,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;QACjK,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACnE,sDAAsD;YACtD,MAAM,IAAI,OAAO,CAAC,GAAG,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACjK,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,YAAqC;QAC/C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;QAClG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,GAAa;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,4DAA4D;IAC5D,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,KAAa,EAAE,MAAe;QACtD,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,MAAM,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YACxG,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,iBAAiB;gBAAE,OAAO,IAAI,CAAC;YACzE,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,KAAa,EAAE,MAAe;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,MAAM,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,OAAQ,CAAC,IAAI,IAAI,EAAE,CAA8B,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;IAC1G,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,QAAS,CAAC;IACxB,CAAC;IAED,+GAA+G;IAC/G,KAAK,CAAC,QAAQ,CAAC,EAAU,EAAE,IAAI,GAAG,KAAK;QACrC,IAAI,CAAmB,CAAC;QACxB,IAAI,CAAC;YACH,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,yCAAyC;YACzC,IAAI,CAAC,YAAY,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,yBAAyB;gBAAE,OAAO,KAAK,CAAC;YAClF,MAAM,CAAC,CAAC;QACV,CAAC;QACD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC;QAChG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACpF,CAAC;IAED,iEAAiE;IACjE,KAAK,CAAC,SAAS,CAAC,GAAa,EAAE,IAAI,GAAG,KAAK;QACzC,IAAI,MAA0B,CAAC;QAC/B,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YACpB,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;QACD,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3D,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBACpD,IAAI,CAAC,KAAK;oBAAE,SAAS;gBACrB,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;oBAAE,OAAO,KAAK,CAAC;YACrD,CAAC;YACD,KAAK,MAAM,EAAE,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;gBAC1D,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;oBAAE,OAAO,EAAE,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,IAAyB,EAAE,KAAc;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAChI,MAAM,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/F,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,EAAG,CAAC,CAAC,CAAC;YACnF,KAAK,MAAM,EAAE,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;gBAClD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM;gBAC/B,IAAI,UAAkB,CAAC;gBACvB,IAAI,CAAC;oBACH,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,wBAAwB,CAAC,CAAC,CAAC;gBACrF,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,0EAA0E;oBAC1E,IAAI,CAAC,YAAY,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,yBAAyB;wBAAE,SAAS;oBAC9E,MAAM,CAAC,CAAC;gBACV,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,UAAU,CAAC,CAAC,CAAC;gBACzD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAAE,KAAK,MAAM,CAAC,IAAI,IAAI;wBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACxF,CAAC;QACH,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;QACvI,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EAAU;QACpB,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAU,CAAC;QACzF,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9E,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE;YACjC,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,SAAS;oBACf,EAAE,EAAE,SAAS;oBACb,UAAU,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE;oBACpC,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;wBAC1C,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE;wBAClC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE;wBACxC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE;qBACjC;iBACF;aACF;SACF,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,+DAA+D;IAC/D,KAAK,CAAC,IAAI,CAAC,IAA8B,EAAE,EAA4B,EAAE,UAAkB;QACzF,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE;YACjC,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,SAAS;oBACf,EAAE,EAAE,SAAS;oBACb,UAAU,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE;oBACpC,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;wBAC1D,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE;wBAClC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;wBAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE;qBACjC;iBACF;aACF;SACF,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,uDAAuD;IACvD,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;QACrC,MAAM,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3E,MAAM,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAC5B,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,39 @@
1
1
  {
2
2
  "name": "@keepsnappy/appium-driver",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0-alpha.11",
4
+ "description": "KeepSnappy Appium driver: write a journey module, run it on BrowserStack with `keepsnappy farm run --driver appium --journey-module`.",
5
+ "type": "module",
6
+ "license": "UNLICENSED",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/arekkubaczkowski/keepsnappy.git",
10
+ "directory": "packages/appium-driver"
11
+ },
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
15
+ "engines": {
16
+ "node": ">=22"
17
+ },
18
+ "main": "./dist/src/index.js",
19
+ "types": "./dist/src/index.d.ts",
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/src/index.d.ts",
23
+ "default": "./dist/src/index.js"
24
+ },
25
+ "./cli": {
26
+ "types": "./dist/src/cli.d.ts",
27
+ "default": "./dist/src/cli.js"
28
+ },
29
+ "./package.json": "./package.json"
30
+ },
31
+ "bin": {
32
+ "keepsnappy-appium-driver": "dist/src/cli.js",
33
+ "perflab-appium-driver": "dist/src/cli.js"
34
+ },
35
+ "files": [
36
+ "dist/src",
37
+ "README.md"
38
+ ]
39
+ }