@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 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;IAUjD,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"}
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,GACZ,cAAc,CAAA;AAElB,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAItC,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"}
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', 'DRIVER_ERROR',
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;AAsBxD,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,mBAAmB,EAAE,aAAa,EAAE,aAAa;IACjD,WAAW,EAAE,SAAS,EAAE,kBAAkB;IAC1C,iBAAiB,EAAE,sBAAsB,EAAE,YAAY,EAAE,cAAc;CAC/D,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"}
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"}
@@ -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>;
@@ -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"}
@@ -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;
@@ -1 +1 @@
1
- {"version":3,"file":"NodeDriver.js","sourceRoot":"","sources":["../src/NodeDriver.ts"],"names":[],"mappings":"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"}
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": "5.0.0",
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": "2.3.0"
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', 'DRIVER_ERROR',
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