@keepsnappy/appium-driver 0.1.0-alpha.21 → 0.1.0-alpha.23
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 +4 -2
- package/dist/src/gestures.d.ts +41 -0
- package/dist/src/gestures.js +46 -6
- package/dist/src/gestures.js.map +1 -1
- package/dist/src/index.d.ts +4 -4
- package/dist/src/index.js +4 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/lists.d.ts +83 -18
- package/dist/src/lists.js +223 -99
- package/dist/src/lists.js.map +1 -1
- package/dist/src/run.js +2 -2
- package/dist/src/run.js.map +1 -1
- package/dist/src/scroll.d.ts +28 -16
- package/dist/src/scroll.js +170 -20
- package/dist/src/scroll.js.map +1 -1
- package/dist/src/session.d.ts +36 -5
- package/dist/src/session.js +68 -9
- package/dist/src/session.js.map +1 -1
- package/dist/src/webdriver.d.ts +20 -1
- package/dist/src/webdriver.js +64 -1
- package/dist/src/webdriver.js.map +1 -1
- package/package.json +1 -1
package/dist/src/lists.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { describeSelector, toSelector } from './selectors.js';
|
|
2
|
-
import { LONG_SCROLL_CAP, LONG_SCROLL_PLANNED, IOS_TOP_EXTRA } from './gestures.js';
|
|
3
|
-
import { COAST_MAX_MS, GestureNotTaken, scrollList, waitCoasted } from './scroll.js';
|
|
2
|
+
import { LONG_SCROLL_CAP, LONG_SCROLL_PLANNED, TOP_STEP, IOS_TOP_EXTRA } from './gestures.js';
|
|
3
|
+
import { COAST_MAX_MS, COAST_POLL_MS, GestureNotTaken, NavigationStuck, rowEdges, scrollList, waitCoasted } from './scroll.js';
|
|
4
4
|
/** Default fixed end-pass gesture count. */
|
|
5
5
|
export const END_SCROLLS = 3;
|
|
6
6
|
/** Default end/top cycle count. */
|
|
@@ -20,6 +20,10 @@ export const LOOK_POLL_MS = 100;
|
|
|
20
20
|
export const CHECK_TIMEOUT_MS = 20_000;
|
|
21
21
|
/** Initial visibility wait before trying an indicator or fallback scroll. */
|
|
22
22
|
export const TARGET_SETTLE_MS = 10_000;
|
|
23
|
+
/** A navigation pass that still has not arrived after this long fails (it has no stroke count to end it). */
|
|
24
|
+
export const NAV_MAX_MS = 120_000;
|
|
25
|
+
/** Two navigation strokes in a row that leave the first and last visible rows as they were stop the pass. */
|
|
26
|
+
export const NAV_STUCK_STROKES = 2;
|
|
23
27
|
/** Finds any part of target on screen through a list handle. Logs lookup/frame commands only. */
|
|
24
28
|
async function shownIn(t, listEl, target) {
|
|
25
29
|
const { childOf: _list, ...inList } = toSelector(target);
|
|
@@ -36,13 +40,14 @@ async function shownIn(t, listEl, target) {
|
|
|
36
40
|
* begins at least lookWindowMs (1000) after it; lookPollMs defaults to 100. Optional settle runs before those looks.
|
|
37
41
|
* Logs cmd with the gesture count under field, blind/cap, looks/lookMs, status, duration, optional extra and planned overrun.
|
|
38
42
|
*/
|
|
39
|
-
export async function scrollUntilShown(t, { cmd, field, cap, blind = 0, planned, settle, look: once, move, missing, extra = () => ({}), lookWindowMs = LOOK_MS, lookPollMs = LOOK_POLL_MS }) {
|
|
43
|
+
export async function scrollUntilShown(t, { cmd, field, cap, blind = 0, planned, settle, look: once, move, missing, extra = () => ({}), lookWindowMs = LOOK_MS, lookPollMs = LOOK_POLL_MS, soft = false, lookBetweenBlind = false }) {
|
|
40
44
|
await t.ready();
|
|
41
45
|
const start = t.now();
|
|
42
46
|
let moves = 0;
|
|
43
47
|
let looks = 0;
|
|
44
48
|
let lookMs = 0;
|
|
45
49
|
let status = 1;
|
|
50
|
+
let reached = true;
|
|
46
51
|
try {
|
|
47
52
|
const look = async () => {
|
|
48
53
|
if (settle && moves > 0)
|
|
@@ -65,12 +70,30 @@ export async function scrollUntilShown(t, { cmd, field, cap, blind = 0, planned,
|
|
|
65
70
|
lookMs += t.now() - at;
|
|
66
71
|
}
|
|
67
72
|
};
|
|
73
|
+
let shownEarly = false;
|
|
68
74
|
for (; moves < blind; moves++) {
|
|
75
|
+
// A touch on a list that still coasts stops it (iOS): each blind move waits for the one before to come to rest.
|
|
76
|
+
if (moves > 0 && settle)
|
|
77
|
+
await settle();
|
|
78
|
+
if (moves > 0 && lookBetweenBlind) {
|
|
79
|
+
looks++;
|
|
80
|
+
if (await once()) {
|
|
81
|
+
shownEarly = true;
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
69
85
|
await move();
|
|
70
86
|
}
|
|
87
|
+
if (shownEarly) {
|
|
88
|
+
status = 0;
|
|
89
|
+
return moves;
|
|
90
|
+
}
|
|
71
91
|
while (!(await look())) {
|
|
72
92
|
if (moves >= cap) {
|
|
73
|
-
|
|
93
|
+
if (!soft)
|
|
94
|
+
throw new Error(missing(cap));
|
|
95
|
+
reached = false;
|
|
96
|
+
break;
|
|
74
97
|
}
|
|
75
98
|
await move();
|
|
76
99
|
moves++;
|
|
@@ -80,22 +103,29 @@ export async function scrollUntilShown(t, { cmd, field, cap, blind = 0, planned,
|
|
|
80
103
|
}
|
|
81
104
|
finally {
|
|
82
105
|
const over = planned === undefined ? {} : { extra: Math.max(0, moves - planned) };
|
|
83
|
-
t.driver.log.push({ ...t.driver.context, cmd, t: t.now(), ms: t.now() - start, status, [field]: moves, blind, cap, looks, lookMs, ...over, ...extra() });
|
|
106
|
+
t.driver.log.push({ ...t.driver.context, cmd, t: t.now(), ms: t.now() - start, status, [field]: moves, blind, cap, looks, lookMs, ...over, ...(reached ? {} : { reached }), ...extra() });
|
|
84
107
|
}
|
|
85
108
|
}
|
|
86
109
|
/** Platform gesture budget: cap (3), plus iosTopExtra (2) only when returning to the top on iOS. No commands or logs. */
|
|
87
110
|
export const scrollCap = (t, toward, cap = LONG_SCROLL_CAP, iosTopExtra = IOS_TOP_EXTRA) => cap + (t.driver.platform.name === 'ios' && toward === 'top' ? iosTopExtra : 0);
|
|
88
111
|
const iosHold = (t, cache) => t.driver.platform.name === 'ios' ? (cache.hold ??= {}) : undefined;
|
|
89
112
|
/**
|
|
90
|
-
*
|
|
113
|
+
* Brings `target` of `list` into view toward `toward`. Outside a measured step it is a navigation pass (`navigate`: marked `nav`,
|
|
114
|
+
* the navigation stroke, no gesture cap: it ends on the target found by lookup and the rows at rest, and stops when two strokes
|
|
115
|
+
* leave the rows as they were; `blind`, `cap`, `planned`, `iosTopExtra` and `used` do not apply). Inside a step its gestures stay
|
|
116
|
+
* the measured gesture, as below, and nothing is marked `nav`.
|
|
117
|
+
*
|
|
118
|
+
* In a step it long-scrolls list toward a partly visible target; scoped defaults true. Refetches missing/stale list handles before
|
|
91
119
|
* moving and rereads the frame before every gesture. A shared cache stores the settled frame, held iOS row and moves used.
|
|
92
120
|
* Defaults: 3 gestures (5 to top on iOS), 2 planned, 20 s frameTimeoutMs, 3 s coast. used subtracts the prior pass budget.
|
|
93
|
-
* A to-top gesture is checked (scrollList `mustMove`); its retry is a logged defect and does not use the budget.
|
|
121
|
+
* A to-top gesture is checked (scrollList `mustMove`); its retry is a logged defect and does not use the budget. With `soft`, the
|
|
122
|
+
* cap ends the loop quietly (`reached: false` in the log) where it would throw.
|
|
94
123
|
* Logs fling-to-end/top with flings, blind/cap, looks/lookMs, extra, relists, settled, status and duration, including failures.
|
|
95
124
|
*/
|
|
96
|
-
export async function flingUntilShown(t, list, target, toward, { scoped = true, blind = 0, cache = {}, row, used = 0, cap = LONG_SCROLL_CAP, planned = LONG_SCROLL_PLANNED, iosTopExtra = IOS_TOP_EXTRA, frameTimeoutMs = CHECK_TIMEOUT_MS, coastMaxMs = COAST_MAX_MS, lookWindowMs, lookPollMs } = {}) {
|
|
125
|
+
export async function flingUntilShown(t, list, target, toward, { scoped = true, blind = 0, cache = {}, row, used = 0, cap = LONG_SCROLL_CAP, planned = LONG_SCROLL_PLANNED, iosTopExtra = IOS_TOP_EXTRA, frameTimeoutMs = CHECK_TIMEOUT_MS, coastMaxMs = COAST_MAX_MS, lookWindowMs, lookPollMs, soft } = {}) {
|
|
97
126
|
let relists = 0;
|
|
98
127
|
let settled = false;
|
|
128
|
+
let sent = 0;
|
|
99
129
|
const { childOf: _list, ...anywhere } = toSelector(target);
|
|
100
130
|
const frame = async () => {
|
|
101
131
|
if (!cache.at) {
|
|
@@ -104,45 +134,56 @@ export async function flingUntilShown(t, list, target, toward, { scoped = true,
|
|
|
104
134
|
}
|
|
105
135
|
return cache.at;
|
|
106
136
|
};
|
|
137
|
+
const look = async () => {
|
|
138
|
+
const at = await frame();
|
|
139
|
+
if (!scoped) {
|
|
140
|
+
return Boolean(await t.driver.findShown(toSelector(anywhere)));
|
|
141
|
+
}
|
|
142
|
+
try {
|
|
143
|
+
if (await shownIn(t, at.el, target)) {
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch (e) {
|
|
148
|
+
if (e?.wdError !== 'stale element reference') {
|
|
149
|
+
throw e;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
cache.at = { ...at, el: await t.waitVisible(list) };
|
|
153
|
+
relists++;
|
|
154
|
+
try {
|
|
155
|
+
return await shownIn(t, cache.at.el, target);
|
|
156
|
+
}
|
|
157
|
+
catch (e) {
|
|
158
|
+
if (e?.wdError !== 'stale element reference') {
|
|
159
|
+
throw e;
|
|
160
|
+
}
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
if (t.stepDepth === 0 && !t.navigating) {
|
|
165
|
+
// A navigation stroke coasts far longer than the measured gesture: the pass keeps navigate's own rest bound.
|
|
166
|
+
await navigate(t, list, toward, { until: look, row: row ?? target, scoped, cache, frameTimeoutMs, label: selectorLabel(target), turnRound: true });
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
107
169
|
cache.used = await scrollUntilShown(t, {
|
|
108
170
|
cmd: `fling-to-${toward}`,
|
|
109
|
-
field: 'flings', lookWindowMs, lookPollMs,
|
|
171
|
+
field: 'flings', lookWindowMs, lookPollMs, soft,
|
|
172
|
+
// A to-top gesture with the first row shown can drag a sheet closed (F7): blind to-top gestures stop once it shows.
|
|
173
|
+
lookBetweenBlind: toward === 'top',
|
|
110
174
|
cap: Math.max(0, scrollCap(t, toward, cap, iosTopExtra) - used),
|
|
111
175
|
planned: Math.max(0, planned - used),
|
|
112
176
|
blind: Math.min(blind, Math.max(0, scrollCap(t, toward, cap, iosTopExtra) - used)),
|
|
113
177
|
settle: () => waitCoasted(t, row ?? target, scoped ? { sel: list, el: cache.at?.el } : undefined, undefined, coastMaxMs, iosHold(t, cache)),
|
|
114
178
|
extra: () => ({ relists, settled }),
|
|
115
|
-
|
|
116
|
-
const at = await frame();
|
|
117
|
-
if (!scoped) {
|
|
118
|
-
return Boolean(await t.driver.findShown(toSelector(anywhere)));
|
|
119
|
-
}
|
|
120
|
-
try {
|
|
121
|
-
if (await shownIn(t, at.el, target)) {
|
|
122
|
-
return true;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
catch (e) {
|
|
126
|
-
if (e?.wdError !== 'stale element reference') {
|
|
127
|
-
throw e;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
cache.at = { ...at, el: await t.waitVisible(list) };
|
|
131
|
-
relists++;
|
|
132
|
-
try {
|
|
133
|
-
return await shownIn(t, cache.at.el, target);
|
|
134
|
-
}
|
|
135
|
-
catch (e) {
|
|
136
|
-
if (e?.wdError !== 'stale element reference') {
|
|
137
|
-
throw e;
|
|
138
|
-
}
|
|
139
|
-
return false;
|
|
140
|
-
}
|
|
141
|
-
},
|
|
179
|
+
look,
|
|
142
180
|
async move() {
|
|
143
181
|
await frame();
|
|
144
|
-
// Before a to-top gesture the first row was not shown, so the list has room: the gesture is checked.
|
|
145
|
-
|
|
182
|
+
// Before a looked-for to-top gesture the first row was not shown, so the list has room: the gesture is checked. Of blind
|
|
183
|
+
// gestures only the first is: the list may reach its top before the last.
|
|
184
|
+
const checked = toward === 'top' && (sent === 0 || blind === 0);
|
|
185
|
+
sent++;
|
|
186
|
+
await scrollList(t, { list, row: row ?? target, scoped }, toward, toward === 'top' ? { cache, mustMove: checked, hold: iosHold(t, cache), coastMaxMs } : { cache });
|
|
146
187
|
},
|
|
147
188
|
missing: () => `${selectorLabel(target)} not on screen after ${scrollCap(t, toward, cap, iosTopExtra)} long scrolls to the ${toward} of ${selectorLabel(list)}`,
|
|
148
189
|
});
|
|
@@ -151,6 +192,97 @@ const selectorLabel = (sel) => {
|
|
|
151
192
|
const s = toSelector(sel);
|
|
152
193
|
return s.text ?? s.id ?? describeSelector(s);
|
|
153
194
|
};
|
|
195
|
+
/**
|
|
196
|
+
* A navigation pass: gets `list` toward its top or end until `until` finds the target, with the navigation stroke, between `nav`
|
|
197
|
+
* markers (`Session.navigation`; never inside a measured step). Before the pass and after each stroke it waits for the list to
|
|
198
|
+
* come to rest: its first and last row (`rowEdges`) read twice, 300 ms apart, are the same. The pass ends when the target is
|
|
199
|
+
* found by lookup with the list at rest; toward the end, a stroke that rests with no target waits `pageWaitMs` for one (a page
|
|
200
|
+
* lands only once the list rests at its loaded end) before the next. No frame test decides arrival. There is no stroke count: when
|
|
201
|
+
* two strokes in a row leave those rows as they were after the list had moved, the target was passed: the pass turns round once
|
|
202
|
+
* with `NAV_STROKE.precise` drags; when two strokes leave them as they were again (or the list never moved) it throws `NavigationStuck` (counted in `t.defects.navStuck`; the run
|
|
203
|
+
* is invalid), and `maxMs` bounds the pass in time. Logs `nav` with toward, strokes, arrived, status and ms, also on failure.
|
|
204
|
+
*/
|
|
205
|
+
export async function navigate(t, list, toward, { until, row, field, scoped = true, cache = {}, pageWaitMs = 0, coastMaxMs, frameTimeoutMs = CHECK_TIMEOUT_MS, maxMs = NAV_MAX_MS, label = selectorLabel(list), catchUp = false, turnRound = false }) {
|
|
206
|
+
await t.ready();
|
|
207
|
+
const start = t.now();
|
|
208
|
+
const rest = coastMaxMs ?? (t.driver.platform.name === 'ios' ? PAGE_COAST_MAX_MS_IOS : PAGE_COAST_MAX_MS);
|
|
209
|
+
const spec = { list, row, field, scoped };
|
|
210
|
+
let strokes = 0;
|
|
211
|
+
let arrived = false;
|
|
212
|
+
try {
|
|
213
|
+
await t.navigation(async () => {
|
|
214
|
+
if (!cache.at)
|
|
215
|
+
cache.at = await t.settledFrame(list, frameTimeoutMs);
|
|
216
|
+
// A stroke coasts several screens: one can carry a mid-list target past the view to the list's edge. Stalled at that edge
|
|
217
|
+
// with the target unseen, the pass turns round once with drags that move a list less than its own height (no coast).
|
|
218
|
+
let way = toward;
|
|
219
|
+
let turned = false;
|
|
220
|
+
let moved = false;
|
|
221
|
+
const atRest = async () => {
|
|
222
|
+
const deadline = t.now() + rest;
|
|
223
|
+
let reads = 1;
|
|
224
|
+
for (let last = await rowEdges(t, spec, cache);;) {
|
|
225
|
+
await t.driver.sleep(COAST_POLL_MS);
|
|
226
|
+
const now = await rowEdges(t, spec, cache);
|
|
227
|
+
reads++;
|
|
228
|
+
// An empty read (no row found: a list re-rendering as a page lands) is never a rest.
|
|
229
|
+
if (now === last && now !== '')
|
|
230
|
+
return now;
|
|
231
|
+
// The bound is for a list that keeps moving, so it needs at least two comparisons: one read can outlast it on a real
|
|
232
|
+
// device (A23 gate, iPhone in TapIn's live room: a row lookup took 6 s, the first read found no row, the second came at 16 s).
|
|
233
|
+
if (t.now() >= deadline && reads >= 3)
|
|
234
|
+
throw new Error(`${selectorLabel(list)} still moving ${rest} ms ${strokes === 0 ? 'before the first navigation stroke' : 'after a navigation stroke'} toward the ${way}`);
|
|
235
|
+
last = now;
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
const waitFor = async () => {
|
|
239
|
+
for (const from = t.now();;) {
|
|
240
|
+
if (await until())
|
|
241
|
+
return true;
|
|
242
|
+
if (t.now() - from >= pageWaitMs)
|
|
243
|
+
return false;
|
|
244
|
+
await t.driver.sleep(PAGE_POLL_MS);
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
let rows = await atRest();
|
|
248
|
+
let before = null;
|
|
249
|
+
let stalled = 0;
|
|
250
|
+
for (;;) {
|
|
251
|
+
if (strokes === 0 ? await until() : await waitFor()) {
|
|
252
|
+
arrived = true;
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
if (before !== null)
|
|
256
|
+
stalled = rows === before ? stalled + 1 : 0;
|
|
257
|
+
if (before !== null && rows !== before)
|
|
258
|
+
moved = true;
|
|
259
|
+
// A list no stroke ever moved is stuck as it is; one that moved and then stopped stands at an edge.
|
|
260
|
+
if (stalled >= NAV_STUCK_STROKES && turnRound && !turned && moved) {
|
|
261
|
+
turned = true;
|
|
262
|
+
way = toward === 'end' ? 'top' : 'end';
|
|
263
|
+
stalled = 0;
|
|
264
|
+
before = null;
|
|
265
|
+
}
|
|
266
|
+
if (stalled >= NAV_STUCK_STROKES) {
|
|
267
|
+
t.defects.navStuck++;
|
|
268
|
+
throw new NavigationStuck(`${selectorLabel(list)} did not move after ${NAV_STUCK_STROKES} navigation strokes toward the ${way} (${label} not found; rows ${JSON.stringify(rows.split('\n'))})`);
|
|
269
|
+
}
|
|
270
|
+
if (t.now() - start > maxMs)
|
|
271
|
+
throw new Error(`${label} not reached after ${maxMs} ms of navigation toward the ${way} of ${selectorLabel(list)}`);
|
|
272
|
+
before = rows;
|
|
273
|
+
await scrollList(t, spec, way, { cache, ...(turned ? { precise: true } : {}) });
|
|
274
|
+
strokes++;
|
|
275
|
+
rows = await atRest();
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
finally {
|
|
280
|
+
if (catchUp && strokes > 0)
|
|
281
|
+
t.defects.navCatchUp++;
|
|
282
|
+
t.driver.log.push({ ...t.driver.context, cmd: 'nav', t: t.now(), ms: t.now() - start, status: arrived ? 0 : 1, toward, list: selectorLabel(list), strokes, arrived });
|
|
283
|
+
}
|
|
284
|
+
return { strokes, arrived, ms: t.now() - start };
|
|
285
|
+
}
|
|
154
286
|
/** Keeps parent scoping only when requested. */
|
|
155
287
|
function shownOf(row, scoped) {
|
|
156
288
|
const { childOf: _list, ...anywhere } = toSelector(row);
|
|
@@ -215,26 +347,27 @@ async function rowEndsInside(t, list, listRect, row, scoped, listEl, field) {
|
|
|
215
347
|
return t.driver.platform.name === 'android' ? r.y + r.height < bottom : r.y + r.height <= bottom;
|
|
216
348
|
}
|
|
217
349
|
/**
|
|
218
|
-
* Performs scrolls (3) end gestures
|
|
219
|
-
* (
|
|
220
|
-
* for the page's first loaded row, polling every pagePollMs (300)
|
|
221
|
-
*
|
|
222
|
-
*
|
|
350
|
+
* Performs scrolls (3) end gestures, exactly that many and no other: a page that has not landed never gets a catch-up gesture
|
|
351
|
+
* here (a navigation pass outside the step fetches it). A gesture with no page marker pauses pauseMs (500). Otherwise it waits
|
|
352
|
+
* for coast (Android 6000 ms, iOS 10000), then waitMs (3000) for the page's first loaded row, polling every pagePollMs (300),
|
|
353
|
+
* counted from the coast. A page that has not landed by then fails the pass, or with `deferPages` is logged as not landed.
|
|
354
|
+
* scoped defaults true; field narrows Android lookups. `beforePages` is no longer read.
|
|
223
355
|
* The pass is taken to start at the top, so its first gesture is checked (scrollList `mustMove`): one that moved nothing is
|
|
224
356
|
* sent once more and counted in `t.defects`; `unmoved` is 1 then, and 2 when the retry moved nothing either (GestureNotTaken).
|
|
225
|
-
* Logs fling-to-end: flings, supplied pageNumbers (or descriptions), coastMs, waitMs, per
|
|
226
|
-
* status and duration. Page checks do not require visibility. All limits and frameTimeoutMs (20000) are configurable.
|
|
357
|
+
* Logs fling-to-end: flings, supplied pageNumbers (or descriptions), coastMs, waitMs, landed (per page), unmoved, pauseMs,
|
|
358
|
+
* settled, status and duration. Page checks do not require visibility. All limits and frameTimeoutMs (20000) are configurable.
|
|
227
359
|
*/
|
|
228
|
-
export async function scrollToEnd(t, list, cache, { pages, pageNumbers,
|
|
360
|
+
export async function scrollToEnd(t, list, cache, { pages, pageNumbers, scoped = true, field, any, scrolls = END_SCROLLS, pauseMs = PAGE_PAUSE_MS, pageWaitMs = PAGE_WAIT_MS, pagePollMs = PAGE_POLL_MS, coastMaxMs = PAGE_COAST_MAX_MS, coastMaxMsIos = PAGE_COAST_MAX_MS_IOS, frameTimeoutMs = CHECK_TIMEOUT_MS, deferPages = false }) {
|
|
229
361
|
await t.ready();
|
|
230
362
|
const start = t.now();
|
|
231
363
|
let status = 1;
|
|
232
364
|
let settled = false;
|
|
233
365
|
const coastMs = [];
|
|
234
366
|
const waitMs = [];
|
|
235
|
-
const
|
|
367
|
+
const landed = [];
|
|
236
368
|
let unmoved = 0;
|
|
237
369
|
const spec = { list, row: any, field, scoped };
|
|
370
|
+
const coastBound = t.driver.platform.name === 'ios' ? coastMaxMsIos : coastMaxMs;
|
|
238
371
|
try {
|
|
239
372
|
if (!cache.at) {
|
|
240
373
|
cache.at = await t.settledFrame(list, frameTimeoutMs);
|
|
@@ -244,7 +377,7 @@ export async function scrollToEnd(t, list, cache, { pages, pageNumbers, beforePa
|
|
|
244
377
|
// A pass starts at the top, so its first fling has room and is checked.
|
|
245
378
|
let sent;
|
|
246
379
|
try {
|
|
247
|
-
sent = await scrollList(t, spec, 'end', { cache, hold: iosHold(t, cache), mustMove: i === 0, coastMaxMs:
|
|
380
|
+
sent = await scrollList(t, spec, 'end', { cache, hold: iosHold(t, cache), mustMove: i === 0, coastMaxMs: coastBound });
|
|
248
381
|
}
|
|
249
382
|
catch (e) {
|
|
250
383
|
if (e instanceof GestureNotTaken)
|
|
@@ -259,66 +392,36 @@ export async function scrollToEnd(t, list, cache, { pages, pageNumbers, beforePa
|
|
|
259
392
|
continue;
|
|
260
393
|
}
|
|
261
394
|
const coastFrom = t.now();
|
|
262
|
-
const stopped = await waitCoasted(t, any, scoped ? { sel: list, el: cache.at.el } : undefined, field,
|
|
395
|
+
const stopped = await waitCoasted(t, any, scoped ? { sel: list, el: cache.at.el } : undefined, field, coastBound, iosHold(t, cache));
|
|
263
396
|
coastMs.push(t.now() - coastFrom);
|
|
264
397
|
if (!stopped)
|
|
265
|
-
throw new Error(`${selectorLabel(list)} still moving ${
|
|
266
|
-
|
|
267
|
-
const before = beforePages[i];
|
|
268
|
-
let reached = true;
|
|
269
|
-
if (before && t.driver.platform.name === 'android') {
|
|
270
|
-
let found = await rowLoaded(t, list, before, scoped, cache.at.el, field);
|
|
271
|
-
if (found === 'stale' || (found !== true && scoped)) {
|
|
272
|
-
cache.at = { ...cache.at, el: await t.waitVisible(list) };
|
|
273
|
-
found = await rowLoaded(t, list, before, scoped, cache.at.el, field);
|
|
274
|
-
}
|
|
275
|
-
reached = found === true;
|
|
276
|
-
}
|
|
277
|
-
else if (before) {
|
|
278
|
-
reached = await t.isVisible(shownOf(before, scoped));
|
|
279
|
-
}
|
|
280
|
-
const again = async () => {
|
|
281
|
-
extra[i] = 1;
|
|
282
|
-
await scrollList(t, spec, 'end', { cache });
|
|
283
|
-
if (!(await waitCoasted(t, any, scoped ? { sel: list, el: cache.at.el } : undefined, field, (t.driver.platform.name === 'ios' ? coastMaxMsIos : coastMaxMs), iosHold(t, cache)))) {
|
|
284
|
-
throw new Error(`${selectorLabel(list)} still moving ${(t.driver.platform.name === 'ios' ? coastMaxMsIos : coastMaxMs)} ms after a long scroll to the end`);
|
|
285
|
-
}
|
|
286
|
-
};
|
|
287
|
-
if (!reached)
|
|
288
|
-
await again();
|
|
289
|
-
let from = t.now();
|
|
398
|
+
throw new Error(`${selectorLabel(list)} still moving ${coastBound} ms after a long scroll to the end`);
|
|
399
|
+
const from = t.now();
|
|
290
400
|
let listEl = cache.at.el;
|
|
291
401
|
let refound = !scoped;
|
|
402
|
+
let found = false;
|
|
292
403
|
for (;;) {
|
|
293
|
-
|
|
294
|
-
if (found === true)
|
|
295
|
-
break;
|
|
296
|
-
if (found === 'stale' || !refound) {
|
|
404
|
+
found = await rowLoaded(t, list, page, scoped, listEl, field);
|
|
405
|
+
if (found === 'stale' || (found !== true && !refound)) {
|
|
297
406
|
refound = true;
|
|
298
407
|
listEl = await t.waitVisible(list);
|
|
299
408
|
cache.at = { ...cache.at, el: listEl };
|
|
300
|
-
|
|
301
|
-
break;
|
|
302
|
-
}
|
|
303
|
-
if (t.now() - from >= pageWaitMs) {
|
|
304
|
-
// The app loads a page only once the list rests at its loaded end; a cut last row means it rests short of it.
|
|
305
|
-
if (before && !extra[i] && !(await rowEndsInside(t, list, cache.at.rect, before, scoped, listEl, field))) {
|
|
306
|
-
await again();
|
|
307
|
-
from = t.now();
|
|
308
|
-
continue;
|
|
309
|
-
}
|
|
310
|
-
waitMs.push(t.now() - from);
|
|
311
|
-
throw new Error(`${selectorLabel(page)} not loaded ${pageWaitMs} ms after a long scroll to the end of ${selectorLabel(list)}`);
|
|
409
|
+
found = await rowLoaded(t, list, page, scoped, listEl, field);
|
|
312
410
|
}
|
|
411
|
+
if (found === true || t.now() - from >= pageWaitMs)
|
|
412
|
+
break;
|
|
313
413
|
await t.driver.sleep(pagePollMs);
|
|
314
414
|
}
|
|
315
415
|
waitMs.push(t.now() - from);
|
|
416
|
+
landed.push(found === true);
|
|
417
|
+
if (found !== true && !deferPages)
|
|
418
|
+
throw new Error(`${selectorLabel(page)} not loaded ${pageWaitMs} ms after a long scroll to the end of ${selectorLabel(list)}`);
|
|
316
419
|
}
|
|
317
420
|
status = 0;
|
|
318
421
|
}
|
|
319
422
|
finally {
|
|
320
423
|
const numbers = pageNumbers ?? pages.map(p => describeSelector(toSelector(p)));
|
|
321
|
-
t.driver.log.push({ ...t.driver.context, cmd: 'fling-to-end', t: t.now(), ms: t.now() - start, status, flings: scrolls, pages: numbers, coastMs, waitMs,
|
|
424
|
+
t.driver.log.push({ ...t.driver.context, cmd: 'fling-to-end', t: t.now(), ms: t.now() - start, status, flings: scrolls, pages: numbers, coastMs, waitMs, landed, unmoved, pauseMs, settled });
|
|
322
425
|
}
|
|
323
426
|
}
|
|
324
427
|
/**
|
|
@@ -344,30 +447,51 @@ export function endChecked(t, list, lastPage, scoped, field, { checkTimeoutMs =
|
|
|
344
447
|
};
|
|
345
448
|
}
|
|
346
449
|
/**
|
|
347
|
-
* Runs cycles (3) end/top measured step pairs with names from stepName(toward, oneBasedCycle).
|
|
348
|
-
*
|
|
349
|
-
*
|
|
450
|
+
* Runs cycles (3) end/top measured step pairs with names from stepName(toward, oneBasedCycle). Each step sends exactly its
|
|
451
|
+
* planned controlled gestures, the same in every run: the end step `scrolls` (3) end gestures, the top step 2, the top one looking
|
|
452
|
+
* before the second (a gesture at the top drags a sheet) and stopping quietly short of the top. Nothing is checked inside a step.
|
|
453
|
+
* After each step's end marker a navigation pass (`navigate`, marked `nav`, evidence only) finishes the way: to the loaded end
|
|
454
|
+
* until a lastPage row is loaded (strokes needed there are counted as the harness defect `navCatchUp`), to the top until `first`
|
|
455
|
+
* shows; the pass ends on lookups and rows at rest, never on frames. Then the end check (lastPage loaded, checkTimeoutMs for the
|
|
456
|
+
* end check) and the top check (first shown). Only cycle one waits for page markers. Shares the frame/row cache across steps and
|
|
457
|
+
* passes. frameTimeoutMs feeds the end frame wait. `fling` configures the top step: its `cap` and `iosTopExtra` no longer widen
|
|
458
|
+
* it. Logs step markers, nav passes and nested helper summaries.
|
|
350
459
|
*/
|
|
351
460
|
export async function scrollCycles(t, { list, first, lastPage, cycles = SCROLL_CYCLES, stepName, fling = {}, ...options }) {
|
|
352
461
|
const cache = {};
|
|
353
462
|
const scoped = options.scoped ?? true;
|
|
463
|
+
const topPlanned = fling.planned ?? TOP_STEP.gestures;
|
|
464
|
+
const lastLoaded = async () => {
|
|
465
|
+
const loaded = await rowLoaded(t, list, lastPage, scoped, undefined, options.field);
|
|
466
|
+
return (loaded === 'stale' ? await rowLoaded(t, list, lastPage, scoped, undefined, options.field) : loaded) === true;
|
|
467
|
+
};
|
|
468
|
+
const firstShown = () => t.isVisible(shownOf(first, scoped));
|
|
354
469
|
for (let i = 1; i <= cycles; i++) {
|
|
355
470
|
await t.waitVisible(list);
|
|
356
|
-
await t.step(stepName('end', i), () => scrollToEnd(t, list, cache, { ...options, pages: i === 1 ? options.pages : [], pageNumbers: i === 1 ? options.pageNumbers : undefined
|
|
357
|
-
await
|
|
471
|
+
await t.step(stepName('end', i), () => scrollToEnd(t, list, cache, { ...options, pages: i === 1 ? options.pages : [], pageNumbers: i === 1 ? options.pageNumbers : undefined, deferPages: true }));
|
|
472
|
+
await navigate(t, list, 'end', { until: lastLoaded, row: options.any, field: options.field, scoped, cache, pageWaitMs: options.pageWaitMs ?? PAGE_WAIT_MS, label: selectorLabel(lastPage), catchUp: true });
|
|
473
|
+
await endChecked(t, list, lastPage, scoped, options.field, options)();
|
|
474
|
+
await t.step(stepName('top', i), () => flingUntilShown(t, list, first, 'top', { ...fling, scoped, cache, row: options.any, cap: topPlanned, planned: topPlanned, iosTopExtra: 0, blind: topPlanned, used: 0, soft: true }));
|
|
475
|
+
await navigate(t, list, 'top', { until: firstShown, row: options.any, field: options.field, scoped, cache, coastMaxMs: fling.coastMaxMs, label: selectorLabel(first) });
|
|
476
|
+
await t.waitAll([{ shown: shownOf(first, scoped) }], fling.checkTimeoutMs ?? CHECK_TIMEOUT_MS);
|
|
358
477
|
}
|
|
359
478
|
}
|
|
360
479
|
/**
|
|
361
480
|
* Waits settleMs (10000) for target, then taps an optional indicator and/or runs move until visible, at most cap (3)
|
|
362
|
-
* times, coasting on row after each action.
|
|
363
|
-
*
|
|
481
|
+
* times, coasting on row after each action. Outside a measured step this is a navigation pass: marked `nav`, and the list
|
|
482
|
+
* gestures `move` sends are the navigation stroke (the pass has no list to read rows on, so `cap` still ends it). Logs cmd
|
|
483
|
+
* (scroll-to-target) with tapped, swipes, extra above planned (2), status and duration. An initially visible target returns without a summary. missing customizes the failure message.
|
|
364
484
|
*/
|
|
365
|
-
export async function scrollToTarget(t,
|
|
485
|
+
export async function scrollToTarget(t, options) {
|
|
486
|
+
const { target, settleMs = TARGET_SETTLE_MS } = options;
|
|
366
487
|
try {
|
|
367
488
|
await t.waitVisible(target, settleMs);
|
|
368
489
|
return;
|
|
369
490
|
}
|
|
370
491
|
catch { }
|
|
492
|
+
await t.navigationUnlessStep(() => bringToTarget(t, options));
|
|
493
|
+
}
|
|
494
|
+
async function bringToTarget(t, { target, indicator, row, move, cap = LONG_SCROLL_CAP, planned = LONG_SCROLL_PLANNED, cmd = 'scroll-to-target', missing = n => `${selectorLabel(target)} not on screen after ${n} long scrolls` }) {
|
|
371
495
|
const start = t.now();
|
|
372
496
|
let swipes = 0;
|
|
373
497
|
let tapped = false;
|
package/dist/src/lists.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lists.js","sourceRoot":"","sources":["../../src/lists.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lists.js","sourceRoot":"","sources":["../../src/lists.ts"],"names":[],"mappings":"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"}
|
package/dist/src/run.js
CHANGED
|
@@ -4,7 +4,7 @@ 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 { FLUSH_END_RUN_FAILED, FLUSH_ERROR, FLUSH_NOT_ACKNOWLEDGED, FLUSH_OFF, FLUSH_UNREADABLE, Session, flushLoss } from './session.js';
|
|
7
|
+
import { FLUSH_END_RUN_FAILED, FLUSH_ERROR, FLUSH_NOT_ACKNOWLEDGED, FLUSH_OFF, FLUSH_UNREADABLE, NAV_STEP, Session, flushLoss } from './session.js';
|
|
8
8
|
import { parseTokensJs, plan } from './tokens.js';
|
|
9
9
|
import { Driver, realSleep } from './webdriver.js';
|
|
10
10
|
export const TERMINATION_BUDGET = { captureMs: 20_000, endMs: 10_000, hardMs: 45_000 };
|
|
@@ -315,7 +315,7 @@ async function runIterations(t, module, ctx, iterations, progress) {
|
|
|
315
315
|
await t.ready();
|
|
316
316
|
const t2 = t.now();
|
|
317
317
|
t.marker('run:complete', 'end');
|
|
318
|
-
rec.steps = t.markers.filter((m) => m.phase === 'start').length;
|
|
318
|
+
rec.steps = t.markers.filter((m) => m.phase === 'start' && m.step !== NAV_STEP).length;
|
|
319
319
|
const waits = t.readyWaits.slice(waitsBefore);
|
|
320
320
|
rec.ready = { n: waits.length, ms: waits.reduce((x, y) => x + y, 0) };
|
|
321
321
|
driver.context = { ...driver.context, phase: 'end' };
|