@goliapkg/smix 5.0.0 → 6.0.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/dist/App.d.ts +6 -0
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +17 -0
- package/dist/App.js.map +1 -1
- package/dist/ExpectationFailure.d.ts +1 -1
- package/dist/ExpectationFailure.d.ts.map +1 -1
- package/dist/ExpectationFailure.js +2 -1
- package/dist/ExpectationFailure.js.map +1 -1
- package/dist/NodeDriver.d.ts +2 -0
- package/dist/NodeDriver.d.ts.map +1 -1
- package/dist/NodeDriver.js +3 -0
- package/dist/NodeDriver.js.map +1 -1
- package/package.json +2 -2
- package/src/App.ts +18 -0
- package/src/ExpectationFailure.ts +4 -1
- package/src/NodeDriver.ts +5 -0
package/dist/App.d.ts
CHANGED
|
@@ -51,6 +51,12 @@ export declare class App {
|
|
|
51
51
|
screenshot(): Promise<Uint8Array>;
|
|
52
52
|
/** Tap at a normalized coordinate (0..1) — escape hatch per §9 #3. */
|
|
53
53
|
tapAtCoord(nx: number, ny: number): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Swipe between two normalized points (0..1) — escape hatch per §9 #3,
|
|
56
|
+
* authorised on the same grounds as tapAtCoord. Two points, because a
|
|
57
|
+
* swipe is a path: tap's single-point shape does not describe one.
|
|
58
|
+
*/
|
|
59
|
+
swipeAtCoord(from: [number, number], to: [number, number]): Promise<void>;
|
|
54
60
|
terminate(): Promise<void>;
|
|
55
61
|
relaunch(): Promise<void>;
|
|
56
62
|
launchFresh(_opts?: {
|
package/dist/App.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,QAAQ,EAAW,MAAM,eAAe,CAAA;AAEtD,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,KAAK,QAAQ,EAAsB,MAAM,eAAe,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,KAAK,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAA;AACzE,KAAK,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAEtD;;GAEG;AACH,qBAAa,GAAG;aAEI,QAAQ,EAAE,MAAM;IAChC,8EAA8E;aAC9D,MAAM,EAAE,UAAU;IAClC,mEAAmE;aACnD,OAAO,EAAE,WAAW;aACpB,QAAQ,EAAE,gBAAgB;IAC1C;;;;;OAKG;aACa,cAAc,EAAE,cAAc;gBAZ9B,QAAQ,EAAE,MAAM;IAChC,8EAA8E;IAC9D,MAAM,EAAE,UAAU;IAClC,mEAAmE;IACnD,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,gBAAgB;IAC1C;;;;;OAKG;IACa,cAAc,GAAE,cAE/B;IAKH;;;;;OAKG;YACW,mBAAmB;IAiB3B,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1E,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrD,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;IAMvC,sEAAsE;IAChE,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,QAAQ,EAAW,MAAM,eAAe,CAAA;AAEtD,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,KAAK,QAAQ,EAAsB,MAAM,eAAe,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,KAAK,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAA;AACzE,KAAK,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAEtD;;GAEG;AACH,qBAAa,GAAG;aAEI,QAAQ,EAAE,MAAM;IAChC,8EAA8E;aAC9D,MAAM,EAAE,UAAU;IAClC,mEAAmE;aACnD,OAAO,EAAE,WAAW;aACpB,QAAQ,EAAE,gBAAgB;IAC1C;;;;;OAKG;aACa,cAAc,EAAE,cAAc;gBAZ9B,QAAQ,EAAE,MAAM;IAChC,8EAA8E;IAC9D,MAAM,EAAE,UAAU;IAClC,mEAAmE;IACnD,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,gBAAgB;IAC1C;;;;;OAKG;IACa,cAAc,GAAE,cAE/B;IAKH;;;;;OAKG;YACW,mBAAmB;IAiB3B,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1E,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrD,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;IAMvC,sEAAsE;IAChE,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvD;;;;OAIG;IACG,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAazE,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,WAAW,CAAC,KAAK,GAAE;QACvB,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,aAAa,CAAC,EAAE,OAAO,CAAA;QACvB,OAAO,CAAC,EAAE,MAAM,CAAA;KACZ,GAAG,OAAO,CAAC,IAAI,CAAC;IAStB,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAIjC;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,QAAQ,CAAC;IAIjC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC;IAIzB,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAItC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3C;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAA"}
|
package/dist/App.js
CHANGED
|
@@ -90,6 +90,23 @@ export class App {
|
|
|
90
90
|
}
|
|
91
91
|
await this.driver.tapAtCoord(nx, ny);
|
|
92
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Swipe between two normalized points (0..1) — escape hatch per §9 #3,
|
|
95
|
+
* authorised on the same grounds as tapAtCoord. Two points, because a
|
|
96
|
+
* swipe is a path: tap's single-point shape does not describe one.
|
|
97
|
+
*/
|
|
98
|
+
async swipeAtCoord(from, to) {
|
|
99
|
+
for (const [label, p] of [['from', from], ['to', to]]) {
|
|
100
|
+
const [x, y] = p;
|
|
101
|
+
if (x < 0 || x > 1 || y < 0 || y > 1) {
|
|
102
|
+
throw new ExpectationFailure({
|
|
103
|
+
code: 'ASSERTION_FAILED',
|
|
104
|
+
message: `swipeAtCoord expects normalized 0..1 coordinates, got ${label}=(${x}, ${y})`,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
await this.driver.swipeAtCoord(from[0], from[1], to[0], to[1]);
|
|
109
|
+
}
|
|
93
110
|
async terminate() {
|
|
94
111
|
await this.session.terminateApp();
|
|
95
112
|
}
|
package/dist/App.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import type { A11yNode } from './A11yNode.js';
|
|
|
6
6
|
*/
|
|
7
7
|
export type FailureCode = 'ELEMENT_NOT_FOUND' | 'NOT_VISIBLE' | 'NOT_ENABLED' | 'AMBIGUOUS' | 'TIMEOUT' | 'ASSERTION_FAILED' | 'APP_NOT_RUNNING' | 'SIMULATOR_NOT_BOOTED'
|
|
8
8
|
/** The touch was synthesised, and it did not land inside the element the selector matched. Distinct from element-not-found: not-found means fix the selector, missed means the element was there and the touch went elsewhere. */
|
|
9
|
-
| 'TAP_MISSED' | 'DRIVER_ERROR';
|
|
9
|
+
| 'TAP_MISSED' | 'COORDINATE_SPACE_MISMATCH' | 'DRIVER_ERROR';
|
|
10
10
|
export declare const FAILURE_CODES: readonly FailureCode[];
|
|
11
11
|
/**
|
|
12
12
|
* Structured failure thrown by SDK resolver paths (App.tap, Locator
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpectationFailure.d.ts","sourceRoot":"","sources":["../src/ExpectationFailure.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB,mBAAmB,GACnB,aAAa,GACb,aAAa,GACb,WAAW,GACX,SAAS,GACT,kBAAkB,GAClB,iBAAiB,GACjB,sBAAsB;AACxB,kOAAkO;GAChO,YAAY,
|
|
1
|
+
{"version":3,"file":"ExpectationFailure.d.ts","sourceRoot":"","sources":["../src/ExpectationFailure.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB,mBAAmB,GACnB,aAAa,GACb,aAAa,GACb,WAAW,GACX,SAAS,GACT,kBAAkB,GAClB,iBAAiB,GACjB,sBAAsB;AACxB,kOAAkO;GAChO,YAAY,GAEZ,2BAA2B,GAC3B,cAAc,CAAA;AAElB,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAKtC,CAAA;AAEV;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,QAAQ,CAAC,eAAe,EAAE,SAAS,QAAQ,EAAE,CAAA;IAC7C,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;gBAEd,IAAI,EAAE;QAChB,IAAI,EAAE,WAAW,CAAA;QACjB,OAAO,EAAE,MAAM,CAAA;QACf,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACjC,eAAe,CAAC,EAAE,SAAS,QAAQ,EAAE,GAAG,SAAS,CAAA;QACjD,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;QAC3C,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC/B;IAUD;;;;OAIG;IACH,MAAM,IAAI,MAAM;CAUjB"}
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
export const FAILURE_CODES = [
|
|
7
7
|
'ELEMENT_NOT_FOUND', 'NOT_VISIBLE', 'NOT_ENABLED',
|
|
8
8
|
'AMBIGUOUS', 'TIMEOUT', 'ASSERTION_FAILED',
|
|
9
|
-
'APP_NOT_RUNNING', 'SIMULATOR_NOT_BOOTED', 'TAP_MISSED',
|
|
9
|
+
'APP_NOT_RUNNING', 'SIMULATOR_NOT_BOOTED', 'TAP_MISSED',
|
|
10
|
+
'COORDINATE_SPACE_MISMATCH', 'DRIVER_ERROR',
|
|
10
11
|
];
|
|
11
12
|
/**
|
|
12
13
|
* Structured failure thrown by SDK resolver paths (App.tap, Locator
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpectationFailure.js","sourceRoot":"","sources":["../src/ExpectationFailure.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,EAAE;AACF,0EAA0E;AAC1E,wEAAwE;AACxE,wDAAwD;
|
|
1
|
+
{"version":3,"file":"ExpectationFailure.js","sourceRoot":"","sources":["../src/ExpectationFailure.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,EAAE;AACF,0EAA0E;AAC1E,wEAAwE;AACxE,wDAAwD;AAwBxD,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,mBAAmB,EAAE,aAAa,EAAE,aAAa;IACjD,WAAW,EAAE,SAAS,EAAE,kBAAkB;IAC1C,iBAAiB,EAAE,sBAAsB,EAAE,YAAY;IACvD,2BAA2B,EAAE,cAAc;CACnC,CAAA;AAEV;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,IAAI,CAAa;IACjB,YAAY,CAAe;IAC3B,eAAe,CAAqB;IACpC,WAAW,CAAmB;IAC9B,SAAS,CAAQ;IAE1B,YAAY,IAOX;QACC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACnB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAA;QAC7C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,CAAA;QACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAA;QACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;IAC/C,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,YAAY;YAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC,CAAA;IACJ,CAAC;CACF"}
|
package/dist/NodeDriver.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export interface NodeDriver {
|
|
|
5
5
|
pressKey(key: string): Promise<void>;
|
|
6
6
|
swipe(direction: string): Promise<void>;
|
|
7
7
|
tapAtCoord(nx: number, ny: number): Promise<string>;
|
|
8
|
+
swipeAtCoord(fromX: number, fromY: number, toX: number, toY: number): Promise<void>;
|
|
8
9
|
snapshotTree(): Promise<string>;
|
|
9
10
|
systemPopups(): Promise<string>;
|
|
10
11
|
openSession(bundleId: string): Promise<NodeSession>;
|
|
@@ -46,6 +47,7 @@ export declare class MockNodeDriver implements NodeDriver {
|
|
|
46
47
|
pressKey(key: string): Promise<void>;
|
|
47
48
|
swipe(direction: string): Promise<void>;
|
|
48
49
|
tapAtCoord(nx: number, ny: number): Promise<string>;
|
|
50
|
+
swipeAtCoord(fromX: number, fromY: number, toX: number, toY: number): Promise<void>;
|
|
49
51
|
snapshotTree(): Promise<string>;
|
|
50
52
|
systemPopups(): Promise<string>;
|
|
51
53
|
openSession(bundleId: string): Promise<NodeSession>;
|
package/dist/NodeDriver.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeDriver.d.ts","sourceRoot":"","sources":["../src/NodeDriver.ts"],"names":[],"mappings":"AAWA,4EAA4E;AAC5E,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACrC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACnD,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IAC/B,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IAC/B,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;CACpD;AAED,wDAAwD;AACxD,MAAM,WAAW,WAAW;IAC1B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAED,qEAAqE;AACrE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,CAAA;CAClC;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,WAAW;IACjD,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,CAAK;IAE7B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAGnC;AAED;;;;GAIG;AACH,qBAAa,cAAe,YAAW,UAAU;IAC/C,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,CAAK;IACnC,QAAQ,SACwH;IAChI,UAAU,SAAO;IACjB,aAAa,UAAO;IACpB,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;gBAErB,OAAO,GAAE,eAAuC;IAItD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpC,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKnD,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAK/B,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAK/B,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAI1D"}
|
|
1
|
+
{"version":3,"file":"NodeDriver.d.ts","sourceRoot":"","sources":["../src/NodeDriver.ts"],"names":[],"mappings":"AAWA,4EAA4E;AAC5E,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACrC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACnD,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnF,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IAC/B,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IAC/B,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;CACpD;AAED,wDAAwD;AACxD,MAAM,WAAW,WAAW;IAC1B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAED,qEAAqE;AACrE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,CAAA;CAClC;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,WAAW;IACjD,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,CAAK;IAE7B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAGnC;AAED;;;;GAIG;AACH,qBAAa,cAAe,YAAW,UAAU;IAC/C,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,CAAK;IACnC,QAAQ,SACwH;IAChI,UAAU,SAAO;IACjB,aAAa,UAAO;IACpB,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;gBAErB,OAAO,GAAE,eAAuC;IAItD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpC,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKnD,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInF,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAK/B,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAK/B,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAI1D"}
|
package/dist/NodeDriver.js
CHANGED
|
@@ -54,6 +54,9 @@ export class MockNodeDriver {
|
|
|
54
54
|
this.calls.push({ verb: 'tapAtCoord', args: [nx, ny] });
|
|
55
55
|
return '{"chain":[]}';
|
|
56
56
|
}
|
|
57
|
+
async swipeAtCoord(fromX, fromY, toX, toY) {
|
|
58
|
+
this.calls.push({ verb: 'swipeAtCoord', args: [fromX, fromY, toX, toY] });
|
|
59
|
+
}
|
|
57
60
|
async snapshotTree() {
|
|
58
61
|
this.calls.push({ verb: 'snapshotTree', args: [] });
|
|
59
62
|
return this.treeJson;
|
package/dist/NodeDriver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeDriver.js","sourceRoot":"","sources":["../src/NodeDriver.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,2EAA2E;AAC3E,wEAAwE;AACxE,qEAAqE;AACrE,yEAAyE;AACzE,yEAAyE;AACzE,uDAAuD;AACvD,EAAE;AACF,4EAA4E;AAC5E,yDAAyD;
|
|
1
|
+
{"version":3,"file":"NodeDriver.js","sourceRoot":"","sources":["../src/NodeDriver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@goliapkg/smix",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0",
|
|
4
4
|
"description": "Playwright-shape iOS Simulator / Android emulator UI automation SDK for React Native + Expo + Detox-compatible TypeScript test runners.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0 OR MIT",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"typecheck": "tsc --noEmit -p tsconfig.json && tsc -p tsconfig.test.json"
|
|
26
26
|
},
|
|
27
27
|
"optionalDependencies": {
|
|
28
|
-
"@goliapkg/smix-node": "
|
|
28
|
+
"@goliapkg/smix-node": "6.0.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/node": "^20.14.0",
|
package/src/App.ts
CHANGED
|
@@ -99,6 +99,24 @@ export class App {
|
|
|
99
99
|
await this.driver.tapAtCoord(nx, ny)
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
+
/**
|
|
103
|
+
* Swipe between two normalized points (0..1) — escape hatch per §9 #3,
|
|
104
|
+
* authorised on the same grounds as tapAtCoord. Two points, because a
|
|
105
|
+
* swipe is a path: tap's single-point shape does not describe one.
|
|
106
|
+
*/
|
|
107
|
+
async swipeAtCoord(from: [number, number], to: [number, number]): Promise<void> {
|
|
108
|
+
for (const [label, p] of [['from', from], ['to', to]] as const) {
|
|
109
|
+
const [x, y] = p
|
|
110
|
+
if (x < 0 || x > 1 || y < 0 || y > 1) {
|
|
111
|
+
throw new ExpectationFailure({
|
|
112
|
+
code: 'ASSERTION_FAILED',
|
|
113
|
+
message: `swipeAtCoord expects normalized 0..1 coordinates, got ${label}=(${x}, ${y})`,
|
|
114
|
+
})
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
await this.driver.swipeAtCoord(from[0], from[1], to[0], to[1])
|
|
118
|
+
}
|
|
119
|
+
|
|
102
120
|
async terminate(): Promise<void> {
|
|
103
121
|
await this.session.terminateApp()
|
|
104
122
|
}
|
|
@@ -22,12 +22,15 @@ export type FailureCode =
|
|
|
22
22
|
| 'SIMULATOR_NOT_BOOTED'
|
|
23
23
|
/** The touch was synthesised, and it did not land inside the element the selector matched. Distinct from element-not-found: not-found means fix the selector, missed means the element was there and the touch went elsewhere. */
|
|
24
24
|
| 'TAP_MISSED'
|
|
25
|
+
// The screen is described in one coordinate space and the touch would be delivered in another, so no aim can land where the tree says the element is. Distinct from tap-missed: a miss invites another attempt with a better point, and there is no better point here — whatever is passed gets recomputed against the app's frame and then read against the device's.
|
|
26
|
+
| 'COORDINATE_SPACE_MISMATCH'
|
|
25
27
|
| 'DRIVER_ERROR'
|
|
26
28
|
|
|
27
29
|
export const FAILURE_CODES: readonly FailureCode[] = [
|
|
28
30
|
'ELEMENT_NOT_FOUND', 'NOT_VISIBLE', 'NOT_ENABLED',
|
|
29
31
|
'AMBIGUOUS', 'TIMEOUT', 'ASSERTION_FAILED',
|
|
30
|
-
'APP_NOT_RUNNING', 'SIMULATOR_NOT_BOOTED', 'TAP_MISSED',
|
|
32
|
+
'APP_NOT_RUNNING', 'SIMULATOR_NOT_BOOTED', 'TAP_MISSED',
|
|
33
|
+
'COORDINATE_SPACE_MISMATCH', 'DRIVER_ERROR',
|
|
31
34
|
] as const
|
|
32
35
|
|
|
33
36
|
/**
|
package/src/NodeDriver.ts
CHANGED
|
@@ -16,6 +16,7 @@ export interface NodeDriver {
|
|
|
16
16
|
pressKey(key: string): Promise<void>
|
|
17
17
|
swipe(direction: string): Promise<void>
|
|
18
18
|
tapAtCoord(nx: number, ny: number): Promise<string>
|
|
19
|
+
swipeAtCoord(fromX: number, fromY: number, toX: number, toY: number): Promise<void>
|
|
19
20
|
snapshotTree(): Promise<string>
|
|
20
21
|
systemPopups(): Promise<string>
|
|
21
22
|
openSession(bundleId: string): Promise<NodeSession>
|
|
@@ -92,6 +93,10 @@ export class MockNodeDriver implements NodeDriver {
|
|
|
92
93
|
return '{"chain":[]}'
|
|
93
94
|
}
|
|
94
95
|
|
|
96
|
+
async swipeAtCoord(fromX: number, fromY: number, toX: number, toY: number): Promise<void> {
|
|
97
|
+
this.calls.push({ verb: 'swipeAtCoord', args: [fromX, fromY, toX, toY] })
|
|
98
|
+
}
|
|
99
|
+
|
|
95
100
|
async snapshotTree(): Promise<string> {
|
|
96
101
|
this.calls.push({ verb: 'snapshotTree', args: [] })
|
|
97
102
|
return this.treeJson
|