@keepsnappy/appium-driver 0.1.0-alpha.13 → 0.1.0-alpha.14

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/README.md CHANGED
@@ -32,7 +32,12 @@ One GC command at the end of every run, after the journey's last step and its re
32
32
  - Same command and fallbacks as above; an app that does not answer turns it off for the rest of the session.
33
33
  - The command ends the last open window (end reason `gc-command`) instead of the flush: that one window per run is shorter than on a driver without it. Driver 0.2.0 carries both commands, so runs before and after it are a different instrument already (`driverVersion` aspect).
34
34
  - On by default (REQ-MEAS-35, REQ-FARM-28; driver 0.3.0); `--end-gc off` or `endGc: false` turns it off. It changes the memory readings only (it runs after the last window): a main without it still judges a PR's render, commit and component measures; only the memory verdict needs end-GC runs on both sides (`endGc` setup aspect, memory measures only). Older SDKs do not answer and send no line.
35
+ - Right after the GC's answer the driver sends `memread` (same n) and waits for its answer before it sends the markers and the flush link, which background the app. The SDK takes one memory sample at once (`endgc-read:<n>`); memory kept is derived from it (derivation 23). No answer: logged as `memread` status 1, the run goes on, and later runs of the session do not ask.
35
36
 
36
37
  ## The default run configuration (`links.ts`)
37
38
 
38
39
  `RUN_DEFAULTS` and the link builders are the one source of the activation, flush and GC links (REQ-FARM-28): `profile=1`, `diag=1` (the React export), ttl 3600, no `cpuprof`, and the end GC on (`END_GC_DEFAULT`). A journey module's `sdkArgs` (`k=v&...`) are set over the defaults key by key, so `sdkArgs: 'profile=1'` still gets `diag=1`; `diag=0` turns the export off explicitly. `keepsnappy activation-link | flush-link | gc-link` print the same links for runners that are not this driver, and `keepsnappy farm open` writes the settings into `tokens.js` (`output.keepsnappyLinkArgs`) for Maestro flows. Maestro runs send no GC for now. A guard test in `apps/agent` fails on a hand-written activation link anywhere else in the repo.
40
+
41
+ ## driver-log.json while the run goes
42
+
43
+ `<out>/driver-log.json` is rewritten atomically at every top-level step and iteration boundary, so a killed run still leaves a valid log. `status` is `running`, `done`, `terminated` or `error`; `lastStep` names the last step started and `steps` times every step (`ms: null` while one runs). On SIGTERM or SIGINT (the farm's step timeout) the driver flushes the log as `terminated` with the signal, captures the failure screen and source (at most 20 s), ends the session as failed (at most 10 s) and exits 143 or 130, within 45 s in all; a second signal exits at once. `keepsnappy farm run` counts a driver that exits non-zero as infrastructure.
package/dist/src/cli.js CHANGED
File without changes
@@ -3,7 +3,7 @@ export { END_GC_DEFAULT, RUN_DEFAULTS, acceptAlert, activationLink, flushLink, g
3
3
  export { defineJourney, type JourneyContext, type JourneyFn, type JourneyModule } from './journey.js';
4
4
  export { ANDROID, IOS, PLATFORMS, platformOf, type Platform, type PlatformName } from './platform.js';
5
5
  export { androidLocators, childOf, describeSelector, id, idText, locator, text, toSelector, type Selector, type SelectorLike } from './selectors.js';
6
- export { FLUSH_WAIT_MS, HOST_CLOCK_TRIPS, Session, sendMarkers, type ActionGc, type ClockTrip, type Condition, type Marker } from './session.js';
6
+ export { FLUSH_END_RUN_FAILED, FLUSH_ERROR, FLUSH_OFF, FLUSH_NOT_ACKNOWLEDGED, FLUSH_RESEND_MS, FLUSH_UNREADABLE, FLUSH_WAIT_MS, type FlushEvidence, HOST_CLOCK_TRIPS, Session, sendMarkers, type ActionGc, type ClockTrip, type Condition, type Marker } from './session.js';
7
7
  export { loadElements, parseTokensJs, plan, type PlannedRun } from './tokens.js';
8
8
  export { runDriver, DRIVER_OPTIONS, type IterationRecord, type RunDeps } from './run.js';
9
9
  export { loadJourneyModule, main } from './load.js';
package/dist/src/index.js CHANGED
@@ -3,7 +3,7 @@ export { END_GC_DEFAULT, RUN_DEFAULTS, acceptAlert, activationLink, flushLink, g
3
3
  export { defineJourney } from './journey.js';
4
4
  export { ANDROID, IOS, PLATFORMS, platformOf } from './platform.js';
5
5
  export { androidLocators, childOf, describeSelector, id, idText, locator, text, toSelector } from './selectors.js';
6
- export { FLUSH_WAIT_MS, HOST_CLOCK_TRIPS, Session, sendMarkers } from './session.js';
6
+ export { FLUSH_END_RUN_FAILED, FLUSH_ERROR, FLUSH_OFF, FLUSH_NOT_ACKNOWLEDGED, FLUSH_RESEND_MS, FLUSH_UNREADABLE, FLUSH_WAIT_MS, HOST_CLOCK_TRIPS, Session, sendMarkers } from './session.js';
7
7
  export { loadElements, parseTokensJs, plan } from './tokens.js';
8
8
  export { runDriver, DRIVER_OPTIONS } from './run.js';
9
9
  export { loadJourneyModule, main } from './load.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAmD,MAAM,gBAAgB,CAAC;AAC7G,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAkB,MAAM,YAAY,CAAC;AAC5J,OAAO,EAAE,aAAa,EAA2D,MAAM,cAAc,CAAC;AACtG,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAoC,MAAM,eAAe,CAAC;AACtG,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAoC,MAAM,gBAAgB,CAAC;AACrJ,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAA8D,MAAM,cAAc,CAAC;AACjJ,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,EAAmB,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,cAAc,EAAsC,MAAM,UAAU,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAmD,MAAM,gBAAgB,CAAC;AAC7G,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAkB,MAAM,YAAY,CAAC;AAC5J,OAAO,EAAE,aAAa,EAA2D,MAAM,cAAc,CAAC;AACtG,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAoC,MAAM,eAAe,CAAC;AACtG,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAoC,MAAM,gBAAgB,CAAC;AACrJ,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,SAAS,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAsB,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAA8D,MAAM,cAAc,CAAC;AAC9Q,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,EAAmB,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,cAAc,EAAsC,MAAM,UAAU,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
@@ -19,9 +19,12 @@ export declare function parseSdkArgs(args: string): Array<[string, string]>;
19
19
  */
20
20
  export declare function linkArgs(args?: string): string;
21
21
  export declare const activationLink: (scheme: string, token: string, args?: string) => string;
22
- export declare const flushLink: (scheme: string) => string;
22
+ /** `ack` names this flush link; the SDK echoes it at the end of its answer's detail. */
23
+ export declare const flushLink: (scheme: string, ack?: string) => string;
23
24
  /** Command n (a GC); the SDK takes it as a link on both platforms, and Android drivers send the same command as a broadcast. */
24
25
  export declare const gcLink: (scheme: string, n: number) => string;
26
+ /** Command n again, `memread`: the end GC's memory read, sent with the GC's own n after the GC's answer. */
27
+ export declare const memReadLink: (scheme: string, n: number) => string;
25
28
  /** Taps the button of a system alert if one shows within `waitMs` ("Open in ...?" and any permission prompt). Returns the label tapped, or null. */
26
29
  export declare function acceptAlert(driver: Driver, labels: readonly string[], waitMs: number): Promise<string | null>;
27
30
  export interface LinkState {
package/dist/src/links.js CHANGED
@@ -30,9 +30,12 @@ export function linkArgs(args = '') {
30
30
  return [...fields].map(([k, v]) => `${k}=${v}`).join('&');
31
31
  }
32
32
  export const activationLink = (scheme, token, args = '') => `${route(scheme)}?activate=1&${linkArgs(args)}&runToken=${token}`;
33
- export const flushLink = (scheme) => `${route(scheme)}?flush=1&activate=0`;
33
+ /** `ack` names this flush link; the SDK echoes it at the end of its answer's detail. */
34
+ export const flushLink = (scheme, ack) => `${route(scheme)}?flush=1&activate=0${ack === undefined ? '' : `&ack=${ack}`}`;
34
35
  /** Command n (a GC); the SDK takes it as a link on both platforms, and Android drivers send the same command as a broadcast. */
35
36
  export const gcLink = (scheme, n) => `${route(scheme)}?cmd=gc&n=${n}`;
37
+ /** Command n again, `memread`: the end GC's memory read, sent with the GC's own n after the GC's answer. */
38
+ export const memReadLink = (scheme, n) => `${route(scheme)}?cmd=memread&n=${n}`;
36
39
  /** Taps the button of a system alert if one shows within `waitMs` ("Open in ...?" and any permission prompt). Returns the label tapped, or null. */
37
40
  export async function acceptAlert(driver, labels, waitMs) {
38
41
  const deadline = driver.now() + waitMs;
@@ -1 +1 @@
1
- {"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/links.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAW,CAAC;AACxE,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,yEAAyE;AACzE,MAAM,KAAK,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,GAAG,MAAM,qBAAqB,CAAC;AAEzE,0DAA0D;AAC1D,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI;SACR,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACV,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAI,GAAG,EAAE;IAChC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAiB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC;QAAE,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,UAAU;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpG,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,KAAa,EAAE,IAAI,GAAG,EAAE,EAAU,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,QAAQ,CAAC,IAAI,CAAC,aAAa,KAAK,EAAE,CAAC;AAEtJ,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC;AAC3F,gIAAgI;AAChI,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,CAAS,EAAU,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;AAE9F,oJAAoJ;AACpJ,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE,MAAyB,EAAE,MAAc;IACzF,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;IACvC,SAAS,CAAC;QACR,IAAI,OAAO,GAAY,IAAI,CAAC;QAC5B,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QAC5E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzF,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YAC9E,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,QAAQ;YAAE,OAAO,IAAI,CAAC;QACzC,MAAM,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAOD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAc,EAAE,GAAW,EAAE,KAAgB;IAC1E,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7E,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC9B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU;gBAAE,MAAM,CAAC,CAAC;YAC3C,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC1B,KAAK,CAAC,SAAS,GAAG,MAAM,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAClF,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;QACzH,IAAI,GAAG;YAAE,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,sDAAsD,CAAC,CAAC;QACjH,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC5D,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,KAAK,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,uFAAuF;IACvF,OAAO,WAAW,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/links.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@ export interface Platform {
27
27
  readonly flush: {
28
28
  lookup: Locator;
29
29
  statusAttribute: string;
30
+ detailAttribute: string;
30
31
  fallback?: {
31
32
  lookup: Locator;
32
33
  setting: string;
@@ -53,11 +54,19 @@ export interface Platform {
53
54
  * Returns the SDK's answer (`gc:<n> ok` or `gc:<n> unavailable`), or null when no answer came (an SDK without the command).
54
55
  */
55
56
  gcCommand(driver: Driver, n: number, scheme: string, state: LinkState): Promise<string | null>;
57
+ /**
58
+ * The end GC's manual memory read, asked for after the GC's answer with the GC's own n: the SDK takes one sample at once and
59
+ * answers `memread:<n> ok` (or `unavailable`). Returns the answer, or null when none came (an SDK without the command).
60
+ */
61
+ memReadCommand(driver: Driver, n: number, scheme: string, state: LinkState): Promise<string | null>;
56
62
  }
57
63
  export declare const GC_ANSWER_WAIT_MS = 10000;
64
+ export declare const MEMREAD_ANSWER_WAIT_MS = 3000;
65
+ type Command = 'gc' | 'memread';
58
66
  /** The answer for command n out of `am broadcast` output (`Broadcast completed: result=-1, data="gc:3 ok"`). */
59
- export declare function parseBroadcastAnswer(out: unknown, n: number): string | null;
67
+ export declare function parseBroadcastAnswer(out: unknown, n: number, cmd?: Command): string | null;
60
68
  export declare const IOS: Platform;
61
69
  export declare const ANDROID: Platform;
62
70
  export declare const PLATFORMS: Record<PlatformName, Platform>;
63
71
  export declare function platformOf(name: string): Platform;
72
+ export {};
@@ -1,4 +1,4 @@
1
- import { ALERT_POLL_MS, acceptAlert as acceptIosAlert, gcLink, openLink as openIosLink } from './links.js';
1
+ import { ALERT_POLL_MS, acceptAlert as acceptIosAlert, gcLink, memReadLink, openLink as openIosLink } from './links.js';
2
2
  import { androidAnyOfIds, androidLocators, id, locator } from './selectors.js';
3
3
  import { Screen, parseAndroidSource } from './snapshot.js';
4
4
  import { WdError } from './webdriver.js';
@@ -10,10 +10,12 @@ const ACK_ID = 'keepsnappy.ack';
10
10
  // Only ends the wait for an iOS answer that never comes (an SDK without the command); no window edge depends on it.
11
11
  export const GC_ANSWER_WAIT_MS = 10_000;
12
12
  const GC_POLL_MS = 100;
13
+ // The read is one native call answered after a JS tick; the bound only ends the wait for an SDK that does not know the command.
14
+ export const MEMREAD_ANSWER_WAIT_MS = 3000;
13
15
  /** The answer for command n out of `am broadcast` output (`Broadcast completed: result=-1, data="gc:3 ok"`). */
14
- export function parseBroadcastAnswer(out, n) {
16
+ export function parseBroadcastAnswer(out, n, cmd = 'gc') {
15
17
  const data = /data="([^"]*)"/.exec(String(out ?? ''))?.[1];
16
- return data !== undefined && data.startsWith(`gc:${n} `) ? data : null;
18
+ return data !== undefined && data.startsWith(`${cmd}:${n} `) ? data : null;
17
19
  }
18
20
  // A command waits for the app to go idle by default; KeepSnappy must not change the app's pace (docs/plans/61-android-support.md 1.2).
19
21
  const NO_WAIT_MS = 0;
@@ -38,30 +40,32 @@ export const IOS = {
38
40
  appArg: (bundleId) => ({ bundleId }),
39
41
  openLink: (driver, url, state) => openIosLink(driver, url, state),
40
42
  acceptAlert: (driver, labels, waitMs) => acceptIosAlert(driver, labels, waitMs),
41
- flush: { lookup: { using: 'accessibility id', value: FLUSH_ID }, statusAttribute: 'label' },
43
+ flush: { lookup: { using: 'accessibility id', value: FLUSH_ID }, statusAttribute: 'label', detailAttribute: 'value' },
42
44
  uploadFields: { ios_keychain_support: 'true' },
43
45
  // The link, then the `keepsnappy.ack` element. The trailing space keeps `gc:1` from matching the answer to 10.
44
- async gcCommand(driver, n, scheme, state) {
45
- await openIosLink(driver, gcLink(scheme, n), state);
46
- const want = `type == "XCUIElementTypeStaticText" AND name == "${ACK_ID}" AND label BEGINSWITH "gc:${n} "`;
47
- const deadline = driver.now() + GC_ANSWER_WAIT_MS;
48
- for (;;) {
49
- const el = await driver.find('-ios predicate string', want);
50
- // The predicate already matched `gc:<n> `; an unreadable label is taken as ok and logged, so a run that relied on it can be found.
51
- if (el)
52
- return driver
53
- .cmd('GET', `/element/${el}/attribute/label`)
54
- .then(String)
55
- .catch(() => {
56
- driver.log.push({ ...driver.context, cmd: 'gc-ack-label', t: driver.now(), ms: 0, status: 1 });
57
- return `gc:${n} ok`;
58
- });
59
- if (driver.now() > deadline)
60
- return null;
61
- await driver.sleep(GC_POLL_MS);
62
- }
63
- },
46
+ gcCommand: (driver, n, scheme, state) => iosCommand(driver, gcLink(scheme, n), 'gc', n, state, GC_ANSWER_WAIT_MS),
47
+ memReadCommand: (driver, n, scheme, state) => iosCommand(driver, memReadLink(scheme, n), 'memread', n, state, MEMREAD_ANSWER_WAIT_MS),
64
48
  };
49
+ async function iosCommand(driver, link, cmd, n, state, waitMs) {
50
+ await openIosLink(driver, link, state);
51
+ const want = `type == "XCUIElementTypeStaticText" AND name == "${ACK_ID}" AND label BEGINSWITH "${cmd}:${n} "`;
52
+ const deadline = driver.now() + waitMs;
53
+ for (;;) {
54
+ const el = await driver.find('-ios predicate string', want);
55
+ // The predicate already matched `<cmd>:<n> `; an unreadable label is taken as ok and logged, so a run that relied on it can be found.
56
+ if (el)
57
+ return driver
58
+ .cmd('GET', `/element/${el}/attribute/label`)
59
+ .then(String)
60
+ .catch(() => {
61
+ driver.log.push({ ...driver.context, cmd: `${cmd}-ack-label`, t: driver.now(), ms: 0, status: 1 });
62
+ return `${cmd}:${n} ok`;
63
+ });
64
+ if (driver.now() > deadline)
65
+ return null;
66
+ await driver.sleep(GC_POLL_MS);
67
+ }
68
+ }
65
69
  export const ANDROID = {
66
70
  name: 'android',
67
71
  // The phone of the TapIn farm workflow (docs/plans/61-android-support.md 1.2).
@@ -106,6 +110,7 @@ export const ANDROID = {
106
110
  flush: {
107
111
  lookup: { using: '-android uiautomator', value: `new UiSelector().description("${FLUSH_ID}")` },
108
112
  statusAttribute: 'text',
113
+ detailAttribute: 'hint',
109
114
  fallback: { lookup: { using: 'xpath', value: `//*[@content-desc="${FLUSH_ID}"]` }, setting: 'allowInvisibleElements' },
110
115
  },
111
116
  async readScreen(driver) {
@@ -125,17 +130,19 @@ export const ANDROID = {
125
130
  anyOfIds: androidAnyOfIds,
126
131
  uploadFields: {},
127
132
  // A broadcast pauses no activity (a link does). `am broadcast` returns once the SDK finished the receiver, so its output is the answer.
128
- async gcCommand(driver, n) {
129
- const out = await driver.execute('mobile: broadcast', {
130
- action: `${driver.bundleId}.keepsnappy.COMMAND`,
131
- package: driver.bundleId,
132
- extras: [['s', 'cmd', 'gc'], ['i', 'n', String(n)]],
133
- // FLAG_RECEIVER_FOREGROUND: the foreground broadcast queue, not the background one that other apps' broadcasts can delay.
134
- flags: '0x10000000',
135
- });
136
- return parseBroadcastAnswer(out, n);
137
- },
133
+ gcCommand: (driver, n) => androidCommand(driver, 'gc', n),
134
+ memReadCommand: (driver, n) => androidCommand(driver, 'memread', n),
138
135
  };
136
+ async function androidCommand(driver, cmd, n) {
137
+ const out = await driver.execute('mobile: broadcast', {
138
+ action: `${driver.bundleId}.keepsnappy.COMMAND`,
139
+ package: driver.bundleId,
140
+ extras: [['s', 'cmd', cmd], ['i', 'n', String(n)]],
141
+ // FLAG_RECEIVER_FOREGROUND: the foreground broadcast queue, not the background one that other apps' broadcasts can delay.
142
+ flags: '0x10000000',
143
+ });
144
+ return parseBroadcastAnswer(out, n, cmd);
145
+ }
139
146
  export const PLATFORMS = { ios: IOS, android: ANDROID };
140
147
  export function platformOf(name) {
141
148
  if (!Object.hasOwn(PLATFORMS, name))
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,EAAE,QAAQ,IAAI,WAAW,EAAkB,MAAM,YAAY,CAAC;AAC3H,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,EAAE,EAAE,OAAO,EAA+B,MAAM,gBAAgB,CAAC;AAC5G,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAe,MAAM,gBAAgB,CAAC;AAiDtD,kFAAkF;AAClF,MAAM,OAAO,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAC1E,MAAM,SAAS,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAEzE,MAAM,QAAQ,GAAG,oBAAoB,CAAC;AACtC,MAAM,MAAM,GAAG,gBAAgB,CAAC;AAChC,oHAAoH;AACpH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACxC,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,gHAAgH;AAChH,MAAM,UAAU,oBAAoB,CAAC,GAAY,EAAE,CAAS;IAC1D,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACzE,CAAC;AACD,uIAAuI;AACvI,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,+DAA+D;AAC/D,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC,MAAM,CAAC,MAAM,GAAG,GAAa;IAC3B,IAAI,EAAE,KAAK;IACX,aAAa,EAAE,kBAAkB;IACjC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACjB,YAAY,EAAE,KAAK;QACnB,uBAAuB,EAAE,UAAU;QACnC,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC;QACpC,wBAAwB,EAAE,SAAS,CAAC,MAAM,CAAC;QAC3C,yBAAyB,EAAE,IAAI;QAC/B,0BAA0B,EAAE,qBAAqB;QACjD,2BAA2B,EAAE,UAAU;KACxC,CAAC;IACF,QAAQ,EAAE,EAAE,uBAAuB,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE;IAClH,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,iFAAiF;IACjF,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9E,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpC,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC;IACjE,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAC/E,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE;IAC3F,YAAY,EAAE,EAAE,oBAAoB,EAAE,MAAM,EAAE;IAC9C,+GAA+G;IAC/G,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK;QACtC,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,oDAAoD,MAAM,8BAA8B,CAAC,IAAI,CAAC;QAC3G,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,iBAAiB,CAAC;QAClD,SAAS,CAAC;YACR,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;YAC5D,mIAAmI;YACnI,IAAI,EAAE;gBACJ,OAAO,MAAM;qBACV,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,kBAAkB,CAAC;qBAC5C,IAAI,CAAC,MAAM,CAAC;qBACZ,KAAK,CAAC,GAAG,EAAE;oBACV,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC/F,OAAO,MAAM,CAAC,KAAK,CAAC;gBACtB,CAAC,CAAC,CAAC;YACP,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,QAAQ;gBAAE,OAAO,IAAI,CAAC;YACzC,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAa;IAC/B,IAAI,EAAE,SAAS;IACf,+EAA+E;IAC/E,aAAa,EAAE,qBAAqB;IACpC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACjB,YAAY,EAAE,SAAS;QACvB,uBAAuB,EAAE,cAAc;QACvC,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC;QACpC,wBAAwB,EAAE,SAAS,CAAC,MAAM,CAAC;QAC3C,6BAA6B,EAAE,IAAI;QACnC,0BAA0B,EAAE,qBAAqB;KAClD,CAAC;IACF,kKAAkK;IAClK,iaAAia;IACja,QAAQ,EAAE,EAAE,kBAAkB,EAAE,UAAU,EAAE,2BAA2B,EAAE,UAAU,EAAE,sBAAsB,EAAE,UAAU,EAAE,kBAAkB,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE;IACjL,QAAQ,EAAE,eAAe;IACzB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;IAC9B,mGAAmG;IACnG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG;QACxB,MAAM,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,mIAAmI;IACnI,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM;QACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;QACvC,SAAS,CAAC;YACR,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;gBACzD,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;gBAC9C,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,CAAC,CAAC,YAAY,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,eAAe,CAAC;oBAAE,MAAM,CAAC,CAAC;YACxE,CAAC;YACD,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,QAAQ;gBAAE,OAAO,IAAI,CAAC;YACzC,MAAM,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IACD,sJAAsJ;IACtJ,KAAK,EAAE;QACL,MAAM,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,iCAAiC,QAAQ,IAAI,EAAE;QAC/F,eAAe,EAAE,MAAM;QACvB,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,sBAAsB,QAAQ,IAAI,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE;KACvH;IACD,KAAK,CAAC,UAAU,CAAC,MAAM;QACrB,8JAA8J;QAC9J,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7F,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAClH,CAAC;QACD,OAAO,IAAI,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACzF,eAAe,EAAE,IAAI;IACrB,QAAQ,EAAE,eAAe;IACzB,YAAY,EAAE,EAAE;IAChB,wIAAwI;IACxI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE;YACpD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,qBAAqB;YAC/C,OAAO,EAAE,MAAM,CAAC,QAAQ;YACxB,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,0HAA0H;YAC1H,KAAK,EAAE,YAAY;SACpB,CAAC,CAAC;QACH,OAAO,oBAAoB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAmC,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAExF,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,4CAA4C,CAAC,CAAC;IACrH,OAAO,SAAS,CAAC,IAAoB,CAAC,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/platform.ts"],"names":[],"mappings":"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"}
package/dist/src/run.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { JourneyModule } from './journey.js';
2
+ import { type FlushEvidence } from './session.js';
2
3
  import { type FetchLike } from './webdriver.js';
3
4
  export interface IterationRecord {
4
5
  journey: string;
@@ -11,6 +12,7 @@ export interface IterationRecord {
11
12
  ms: number;
12
13
  };
13
14
  flushed?: string | null;
15
+ flush?: FlushEvidence | null;
14
16
  t_start?: number;
15
17
  begin_ms?: number;
16
18
  journey_ms?: number;
@@ -24,7 +26,26 @@ export interface RunDeps {
24
26
  sleep: (ms: number) => Promise<void>;
25
27
  print: (line: string) => void;
26
28
  error: (line: string) => void;
29
+ /** The signals and the exit; absent in a test that does not exercise them (no handler is installed then). */
30
+ process?: ProcessHooks;
31
+ /** How long a SIGTERM may spend before the process exits (the farm kills 2 minutes after its TERM). */
32
+ term?: Partial<TerminationBudget>;
27
33
  }
34
+ export type TerminationSignal = 'SIGTERM' | 'SIGINT';
35
+ export interface ProcessHooks {
36
+ on(signal: TerminationSignal, handler: () => unknown): void;
37
+ off(signal: TerminationSignal, handler: () => unknown): void;
38
+ exit(code: number): void;
39
+ }
40
+ /** After a signal: the failure screen and source, the session end, and the hard deadline for all of it. */
41
+ export interface TerminationBudget {
42
+ captureMs: number;
43
+ endMs: number;
44
+ hardMs: number;
45
+ }
46
+ export declare const TERMINATION_BUDGET: TerminationBudget;
47
+ export type DriverStatus = 'running' | 'done' | 'terminated' | 'error';
48
+ export declare const realProcessHooks: ProcessHooks;
28
49
  export declare const realRunDeps: () => RunDeps;
29
50
  /** The flags `keepsnappy farm run` passes (docs/plans/54a section 4); a journey module adds its own through `options`. */
30
51
  export declare const DRIVER_OPTIONS: {
@@ -87,6 +108,10 @@ export declare function journeyModulePath(argv: readonly string[]): string | und
87
108
  * One BrowserStack App Automate session that runs every iteration of the module's journeys, then a final flush, and
88
109
  * writes <out>/driver-log.json and <out>/browserstack.<platform>.json in the shape `keepsnappy farm close --bs-build`
89
110
  * reads. Returns the exit code: 0, or 1 when the session or an iteration failed (the result files are written anyway).
111
+ *
112
+ * driver-log.json is rewritten (atomically) at every step and iteration boundary, `status` saying where the run is. A SIGTERM or
113
+ * SIGINT flushes it as `terminated` first, then captures the failure screen and ends the session within `TERMINATION_BUDGET`, and
114
+ * exits; a second signal exits at once.
90
115
  */
91
116
  export declare function runDriver(argv: readonly string[], module: JourneyModule, deps?: RunDeps): Promise<number>;
92
117
  export {};
package/dist/src/run.js CHANGED
@@ -1,12 +1,15 @@
1
- import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
1
+ import { mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import { parseArgs } from 'node:util';
4
4
  import { basicAuth, HUB, resolveApp, sessionCaps, sessionDetail } from './browserstack.js';
5
5
  import { END_GC_DEFAULT } from './links.js';
6
6
  import { platformOf } from './platform.js';
7
- import { Session } from './session.js';
7
+ import { FLUSH_END_RUN_FAILED, FLUSH_ERROR, FLUSH_NOT_ACKNOWLEDGED, FLUSH_OFF, FLUSH_UNREADABLE, Session } from './session.js';
8
8
  import { parseTokensJs, plan } from './tokens.js';
9
9
  import { Driver, realSleep } from './webdriver.js';
10
+ export const TERMINATION_BUDGET = { captureMs: 20_000, endMs: 10_000, hardMs: 45_000 };
11
+ const EXIT_CODE = { SIGTERM: 143, SIGINT: 130 };
12
+ export const realProcessHooks = { on: (s, h) => void process.on(s, h), off: (s, h) => void process.off(s, h), exit: (c) => process.exit(c) };
10
13
  export const realRunDeps = () => ({
11
14
  env: process.env,
12
15
  fetch: fetch,
@@ -14,6 +17,7 @@ export const realRunDeps = () => ({
14
17
  sleep: realSleep,
15
18
  print: (l) => console.log(l),
16
19
  error: (l) => console.error(l),
20
+ process: realProcessHooks,
17
21
  });
18
22
  /** The flags `keepsnappy farm run` passes (docs/plans/54a section 4); a journey module adds its own through `options`. */
19
23
  export const DRIVER_OPTIONS = {
@@ -42,10 +46,26 @@ export function parseDriverArgs(argv, module) {
42
46
  export function journeyModulePath(argv) {
43
47
  return parseArgs({ args: [...argv], options: { 'journey-module': { type: 'string' } }, strict: false }).values['journey-module'];
44
48
  }
49
+ /** Writes a temp file and renames it over the target, so a reader (or a kill) never sees half a file. */
50
+ function writeAtomic(file, text) {
51
+ const tmp = `${file}.${process.pid}.tmp`;
52
+ writeFileSync(tmp, text);
53
+ renameSync(tmp, file);
54
+ }
55
+ /** The failure source and screen, each written as it arrives. */
56
+ async function captureFailure(driver, out) {
57
+ const source = driver.cmd('GET', '/source').then((s) => void (typeof s === 'string' && writeFileSync(join(out, 'failure-source.xml'), s)), () => null);
58
+ const screen = driver.cmd('GET', '/screenshot').then((png) => void (typeof png === 'string' && writeFileSync(join(out, 'failure-screen.png'), Buffer.from(png, 'base64'))), () => null);
59
+ await Promise.all([source, screen]);
60
+ }
45
61
  /**
46
62
  * One BrowserStack App Automate session that runs every iteration of the module's journeys, then a final flush, and
47
63
  * writes <out>/driver-log.json and <out>/browserstack.<platform>.json in the shape `keepsnappy farm close --bs-build`
48
64
  * reads. Returns the exit code: 0, or 1 when the session or an iteration failed (the result files are written anyway).
65
+ *
66
+ * driver-log.json is rewritten (atomically) at every step and iteration boundary, `status` saying where the run is. A SIGTERM or
67
+ * SIGINT flushes it as `terminated` first, then captures the failure screen and ends the session within `TERMINATION_BUDGET`, and
68
+ * exits; a second signal exits at once.
49
69
  */
50
70
  export async function runDriver(argv, module, deps = realRunDeps()) {
51
71
  const a = parseDriverArgs(argv, module);
@@ -71,69 +91,208 @@ export async function runDriver(argv, module, deps = realRunDeps()) {
71
91
  const auth = basicAuth(user, key);
72
92
  mkdirSync(out, { recursive: true });
73
93
  const { api, tokens } = parseTokensJs(readFileSync(String(a['tokens-js']), 'utf8'));
74
- const appUrl = await resolveApp(String(a.app), String(a['app-custom-id'] ?? ''), auth, deps.fetch, platform);
75
- deps.print(`app: ${appUrl}`);
76
94
  const log = [];
77
95
  const driver = new Driver({ hub: HUB, log, headers: { Authorization: auth }, bundleId: module.app.bundleId, platform, fetch: deps.fetch, now: deps.now, sleep: deps.sleep });
78
96
  const t = new Session({ driver, scheme: module.app.scheme, fetch: deps.fetch, api, actionGc: a['action-gc'] === 'on', endGc: a['end-gc'] === 'on' });
79
97
  const sessionName = module.sessionName ?? 'keepsnappy (appium)';
80
98
  const device = String(a.device);
81
99
  const ctx = { fetch: deps.fetch, tokens, journeys, repeat, args: a };
82
- const caps = sessionCaps({ appUrl, device, buildName: String(a['build-name']), sessionName, appiumVersion: String(a['appium-version']), platform, localIdentifier: a['local-identifier'] });
83
- const startedAt = deps.now();
100
+ let startedAt = deps.now();
101
+ let endedAt = null;
102
+ let appUrl = null;
103
+ let buildId = null;
104
+ let status = 'running';
105
+ let signal = null;
84
106
  let error = null;
107
+ let finalFlush = null;
108
+ let flushNotAcknowledged = [];
109
+ let flushError = [];
110
+ let flushOff = [];
85
111
  const iterations = [];
112
+ let terminating = false;
113
+ const logFile = join(out, 'driver-log.json');
114
+ const persist = () => {
115
+ const last = t.stepLog.at(-1);
116
+ const body = {
117
+ driver: 'appium', status, device, appUrl, session: driver.sessionId, buildId, linkMode: t.linkState.linkMode ?? null, actionGc: t.actionGc, endGc: t.endGc, linkError: t.linkState.linkError ?? null,
118
+ startedAt, endedAt, total_ms: (endedAt ?? deps.now()) - startedAt, error: error?.message ?? null, signal,
119
+ lastStep: last ? { name: last.name, t: last.t, journey: last.journey ?? null, iteration: last.iteration ?? null } : null,
120
+ flushNotAcknowledged, flushError, flushOff, finalFlush, steps: t.stepLog, iterations, commands: log,
121
+ };
122
+ writeAtomic(logFile, `${JSON.stringify(body, null, 2)}\n`);
123
+ };
124
+ // Mid-run writes never fail the run: a full disk costs the log, not the measurement.
125
+ const progress = () => {
126
+ if (terminating)
127
+ return;
128
+ try {
129
+ persist();
130
+ }
131
+ catch (e) {
132
+ deps.error(`::warning::driver-log.json not written: ${e instanceof Error ? e.message : String(e)}`);
133
+ }
134
+ };
135
+ let dashboard = null;
136
+ /** The file `keepsnappy farm close --bs-build` reads; `failure` is the session's error message, null when it passed. */
137
+ const writeBuild = (failure) => writeAtomic(join(out, `browserstack.${String(a.platform)}.json`), `${JSON.stringify({
138
+ driver: 'appium',
139
+ status: failure === null ? 'passed' : 'failed',
140
+ buildId,
141
+ dashboard,
142
+ devices: [{ device, sessions: [{ id: driver.sessionId, ...(failure === null ? {} : { error: { message: failure } }) }] }],
143
+ }, null, 2)}\n`);
144
+ const readDetail = async () => {
145
+ const detail = driver.sessionId ? await sessionDetail(driver.sessionId, auth, deps.fetch) : {};
146
+ buildId = detail.build_hashed_id ?? null;
147
+ dashboard = detail.public_url ?? detail.browser_url ?? null;
148
+ };
149
+ const setSessionStatus = (failed, reason) => driver.execute(`browserstack_executor: ${JSON.stringify({ action: 'setSessionStatus', arguments: { status: failed ? 'failed' : 'passed', reason } })}`).catch(() => null);
150
+ const proc = deps.process;
151
+ const budget = { ...TERMINATION_BUDGET, ...deps.term };
152
+ const timers = new Set();
153
+ const within = async (ms, work) => {
154
+ let timer;
155
+ await Promise.race([work.catch(() => null), new Promise((resolve) => timers.add((timer = setTimeout(resolve, ms))))]);
156
+ clearTimeout(timer);
157
+ };
158
+ const leave = (code) => {
159
+ for (const timer of timers)
160
+ clearTimeout(timer);
161
+ timers.clear();
162
+ proc?.exit(code);
163
+ };
164
+ const onSignal = (sig) => async () => {
165
+ if (terminating)
166
+ return leave(EXIT_CODE[sig]);
167
+ terminating = true;
168
+ signal = sig;
169
+ status = 'terminated';
170
+ error ??= new Error('terminated');
171
+ endedAt = deps.now();
172
+ const stopped = t.stepLog.at(-1);
173
+ deps.error(`::error::terminated by ${sig}${stopped ? ` in step ${stopped.name}` : ''}`);
174
+ try {
175
+ persist();
176
+ }
177
+ catch (e) {
178
+ deps.error(`::warning::driver-log.json not written: ${e instanceof Error ? e.message : String(e)}`);
179
+ }
180
+ timers.add(setTimeout(() => leave(EXIT_CODE[sig]), budget.hardMs));
181
+ try {
182
+ if (driver.sessionId) {
183
+ await within(budget.captureMs, captureFailure(driver, out));
184
+ await within(budget.endMs, (async () => {
185
+ await setSessionStatus(true, `terminated by ${sig}`.slice(0, 250));
186
+ await driver.end();
187
+ await readDetail();
188
+ })());
189
+ writeBuild(`terminated by ${sig}`);
190
+ }
191
+ endedAt = deps.now();
192
+ persist();
193
+ }
194
+ catch (e) {
195
+ deps.error(`::warning::termination cleanup failed: ${e instanceof Error ? e.message : String(e)}`);
196
+ }
197
+ finally {
198
+ leave(EXIT_CODE[sig]);
199
+ }
200
+ };
201
+ const handlers = ['SIGTERM', 'SIGINT'].map((sig) => [sig, onSignal(sig)]);
202
+ for (const [sig, handler] of handlers)
203
+ proc?.on(sig, handler);
204
+ t.onStepChange = progress;
205
+ progress();
86
206
  try {
87
- await driver.start(caps);
88
- deps.print(`session ${driver.sessionId}`);
89
- await driver
90
- .cmd('POST', '/appium/settings', { settings: platform.settings })
91
- .catch(() => null);
92
- await module.setup?.(t, ctx);
93
- await runIterations(t, module, ctx, iterations);
207
+ appUrl = await resolveApp(String(a.app), String(a['app-custom-id'] ?? ''), auth, deps.fetch, platform);
208
+ deps.print(`app: ${appUrl}`);
209
+ const caps = sessionCaps({ appUrl, device, buildName: String(a['build-name']), sessionName, appiumVersion: String(a['appium-version']), platform, localIdentifier: a['local-identifier'] });
210
+ startedAt = deps.now();
211
+ try {
212
+ await driver.start(caps);
213
+ deps.print(`session ${driver.sessionId}`);
214
+ progress();
215
+ await driver
216
+ .cmd('POST', '/appium/settings', { settings: platform.settings })
217
+ .catch(() => null);
218
+ await module.setup?.(t, ctx);
219
+ await runIterations(t, module, ctx, iterations, progress);
220
+ }
221
+ catch (e) {
222
+ error = e instanceof Error ? e : new Error(String(e));
223
+ deps.error(`::error::${error.message}`);
224
+ progress();
225
+ if (driver.sessionId)
226
+ await captureFailure(driver, out);
227
+ }
228
+ if (driver.sessionId) {
229
+ // A failed iteration still sends what it measured.
230
+ driver.context = { phase: 'final-flush' };
231
+ t.lastFlush = null;
232
+ progress();
233
+ try {
234
+ finalFlush = { flushed: await t.endRun(), flush: t.lastFlush };
235
+ }
236
+ catch (e) {
237
+ const started = t.lastFlush ?? { linkAt: null, resentAt: null, ackAt: null, gaveUpAt: null };
238
+ finalFlush = { flushed: FLUSH_END_RUN_FAILED, flush: { ...started, gaveUpAt: deps.now(), error: e instanceof Error ? e.message : String(e) } };
239
+ }
240
+ progress();
241
+ await setSessionStatus(!!error, error ? error.message.slice(0, 250) : `${sessionName} done`);
242
+ }
243
+ // A run whose flush the SDK never acknowledged, or answered `error` (its data did not upload), cannot be judged: never a clean
244
+ // exit. The device session keeps its own status, so the farm closes the set with what arrived and blames no run for it.
245
+ // `off` (no upload configured) counts only where an upload was expected: a run with a token, and the final flush of a session
246
+ // that had one. A local run without tokens uploads nothing by design.
247
+ const flushedAs = (flushStatus, tokenOnly = false) => [
248
+ ...iterations.filter((r) => r.flushed === flushStatus && (!tokenOnly || r.token)).map((r) => `${r.journey} #${r.iteration}`),
249
+ ...(finalFlush?.flushed === flushStatus && (!tokenOnly || iterations.some((r) => r.token)) ? ['final flush'] : []),
250
+ ];
251
+ flushNotAcknowledged = [...flushedAs(FLUSH_NOT_ACKNOWLEDGED), ...flushedAs(FLUSH_UNREADABLE), ...flushedAs(FLUSH_END_RUN_FAILED)];
252
+ flushError = flushedAs(FLUSH_ERROR);
253
+ flushOff = flushedAs(FLUSH_OFF, true);
254
+ if (flushNotAcknowledged.length)
255
+ deps.error(`::error::flush not acknowledged (no answer after the re-send, an unreadable answer, or a failed end-run): ${flushNotAcknowledged.join(', ')}`);
256
+ if (flushError.length)
257
+ deps.error(`::error::flush answered error (data not uploaded): ${flushError.join(', ')}`);
258
+ if (flushOff.length)
259
+ deps.error(`::error::flush answered off in a run with a token (upload not configured, nothing uploaded): ${flushOff.join(', ')}`);
260
+ endedAt = deps.now();
261
+ await driver.end();
262
+ await readDetail();
263
+ const failed = !!(error || flushNotAcknowledged.length || flushError.length || flushOff.length);
264
+ if (terminating)
265
+ return EXIT_CODE[signal ?? 'SIGTERM'];
266
+ writeBuild(error?.message ?? null);
267
+ status = failed ? 'error' : 'done';
268
+ persist();
269
+ deps.print(`driver-log.json: ${log.length} commands, ${iterations.length} iterations, ${Math.round((endedAt - startedAt) / 1000)} s`);
270
+ for (const r of iterations)
271
+ deps.print(` ${r.journey} #${r.iteration}: ${r.total_ms ?? '?'} ms, flushed=${r.flushed}`);
272
+ return failed ? 1 : 0;
94
273
  }
95
274
  catch (e) {
96
- error = e instanceof Error ? e : new Error(String(e));
97
- deps.error(`::error::${error.message}`);
98
- if (driver.sessionId) {
99
- const source = await driver.cmd('GET', '/source').catch(() => null);
100
- if (typeof source === 'string')
101
- writeFileSync(join(out, 'failure-source.xml'), source);
102
- const png = await driver.cmd('GET', '/screenshot').catch(() => null);
103
- if (typeof png === 'string')
104
- writeFileSync(join(out, 'failure-screen.png'), Buffer.from(png, 'base64'));
275
+ // Something outside the journey broke (the app lookup, the result files): the log must not stay `running`.
276
+ if (!terminating) {
277
+ status = 'error';
278
+ error ??= e instanceof Error ? e : new Error(String(e));
279
+ endedAt = deps.now();
280
+ progress();
105
281
  }
282
+ throw e;
106
283
  }
107
- if (driver.sessionId) {
108
- // A failed iteration still sends what it measured.
109
- driver.context = { phase: 'final-flush' };
110
- await t.endRun().catch(() => null);
111
- const reason = error ? error.message.slice(0, 250) : `${sessionName} done`;
112
- await driver.execute(`browserstack_executor: ${JSON.stringify({ action: 'setSessionStatus', arguments: { status: error ? 'failed' : 'passed', reason } })}`).catch(() => null);
284
+ finally {
285
+ for (const [sig, handler] of handlers)
286
+ proc?.off(sig, handler);
113
287
  }
114
- const endedAt = deps.now();
115
- await driver.end();
116
- const detail = driver.sessionId ? await sessionDetail(driver.sessionId, auth, deps.fetch) : {};
117
- const buildId = detail.build_hashed_id ?? null;
118
- writeFileSync(join(out, `browserstack.${String(a.platform)}.json`), `${JSON.stringify({
119
- driver: 'appium',
120
- status: error ? 'failed' : 'passed',
121
- buildId,
122
- dashboard: detail.public_url ?? detail.browser_url ?? null,
123
- devices: [{ device, sessions: [{ id: driver.sessionId, ...(error ? { error: { message: error.message } } : {}) }] }],
124
- }, null, 2)}\n`);
125
- writeFileSync(join(out, 'driver-log.json'), `${JSON.stringify({ driver: 'appium', device, appUrl, session: driver.sessionId, buildId, linkMode: t.linkState.linkMode ?? null, actionGc: t.actionGc, endGc: t.endGc, linkError: t.linkState.linkError ?? null, startedAt, endedAt, total_ms: endedAt - startedAt, error: error?.message ?? null, iterations, commands: log }, null, 2)}\n`);
126
- deps.print(`driver-log.json: ${log.length} commands, ${iterations.length} iterations, ${Math.round((endedAt - startedAt) / 1000)} s`);
127
- for (const r of iterations)
128
- deps.print(` ${r.journey} #${r.iteration}: ${r.total_ms ?? '?'} ms, flushed=${r.flushed}`);
129
- return error ? 1 : 0;
130
288
  }
131
289
  /** Per iteration: begin-run (relaunch, home, activation link), the journey, `run:complete`, end-run (markers, flush link). */
132
- async function runIterations(t, module, ctx, iterations) {
290
+ async function runIterations(t, module, ctx, iterations, progress) {
133
291
  const { driver } = t;
134
292
  for (const it of plan(ctx.journeys, ctx.repeat, ctx.tokens)) {
135
293
  const rec = { journey: it.journey, iteration: it.iteration, token: it.token !== '' };
136
294
  iterations.push(rec);
295
+ progress();
137
296
  driver.context = { journey: it.journey, iteration: it.iteration, phase: 'begin' };
138
297
  const t0 = t.now();
139
298
  rec.alert = await t.beginRun({ token: it.token, home: module.home, ...(module.sdkArgs ? { args: module.sdkArgs } : {}) });
@@ -150,8 +309,10 @@ async function runIterations(t, module, ctx, iterations) {
150
309
  rec.ready = { n: waits.length, ms: waits.reduce((x, y) => x + y, 0) };
151
310
  driver.context = { ...driver.context, phase: 'end' };
152
311
  rec.flushed = await t.endRun();
312
+ rec.flush = t.lastFlush;
153
313
  const t3 = t.now();
154
314
  Object.assign(rec, { t_start: t0, begin_ms: t1 - t0, journey_ms: t2 - t1, end_ms: t3 - t2, total_ms: t3 - t0 });
315
+ progress();
155
316
  }
156
317
  }
157
318
  //# sourceMappingURL=run.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,38 @@ export interface SendOptions {
37
37
  */
38
38
  export declare function sendMarkers(fetchImpl: FetchLike, api: string, markers: Marker[], opts?: SendOptions): Promise<number>;
39
39
  export declare const FLUSH_WAIT_MS: number;
40
+ /**
41
+ * No `keepsnappy.flushed` this long after the flush link: the link goes once more (a link or an ack lost on the way). Acks on the
42
+ * emulator and the farm came 5 to 37 s after the link (2026-10-21: 4.9 s, about 20 s, 34 s); 90 s is well clear of them. A re-send
43
+ * during a slow but live flush costs nothing: the SDK runs the second flush after the first, whose ack still shows.
44
+ */
45
+ export declare const FLUSH_RESEND_MS = 90000;
46
+ export declare const FLUSH_NOT_ACKNOWLEDGED = "not acknowledged (re-sent once)";
47
+ /** The flush of one run, host clock: when the link went, when it went again, when the SDK's ack was read or the driver gave up. */
48
+ export interface FlushEvidence {
49
+ /** null: the end-run failed before its link went. */
50
+ linkAt: number | null;
51
+ resentAt: number | null;
52
+ ackAt: number | null;
53
+ gaveUpAt: number | null;
54
+ /** The SDK's own words on its answer (with `error`: what failed to upload), without the ack echo. */
55
+ detail?: string | null;
56
+ /** Why the end-run itself failed (markers, the link). */
57
+ error?: string;
58
+ /** An answer whose status could not be read: what the element held (status null: the read failed). */
59
+ raw?: {
60
+ status: unknown;
61
+ detail: string | null;
62
+ };
63
+ }
64
+ /** An answer whose status could not be read, or is none of ok / error / off: no confirmed upload. */
65
+ export declare const FLUSH_UNREADABLE = "not acknowledged (unreadable answer)";
66
+ /** An end-run that threw before an answer was read: as unacknowledged as a flush with no answer. */
67
+ export declare const FLUSH_END_RUN_FAILED = "not acknowledged (end-run failed)";
68
+ /** The SDK's answer when the run's data did not upload. */
69
+ export declare const FLUSH_ERROR = "error";
70
+ /** The SDK's answer when it has no upload configured: nothing went up. */
71
+ export declare const FLUSH_OFF = "off";
40
72
  type Step = () => Promise<unknown> | unknown;
41
73
  /** One thing a step expects of the screen: an element shown, an element gone, or the keyboard up or down. */
42
74
  export type Condition = {
@@ -61,6 +93,16 @@ export interface SessionOptions {
61
93
  */
62
94
  endGc?: boolean;
63
95
  }
96
+ /** One declared step as the driver log keeps it: `ms` is null while the step is still running. */
97
+ export interface StepRecord {
98
+ journey: unknown;
99
+ iteration: unknown;
100
+ name: string;
101
+ depth: number;
102
+ t: number;
103
+ ms: number | null;
104
+ failed?: true;
105
+ }
64
106
  /** One measured session: the phone, the run tokens, and the step vocabulary a journey calls. */
65
107
  export declare class Session {
66
108
  readonly driver: Driver;
@@ -83,6 +125,10 @@ export declare class Session {
83
125
  gcN: number;
84
126
  /** Steps open right now: a step inside another step's action sends no GC, which would land inside the outer step. */
85
127
  stepDepth: number;
128
+ /** Every declared step in start order, for the driver log. */
129
+ readonly stepLog: StepRecord[];
130
+ /** Called when a top-level step starts and when it ends, outside its start and end markers (the driver log is rewritten then). */
131
+ onStepChange: (() => void) | null;
86
132
  /** Elements looked up again after going stale, over the session (see `frameOf`). */
87
133
  private refinds;
88
134
  get staleRefinds(): number;
@@ -94,6 +140,15 @@ export declare class Session {
94
140
  * also while the per-step command is off.
95
141
  */
96
142
  gc(atEnd?: boolean): Promise<number | null>;
143
+ /** The end GC's memory read is off for the rest of the session once an SDK did not answer it ok. */
144
+ private memReadOff;
145
+ /**
146
+ * The end GC's manual memory read (REQ-MEAS-35), asked for with the GC's own number `n` once the GC answered ok: the SDK takes
147
+ * one sample at once and answers, and the run goes on only after that answer, so the app is backgrounded after the reading and
148
+ * never a time later. Any answer but `memread:<n> ok` is logged and turns the command off for the session; the run then has no
149
+ * reading of its own and derives from the GC's `post` record. Returns whether the SDK read.
150
+ */
151
+ memRead(n: number | null): Promise<boolean>;
97
152
  now(): number;
98
153
  /** After the action just made: the next action waits until `sel` is visible (the screen or element the action leads to). */
99
154
  expectNext(sel: SelectorLike, timeoutMs?: number): void;
@@ -191,8 +246,16 @@ export declare class Session {
191
246
  args?: string;
192
247
  home: SelectorLike;
193
248
  }): Promise<string | null>;
194
- /** Markers, then the flush link, then the SDK's own `keepsnappy.flushed` (ok | error | off). */
195
- endRun(): Promise<string | null>;
249
+ /** The last `endRun`'s flush. */
250
+ lastFlush: FlushEvidence | null;
251
+ private flushSeq;
252
+ /**
253
+ * Markers, then the flush link, then the SDK's own `keepsnappy.flushed` (ok | error | off). Without it after FLUSH_RESEND_MS the
254
+ * link goes once more and the wait starts again; still none: FLUSH_NOT_ACKNOWLEDGED.
255
+ */
256
+ endRun(): Promise<string>;
257
+ /** Polls for `keepsnappy.flushed` answering one of `acks` until `deadline`: its status, an unreadable answer, or null. */
258
+ private waitFlushed;
196
259
  /** The heavy lookup, with its setting on only while it runs. */
197
260
  private findFallback;
198
261
  }
@@ -121,6 +121,26 @@ const SDK_FLUSH_WORST_CASE_MS = 315_000;
121
121
  const FLUSH_MARGIN_MS = 30_000;
122
122
  export const FLUSH_WAIT_MS = SDK_FLUSH_WORST_CASE_MS + FLUSH_MARGIN_MS;
123
123
  const FLUSH_POLL_MS = 500;
124
+ /**
125
+ * No `keepsnappy.flushed` this long after the flush link: the link goes once more (a link or an ack lost on the way). Acks on the
126
+ * emulator and the farm came 5 to 37 s after the link (2026-10-21: 4.9 s, about 20 s, 34 s); 90 s is well clear of them. A re-send
127
+ * during a slow but live flush costs nothing: the SDK runs the second flush after the first, whose ack still shows.
128
+ */
129
+ export const FLUSH_RESEND_MS = 90_000;
130
+ export const FLUSH_NOT_ACKNOWLEDGED = 'not acknowledged (re-sent once)';
131
+ /** An answer whose status could not be read, or is none of ok / error / off: no confirmed upload. */
132
+ export const FLUSH_UNREADABLE = 'not acknowledged (unreadable answer)';
133
+ const FLUSH_STATUSES = new Set(['ok', 'error', 'off']);
134
+ // Unreadable this many polls in a row: the answer counts as unreadable (one failed read can be a stale element).
135
+ const UNREADABLE_POLLS = 3;
136
+ /** An end-run that threw before an answer was read: as unacknowledged as a flush with no answer. */
137
+ export const FLUSH_END_RUN_FAILED = 'not acknowledged (end-run failed)';
138
+ // The SDK's echo of the link's `ack=<n>`, at the end of the answer's detail. An older SDK echoes nothing.
139
+ const ACK_ECHO = / ?ack=([A-Za-z0-9_-]+)$/;
140
+ /** The SDK's answer when the run's data did not upload. */
141
+ export const FLUSH_ERROR = 'error';
142
+ /** The SDK's answer when it has no upload configured: nothing went up. */
143
+ export const FLUSH_OFF = 'off';
124
144
  // XPath dumps every window, so it runs on every 10th poll (5 s) at most.
125
145
  const FLUSH_FALLBACK_EVERY = 10;
126
146
  // Reading the page source costs 1 to 3.5 s on the S23, inside the measured step, so it is asked for at most this often.
@@ -145,6 +165,10 @@ export class Session {
145
165
  gcN = 0;
146
166
  /** Steps open right now: a step inside another step's action sends no GC, which would land inside the outer step. */
147
167
  stepDepth = 0;
168
+ /** Every declared step in start order, for the driver log. */
169
+ stepLog = [];
170
+ /** Called when a top-level step starts and when it ends, outside its start and end markers (the driver log is rewritten then). */
171
+ onStepChange = null;
148
172
  /** Elements looked up again after going stale, over the session (see `frameOf`). */
149
173
  refinds = 0;
150
174
  get staleRefinds() {
@@ -181,6 +205,25 @@ export class Session {
181
205
  this.actionGc = answer === `gc:${n} unavailable` ? 'unavailable' : 'unsupported';
182
206
  return null;
183
207
  }
208
+ /** The end GC's memory read is off for the rest of the session once an SDK did not answer it ok. */
209
+ memReadOff = false;
210
+ /**
211
+ * The end GC's manual memory read (REQ-MEAS-35), asked for with the GC's own number `n` once the GC answered ok: the SDK takes
212
+ * one sample at once and answers, and the run goes on only after that answer, so the app is backgrounded after the reading and
213
+ * never a time later. Any answer but `memread:<n> ok` is logged and turns the command off for the session; the run then has no
214
+ * reading of its own and derives from the GC's `post` record. Returns whether the SDK read.
215
+ */
216
+ async memRead(n) {
217
+ if (n === null || this.memReadOff || this.linkState.linkMode === 'safari')
218
+ return false;
219
+ const start = this.now();
220
+ const answer = await this.driver.platform.memReadCommand(this.driver, n, this.scheme, this.linkState).catch(() => null);
221
+ const ok = answer === `memread:${n} ok`;
222
+ this.driver.log.push({ ...this.driver.context, cmd: 'memread', t: this.now(), ms: this.now() - start, status: ok ? 0 : 1, ...(answer !== null ? { answer } : {}) });
223
+ if (!ok)
224
+ this.memReadOff = true;
225
+ return ok;
226
+ }
184
227
  now() {
185
228
  return this.driver.now();
186
229
  }
@@ -212,9 +255,15 @@ export class Session {
212
255
  async step(name, action, checks = noop, once = noop) {
213
256
  await this.ready();
214
257
  this.driver.context = { ...this.driver.context, step: name };
258
+ const record = { journey: this.driver.context.journey, iteration: this.driver.context.iteration, name, depth: this.stepDepth, t: this.now(), ms: null };
259
+ this.stepLog.push(record);
215
260
  this.stepDepth++;
216
261
  try {
262
+ if (record.depth === 0)
263
+ this.onStepChange?.();
217
264
  const gcN = this.stepDepth === 1 ? await this.gc() : null;
265
+ // The step's own time starts at its marker, after the GC command.
266
+ record.t = this.now();
218
267
  this.marker(name, 'start', gcN);
219
268
  await action();
220
269
  await checks();
@@ -222,10 +271,17 @@ export class Session {
222
271
  this.marker(name, 'end');
223
272
  await checks();
224
273
  }
274
+ catch (e) {
275
+ record.failed = true;
276
+ throw e;
277
+ }
225
278
  finally {
279
+ record.ms = this.now() - record.t;
226
280
  this.stepDepth--;
227
281
  const { step: _done, ...rest } = this.driver.context;
228
282
  this.driver.context = rest;
283
+ if (record.depth === 0)
284
+ this.onStepChange?.();
229
285
  }
230
286
  }
231
287
  isVisible(sel) {
@@ -564,29 +620,93 @@ export class Session {
564
620
  await this.waitVisible(home, 30_000);
565
621
  return this.openLink(activationLink(this.scheme, token, args));
566
622
  }
567
- /** Markers, then the flush link, then the SDK's own `keepsnappy.flushed` (ok | error | off). */
623
+ /** The last `endRun`'s flush. */
624
+ lastFlush = null;
625
+ // Numbers the flush links of this session (`ack=<n>`).
626
+ flushSeq = 0;
627
+ /**
628
+ * Markers, then the flush link, then the SDK's own `keepsnappy.flushed` (ok | error | off). Without it after FLUSH_RESEND_MS the
629
+ * link goes once more and the wait starts again; still none: FLUSH_NOT_ACKNOWLEDGED.
630
+ */
568
631
  async endRun() {
569
632
  // No readiness wait here: the runner served the journey's last one, and a failed iteration's pending wait must not stop the flush.
570
633
  // The last command gives the last step its reading after the action and the run its end reading after a GC. The session's
571
634
  // final flush, after every run sent its markers, has no step to read and sends none: its GC would land in no run, or in the
572
635
  // last one as a stray.
636
+ // The memory read follows the GC's answer and is answered before the markers and the flush link, which background the app.
573
637
  if (this.markers.some((m) => m.phase === 'start'))
574
- await this.gc(true);
638
+ await this.memRead(await this.gc(true));
575
639
  await sendMarkers(this.fetch, this.api, this.markers, { sleep: (ms) => this.driver.sleep(ms), now: () => this.now() });
576
- await this.openLink(flushLink(this.scheme));
640
+ const evidence = { linkAt: this.now(), resentAt: null, ackAt: null, gaveUpAt: null };
641
+ this.lastFlush = evidence;
642
+ // The answer element stays up until the next answer replaces it: only an answer echoing one of this end-run's links counts.
643
+ const acks = new Set();
644
+ const link = () => {
645
+ const ack = String(++this.flushSeq);
646
+ acks.add(ack);
647
+ return flushLink(this.scheme, ack);
648
+ };
649
+ await this.openLink(link());
650
+ let answer = await this.waitFlushed(evidence.linkAt + FLUSH_RESEND_MS, acks);
651
+ if (answer === null || 'unreadable' in answer) {
652
+ evidence.resentAt = this.now();
653
+ // After an unreadable answer only the re-sent link's answer counts: the first one is still on screen.
654
+ if (answer !== null)
655
+ acks.clear();
656
+ await this.openLink(link());
657
+ answer = (await this.waitFlushed(evidence.resentAt + FLUSH_WAIT_MS, acks)) ?? answer;
658
+ }
659
+ if (answer === null || 'unreadable' in answer) {
660
+ evidence.gaveUpAt = this.now();
661
+ if (answer === null)
662
+ return FLUSH_NOT_ACKNOWLEDGED;
663
+ evidence.raw = answer.unreadable;
664
+ return FLUSH_UNREADABLE;
665
+ }
666
+ evidence.ackAt = this.now();
667
+ return answer.status;
668
+ }
669
+ /** Polls for `keepsnappy.flushed` answering one of `acks` until `deadline`: its status, an unreadable answer, or null. */
670
+ async waitFlushed(deadline, acks) {
577
671
  const flush = this.driver.platform.flush;
578
- const deadline = this.now() + FLUSH_WAIT_MS;
672
+ let unreadable = null;
673
+ let unreadableRun = 0;
579
674
  for (let poll = 1; this.now() < deadline; poll++) {
580
675
  let el = await this.driver.find(flush.lookup.using, flush.lookup.value);
581
676
  if (!el && flush.fallback && poll % FLUSH_FALLBACK_EVERY === 0)
582
677
  el = await this.findFallback(flush.fallback);
583
678
  if (el) {
584
679
  const label = await this.driver.cmd('GET', `/element/${el}/attribute/${flush.statusAttribute}`).catch(() => null);
585
- return label ?? 'shown';
680
+ const raw = await this.driver.cmd('GET', `/element/${el}/attribute/${flush.detailAttribute}`).then((value) => ({ value }), () => null);
681
+ const detail = typeof raw?.value === 'string' ? raw.value : null;
682
+ const echoed = detail === null ? null : ACK_ECHO.exec(detail);
683
+ if (raw === null) {
684
+ // The detail read failed: the echo cannot be checked, so this may be an earlier flush's answer. An absent detail
685
+ // (an older SDK) is not a failed read.
686
+ unreadable = { status: label, detail: null };
687
+ if (++unreadableRun >= UNREADABLE_POLLS)
688
+ return { unreadable };
689
+ }
690
+ else if (!echoed || acks.has(echoed[1])) {
691
+ // Otherwise an answer echoing another link is an earlier flush's, still on screen: keep waiting for this one's.
692
+ if (this.lastFlush)
693
+ this.lastFlush.detail = detail === null ? null : detail.replace(ACK_ECHO, '');
694
+ if (typeof label === 'string' && FLUSH_STATUSES.has(label))
695
+ return { status: label };
696
+ unreadable = { status: label, detail };
697
+ if (++unreadableRun >= UNREADABLE_POLLS)
698
+ return { unreadable };
699
+ }
700
+ else {
701
+ unreadableRun = 0;
702
+ }
703
+ }
704
+ else {
705
+ unreadableRun = 0;
586
706
  }
587
707
  await this.driver.sleep(FLUSH_POLL_MS);
588
708
  }
589
- return null;
709
+ return unreadable ? { unreadable } : null;
590
710
  }
591
711
  /** The heavy lookup, with its setting on only while it runs. */
592
712
  async findFallback(f) {
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keepsnappy/appium-driver",
3
- "version": "0.1.0-alpha.13",
3
+ "version": "0.1.0-alpha.14",
4
4
  "description": "KeepSnappy Appium driver: write a journey module, run it on BrowserStack with `keepsnappy farm run --driver appium --journey-module`.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",