@lingxia/test 0.17.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/clock.d.ts +30 -0
- package/dist/clock.d.ts.map +1 -0
- package/dist/clock.js +99 -0
- package/dist/clock.js.map +1 -0
- package/dist/coverage.d.ts +25 -0
- package/dist/coverage.d.ts.map +1 -0
- package/dist/coverage.js +92 -0
- package/dist/coverage.js.map +1 -0
- package/dist/deadline.d.ts +82 -0
- package/dist/deadline.d.ts.map +1 -0
- package/dist/deadline.js +184 -0
- package/dist/deadline.js.map +1 -0
- package/dist/dialogs.d.ts +28 -0
- package/dist/dialogs.d.ts.map +1 -0
- package/dist/dialogs.js +74 -0
- package/dist/dialogs.js.map +1 -0
- package/dist/equal.d.ts +28 -0
- package/dist/equal.d.ts.map +1 -0
- package/dist/equal.js +149 -0
- package/dist/equal.js.map +1 -0
- package/dist/errors.d.ts +8 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +37 -0
- package/dist/errors.js.map +1 -0
- package/dist/expect.d.ts +35 -7
- package/dist/expect.d.ts.map +1 -1
- package/dist/expect.js +216 -68
- package/dist/expect.js.map +1 -1
- package/dist/fixture.d.ts +205 -40
- package/dist/fixture.d.ts.map +1 -1
- package/dist/fixture.js +1178 -156
- package/dist/fixture.js.map +1 -1
- package/dist/format.d.ts +2 -0
- package/dist/format.d.ts.map +1 -1
- package/dist/format.js +78 -0
- package/dist/format.js.map +1 -1
- package/dist/host-types.d.ts +65 -0
- package/dist/host-types.d.ts.map +1 -0
- package/dist/host-types.js +2 -0
- package/dist/host-types.js.map +1 -0
- package/dist/host.d.ts +20 -0
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +34 -2
- package/dist/host.js.map +1 -1
- package/dist/ids.d.ts +16 -0
- package/dist/ids.d.ts.map +1 -1
- package/dist/ids.js +38 -3
- package/dist/ids.js.map +1 -1
- package/dist/index.d.ts +5 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -5
- package/dist/index.js.map +1 -1
- package/dist/json-result.d.ts +3 -0
- package/dist/json-result.d.ts.map +1 -0
- package/dist/json-result.js +62 -0
- package/dist/json-result.js.map +1 -0
- package/dist/junit.d.ts +1 -1
- package/dist/junit.d.ts.map +1 -1
- package/dist/junit.js +40 -5
- package/dist/junit.js.map +1 -1
- package/dist/locator.d.ts +116 -7
- package/dist/locator.d.ts.map +1 -1
- package/dist/locator.js +444 -58
- package/dist/locator.js.map +1 -1
- package/dist/mock.d.ts +43 -0
- package/dist/mock.d.ts.map +1 -0
- package/dist/mock.js +162 -0
- package/dist/mock.js.map +1 -0
- package/dist/network.d.ts +68 -0
- package/dist/network.d.ts.map +1 -0
- package/dist/network.js +287 -0
- package/dist/network.js.map +1 -0
- package/dist/openapi.d.ts +127 -0
- package/dist/openapi.d.ts.map +1 -0
- package/dist/openapi.js +414 -0
- package/dist/openapi.js.map +1 -0
- package/dist/pending.d.ts +84 -0
- package/dist/pending.d.ts.map +1 -0
- package/dist/pending.js +311 -0
- package/dist/pending.js.map +1 -0
- package/dist/redact.d.ts +41 -0
- package/dist/redact.d.ts.map +1 -0
- package/dist/redact.js +168 -0
- package/dist/redact.js.map +1 -0
- package/dist/remote.d.ts +32 -0
- package/dist/remote.d.ts.map +1 -0
- package/dist/remote.js +117 -0
- package/dist/remote.js.map +1 -0
- package/dist/report-extras.d.ts +16 -0
- package/dist/report-extras.d.ts.map +1 -0
- package/dist/report-extras.js +125 -0
- package/dist/report-extras.js.map +1 -0
- package/dist/report-types.d.ts +428 -0
- package/dist/report-types.d.ts.map +1 -0
- package/dist/report-types.js +6 -0
- package/dist/report-types.js.map +1 -0
- package/dist/report.d.ts +15 -1
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +196 -19
- package/dist/report.js.map +1 -1
- package/dist/runner.d.ts +13 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +11 -0
- package/dist/runner.js.map +1 -0
- package/dist/runtime.d.ts +55 -4
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +1500 -139
- package/dist/runtime.js.map +1 -1
- package/dist/schema.d.ts +29 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +463 -0
- package/dist/schema.js.map +1 -0
- package/dist/spec-api.d.ts +10 -2
- package/dist/spec-api.d.ts.map +1 -1
- package/dist/tags.d.ts +26 -0
- package/dist/tags.d.ts.map +1 -0
- package/dist/tags.js +78 -0
- package/dist/tags.js.map +1 -0
- package/dist/types.d.ts +863 -168
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +18 -5
- package/schemas/lxdev.schema.json +50 -0
- package/schemas/mock-config.schema.json +21 -0
- package/schemas/scenario.schema.json +180 -0
package/dist/locator.js
CHANGED
|
@@ -1,85 +1,250 @@
|
|
|
1
|
-
|
|
1
|
+
var _a;
|
|
2
2
|
import { cssEscape, formatValue } from "./format.js";
|
|
3
|
+
import { ActionDeadline, TimeoutError, errorCode, isElementRefusal, isPreDispatchPageError, isTransientPageError, isTransientTransportError, } from "./deadline.js";
|
|
4
|
+
import { resolveHost } from "./host.js";
|
|
3
5
|
import { displayLocation } from "./ids.js";
|
|
4
6
|
import { DEFAULT_ACTION_TIMEOUT_MS, DEFAULT_POLL_INTERVAL_MS, } from "./version.js";
|
|
7
|
+
import { runnerSetTimeout } from "./pending.js";
|
|
8
|
+
/** Marks a locator across module copies, so `expect(locator)` retries it. */
|
|
9
|
+
export const LOCATOR_BRAND = Symbol.for("lingxia.test.locator");
|
|
5
10
|
export function testIdSelector(id) {
|
|
6
11
|
return `[data-testid="${cssEscape(id)}"]`;
|
|
7
12
|
}
|
|
8
13
|
export class PageLocator {
|
|
9
|
-
constructor(page, guard, record, selector, location) {
|
|
14
|
+
constructor(page, guard, record, selector, location, options = {}, room = () => Number.POSITIVE_INFINITY, refine = {}) {
|
|
10
15
|
this.page = page;
|
|
11
16
|
this.guard = guard;
|
|
12
17
|
this.record = record;
|
|
13
18
|
this.location = location;
|
|
19
|
+
this.options = options;
|
|
20
|
+
this.room = room;
|
|
21
|
+
this.refine = refine;
|
|
22
|
+
this[_a] = true;
|
|
14
23
|
this.selector = selector;
|
|
24
|
+
this.options = { ...options };
|
|
25
|
+
this.refine = { ...refine };
|
|
26
|
+
if (!selector.trim())
|
|
27
|
+
throw new TypeError("Locator selector must not be empty");
|
|
28
|
+
if (options.index !== undefined && (!Number.isInteger(options.index) || options.index < 0)) {
|
|
29
|
+
throw new TypeError("Locator index must be a non-negative integer");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
nth(index) {
|
|
33
|
+
return new PageLocator(this.page, this.guard, this.record, this.selector, this.location, { ...this.options, index }, this.room, { ...this.refine, last: false });
|
|
34
|
+
}
|
|
35
|
+
first() {
|
|
36
|
+
return this.nth(0);
|
|
37
|
+
}
|
|
38
|
+
last() {
|
|
39
|
+
const { index: _index, ...options } = this.options;
|
|
40
|
+
return new PageLocator(this.page, this.guard, this.record, this.selector, this.location, options, this.room, { ...this.refine, last: true });
|
|
41
|
+
}
|
|
42
|
+
filter(options) {
|
|
43
|
+
const hasText = options?.hasText;
|
|
44
|
+
if (typeof hasText !== "string" && !(hasText instanceof RegExp)) {
|
|
45
|
+
throw new TypeError("filter() needs { hasText: string | RegExp }");
|
|
46
|
+
}
|
|
47
|
+
return new PageLocator(this.page, this.guard, this.record, this.selector, this.location, this.options, this.room, { ...this.refine, hasText });
|
|
48
|
+
}
|
|
49
|
+
// Actions return the fixture's own call, not a wrapper around it: a call
|
|
50
|
+
// the spec never awaited is then the very promise the runtime stops.
|
|
51
|
+
press(key, options) {
|
|
52
|
+
if (!this.page.press)
|
|
53
|
+
return Promise.reject(new Error("This page driver does not support press"));
|
|
54
|
+
return this.act("press", options, (css, index) => this.page.press({ page: this.options.page, css, index, key }), `key=${formatValue(key)}`);
|
|
55
|
+
}
|
|
56
|
+
click(options) {
|
|
57
|
+
const force = options?.force === true;
|
|
58
|
+
return this.act("click", options, (css, index) => this.page.click({ page: this.options.page, css, index, ...(force ? { force } : {}) }));
|
|
59
|
+
}
|
|
60
|
+
fill(text, options) {
|
|
61
|
+
const force = options?.force === true;
|
|
62
|
+
return this.act("fill", options, (css, index) => this.page.fill({ page: this.options.page, css, text, index, ...(force ? { force } : {}) }), this.inputDetail(text));
|
|
63
|
+
}
|
|
64
|
+
type(text, options) {
|
|
65
|
+
return this.act("type", options, (css, index) => this.page.type({ page: this.options.page, css, text, index }), this.inputDetail(text));
|
|
66
|
+
}
|
|
67
|
+
waitFor(options) {
|
|
68
|
+
const state = options?.state ?? "visible";
|
|
69
|
+
if (!["attached", "detached", "visible", "hidden", "inViewport"].includes(state)) {
|
|
70
|
+
return Promise.reject(new TypeError(`Unknown locator state: ${String(state)}`));
|
|
71
|
+
}
|
|
72
|
+
const timeout = options?.timeout ?? DEFAULT_ACTION_TIMEOUT_MS;
|
|
73
|
+
const interval = options?.interval ?? DEFAULT_POLL_INTERVAL_MS;
|
|
74
|
+
if (!Number.isFinite(timeout) || timeout <= 0 || !Number.isFinite(interval) || interval <= 0) {
|
|
75
|
+
return Promise.reject(new TypeError("Wait timeout and interval must be positive finite numbers"));
|
|
76
|
+
}
|
|
77
|
+
const deadline = new ActionDeadline(timeout, this.room());
|
|
78
|
+
return this.record("page.waitFor", `${this.target()} ${state}`, async () => {
|
|
79
|
+
let reason = "not observed";
|
|
80
|
+
let cause;
|
|
81
|
+
while (!deadline.expired()) {
|
|
82
|
+
try {
|
|
83
|
+
const resolved = await this.resolve(deadline, "waitFor");
|
|
84
|
+
if (reachedState(resolved, state))
|
|
85
|
+
return;
|
|
86
|
+
reason = this.missText(resolved);
|
|
87
|
+
cause = undefined;
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
// A page mid-transition, or a read the transport dropped, is not an
|
|
91
|
+
// answer yet; anything else is.
|
|
92
|
+
if (!isTransientPageError(error) && !isTransientTransportError(error))
|
|
93
|
+
throw error;
|
|
94
|
+
reason = transientReason(error);
|
|
95
|
+
cause = error;
|
|
96
|
+
}
|
|
97
|
+
if (deadline.expired())
|
|
98
|
+
break;
|
|
99
|
+
await sleep(Math.min(interval, Math.max(1, deadline.remaining())));
|
|
100
|
+
}
|
|
101
|
+
throw withCause(new TimeoutError([
|
|
102
|
+
`Timed out after ${deadline.elapsed()}ms waiting for ${formatValue(this.selector)} to be ${state}.`,
|
|
103
|
+
reason,
|
|
104
|
+
deadline.clampNote(),
|
|
105
|
+
`at ${this.where()}`,
|
|
106
|
+
].filter(Boolean).join("\n")), cause);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
count() {
|
|
110
|
+
return this.read("count", async () => (await this.resolve(undefined, "count")).count);
|
|
111
|
+
}
|
|
112
|
+
isVisible() {
|
|
113
|
+
return this.read("isVisible", async () => {
|
|
114
|
+
const resolved = await this.resolve(undefined, "isVisible");
|
|
115
|
+
if (resolved.kind === "many")
|
|
116
|
+
throw new Error(`isVisible(): ${this.missText(resolved)}; narrow it with nth(), first(), last() or filter()`);
|
|
117
|
+
return resolved.kind === "unique";
|
|
118
|
+
});
|
|
15
119
|
}
|
|
16
|
-
|
|
17
|
-
|
|
120
|
+
textContent() {
|
|
121
|
+
return this.read("textContent", async () => (await this.single("textContent")).text);
|
|
18
122
|
}
|
|
19
|
-
|
|
20
|
-
|
|
123
|
+
inputValue() {
|
|
124
|
+
return this.read("inputValue", async () => {
|
|
125
|
+
const resolved = await this.single("inputValue");
|
|
126
|
+
if (resolved.value === null)
|
|
127
|
+
throw new Error(`inputValue(): ${this.target()} has no value (not an input, textarea or select)`);
|
|
128
|
+
return resolved.value;
|
|
129
|
+
});
|
|
21
130
|
}
|
|
22
|
-
|
|
23
|
-
|
|
131
|
+
getAttribute(name) {
|
|
132
|
+
if (typeof name !== "string" || name.length === 0) {
|
|
133
|
+
return Promise.reject(new TypeError("getAttribute(name) takes an attribute name"));
|
|
134
|
+
}
|
|
135
|
+
return this.read("getAttribute", async () => (await this.single("getAttribute", [name])).attributes?.[name] ?? null);
|
|
136
|
+
}
|
|
137
|
+
/** A traced one-shot read. */
|
|
138
|
+
read(verb, op) {
|
|
139
|
+
return this.record(`page.${verb}`, this.target(), op);
|
|
24
140
|
}
|
|
25
|
-
async
|
|
26
|
-
|
|
141
|
+
async single(verb, attributes = []) {
|
|
142
|
+
const resolved = await this.resolve(undefined, verb, attributes);
|
|
143
|
+
if (resolved.count !== 1) {
|
|
144
|
+
throw new Error(`${verb}(): ${this.missText(resolved)}` +
|
|
145
|
+
(resolved.kind === "many" ? "; narrow it with nth(), first(), last() or filter()" : ""));
|
|
146
|
+
}
|
|
147
|
+
return resolved;
|
|
27
148
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
149
|
+
/**
|
|
150
|
+
* One read of the locator's matches. With a deadline the query is raced
|
|
151
|
+
* against what is left of it, so a query that never returns fails `verb`.
|
|
152
|
+
*/
|
|
153
|
+
async resolve(deadline, verb = "resolve", attributes = []) {
|
|
154
|
+
const query = () => this.page.query({ page: this.options.page, css: this.selector, all: true });
|
|
155
|
+
const all = await this.guard(() => deadline ? deadline.call("page.query", query, () => this.callContext(verb)) : query());
|
|
156
|
+
const raw = Array.isArray(all.items) ? all.items : all.exists ? [all] : [];
|
|
157
|
+
// Every match keeps its DOM index: the driver addresses `css` + index.
|
|
158
|
+
// Text is read as the user sees it: `innerText` line breaks depend on
|
|
159
|
+
// layout (WebKit ends a flex row's text in "\n"), so whitespace is
|
|
160
|
+
// collapsed and trimmed before any matcher sees it.
|
|
161
|
+
const indexed = raw.map((item, position) => ({
|
|
162
|
+
...item,
|
|
163
|
+
index: item.index ?? position,
|
|
164
|
+
...(typeof item.text === "string" ? { text: normalizeText(item.text) } : {}),
|
|
165
|
+
}));
|
|
166
|
+
const hasText = this.refine.hasText;
|
|
167
|
+
const matches = hasText === undefined ? indexed : indexed.filter((item) => textMatches(item.text ?? "", hasText));
|
|
168
|
+
const pick = this.refine.last ? matches.length - 1 : this.options.index;
|
|
169
|
+
const picked = pick === undefined ? undefined : matches[pick];
|
|
170
|
+
const items = pick === undefined ? matches : picked ? [picked] : [];
|
|
171
|
+
const count = pick !== undefined ? items.length : hasText === undefined ? (all.count ?? items.length) : items.length;
|
|
32
172
|
const visibleItems = items.filter((item) => item.visible);
|
|
33
173
|
const visibleCount = visibleItems.length;
|
|
174
|
+
let resolved;
|
|
34
175
|
if (count === 0) {
|
|
35
|
-
|
|
176
|
+
resolved = {
|
|
36
177
|
count: 0,
|
|
37
178
|
visibleCount: 0,
|
|
38
179
|
attached: false,
|
|
39
180
|
visible: false,
|
|
181
|
+
inViewport: false,
|
|
40
182
|
text: "",
|
|
41
183
|
value: null,
|
|
42
184
|
index: 0,
|
|
43
185
|
kind: "nothing",
|
|
44
186
|
};
|
|
45
187
|
}
|
|
46
|
-
if (
|
|
47
|
-
|
|
188
|
+
else if (count > 1) {
|
|
189
|
+
resolved = { count, visibleCount, attached: true, visible: visibleCount > 0, inViewport: false,
|
|
190
|
+
text: items.map(item => item.text ?? "").join("\n"), value: null, index: 0, kind: "many" };
|
|
191
|
+
}
|
|
192
|
+
else if (visibleCount === 0) {
|
|
193
|
+
resolved = {
|
|
48
194
|
count,
|
|
49
195
|
visibleCount: 0,
|
|
50
196
|
attached: true,
|
|
51
197
|
visible: false,
|
|
198
|
+
inViewport: false,
|
|
52
199
|
text: items[0]?.text ?? "",
|
|
53
200
|
value: items[0]?.value ?? null,
|
|
54
201
|
index: items[0]?.index ?? 0,
|
|
202
|
+
enabled: items[0]?.enabled, editable: items[0]?.editable,
|
|
55
203
|
kind: "hidden",
|
|
56
204
|
};
|
|
57
205
|
}
|
|
58
|
-
|
|
59
|
-
|
|
206
|
+
else {
|
|
207
|
+
const unique = visibleItems[0];
|
|
208
|
+
resolved = {
|
|
60
209
|
count,
|
|
61
|
-
visibleCount,
|
|
210
|
+
visibleCount: 1,
|
|
62
211
|
attached: true,
|
|
63
212
|
visible: true,
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
213
|
+
inViewport: unique.inViewport === true,
|
|
214
|
+
text: unique.text ?? "",
|
|
215
|
+
value: unique.value ?? null,
|
|
216
|
+
index: unique.index ?? items.indexOf(unique),
|
|
217
|
+
enabled: unique.enabled, editable: unique.editable, rect: unique.rect,
|
|
218
|
+
kind: "unique",
|
|
68
219
|
};
|
|
69
220
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
221
|
+
if (attributes.length > 0 && count === 1) {
|
|
222
|
+
resolved.attributes = await this.readAttributes(resolved.index, attributes, deadline, verb);
|
|
223
|
+
}
|
|
224
|
+
return resolved;
|
|
225
|
+
}
|
|
226
|
+
/** A read-only look at the single match's attributes. */
|
|
227
|
+
async readAttributes(index, names, deadline, verb) {
|
|
228
|
+
if (!this.page.eval)
|
|
229
|
+
throw new Error("This page driver cannot read attributes");
|
|
230
|
+
const script = `(() => {
|
|
231
|
+
const el = document.querySelectorAll(${JSON.stringify(this.selector)})[${index}];
|
|
232
|
+
const out = {};
|
|
233
|
+
for (const name of ${JSON.stringify(names)}) out[name] = el ? el.getAttribute(name) : null;
|
|
234
|
+
return out;
|
|
235
|
+
})()`;
|
|
236
|
+
const read = () => this.page.eval({ page: this.options.page, script });
|
|
237
|
+
const value = await this.guard(() => deadline ? deadline.call("page.eval (attributes)", read, () => this.callContext(verb)) : read());
|
|
238
|
+
const out = {};
|
|
239
|
+
const record = value && typeof value === "object" ? value : {};
|
|
240
|
+
for (const name of names)
|
|
241
|
+
out[name] = typeof record[name] === "string" ? record[name] : null;
|
|
242
|
+
return out;
|
|
81
243
|
}
|
|
82
244
|
missText(resolved) {
|
|
245
|
+
if (resolved.kind === "unique" && !resolved.inViewport) {
|
|
246
|
+
return `locator ${formatValue(this.selector)} resolved to a visible element outside the viewport`;
|
|
247
|
+
}
|
|
83
248
|
if (resolved.kind === "nothing") {
|
|
84
249
|
return `locator ${formatValue(this.selector)} resolved to nothing`;
|
|
85
250
|
}
|
|
@@ -87,38 +252,259 @@ export class PageLocator {
|
|
|
87
252
|
return `locator ${formatValue(this.selector)} resolved to hidden`;
|
|
88
253
|
}
|
|
89
254
|
if (resolved.kind === "many") {
|
|
90
|
-
return `locator ${formatValue(this.selector)} resolved to ${resolved.
|
|
255
|
+
return `locator ${formatValue(this.selector)} resolved to ${resolved.count} matches`;
|
|
91
256
|
}
|
|
92
257
|
return `locator ${formatValue(this.selector)} resolved to a visible element`;
|
|
93
258
|
}
|
|
94
|
-
|
|
259
|
+
/** The page instance this locator is bound to; `null` for the current page. */
|
|
260
|
+
get boundPage() {
|
|
261
|
+
return this.options.page ?? null;
|
|
262
|
+
}
|
|
263
|
+
/** The page, selector and narrowing, as the trace and failures show it. */
|
|
264
|
+
describe() {
|
|
265
|
+
return this.target();
|
|
266
|
+
}
|
|
267
|
+
inputDetail(text) {
|
|
268
|
+
// Locator names commonly reveal password fields. Declared --secret-arg
|
|
269
|
+
// values are also scrubbed from the final report by the run redactor.
|
|
270
|
+
if (/(?:password|passwd|passphrase|secret|token|credential|api[-_]?key)/i.test(this.selector)) {
|
|
271
|
+
return `value=[redacted, ${text.length} chars]`;
|
|
272
|
+
}
|
|
273
|
+
return `value=${formatValue(text)}`;
|
|
274
|
+
}
|
|
275
|
+
target() {
|
|
276
|
+
const filter = this.refine.hasText === undefined ? "" : ` filter(hasText=${formatValue(this.refine.hasText)})`;
|
|
277
|
+
const pick = this.refine.last ? " [last]" : this.options.index === undefined ? "" : ` [${this.options.index}]`;
|
|
278
|
+
return `${this.options.page ? `#${this.options.page} ` : ""}${this.selector}${filter}${pick}`;
|
|
279
|
+
}
|
|
280
|
+
where() {
|
|
281
|
+
return displayLocation(this.location.source, this.location.line, this.location.column);
|
|
282
|
+
}
|
|
283
|
+
callContext(verb) {
|
|
284
|
+
return `while trying to ${verb} ${formatValue(this.selector)}\nat ${this.where()}`;
|
|
285
|
+
}
|
|
286
|
+
async actionability(index, verb, deadline) {
|
|
287
|
+
if (!this.page.eval)
|
|
288
|
+
return true;
|
|
289
|
+
const script = `(() => {
|
|
290
|
+
const el = document.querySelectorAll(${JSON.stringify(this.selector)})[${index}];
|
|
291
|
+
if (!el || !el.isConnected) return "element detached";
|
|
292
|
+
el.scrollIntoView({block:"center", inline:"center", behavior:"instant"});
|
|
293
|
+
if (el.matches(":disabled") || el.closest('[aria-disabled="true"]')) return "element is disabled";
|
|
294
|
+
if ((${JSON.stringify(verb)} === "fill" || ${JSON.stringify(verb)} === "type") && (el.readOnly || el.getAttribute("aria-readonly") === "true")) return "element is readonly";
|
|
295
|
+
const r = el.getBoundingClientRect();
|
|
296
|
+
const hit = document.elementFromPoint(r.left + r.width / 2, r.top + r.height / 2);
|
|
297
|
+
return hit && (hit === el || el.contains(hit)) ? true : "element is obscured";
|
|
298
|
+
})()`;
|
|
299
|
+
const result = await this.guard(() => deadline.call("page.eval (actionability)", () => this.page.eval({ page: this.options.page, script }), () => this.callContext(verb)));
|
|
300
|
+
return result === true ? true : String(result ?? "invalid actionability response");
|
|
301
|
+
}
|
|
302
|
+
act(verb, options, run, input) {
|
|
303
|
+
const force = options?.force === true;
|
|
95
304
|
const timeout = options?.timeout ?? DEFAULT_ACTION_TIMEOUT_MS;
|
|
96
|
-
const interval =
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
305
|
+
const interval = DEFAULT_POLL_INTERVAL_MS;
|
|
306
|
+
if (!Number.isFinite(timeout) || timeout <= 0) {
|
|
307
|
+
return Promise.reject(new TypeError("Action timeout must be a positive finite number"));
|
|
308
|
+
}
|
|
309
|
+
const deadline = new ActionDeadline(timeout, this.room());
|
|
310
|
+
const context = () => this.callContext(verb);
|
|
311
|
+
return this.record(`page.${verb}`, `${this.target()}${input ? ` ${input}` : ""}`, async () => {
|
|
312
|
+
let last;
|
|
313
|
+
let previousRect;
|
|
314
|
+
let reason = "not attached";
|
|
315
|
+
// Preserve the last driver failure as the timeout cause.
|
|
316
|
+
let cause;
|
|
317
|
+
const until = async (budget) => {
|
|
318
|
+
while (!budget.expired()) {
|
|
319
|
+
try {
|
|
320
|
+
last = await this.resolve(budget, verb);
|
|
321
|
+
reason = this.missText(last);
|
|
322
|
+
cause = undefined;
|
|
323
|
+
if (force && last.count === 1) {
|
|
324
|
+
// Forced: attached and enabled are enough; no viewport, stability
|
|
325
|
+
// or hit-test wait.
|
|
326
|
+
if (last.enabled === false)
|
|
327
|
+
reason = "element is disabled";
|
|
328
|
+
else if ((verb === "fill" || verb === "type") && last.editable === false)
|
|
329
|
+
reason = "element is not editable";
|
|
330
|
+
else {
|
|
331
|
+
try {
|
|
332
|
+
const index = last.index;
|
|
333
|
+
await this.guard(() => budget.call(`page.${verb}`, () => run(this.selector, index), context));
|
|
334
|
+
return true;
|
|
335
|
+
}
|
|
336
|
+
catch (error) {
|
|
337
|
+
if (!isElementRefusal(error) && !isPreDispatchPageError(error)) {
|
|
338
|
+
throw new DispatchFailure(error);
|
|
339
|
+
}
|
|
340
|
+
reason = error instanceof Error ? error.message : String(error);
|
|
341
|
+
cause = error;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
else if (last.kind === "unique") {
|
|
346
|
+
const rect = JSON.stringify(last.rect);
|
|
347
|
+
const stable = last.rect === undefined || previousRect === rect;
|
|
348
|
+
previousRect = rect;
|
|
349
|
+
if (last.enabled === false)
|
|
350
|
+
reason = "element is disabled";
|
|
351
|
+
else if ((verb === "fill" || verb === "type") && last.editable === false)
|
|
352
|
+
reason = "element is not editable";
|
|
353
|
+
else if (!stable)
|
|
354
|
+
reason = "element is moving";
|
|
355
|
+
else {
|
|
356
|
+
const check = await this.actionability(last.index, verb, budget);
|
|
357
|
+
if (check === true) {
|
|
358
|
+
try {
|
|
359
|
+
const index = last.index;
|
|
360
|
+
await this.guard(() => budget.call(`page.${verb}`, () => run(this.selector, index), context));
|
|
361
|
+
return true;
|
|
362
|
+
}
|
|
363
|
+
catch (error) {
|
|
364
|
+
// These native errors are raised before input dispatch. A transport
|
|
365
|
+
// failure is ambiguous and must never resubmit an action.
|
|
366
|
+
if (!isElementRefusal(error) && !isPreDispatchPageError(error)) {
|
|
367
|
+
throw new DispatchFailure(error);
|
|
368
|
+
}
|
|
369
|
+
reason = error instanceof Error ? error.message : String(error);
|
|
370
|
+
cause = error;
|
|
371
|
+
previousRect = undefined;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
if (check !== true)
|
|
375
|
+
reason = check;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
previousRect = undefined;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
catch (error) {
|
|
383
|
+
// The page is being replaced (navigation in flight): no read or
|
|
384
|
+
// dispatch reached it, so wait for the new page within the budget.
|
|
385
|
+
if (error instanceof DispatchFailure)
|
|
386
|
+
throw error.error;
|
|
387
|
+
// Reads only: a dispatch error is a DispatchFailure, never retried.
|
|
388
|
+
if (!isTransientPageError(error) && !isTransientTransportError(error))
|
|
389
|
+
throw error;
|
|
390
|
+
reason = transientReason(error);
|
|
391
|
+
cause = error;
|
|
392
|
+
previousRect = undefined;
|
|
393
|
+
}
|
|
394
|
+
await sleep(Math.min(interval, Math.max(1, budget.remaining())));
|
|
395
|
+
}
|
|
396
|
+
return false;
|
|
397
|
+
};
|
|
398
|
+
if (await until(deadline))
|
|
103
399
|
return;
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
400
|
+
throw withCause(new TimeoutError([
|
|
401
|
+
`Timed out after ${deadline.elapsed()}ms waiting to ${verb} ${formatValue(this.selector)}.`,
|
|
402
|
+
reason,
|
|
403
|
+
deadline.clampNote(),
|
|
404
|
+
`at ${this.where()}`,
|
|
405
|
+
].filter(Boolean).join("\n")), cause);
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
_a = LOCATOR_BRAND;
|
|
410
|
+
/** Preserve the last driver failure without changing the public timeout code. */
|
|
411
|
+
function withCause(error, cause) {
|
|
412
|
+
if (cause === undefined)
|
|
413
|
+
return error;
|
|
414
|
+
Object.assign(error, { cause });
|
|
415
|
+
const code = errorCode(cause);
|
|
416
|
+
const data = cause && typeof cause === "object" ? cause.data : undefined;
|
|
417
|
+
error.data = {
|
|
418
|
+
...(data && typeof data === "object" ? data : {}),
|
|
419
|
+
...(code === undefined ? {} : { driverCode: code }),
|
|
420
|
+
};
|
|
421
|
+
return error;
|
|
422
|
+
}
|
|
423
|
+
/** A dispatch error that must propagate as is, never be retried. */
|
|
424
|
+
class DispatchFailure {
|
|
425
|
+
constructor(error) {
|
|
426
|
+
this.error = error;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
function transientReason(error) {
|
|
430
|
+
const text = error instanceof Error ? error.message : String(error);
|
|
431
|
+
return isTransientTransportError(error) ? `read dropped by the transport: ${text}` : `page not ready: ${text}`;
|
|
432
|
+
}
|
|
433
|
+
/** `many` never satisfies `attached`/`visible`: the match is ambiguous. */
|
|
434
|
+
function reachedState(resolved, state) {
|
|
435
|
+
switch (state) {
|
|
436
|
+
case "attached":
|
|
437
|
+
return resolved.kind === "unique" || resolved.kind === "hidden";
|
|
438
|
+
case "visible":
|
|
439
|
+
return resolved.kind === "unique";
|
|
440
|
+
case "hidden":
|
|
441
|
+
return resolved.visibleCount === 0;
|
|
442
|
+
case "detached":
|
|
443
|
+
return resolved.kind === "nothing";
|
|
444
|
+
case "inViewport":
|
|
445
|
+
return resolved.kind === "unique" && resolved.inViewport;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
/** How long the visibility probe waits for an animation frame. */
|
|
449
|
+
const VISIBILITY_FRAME_WAIT_MS = 300;
|
|
450
|
+
/** The probe's whole budget: a hidden page also throttles its timers. */
|
|
451
|
+
export const VISIBILITY_PROBE_BUDGET_MS = 1500;
|
|
452
|
+
/**
|
|
453
|
+
* Reads `document.visibilityState` and whether an animation frame arrives.
|
|
454
|
+
* WebKit stops animation frames for a page that is hidden or in a fully
|
|
455
|
+
* covered window, so rAF- and transition-driven UI (a sheet sliding in)
|
|
456
|
+
* never moves and actionability reads it as obscured.
|
|
457
|
+
*/
|
|
458
|
+
export const VISIBILITY_PROBE_SCRIPT = `new Promise((resolve) => {
|
|
459
|
+
let done = false;
|
|
460
|
+
const finish = (frame) => {
|
|
461
|
+
if (done) return;
|
|
462
|
+
done = true;
|
|
463
|
+
resolve({ state: String(document.visibilityState || "unknown"), animationFrames: frame });
|
|
464
|
+
};
|
|
465
|
+
try { requestAnimationFrame(() => finish(true)); } catch (_) { finish(false); }
|
|
466
|
+
setTimeout(() => finish(false), ${VISIBILITY_FRAME_WAIT_MS});
|
|
467
|
+
})`;
|
|
468
|
+
/**
|
|
469
|
+
* What the probe can say: what it observed, and what usually causes that. It
|
|
470
|
+
* cannot see the window, so the cause stays a likely one.
|
|
471
|
+
*/
|
|
472
|
+
export const HIDDEN_PAGE_NOTE = "page looked hidden or paused";
|
|
473
|
+
const HIDDEN_PAGE_CAUSE = "a covered window or a sleeping display pauses a page's animations";
|
|
474
|
+
/** Why every page is hidden when the host can tell the screen is locked. */
|
|
475
|
+
export const SCREEN_LOCKED_NOTE = "the screen is locked; unlock it — animations and sheets are paused";
|
|
476
|
+
/** A hidden-page note, naming the lock when that is the cause. */
|
|
477
|
+
export function hiddenCause(note) {
|
|
478
|
+
return note !== undefined && resolveHost().screenLocked() ? SCREEN_LOCKED_NOTE : note;
|
|
479
|
+
}
|
|
480
|
+
/** What the probe saw, or `undefined` for an unreadable answer. */
|
|
481
|
+
export function pageVisibility(value) {
|
|
482
|
+
if (!value || typeof value !== "object")
|
|
483
|
+
return undefined;
|
|
484
|
+
const record = value;
|
|
485
|
+
if (typeof record.state !== "string" || typeof record.animationFrames !== "boolean")
|
|
486
|
+
return undefined;
|
|
487
|
+
const hidden = record.state === "hidden" || !record.animationFrames;
|
|
488
|
+
return {
|
|
489
|
+
state: record.state,
|
|
490
|
+
animationFrames: record.animationFrames,
|
|
491
|
+
...(hidden ? { note: `${HIDDEN_PAGE_NOTE}: visibilityState "${record.state}", ${record.animationFrames ? "animation frames running" : `no animation frame observed within ${VISIBILITY_FRAME_WAIT_MS}ms`} (${HIDDEN_PAGE_CAUSE})` } : {}),
|
|
492
|
+
};
|
|
493
|
+
}
|
|
494
|
+
/** Collapse every run of whitespace (newlines included) to one space and trim. */
|
|
495
|
+
export function normalizeText(value) {
|
|
496
|
+
return value.replace(/\s+/g, " ").trim();
|
|
497
|
+
}
|
|
498
|
+
export function textMatches(text, expected) {
|
|
499
|
+
if (expected instanceof RegExp) {
|
|
500
|
+
expected.lastIndex = 0;
|
|
501
|
+
return expected.test(text);
|
|
117
502
|
}
|
|
503
|
+
return normalizeText(text).toLowerCase().includes(normalizeText(expected).toLowerCase());
|
|
118
504
|
}
|
|
119
505
|
export function sleep(ms) {
|
|
120
506
|
return new Promise((resolve) => {
|
|
121
|
-
|
|
507
|
+
runnerSetTimeout(resolve, ms);
|
|
122
508
|
});
|
|
123
509
|
}
|
|
124
510
|
//# sourceMappingURL=locator.js.map
|
package/dist/locator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locator.js","sourceRoot":"","sources":["../src/locator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"locator.js","sourceRoot":"","sources":["../src/locator.ts"],"names":[],"mappings":"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"}
|