@keepsnappy/appium-driver 0.1.0-alpha.12 → 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 +8 -3
- package/dist/src/browserstack.js +1 -1
- package/dist/src/browserstack.js.map +1 -1
- package/dist/src/cli.js +0 -0
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/links.d.ts +4 -1
- package/dist/src/links.js +5 -2
- package/dist/src/links.js.map +1 -1
- package/dist/src/platform.d.ts +11 -2
- package/dist/src/platform.js +45 -38
- package/dist/src/platform.js.map +1 -1
- package/dist/src/run.d.ts +27 -2
- package/dist/src/run.js +209 -48
- package/dist/src/run.js.map +1 -1
- package/dist/src/session.d.ts +66 -3
- package/dist/src/session.js +127 -7
- package/dist/src/session.js.map +1 -1
- package/dist/src/tokens.d.ts +1 -1
- package/dist/src/tokens.js +2 -2
- package/dist/src/tokens.js.map +1 -1
- package/package.json +1 -1
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,8 +17,9 @@ 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
|
-
/** The flags `
|
|
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 = {
|
|
20
24
|
'journey-module': { type: 'string' },
|
|
21
25
|
app: { type: 'string' },
|
|
@@ -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
|
-
* writes <out>/driver-log.json and <out>/browserstack.<platform>.json in the shape `
|
|
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
|
-
const sessionName = module.sessionName ?? '
|
|
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
|
-
|
|
83
|
-
|
|
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
|
|
88
|
-
deps.print(`
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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
|
-
|
|
108
|
-
|
|
109
|
-
|
|
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
|
package/dist/src/run.js.map
CHANGED
|
@@ -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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"}
|
package/dist/src/session.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export interface Marker {
|
|
|
9
9
|
/** The GC command answered just before this step's start (GC before the action). */
|
|
10
10
|
gc_n?: number;
|
|
11
11
|
}
|
|
12
|
-
/** One request/response round trip with the
|
|
12
|
+
/** One request/response round trip with the KeepSnappy API: t0/t3 this host's send/receive, t1/t2 the server's receive/send. */
|
|
13
13
|
export interface ClockTrip {
|
|
14
14
|
t0: number;
|
|
15
15
|
t1: number;
|
|
@@ -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
|
-
/**
|
|
195
|
-
|
|
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
|
}
|