@unotest/web 0.31.0 → 0.32.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/CHANGELOG.md +117 -0
- package/README.md +66 -2
- package/dist/config/schema.d.ts +6 -6
- package/dist/config/schema.js +1 -1
- package/dist/driver/index.js +1 -1
- package/dist/dsl/index.d.ts +20 -0
- package/dist/dsl/index.js +1 -1
- package/dist/dsl/web-dsl-language-service.js +1 -1
- package/dist/mcp/server.js +1 -1
- package/dist/runner/cli.d.ts +1 -6
- package/dist/runner/cli.js +1 -1
- package/dist/runner/init/chrome-probe.js +1 -1
- package/dist/runner/init.js +1 -1
- package/dist/runner/install-chromium.js +1 -1
- package/dist/runner/prepare-fix.js +1 -1
- package/dist/runner/scaffold-workspace.js +1 -1
- package/dist/runner/serve-fixture.js +1 -1
- package/dist/runner/web-runner-adapter.js +1 -1
- package/guides/agent-integration.md +148 -13
- package/package.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,122 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.32.0] - 2026-09-05
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 442fadf: `npx @unotest/web box …` reads a box's results from a terminal: `box envs` lists the environments a read token may look at, `box runs` their history (`--latest` collapses it to one line per scenario with its failing streak), `box run <id>` explains one run — the failure, the soft steps, the judge's verdicts — `box queue` shows who is waiting, and `box screenshot` saves a frame the run captured.
|
|
8
|
+
|
|
9
|
+
`box run --download` fetches the run's `*.unotest.zip` into `.unotest/box/` and unpacks its failure bundle into `.unotest/failures/`, where `list_failures`, `get_failure_*` and `agent_fix` already look — so a run that failed on a box is debugged with the commands a local failure is. `--no-screenshots` asks the box itself to leave the step frames out (`GET /api/runs/:id/export?screenshots=0`), which is what makes the download smaller rather than only the disk.
|
|
10
|
+
|
|
11
|
+
Reading needs a personal read token in `UNOTEST_BOX_READ_TOKEN`; the project's `UNOTEST_BOX_TOKEN` still pushes bundles and values and cannot read runs.
|
|
12
|
+
|
|
13
|
+
The viewer publishes its archive reader as `@unotest/viewer/snapshot`, so the three places that open a `*.unotest.zip` — its server, its browser bundle and now the CLI — share one implementation and one message for a file that is not an archive.
|
|
14
|
+
|
|
15
|
+
- 69fbea1: Six MCP tools close the loop that `bundle push --run` opens: `box_run` says what became of a run the agent ordered on a box, `box_run_download` unpacks its failure bundle into `.unotest/failures/` so `get_failure_trace`, `get_failure_console`, `get_failure_a11y`, `get_failure_screenshot`, `get_failure_network` and `agent_fix` work on it unchanged, and `box_envs`, `box_runs`, `box_queue` and `box_screenshot` cover the cases where the agent has no run id, no environment name, a run that never started, or a page it would rather see than read about. Their descriptions carry the route, not just the arguments.
|
|
16
|
+
|
|
17
|
+
Without a read token the tools refuse with a message saying where to mint one, so an agent meets an instruction rather than an unexplained failure.
|
|
18
|
+
|
|
19
|
+
- 9099f64: Box: personal read tokens, so an agent can read a box's runs without a browser.
|
|
20
|
+
|
|
21
|
+
A user mints a token for themselves on the guard's new **Read tokens** page
|
|
22
|
+
(`/_guard/tokens`), sees the value once, and points a client at the box with
|
|
23
|
+
`UNOTEST_BOX_READ_TOKEN`. The token is always `readonly` whatever its owner's
|
|
24
|
+
role, may only `GET`, and names the environment it means in
|
|
25
|
+
`X-Unotest-Environment: <project>/<environment>` (`GET /_guard/api/envs` lists
|
|
26
|
+
them). It is not a machine identity: it follows its owner — revoked, disabled
|
|
27
|
+
or a lapsed seat all stop it, and the refusal says which. An administrator
|
|
28
|
+
sees every token on the box and can revoke one that is not theirs; issuing,
|
|
29
|
+
first use and revocation all land in the audit trail.
|
|
30
|
+
|
|
31
|
+
`UNOTEST_BOX_TOKEN` is unchanged: the project token still pushes bundles and
|
|
32
|
+
environment values, and read tokens cannot — asking with the wrong one now
|
|
33
|
+
says which token the route wants instead of a bare "unauthenticated".
|
|
34
|
+
|
|
35
|
+
A read token is never passed on to the viewer behind the guard, so it cannot
|
|
36
|
+
end up in the logs of a service that has no use for it. A box whose licence
|
|
37
|
+
has lapsed, and an environment whose viewer is not up yet, answer a token in
|
|
38
|
+
the read contract's shape rather than with a page or a bare 503 — "wait" and
|
|
39
|
+
"renew the licence" are not the same instruction as "your token is wrong".
|
|
40
|
+
|
|
41
|
+
### Patch Changes
|
|
42
|
+
|
|
43
|
+
- 5266b30: The agent integration guide's tool catalog matches the server again. It listed fifteen per-action tools (`goto`, `click`, `fill`, `press`, …) that were removed when recording moved into `explore_step`, had no section at all for the ten exploration tools that replaced them, counted the debugger's eleven tools as six, and put the total at 39 when it is 50. An agent reading it as a map — which is exactly what this file is for — would call tools that do not exist and conclude the server is broken. Every name now comes from the list the test suite verifies against the real registry, and the section counts add up to the total.
|
|
44
|
+
- 442fadf: `BoxReadClient` reads a box's runs — environments, run history, one run's whole journal, a collection's children, the queue, a run's export zip and its individual artifacts — over the same HTTP routes a browser uses, authenticated with the personal read token in `UNOTEST_BOX_READ_TOKEN`. Every refusal arrives as a typed `BoxReadError` whose `kind` says what to do next, so throttling is never mistaken for a rejected token and a live run's export says "wait" rather than looking like a broken box. Configuration mistakes surface when a read is attempted rather than at startup, so a stale token in a project's `.env` cannot stop a local run that never touches a box.
|
|
45
|
+
|
|
46
|
+
The viewer gains a `@unotest/viewer/wire` entry point exporting its HTTP contract types (the runs page, a run's full snapshot, the queue payload and the snapshot manifest), so a client can name the shapes it parses instead of keeping a second copy of them.
|
|
47
|
+
|
|
48
|
+
- f770a25: The box address and the read token are resolved from `unotest/.env` and `unotest/.secrets` on every request, not once at startup, and the `box` CLI reads those files directly. `unotest-web box …` runs without loading the project config, so nothing had flattened `unotest/.env` into its environment — the command told people to put the address there and then refused with "no box address". And an MCP server that resolved once meant a token written while it ran was ignored until the editor reconnected it, which is exactly the restart this path exists to avoid. One rule for both settings, from both entry points: a flag, then the environment, then the project's files.
|
|
49
|
+
- 8aa0f30: Protocol contract for reading a box's run results with a personal read token: `UNOTEST_BOX_READ_TOKEN` (distinct from the project's `UNOTEST_BOX_TOKEN`, which stays a write credential for bundles and environment values), the `X-Unotest-Environment: <project>/<environment>` header every bearer request names its own environment with, the `/_guard/api/envs` listing and its `BoxReadEnvironment` entry, and typed refusals (`unauthorized`, `forbidden`, `unknown-environment`, `not-found`, `rate-limited`, `run-in-progress`, `unavailable`, `malformed`) with parsers that reject anything that is not a box answering. Throttling gets a code of its own rather than an `unauthorized` carrying `Retry-After`: a rejected token means mint a new one, a throttled one means wait and resend the same one. The viewer's `ViewerEnvOption` is now that same protocol type rather than a second copy of it. An environment whose viewer is still starting — the common state right after a bundle push — answers `unavailable` rather than looking like an unreachable box, so the advice is to wait rather than to check the address.
|
|
50
|
+
- 8aa0f30: A run exported as `*.unotest.zip` now carries everything needed to diagnose it away from the machine that produced it: `stdout.log` and `stderr.log` (previously dropped, which left the one artifact that explains a runner crash outside the bundle), the failing page's `page.html` reachable through the manifest, and the run's step screenshots — declared in a new `manifest.screenshots` list, because an importer keeps only what the manifest names and a frame absent from it did not survive the round trip.
|
|
51
|
+
- 5266b30: `UNOTEST_BOX_READ_TOKEN` is now read from `unotest/.secrets` as well as from the environment, with an exported value winning. This is what makes the `box_*` tools usable from an agent at all: an MCP server is started by the editor, so a token that exists only in a shell is a token the server never receives — the alternative was editing the editor's own JSON config and reconnecting the server. `unotest/.env` is deliberately not consulted: it travels inside a pushed bundle, while `.secrets` does not. The CLI resolves the token the same way, so one token serves both.
|
|
52
|
+
- 5266b30: `box run` and `box_run` now carry the `{tag}` of a failed soft step, in the JSON and in the printed line (`Rubric [judge-red]`, the shape a local run already prints). A data-driven test runs one `step.soft` over many cases, so its failures all share a label and the tag is the only thing that says which case failed — without it a remote reader saw "Rubric failed" three times and had to tell them apart by line number. The tag was in the run's journal all along; the summary dropped it.
|
|
53
|
+
- ee6bb51: Secrets injected by a box are masked. Masking works by value, and the registry of values was built from `unotest/.secrets` alone — a file that does not exist on a box, where the daemon passes the values as environment variables and names them in `UNOTEST_BOX_SECRET_NAMES`. The registry was therefore empty on every box run, and a password a scenario typed reached the run journal, the run's `stdout.log`, the viewer's System pane and anything an agent downloaded, in the clear. The runner now registers those values alongside the ones it reads from files, so masking no longer depends on where the run happens to be. Nothing changes on a developer's machine, where the variable is not set.
|
|
54
|
+
- 047ca68: Failure text no longer carries terminal colouring into files and replies.
|
|
55
|
+
|
|
56
|
+
Playwright paints its call log whenever the environment claims a terminal is
|
|
57
|
+
watching — `FORCE_COLOR`, which an MCP server inherits from whatever launched
|
|
58
|
+
it — and that message was copied verbatim into `steps.jsonl`, `runtime.json`
|
|
59
|
+
and the failure bundle. An agent reading the JSON got an escape sequence in
|
|
60
|
+
the middle of the sentence it was trying to parse, and the viewer rendered
|
|
61
|
+
it as a chewed-up word.
|
|
62
|
+
|
|
63
|
+
The colouring is dropped where a thrown error becomes our data, so every
|
|
64
|
+
reader of a failure gets the same clean text. Our own output is unaffected:
|
|
65
|
+
it paints at print time, which is where colour belongs.
|
|
66
|
+
|
|
67
|
+
The same on mobile: a failure's text in the run journal and in the report no
|
|
68
|
+
longer carries terminal escapes.
|
|
69
|
+
|
|
70
|
+
- 047ca68: A failure somebody paused on stays a failure, with the evidence to show for it.
|
|
71
|
+
|
|
72
|
+
A run driven through the debugger — `run_test` then `resume`, or the viewer's
|
|
73
|
+
Continue — reported `completed` after a failure it had paused on, wrote no
|
|
74
|
+
failure bundle and no `failure/` artifacts, and left `list_failures` with
|
|
75
|
+
nothing to show. Continuing past a failure is how it gets inspected; it was
|
|
76
|
+
never meant to retract it. The verdict is now decided where the run's own
|
|
77
|
+
events are seen, so the journal, `runtime.json` and the reply agree, and a
|
|
78
|
+
debug run leaves the same evidence a plain `unotest-web e2e` run does.
|
|
79
|
+
|
|
80
|
+
`abort_runtime` (and Stop, and SIGTERM) now also ends the run in
|
|
81
|
+
`runtime.json`, not only in `steps.jsonl`: the control file used to keep
|
|
82
|
+
saying `paused-step` about a run that was over, so anything reading it rather
|
|
83
|
+
than the journal saw a pause that never ended.
|
|
84
|
+
|
|
85
|
+
- c5d3cda: README links the documentation site instead of manuals that are not shipped in the package (`guides/manuals/*`), and says what a run on a box cannot reach: `localhost`, port-forwards, host tools, a judge service on your machine — with the recipe for the judge on a box.
|
|
86
|
+
- 442fadf: Secret values registered from `unotest/.secrets` are now masked in what the runner prints, not only in what it writes. The run journal and every failure artifact were redacted; the terminal line was not, and that line is also copied into the run's `stdout.log` / `stderr.log` and streamed to the viewer's System pane. Masking is applied once, where the logger is built, so child loggers and message arguments are covered too. The collection runner is covered by the same rule: its messages go through its logger rather than straight to the stream, and the logger it builds when a caller passes none reads the project's secrets the way the composition root's does.
|
|
87
|
+
- 047ca68: A `step.soft(...)` failure no longer stops a debug run — or goes missing from it.
|
|
88
|
+
|
|
89
|
+
Under a debugger (`run_test`, or `e2e --debug`), every soft failure raised
|
|
90
|
+
the debug wheel: the run stopped on each one and an agent had to `resume`
|
|
91
|
+
its way through them. Worse, it was then lost — a paused failure is consumed
|
|
92
|
+
where it paused, so it never reached the `step.soft` envelope that records
|
|
93
|
+
it, the envelope closed as if the block had passed, and a run with three
|
|
94
|
+
soft failures could finish green with none of them listed.
|
|
95
|
+
|
|
96
|
+
Pausing is now for a failure that ENDS the run. A failure under any
|
|
97
|
+
enclosing soft step is recorded and stepped over exactly as it is on the
|
|
98
|
+
command line, and `runtime.json` — which the `run_test` reply is built from —
|
|
99
|
+
carries every soft failure of the run, not just the last stop.
|
|
100
|
+
|
|
101
|
+
A hard failure still pauses: that is what the debugger is for.
|
|
102
|
+
|
|
103
|
+
The same holds on mobile: a `step.soft(...)` failure no longer stops a run
|
|
104
|
+
under the debugger, and every soft failure of a run is now part of its
|
|
105
|
+
runtime state instead of being lost at the pause.
|
|
106
|
+
|
|
107
|
+
- Updated dependencies [442fadf]
|
|
108
|
+
- Updated dependencies [442fadf]
|
|
109
|
+
- Updated dependencies [8aa0f30]
|
|
110
|
+
- Updated dependencies [8aa0f30]
|
|
111
|
+
- Updated dependencies [047ca68]
|
|
112
|
+
- Updated dependencies [047ca68]
|
|
113
|
+
- Updated dependencies [047ca68]
|
|
114
|
+
- @unotest/viewer@0.32.0
|
|
115
|
+
- @unotest/protocol@0.32.0
|
|
116
|
+
- @unotest/dsl@0.32.0
|
|
117
|
+
- @unotest/core@0.32.0
|
|
118
|
+
- @unotest/grounder-client@0.32.0
|
|
119
|
+
|
|
3
120
|
## [0.31.0] - 2026-09-04
|
|
4
121
|
|
|
5
122
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -7,6 +7,11 @@ and commit.**
|
|
|
7
7
|
MCP server + CLI runner + JavaScript DSL + semantic DOM snapshots +
|
|
8
8
|
structured failure bundles.
|
|
9
9
|
|
|
10
|
+
Full documentation — manuals, the box, CI, the judge — lives at
|
|
11
|
+
[docs.unotest.com](https://docs.unotest.com). This README is the short
|
|
12
|
+
tour; the package ships only `guides/dsl-reference.md` and
|
|
13
|
+
`guides/agent-integration.md` alongside it.
|
|
14
|
+
|
|
10
15
|
---
|
|
11
16
|
|
|
12
17
|
## 1. Setup
|
|
@@ -170,7 +175,7 @@ a suite takes minutes, and a request held open that long is a timeout,
|
|
|
170
175
|
not a result. Watch them in the viewer, or let the box report the checks
|
|
171
176
|
back to GitHub. `--pr` makes a newer push withdraw the older runs of the
|
|
172
177
|
same pull request that are still waiting, so three pushes in five minutes
|
|
173
|
-
cost one suite. Recipe:
|
|
178
|
+
cost one suite. Recipe: [Pushing suites → A minimal CI job](https://docs.unotest.com/box/pushing-suites/#a-minimal-ci-job).
|
|
174
179
|
|
|
175
180
|
The values a suite runs with on the box — `APP_BASE_URL`, its `.env`
|
|
176
181
|
settings, its secrets — are sent separately, from the same files a local
|
|
@@ -184,7 +189,66 @@ printf '%s' "$KEY" | npx @unotest/web env set dev API_KEY --secret
|
|
|
184
189
|
`.env*` become the environment's variables, `.secrets*` its secrets,
|
|
185
190
|
`APP_BASE_URL` its target; `UNOTEST_*` stay home. A value never prints.
|
|
186
191
|
The token must be minted with `--values` on the box. Admins also see and
|
|
187
|
-
change them on the box's admin page. Manual:
|
|
192
|
+
change them on the box's admin page. Manual: [An environment's values on a
|
|
193
|
+
box](https://docs.unotest.com/box/environments-and-values/).
|
|
194
|
+
|
|
195
|
+
A run on the box happens inside the box's own container: nothing on your
|
|
196
|
+
machine is reachable from it — no `localhost`, no `kubectl port-forward`,
|
|
197
|
+
no tools installed on your laptop. Preconditions must probe the
|
|
198
|
+
environment's public URL, and `assertJudge` runs its judge in-process there
|
|
199
|
+
(`UNOTEST_JUDGE_MODE=local`, `@unotest/judge` in the suite's
|
|
200
|
+
`package.json`, the API key as a secret). Details:
|
|
201
|
+
[Judge on a box](https://docs.unotest.com/guides/judge/#on-a-box) and
|
|
202
|
+
[What a box cannot reach](https://docs.unotest.com/box/troubleshooting/#what-a-box-cannot-reach).
|
|
203
|
+
|
|
204
|
+
### Reading results from a box
|
|
205
|
+
|
|
206
|
+
`bundle push --run` gives you a run id. Read what became of it from the
|
|
207
|
+
same terminal — no browser, no shell on the box:
|
|
208
|
+
|
|
209
|
+
```sh
|
|
210
|
+
npx @unotest/web box runs --env acme/test --latest
|
|
211
|
+
npx @unotest/web box run checkout-mqf3pwr1 --env acme/test
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
`box run` prints the failure, the results of soft steps and the judge's
|
|
215
|
+
verdicts. When you want the artifacts too:
|
|
216
|
+
|
|
217
|
+
```sh
|
|
218
|
+
npx @unotest/web box run checkout-mqf3pwr1 --env acme/test --download
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
That saves the run's `*.unotest.zip` under `.unotest/box/` and unpacks its
|
|
222
|
+
failure bundle into `.unotest/failures/` — where `list_failures`,
|
|
223
|
+
`get_failure_*` and `agent_fix` already look, so your agent debugs a box
|
|
224
|
+
failure with the commands it uses for a local one. Add `--no-screenshots`
|
|
225
|
+
to leave the step frames on the box; they are usually most of the bytes.
|
|
226
|
+
|
|
227
|
+
Reading uses a **personal** read token, not the project one. Put it in
|
|
228
|
+
`unotest/.secrets`, next to your other project secrets:
|
|
229
|
+
|
|
230
|
+
```sh
|
|
231
|
+
UNOTEST_BOX_READ_TOKEN=ubr_...
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
and the box's address in `unotest/.env` as `UNOTEST_BOX_URL`. Both files
|
|
235
|
+
are read directly, so this works the same from the terminal and from your
|
|
236
|
+
agent. Exporting either value in your shell works too and wins over the
|
|
237
|
+
file; `--box` and `--token` win over both.
|
|
238
|
+
|
|
239
|
+
The token is never read from `unotest/.env` — that file travels inside a
|
|
240
|
+
pushed bundle, and `.secrets` does not.
|
|
241
|
+
|
|
242
|
+
Keeping it in the file is what lets your agent read runs: an MCP server is
|
|
243
|
+
started by your editor, so a token that only exists in your shell is a
|
|
244
|
+
token the agent never sees. A token added while the server is running is
|
|
245
|
+
picked up on the next call — nothing to restart.
|
|
246
|
+
|
|
247
|
+
You mint it for yourself on the box's guard ("Read tokens"), it is shown
|
|
248
|
+
once, and it is revocable. It is read-only whatever your role on the box — it cannot start
|
|
249
|
+
a run or change a value. `UNOTEST_BOX_TOKEN` is the project's push
|
|
250
|
+
credential and cannot read runs. `box envs` lists the environments a token
|
|
251
|
+
may look at.
|
|
188
252
|
|
|
189
253
|
## 5. Watch it run — the viewer
|
|
190
254
|
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -30,10 +30,10 @@ declare const RetryConfigSchema: z.ZodObject<{
|
|
|
30
30
|
on: z.ZodArray<z.ZodEnum<["transient", "network", "crash"]>, "many">;
|
|
31
31
|
}, "strip", z.ZodTypeAny, {
|
|
32
32
|
count: number;
|
|
33
|
-
on: ("
|
|
33
|
+
on: ("network" | "transient" | "crash")[];
|
|
34
34
|
}, {
|
|
35
35
|
count: number;
|
|
36
|
-
on: ("
|
|
36
|
+
on: ("network" | "transient" | "crash")[];
|
|
37
37
|
}>;
|
|
38
38
|
type RetryConfig = z.infer<typeof RetryConfigSchema>;
|
|
39
39
|
declare const FailureBundleConfigSchema: z.ZodObject<{
|
|
@@ -276,10 +276,10 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
276
276
|
on: z.ZodArray<z.ZodEnum<["transient", "network", "crash"]>, "many">;
|
|
277
277
|
}, "strip", z.ZodTypeAny, {
|
|
278
278
|
count: number;
|
|
279
|
-
on: ("
|
|
279
|
+
on: ("network" | "transient" | "crash")[];
|
|
280
280
|
}, {
|
|
281
281
|
count: number;
|
|
282
|
-
on: ("
|
|
282
|
+
on: ("network" | "transient" | "crash")[];
|
|
283
283
|
}>;
|
|
284
284
|
failureBundle: z.ZodObject<{
|
|
285
285
|
/** Tier 1 is always on by D-16. Schema lock — not user-toggleable. */
|
|
@@ -461,7 +461,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
461
461
|
};
|
|
462
462
|
retry: {
|
|
463
463
|
count: number;
|
|
464
|
-
on: ("
|
|
464
|
+
on: ("network" | "transient" | "crash")[];
|
|
465
465
|
};
|
|
466
466
|
failureBundle: {
|
|
467
467
|
tier1: true;
|
|
@@ -523,7 +523,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
523
523
|
};
|
|
524
524
|
retry: {
|
|
525
525
|
count: number;
|
|
526
|
-
on: ("
|
|
526
|
+
on: ("network" | "transient" | "crash")[];
|
|
527
527
|
};
|
|
528
528
|
failureBundle: {
|
|
529
529
|
tier2: boolean;
|
package/dist/config/schema.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var _0x5c7c04=_0x4207;function _0x4207(_0x454c75,_0x3095d){_0x454c75=_0x454c75-0x1c8;var _0x209034=_0x2090();var _0x4207cc=_0x209034[_0x454c75];if(_0x4207['jGFbYf']===undefined){var _0x285a29=function(_0x107f7c){var _0x41d0e6='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x31c002='',_0x1a95c4='';for(var _0xcd9d04=0x0,_0x2d772f,_0x174409,_0x55caf9=0x0;_0x174409=_0x107f7c['charAt'](_0x55caf9++);~_0x174409&&(_0x2d772f=_0xcd9d04%0x4?_0x2d772f*0x40+_0x174409:_0x174409,_0xcd9d04++%0x4)?_0x31c002+=String['fromCharCode'](0xff&_0x2d772f>>(-0x2*_0xcd9d04&0x6)):0x0){_0x174409=_0x41d0e6['indexOf'](_0x174409);}for(var _0x33f5ed=0x0,_0x242f97=_0x31c002['length'];_0x33f5ed<_0x242f97;_0x33f5ed++){_0x1a95c4+='%'+('00'+_0x31c002['charCodeAt'](_0x33f5ed)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1a95c4);};_0x4207['hnsyHs']=_0x285a29,_0x4207['QiBXrc']={},_0x4207['jGFbYf']=!![];}var _0x1f2f13=_0x209034[0x0],_0x3909aa=_0x454c75+_0x1f2f13,_0x377df3=_0x4207['QiBXrc'][_0x3909aa];return!_0x377df3?(_0x4207cc=_0x4207['hnsyHs'](_0x4207cc),_0x4207['QiBXrc'][_0x3909aa]=_0x4207cc):_0x4207cc=_0x377df3,_0x4207cc;}(function(_0x1338cc,_0x57a561){var _0x56fe2a={_0x5f1e29:0x200,_0x39d1d6:0x201,_0x39bc8a:0x1fe,_0x4f4f9f:0x1cf,_0xf3ea23:0x204},_0x47e60e=_0x4207,_0x56db90=_0x1338cc();while(!![]){try{var _0x4fed80=-parseInt(_0x47e60e(_0x56fe2a._0x5f1e29))/0x1+-parseInt(_0x47e60e(0x1e1))/0x2+-parseInt(_0x47e60e(0x1c8))/0x3+-parseInt(_0x47e60e(_0x56fe2a._0x39d1d6))/0x4*(parseInt(_0x47e60e(0x1d3))/0x5)+-parseInt(_0x47e60e(_0x56fe2a._0x39bc8a))/0x6+parseInt(_0x47e60e(0x1fa))/0x7+parseInt(_0x47e60e(_0x56fe2a._0x4f4f9f))/0x8*(parseInt(_0x47e60e(_0x56fe2a._0xf3ea23))/0x9);if(_0x4fed80===_0x57a561)break;else _0x56db90['push'](_0x56db90['shift']());}catch(_0x1e953f){_0x56db90['push'](_0x56db90['shift']());}}}(_0x2090,0x8b071));import{z}from'zod';function _0x2090(){var _0x306270=['Dw5PB24','zw51Bq','zxjYB3i','D2vIA2L0','mtu5mJK3ugnsq1PN','Dw5VDgvZDc9LmMu','y2HYB21PDw0','DMfSAwrHDg9YoMLMlxnOyxbL','DhjHBNnPzw50','Cg9ZAxrPDMu','BgLUDdPYzwDLEc1PBNzHBgLK','mJC2mdK4mdHVsgLksuO','y3jHC2G','B3b0Aw9UywW','BMv0D29YAW','mZq4nxDKB25vCa','BgLUDdPKAxnHBwjPzY1IEs1PBMrLEa','BgLUDdPSAw50lw9Rlw1PC3nPBMCTCMvHC29U','BgLUDdPHCgKTy2fSBc1MAwXLlwjVzhK','C3rKAw8','DMfSAwrHDg9YoMzVCI1ZAgfWzq','DMfSAwrHDg9YoNzHCI1ZAgfWzq','yxjYyxK','BgLUDdPVBMuTDgvZDc1WzxiTzMLSzq','DMfSAwrHDg9YoMz1BMn0Aw9UlxnOyxbL','BwLU','D2fYBG','zgvMyxvSDa','yM9VBgvHBG','mty2ndm0ngrPEeXbta','BNvTyMvY','zMLYzwzVEa','DMfSAwrHDg9YoNDYyxbWzwqTzM9YBwf0','B2jQzwn0','BgL0zxjHBa','BgLUDdPWyxvZzs1LEhbSAwnPDa','DMfSAwrHDg9YoMfYzY1RAw5K','ywnJzxb0','C3rYAw5N','BNvSBa','B2zM','DMfSAwrHDg9YoNvUA25VD24TzNvUy3rPB24','BgLUDdPZy2vUyxjPBY1PBI1YB290','BgLUDdPLEhrLCM5HBc12yxjPywjSzs11BMrLy2XHCMvK','DMfSAwrHDg9YoNn0zxaTC2HHCgu','CMvJB3jK','DMfSAwrHDg9YoM1LDgeTC2HHCgu','BgLUDdP4Cgf0Aa','BgLUDdPLDMfSDwf0zs1KAxnJB3vYywDLza','Aw50','lNvUB3rLC3qVzMfPBhvYzxm','y2HYB21LlwjLDge','zgLZBwLZCW','BgLUDdPNB3rVlwnVBMnHDa','nZe0mZuWrfb5zLrk','Bwf4','BxnLzgDL','BgLUDdPVyMz1C2nHDgvKlwnSyxnZ','nJa2nJm0ofD2qvD6yq','BgLUDdPKzwvWlwnZCW','nta0mtaXC3b0De9l','mZm0ofHRseThvq','BgLUDdPLy2HVlwfZC2vYDa','DxjS','ouDjDhnezW','DMfSAwrHDg9YoNn0zxaTy292zxjHz2u'];_0x2090=function(){return _0x306270;};return _0x2090();}var BrowserSchema=z['enum']([_0x5c7c04(0x1ca),_0x5c7c04(0x1e3),_0x5c7c04(0x209)]),BrowserChannelSchema=z[_0x5c7c04(0x206)]([z[_0x5c7c04(0x1e6)]('chrome'),z[_0x5c7c04(0x1e6)](_0x5c7c04(0x1fc)),z['literal'](_0x5c7c04(0x1f7)),z[_0x5c7c04(0x1eb)]()])[_0x5c7c04(0x1d1)](),ViewportSchema=z[_0x5c7c04(0x1e5)]({'width':z[_0x5c7c04(0x1e2)]()[_0x5c7c04(0x1f5)]()[_0x5c7c04(0x1cd)](),'height':z[_0x5c7c04(0x1e2)]()['int']()[_0x5c7c04(0x1cd)]()}),RetryReasonSchema=z[_0x5c7c04(0x207)]([_0x5c7c04(0x1cc),_0x5c7c04(0x1d2),_0x5c7c04(0x1d0)]),RetryConfigSchema=z[_0x5c7c04(0x1e5)]({'count':z[_0x5c7c04(0x1e2)]()[_0x5c7c04(0x1f5)]()['min'](0x0)[_0x5c7c04(0x1fb)](0xa),'on':z[_0x5c7c04(0x1da)](RetryReasonSchema)}),FailureBundleConfigSchema=z[_0x5c7c04(0x1e5)]({'tier1':z['literal'](!![])['default'](!![]),'tier2':z[_0x5c7c04(0x1e0)](),'tier3':z['object']({'network':z[_0x5c7c04(0x1e0)](),'video':z[_0x5c7c04(0x1e0)]()}),'retention':z[_0x5c7c04(0x1e5)]({'runs':z['number']()[_0x5c7c04(0x1f5)]()[_0x5c7c04(0x1cd)](),'days':z[_0x5c7c04(0x1e2)]()[_0x5c7c04(0x1f5)]()['positive']()}),'storageDir':z[_0x5c7c04(0x1ea)]()[_0x5c7c04(0x1dd)](0x1)}),DialogPolicySchema=z[_0x5c7c04(0x207)]([_0x5c7c04(0x1e9),_0x5c7c04(0x1f8),'manual']),LinterRuleIdSchema=z['enum']([_0x5c7c04(0x1ff),_0x5c7c04(0x1f3),_0x5c7c04(0x1fd),_0x5c7c04(0x1e7),_0x5c7c04(0x1d4),_0x5c7c04(0x1f4),_0x5c7c04(0x1ee),'lint:mustache-in-dsl',_0x5c7c04(0x1f9),_0x5c7c04(0x1ce),_0x5c7c04(0x202),_0x5c7c04(0x1d6),_0x5c7c04(0x1d5),'lint:flow-returns-value','lint:legacy-layout',_0x5c7c04(0x1ef),_0x5c7c04(0x1db),_0x5c7c04(0x1ed),'validator:arity',_0x5c7c04(0x1e8),_0x5c7c04(0x205),_0x5c7c04(0x1f0),_0x5c7c04(0x1f2),_0x5c7c04(0x1dc),_0x5c7c04(0x1d8),_0x5c7c04(0x1cb),_0x5c7c04(0x1d9),'validator:unsupported-statement','validator:unsupported-expression','validator:string-concat','validator:semantic-loss','validator:list-arg',_0x5c7c04(0x1e4)]),LinterSeveritySchema=z[_0x5c7c04(0x207)](['off','warn',_0x5c7c04(0x208)]),LinterConfigSchema=z[_0x5c7c04(0x1e5)]({'enabled':z[_0x5c7c04(0x1e0)](),'rules':z[_0x5c7c04(0x1f1)](LinterRuleIdSchema,LinterSeveritySchema)}),QueueConfigSchema=z[_0x5c7c04(0x1e5)]({'enabled':z[_0x5c7c04(0x1e0)]()[_0x5c7c04(0x1df)](!![]),'concurrency':z[_0x5c7c04(0x1e2)]()[_0x5c7c04(0x1f5)]()[_0x5c7c04(0x1cd)]()[_0x5c7c04(0x1df)](0x1)}),ScheduleSchema=z['object']({'collection':z[_0x5c7c04(0x1ea)]()[_0x5c7c04(0x1dd)](0x1),'cron':z[_0x5c7c04(0x1ea)]()[_0x5c7c04(0x1dd)](0x1),'env':z[_0x5c7c04(0x1ea)]()[_0x5c7c04(0x1dd)](0x1)[_0x5c7c04(0x1d1)](),'prepare':z[_0x5c7c04(0x1ea)]()[_0x5c7c04(0x1dd)](0x1)[_0x5c7c04(0x1d1)]()}),McpConfigSchema=z[_0x5c7c04(0x1e5)]({'transport':z[_0x5c7c04(0x1e6)](_0x5c7c04(0x1d7))}),SandboxConfigSchema=z['object']({'shellCwd':z[_0x5c7c04(0x1ea)]()[_0x5c7c04(0x1d1)](),'shellTimeoutMs':z[_0x5c7c04(0x1e2)]()['int']()[_0x5c7c04(0x1cd)]()[_0x5c7c04(0x1d1)](),'exportSecrets':z['array'](z[_0x5c7c04(0x1ea)]())['optional'](),'database':z[_0x5c7c04(0x1ea)]()['optional'](),'apiBaseUrl':z['string']()[_0x5c7c04(0x203)]()[_0x5c7c04(0x1d1)](),'uploadDir':z['string']()['optional']()}),WebServerConfigSchema=z[_0x5c7c04(0x1e5)]({'command':z[_0x5c7c04(0x1ea)]()['min'](0x1),'url':z['string']()[_0x5c7c04(0x203)](),'reuseExistingServer':z[_0x5c7c04(0x1e0)]()[_0x5c7c04(0x1df)](!![]),'timeoutMs':z['number']()[_0x5c7c04(0x1f5)]()[_0x5c7c04(0x1cd)]()['default'](0xea60)}),UnotestConfigSchema=z['object']({'baseUrl':z[_0x5c7c04(0x1ea)]()['url']()['optional'](),'webServer':WebServerConfigSchema[_0x5c7c04(0x1d1)](),'browsers':z['array'](BrowserSchema)[_0x5c7c04(0x1dd)](0x1),'channel':BrowserChannelSchema,'viewport':ViewportSchema,'retry':RetryConfigSchema,'failureBundle':FailureBundleConfigSchema,'dialogPolicy':DialogPolicySchema,'storageState':z[_0x5c7c04(0x1ea)]()[_0x5c7c04(0x1d1)](),'testDir':z[_0x5c7c04(0x1ea)]()[_0x5c7c04(0x1dd)](0x1),'helpersDir':z[_0x5c7c04(0x1ea)]()['min'](0x1),'defaultTimeoutMs':z[_0x5c7c04(0x1e2)]()[_0x5c7c04(0x1f5)]()[_0x5c7c04(0x1cd)](),'defaultNavigationTimeoutMs':z['number']()[_0x5c7c04(0x1f5)]()[_0x5c7c04(0x1cd)](),'linter':LinterConfigSchema,'mcp':McpConfigSchema,'queue':QueueConfigSchema,'schedules':z[_0x5c7c04(0x1da)](ScheduleSchema)['default']([]),'sandbox':SandboxConfigSchema}),DEFAULT_CONFIG={'browsers':[_0x5c7c04(0x1ca)],'viewport':{'width':0x500,'height':0x2d0},'retry':{'count':0x0,'on':[_0x5c7c04(0x1cc)]},'failureBundle':{'tier1':!![],'tier2':!![],'tier3':{'network':![],'video':![]},'retention':{'runs':0x14,'days':0x7},'storageDir':_0x5c7c04(0x1f6)},'dialogPolicy':_0x5c7c04(0x1e9),'testDir':_0x5c7c04(0x1c9),'helpersDir':'unotest/e2e/_helpers','defaultTimeoutMs':0xbb8,'defaultNavigationTimeoutMs':0x7530,'linter':{'enabled':!![],'rules':{'lint:deep-css':_0x5c7c04(0x1de),'lint:xpath':'warn','lint:obfuscated-class':'warn','lint:pause-explicit':_0x5c7c04(0x1de),'lint:disambig-by-index':_0x5c7c04(0x1ec),'lint:evaluate-discouraged':_0x5c7c04(0x1de),'lint:scenario-in-root':_0x5c7c04(0x208),'lint:mustache-in-dsl':'error','lint:goto-concat':'warn','lint:regex-invalid':_0x5c7c04(0x208),'lint:echo-assert':'warn','lint:lint-ok-missing-reason':_0x5c7c04(0x1de),'lint:flow-returns-value':_0x5c7c04(0x1de),'lint:legacy-layout':_0x5c7c04(0x1de),'lint:external-variable-undeclared':_0x5c7c04(0x208),'lint:one-test-per-file':_0x5c7c04(0x1de),'validator:unknown-function':'error'}},'mcp':{'transport':'stdio'},'queue':{'enabled':!![],'concurrency':0x1},'schedules':[],'sandbox':{}};export{BrowserChannelSchema,BrowserSchema,DEFAULT_CONFIG,DialogPolicySchema,FailureBundleConfigSchema,LinterConfigSchema,LinterRuleIdSchema,LinterSeveritySchema,McpConfigSchema,QueueConfigSchema,RetryConfigSchema,RetryReasonSchema,SandboxConfigSchema,ScheduleSchema,UnotestConfigSchema,ViewportSchema,WebServerConfigSchema};
|
package/dist/driver/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0xeb371e=_0xb3c4;(function(_0x391074,_0x3b2f50){const _0x297e7b={_0x20e96c:0xc6,_0xed9668:0xd9,_0xa00b34:0xe4},_0x33b337=_0xb3c4,_0x4116e6=_0x391074();while(!![]){try{const _0x378cda=parseInt(_0x33b337(_0x297e7b._0x20e96c))/0x1*(-parseInt(_0x33b337(0xc1))/0x2)+parseInt(_0x33b337(_0x297e7b._0xed9668))/0x3+parseInt(_0x33b337(0x82))/0x4*(parseInt(_0x33b337(0xa2))/0x5)+-parseInt(_0x33b337(0x92))/0x6*(parseInt(_0x33b337(0x95))/0x7)+-parseInt(_0x33b337(0xa9))/0x8+-parseInt(_0x33b337(_0x297e7b._0xa00b34))/0x9+-parseInt(_0x33b337(0x8d))/0xa*(-parseInt(_0x33b337(0xc0))/0xb);if(_0x378cda===_0x3b2f50)break;else _0x4116e6['push'](_0x4116e6['shift']());}catch(_0x9a0051){_0x4116e6['push'](_0x4116e6['shift']());}}}(_0x291e,0x91a28));var __defProp=Object['defineProperty'],__name=(_0x33690d,_0x5212f9)=>__defProp(_0x33690d,'name',{'value':_0x5212f9,'configurable':!![]});function _0xb3c4(_0x172257,_0x34afe6){_0x172257=_0x172257-0x6f;const _0x291e59=_0x291e();let _0xb3c46c=_0x291e59[_0x172257];if(_0xb3c4['Lggrra']===undefined){var _0x4c22a9=function(_0x3c0f79){const _0x3759f3='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x33690d='',_0x5212f9='';for(let _0x18dd39=0x0,_0x48bc86,_0x3fee35,_0x482524=0x0;_0x3fee35=_0x3c0f79['charAt'](_0x482524++);~_0x3fee35&&(_0x48bc86=_0x18dd39%0x4?_0x48bc86*0x40+_0x3fee35:_0x3fee35,_0x18dd39++%0x4)?_0x33690d+=String['fromCharCode'](0xff&_0x48bc86>>(-0x2*_0x18dd39&0x6)):0x0){_0x3fee35=_0x3759f3['indexOf'](_0x3fee35);}for(let _0x5a5786=0x0,_0x48f7a2=_0x33690d['length'];_0x5a5786<_0x48f7a2;_0x5a5786++){_0x5212f9+='%'+('00'+_0x33690d['charCodeAt'](_0x5a5786)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5212f9);};_0xb3c4['CQLqGn']=_0x4c22a9,_0xb3c4['HewBEB']={},_0xb3c4['Lggrra']=!![];}const _0x8f7ef6=_0x291e59[0x0],_0x4d5b7c=_0x172257+_0x8f7ef6,_0x1d12a1=_0xb3c4['HewBEB'][_0x4d5b7c];return!_0x1d12a1?(_0xb3c46c=_0xb3c4['CQLqGn'](_0xb3c46c),_0xb3c4['HewBEB'][_0x4d5b7c]=_0xb3c46c):_0xb3c46c=_0x1d12a1,_0xb3c46c;}function subscribe(_0x18dd39,_0x48bc86){const _0x1c6392={_0xa501bb:0x93},_0x35b88d=_0xb3c4;return _0x18dd39[_0x35b88d(0x83)](_0x48bc86),()=>{const _0x19a220=_0x35b88d;_0x18dd39[_0x19a220(_0x1c6392._0xa501bb)](_0x48bc86);};}__name(subscribe,'subscribe');function _0x291e(){const _0x38c7c4=['y29VA2LLCW','D2fPDezVCK5HDMLNyxrPB24','Cg9WDxbpBKnSAwnR','C3rLChm','rMfRzvDLyKrYAxzLCG','BM8Gywn0AxzLihbHz2uGAw4Gy29UDgv4Da','z29cywnR','D3nfBMrWB2LUDa','ChjLC3m','mJr0BuHMDwS','ywrK','D2fPDezVCKXVywrtDgf0zq','Aw5WDxrwywX1zuj5rgvMyxvSDa','AxnwAxnPyMXL','y2fSBhngB3i','y3r4','C2nVCgu','zwXLBwvUDeHPBNrcEvjLzG','ywn0AxzLugfNzq','zNjVBq','ndK3mZbvtuvHzvK','y29UBMvJDfnOyxjLza','yMvOyxzPB3i','rMfRzunVBNrLEhq','ywn0AxzLswr4','ntq2y1bhtvvK','zgvSzxrL','BMv3q29UDgv4DcbJywXSzwqGyMvMB3jLigXHDw5JAcGP','mZqYnZLuqKDLDuS','pgrPDJ48l2rPDJ4','y2XVC2u','y29VA2LLu3rHDgu','C2vSzwn0t3b0Aw9U','rhjPDMvYrxjYB3i','A2LUza','Aw5PDgLHBfvYBa','yxr0CMLIDxrLC0j5rgvMyxvSDa','y29UC29SzuvUDhjPzxm','yxr0ywnOrxHPC3rPBMCGBM90ihn1ChbVCNrLzcbIEsbgywTLv2vIrhjPDMvY','Bg9JywXtDg9YywDL','CMvM','mJeWmtG1BuHpBuTn','y29UBMvJDfnOyxjLzcbUB3qGC3vWCg9YDgvKigj5iezHA2vxzwjeCML2zxi','y2fSBhm','y3vYCMvUDfvYBa','iJ48l2rPDJ4','DxbSB2fKrMLSzq','D2fPDezVCG','mJu4oda4sgrHzKLc','CMvJB3jK','y3jLyxrLuMvJB3jKzxi','C2nYzwvUC2HVDa','BMv3ugfNzuXPC3rLBMvYCW','zw50zxjgCMfTzsbJywXSzwqGD2L0AcbLBxb0EsbSB2nHDg9Y','ChvZAa','Bwv0Ag9K','y2HLy2S','C2nYzwvUC2HVDevSzw1LBNq','zxzHBhvHDgvpBKXVy2f0B3i','C2v0qwn0AxzLugfNzq','z2v0q29VA2LL','Bgf1BMnO','B3v0zxjive1m','zxzHBhvHDgu','zMfRzs1WBMC','z2v0qxr0CMLIDxrL','B25bzNrLCKnSAwnR','Aw5WDxrwywX1zq','Aw5UzxjuzxH0qNLezwzHDwX0','CMvJB3jKzxi','Dgv4DenVBNrLBNq','ndGYowX1s0zXqq','mZaWmJjzC1v4wLu','zw50zxjgCMfTzq','zxHPDezYyw1LignHBgXLzcb3AxrOig5VigzYyw1Lig9UihrOzsbZDgfJAW','zMfRzsb0AxrSzq','y2XPy2S','nJb3uKLRyvq','zhjHz0fUzerYB3a','DhLWzq','Bg9JywXtDg9YywDLu3rHDgu','BMv3q29UDgv4Da','zg91yMXLq2XPy2S','Ag92zxi','CMvSB2fK','BMv0D29YA0vUDhjPzxm','CgfNzuXPC3q','zxHPDezYyw1L','y2XVC2vgywTLugfNzq','Bwf5yMvuAhjVDW','Aw5ZCgvJDevSzw1LBNq','zhjPDMvY','CgfNzsbPBMrLEcbVDxqGB2yGCMfUz2u','lNbHz2u','Dgv4DenVBNrLBNrcEurLzMf1Bhq','C2nYB2XSsw50B1zPzxC','nJq5nZu1sffbrNbj','zNjHBwvtDgfJAW','C2v0tg9JywXtDg9YywDL','C3bSAwnL','AxneAxnHyMXLza','y291BNq','C2nYzwvUC2HVDej5DgvZ','ywjVDxq6yMXHBMS','Cg9W','BgvUz3rO','zMLSDgvY','nJa5mte2nhrWuNrSzG','C2f2zvn0B3jHz2vtDgf0zq','rMfRzvbHz2u','pgrPDIbKyxrHlxvUB3rLC3qTCMvMpsi','yxr0ywnOrxHPC3rPBMC','zw1PDezHA2vqB3b1Ca','AxneAxnHyMXLzej5rgvMyxvSDa','y2XPCgjVyxjKugfZDgu','Bgf1BMnOzwq','D2fPDezVCLrLEhq','zxjYB3jpBK5LEhrby3rPB24','Dw5JAgvJAW','Aw5UzxjuzxH0','z2v0tg9JywXtDg9YywDL','y2HLy2TLzfn0yxrLqNLezwzHDwX0','y29UDgv4Dhm','z29gB3j3yxjK'];_0x291e=function(){return _0x38c7c4;};return _0x291e();}import{UnotestError}from'@unotest/core';var DriverError=class extends UnotestError{static{__name(this,_0xeb371e(0x9a));}},LocatorError=class extends UnotestError{static{__name(this,'LocatorError');}};function createRecorder(){const _0x5a5b7c={_0x1241bf:0xaf},_0x9a35c2=_0xeb371e,_0x3fee35=[];let _0x482524=0x0;return{'push':__name(_0x5a5786=>_0x3fee35[_0x9a35c2(0xaf)]({..._0x5a5786,'seq':_0x482524++}),_0x9a35c2(_0x5a5b7c._0x1241bf)),'calls':__name(()=>_0x3fee35,_0x9a35c2(0xa4))};}__name(createRecorder,_0xeb371e(0xab));var FakePage=class{constructor(_0x48f7a2,_0x5d0fe5,_0xa4e6e5,_0x1a5a37){const _0x35d47c={_0x92e137:0xbe},_0x263e56=_0xeb371e;this[_0x263e56(_0x35d47c._0x92e137)]=_0x48f7a2,this[_0x263e56(0x8f)]=_0x5d0fe5,this[_0x263e56(0x89)]=_0xa4e6e5,this['currentUrl']=_0x1a5a37;}['recorder'];[_0xeb371e(0x8f)];['scope'];static{__name(this,_0xeb371e(0xe6));}['currentUrl'];[_0xeb371e(0xbb)];[_0xeb371e(0xaa)](_0x18f44c,_0x1505ea){const _0x2a59fc={_0x3cf297:0x89},_0x1e3458=_0xeb371e;this[_0x1e3458(0xbe)][_0x1e3458(0xaf)]({'scope':this[_0x1e3458(_0x2a59fc._0x3cf297)],'method':_0x18f44c,'args':_0x1505ea});}[_0xeb371e(0xd2)](){const _0x4cab15={_0x565260:0x8f,_0x8c58d5:0x72,_0x3f8a59:0x8f},_0x449e9c=_0xeb371e;if(this[_0x449e9c(_0x4cab15._0x565260)][_0x449e9c(_0x4cab15._0x8c58d5)]){const _0x3ba61d=this[_0x449e9c(_0x4cab15._0x3f8a59)]['errorOnNextAction'];this['behavior'][_0x449e9c(_0x4cab15._0x8c58d5)]=void 0x0;throw _0x3ba61d;}}['url'](){const _0x455a58={_0x3f2d48:0xa5},_0x47572a=_0xeb371e;return this[_0x47572a(_0x455a58._0x3f2d48)];}async['title'](){const _0x7bd92b=_0xeb371e;return this['record']('title',[]),_0x7bd92b(0xc4);}async[_0xeb371e(0xc5)](_0x3cb7e9,_0x37e85d){const _0x19527d={_0x46d339:0xaa},_0x14e271=_0xeb371e;this[_0x14e271(_0x19527d._0x46d339)](_0x14e271(0xc5),[_0x3cb7e9,_0x37e85d]),this[_0x14e271(0xd2)](),this['onAfterClick']?.();}async[_0xeb371e(0xcb)](_0x5ba6c4,_0x21a901){const _0x1f059d={_0x6ff9d6:0xcb},_0x246c0e=_0xeb371e;this['record'](_0x246c0e(_0x1f059d._0x6ff9d6),[_0x5ba6c4,_0x21a901]),this['maybeThrow']();}async['fill'](_0x94970,_0x14ef52,_0x1b05f2){const _0xce030f=_0xeb371e;this['record']('fill',[_0x94970,_0x14ef52,_0x1b05f2]),this[_0xce030f(0xd2)]();}async[_0xeb371e(0x81)](_0x45484c,_0xaba670,_0x5cc686){const _0x1f1c55={_0x40ef5c:0xaa,_0x2b65ea:0x81},_0x311d44=_0xeb371e;this[_0x311d44(_0x1f1c55._0x40ef5c)](_0x311d44(_0x1f1c55._0x2b65ea),[_0x45484c,_0xaba670,_0x5cc686]),this[_0x311d44(0xd2)]();}async[_0xeb371e(0xb1)](_0x5916b4,_0x34f874){const _0x39c3d3={_0x549dae:0xaa,_0x3d9581:0xb1},_0xc60765=_0xeb371e;this[_0xc60765(_0x39c3d3._0x549dae)](_0xc60765(_0x39c3d3._0x3d9581),[_0x5916b4,_0x34f874]),this['maybeThrow']();}async[_0xeb371e(0x73)](_0x22c30b,_0x5f43cf){const _0x49401c={_0x4fb9db:0x73},_0x5abb75=_0xeb371e;this['record'](_0x5abb75(_0x49401c._0x4fb9db),[_0x22c30b,_0x5f43cf]),this[_0x5abb75(0xd2)]();}async['selectOption'](_0x3fd549,_0x1dd747,_0x357d41){const _0x5c9c06={_0x36b268:0xd2},_0x2e17fc=_0xeb371e;this['record'](_0x2e17fc(0x99),[_0x3fd549,_0x1dd747,_0x357d41]),this[_0x2e17fc(_0x5c9c06._0x36b268)]();}async['hover'](_0x531ee8,_0x24bc30){const _0x1d2de8={_0x315c46:0xaa},_0x57ffa1=_0xeb371e;this[_0x57ffa1(_0x1d2de8._0x315c46)](_0x57ffa1(0xcc),[_0x531ee8,_0x24bc30]),this['maybeThrow']();}async['scrollIntoView'](_0x33d06e){const _0x48f507={_0x33acca:0xaa,_0x4275bb:0xd2},_0x3f1159=_0xeb371e;this[_0x3f1159(_0x48f507._0x33acca)](_0x3f1159(0xd8),[_0x33d06e]),this[_0x3f1159(_0x48f507._0x4275bb)]();}async[_0xeb371e(0xc7)](_0x17f1ea,_0x27ceb0,_0xc31a8b){const _0x55f913={_0x115d1f:0xaa,_0x5a7a7c:0xc7},_0x2471ab=_0xeb371e;this[_0x2471ab(_0x55f913._0x115d1f)](_0x2471ab(_0x55f913._0x5a7a7c),[_0x17f1ea,_0x27ceb0,_0xc31a8b]),this[_0x2471ab(0xd2)]();}async['uploadFile'](_0x3c8f55,_0x14bad0){const _0x3f9dbd={_0x268d8e:0xd2},_0x32208b=_0xeb371e;this[_0x32208b(0xaa)](_0x32208b(0xa7),[_0x3c8f55,_0x14bad0]),this[_0x32208b(_0x3f9dbd._0x268d8e)]();}async[_0xeb371e(0x6f)](_0x1e886e,_0x3860c2){const _0x70374f={_0x10e7e1:0x6f},_0x9ffcac=_0xeb371e;this['record'](_0x9ffcac(_0x70374f._0x10e7e1),[_0x1e886e,_0x3860c2]),this[_0x9ffcac(0xd2)]();}async[_0xeb371e(0xde)](_0x39c1e5){const _0x1f09c0={_0x5a50db:0xaa,_0x4889b1:0x8f},_0x79d00c=_0xeb371e;return this[_0x79d00c(_0x1f09c0._0x5a50db)](_0x79d00c(0xde),[_0x39c1e5]),this[_0x79d00c(_0x1f09c0._0x4889b1)]['countByDefault']??0x1;}async[_0xeb371e(0xbf)](_0x1cb7f7){const _0x16b2f1={_0x1fd120:0xbf,_0x27f15e:0x8f},_0x5e3f84=_0xeb371e;return this[_0x5e3f84(0xaa)](_0x5e3f84(_0x16b2f1._0x1fd120),[_0x1cb7f7]),this[_0x5e3f84(_0x16b2f1._0x27f15e)]['textContentByDefault']??'';}async[_0xeb371e(0x74)](_0x2db3e0){const _0x1402cf={_0x223a3f:0x74},_0x546184=_0xeb371e;return this['record'](_0x546184(_0x1402cf._0x223a3f),[_0x2db3e0]),this['behavior'][_0x546184(0xbd)]??this[_0x546184(0x8f)][_0x546184(0xd7)]??'';}async[_0xeb371e(0xbc)](_0x8195b3){const _0x5c2fed={_0x237c62:0xbc},_0x579598=_0xeb371e;return this[_0x579598(0xaa)](_0x579598(_0x5c2fed._0x237c62),[_0x8195b3]),this[_0x579598(0x8f)][_0x579598(0x85)]??'';}async['checkedState'](_0x178921){const _0x3f16fe={_0x467fef:0x8f,_0x181460:0x76},_0x566cbe=_0xeb371e;return this['record']('checkedState',[_0x178921]),this[_0x566cbe(_0x3f16fe._0x467fef)][_0x566cbe(_0x3f16fe._0x181460)]??null;}async[_0xeb371e(0x86)](_0x2b3c06){const _0x49a894={_0x588ac3:0x86},_0x3bd8cc=_0xeb371e;return this[_0x3bd8cc(0xaa)](_0x3bd8cc(_0x49a894._0x588ac3),[_0x2b3c06]),this[_0x3bd8cc(0x8f)]['isVisibleByDefault']??!![];}async[_0xeb371e(0xdd)](_0x5d3c86){const _0x21fca2={_0x18a236:0xaa},_0x2f6379=_0xeb371e;return this[_0x2f6379(_0x21fca2._0x18a236)](_0x2f6379(0xdd),[_0x5d3c86]),this['behavior'][_0x2f6379(0xea)]??![];}async['getAttribute'](_0x289b8f,_0x4a7253){const _0x552550={_0x3c3aad:0xaa},_0x401b6=_0xeb371e;return this[_0x401b6(_0x552550._0x3c3aad)](_0x401b6(0xba),[_0x289b8f,_0x4a7253]),this['behavior'][_0x401b6(0x9d)]?.[_0x4a7253]??null;}async['waitFor'](_0x3a3658,_0x1ca9aa){const _0x4584cf={_0x1ffc3b:0xa8},_0x4e034c=_0xeb371e;this[_0x4e034c(0xaa)](_0x4e034c(_0x4584cf._0x1ffc3b),[_0x3a3658,_0x1ca9aa]);}async['waitForUrl'](_0x3e4613,_0x12e43b){this['record']('waitForUrl',[_0x3e4613,_0x12e43b]);}async[_0xeb371e(0x71)](_0x5b39fe,_0x1731a7){const _0x27c885=_0xeb371e;this[_0x27c885(0xaa)]('waitForText',[_0x5b39fe,_0x1731a7]);}async[_0xeb371e(0x7a)](_0x548be4){const _0xf8e2b0={_0x1453d8:0x7a},_0x2f6fc3=_0xeb371e;this['record'](_0x2f6fc3(_0xf8e2b0._0x1453d8),[_0x548be4]);}async[_0xeb371e(0x84)](_0x11a43b,_0x1f9246){const _0x46f419=_0xeb371e;this['record'](_0x46f419(0x84),[_0x11a43b,_0x1f9246]);}async['goto'](_0x5442b4,_0x2c0ab8){const _0x17c272={_0x1600e9:0xaa,_0x15a117:0xa5},_0x50a2f5=_0xeb371e;this[_0x50a2f5(_0x17c272._0x1600e9)]('goto',[_0x5442b4,_0x2c0ab8]),this[_0x50a2f5(_0x17c272._0x15a117)]=_0x5442b4;}async[_0xeb371e(0xcd)](_0x474bc2){const _0x4f6d75=_0xeb371e;this['record'](_0x4f6d75(0xcd),[_0x474bc2]);}async[_0xeb371e(0x7f)](_0x416866){this['record']('goBack',[_0x416866]);}async[_0xeb371e(0x78)](_0x513bec){const _0x566ffe=_0xeb371e;this[_0x566ffe(0xaa)](_0x566ffe(0x78),[_0x513bec]);}async[_0xeb371e(0xb8)](_0x7452ca){const _0x56935b={_0x505c3d:0x8f},_0x1387a5=_0xeb371e;return this[_0x1387a5(0xaa)](_0x1387a5(0xb8),[_0x7452ca]),this[_0x1387a5(_0x56935b._0x505c3d)]['evaluateResult'];}async[_0xeb371e(0xb3)](_0x35d2bc,_0x52a8b3){const _0x141068={_0x12eab7:0xb3},_0x159d67=_0xeb371e;return this['record'](_0x159d67(_0x141068._0x12eab7),[_0x35d2bc,_0x52a8b3]),void 0x0;}async[_0xeb371e(0xd3)](_0x18b4a0){const _0x5ae42f={_0x252690:0x9b,_0x4f1d35:0xa1},_0x10ffca=_0xeb371e;this[_0x10ffca(0xaa)](_0x10ffca(0xd3),[_0x18b4a0]);if(_0x18b4a0['steps'][_0x10ffca(0xe2)]!==0x1||_0x18b4a0['steps'][0x0][_0x10ffca(_0x5ae42f._0x252690)]!==_0x10ffca(0xa1))return null;const _0x164cb3=_0x18b4a0['steps'][0x0][_0x10ffca(_0x5ae42f._0x4f1d35)],_0x14287c=this['behavior'][_0x10ffca(0x8a)]?.[_0x164cb3];return _0x14287c??null;}async[_0xeb371e(0xac)](_0x65b93f){const _0x127da2={_0x2c3b4a:0xac,_0x299656:0xc8},_0xbf5836=_0xeb371e;return this['record'](_0xbf5836(_0x127da2._0x2c3b4a),[_0x65b93f]),this[_0xbf5836(0xdf)](_0x65b93f?.[_0xbf5836(_0x127da2._0x299656)]);}async[_0xeb371e(0xb2)](_0xa976cd,_0xa1dbc8){const _0x1faedd={_0x58a84d:0xaa,_0x443549:0xb2,_0x4360a5:0xc8},_0x273dcd=_0xeb371e;return this[_0x273dcd(_0x1faedd._0x58a84d)](_0x273dcd(_0x1faedd._0x443549),[_0xa976cd,_0xa1dbc8]),this[_0x273dcd(0xdf)](_0xa1dbc8?.[_0x273dcd(_0x1faedd._0x4360a5)]);}['screenshotBytes'](_0x3ae619){const _0xcb565e=_0xeb371e,_0x48ae4f=this[_0xcb565e(0x8f)][_0xcb565e(0xdf)];if(_0x48ae4f===void 0x0)return Buffer[_0xcb565e(0x8c)](_0xcb565e(0xb9));return typeof _0x48ae4f==='function'?_0x48ae4f(_0x3ae619):_0x48ae4f;}async[_0xeb371e(0xb7)](_0x3e4c47){const _0x48ad9c={_0x47b939:0xaa,_0x514620:0xb7,_0x21eac7:0x7c,_0x25586b:0x8f,_0x2cde9a:0xe7,_0x1a4531:0xa6},_0x422b30=_0xeb371e;this[_0x422b30(_0x48ad9c._0x47b939)](_0x422b30(_0x48ad9c._0x514620),[_0x3e4c47]);if(_0x3e4c47[_0x422b30(_0x48ad9c._0x21eac7)]['length']===0x1&&_0x3e4c47[_0x422b30(_0x48ad9c._0x21eac7)][0x0][_0x422b30(0x9b)]===_0x422b30(0xa1)){const _0x4d7260=_0x3e4c47['steps'][0x0][_0x422b30(0xa1)];return this[_0x422b30(_0x48ad9c._0x25586b)]['outerHtmlByRef']?.[_0x4d7260]??_0x422b30(_0x48ad9c._0x2cde9a)+_0x4d7260+_0x422b30(_0x48ad9c._0x1a4531);}return _0x422b30(0x96);}},FakeContext=class{constructor(_0x7b993a,_0x17f830,_0xab0a0c){const _0x439afb={_0x37ed4d:0x9c,_0x157837:0x7b,_0x106f75:0xa0},_0x2927b6={_0x28db08:0xe9,_0x1668f4:0x7b},_0x4c0b35=_0xeb371e;this['recorder']=_0x7b993a,this[_0x4c0b35(0x8f)]=_0x17f830,this[_0x4c0b35(0x89)]=_0xab0a0c;const _0x12ff9e=new FakePage(_0x7b993a,_0x17f830,_0xab0a0c+'.page0',_0x17f830[_0x4c0b35(_0x439afb._0x37ed4d)]??_0x4c0b35(0xe0));_0x17f830[_0x4c0b35(_0x439afb._0x157837)]&&(_0x12ff9e['onAfterClick']=()=>{const _0x5c9815=_0x4c0b35;this[_0x5c9815(_0x2927b6._0x28db08)](_0x17f830[_0x5c9815(_0x2927b6._0x1668f4)]);}),this[_0x4c0b35(0xcf)]=[_0x12ff9e],this[_0x4c0b35(0xc9)]={..._0x17f830[_0x4c0b35(_0x439afb._0x106f75)]??{}},this[_0x4c0b35(0x98)]={..._0x17f830[_0x4c0b35(0x79)]??{}};}['recorder'];[_0xeb371e(0x8f)];[_0xeb371e(0x89)];static{__name(this,_0xeb371e(0x90));}[_0xeb371e(0xcf)];[_0xeb371e(0x91)]=0x0;[_0xeb371e(0xda)]=[];[_0xeb371e(0xc9)];[_0xeb371e(0x98)];['newPageListeners']=new Set();['record'](_0x2b6643,_0x6af09f){const _0x5a2d93={_0x37b648:0x89},_0x53f2d5=_0xeb371e;this[_0x53f2d5(0xbe)][_0x53f2d5(0xaf)]({'scope':this[_0x53f2d5(_0x5a2d93._0x37b648)],'method':_0x2b6643,'args':_0x6af09f});}['pages'](){const _0x4f3839={_0xfe5ea9:0xcf},_0x33c795=_0xeb371e;return this[_0x33c795(_0x4f3839._0xfe5ea9)];}[_0xeb371e(0x8b)](){const _0x3c4633={_0x19e020:0x7e,_0x1e93f8:0x91},_0x1d1a33=_0xeb371e,_0x21a41f=this['pageList'][this['activeIdx']];if(!_0x21a41f)throw new DriverError(_0x1d1a33(_0x3c4633._0x19e020),{'activeIdx':this[_0x1d1a33(_0x3c4633._0x1e93f8)]});return _0x21a41f;}['consoleEntries'](){const _0x3d8221={_0x29fd01:0x8f,_0x1289f9:0x9e},_0x5168a5=_0xeb371e;return this[_0x5168a5(_0x3d8221._0x29fd01)][_0x5168a5(_0x3d8221._0x1289f9)]??[];}[_0xeb371e(0xce)](){const _0x435858={_0xaa8716:0xce},_0x1ba94e=_0xeb371e;return this['behavior'][_0x1ba94e(_0x435858._0xaa8716)]??[];}async[_0xeb371e(0xb4)](_0x31a406){const _0x16c1d8={_0x49edec:0xda},_0x2c0091=_0xeb371e;this[_0x2c0091(0xaa)](_0x2c0091(0xb4),[_0x31a406]);if(_0x31a406<0x0||_0x31a406>=this['pageList'][_0x2c0091(0xe2)])throw new DriverError('page\x20index\x20out\x20of\x20range',{'index':_0x31a406,'available':this[_0x2c0091(0xcf)]['length']});this[_0x2c0091(0x91)]=_0x31a406,this[_0x2c0091(_0x16c1d8._0x49edec)]['length']=0x0;}['onNewPage'](_0x36e159){const _0x3d615a=_0xeb371e;return subscribe(this[_0x3d615a(0xad)],_0x36e159);}['emitFakePopup'](_0x38495b){const _0x2124a3={_0x407c7c:0xe2,_0x494744:0xaf,_0x350269:0xcf},_0x5d7f75=_0xeb371e,_0x29e286=this['scope']+_0x5d7f75(0xd6)+this['pageList'][_0x5d7f75(_0x2124a3._0x407c7c)],_0x2cadab=new FakePage(this[_0x5d7f75(0xbe)],this['behavior'],_0x29e286,_0x38495b);this['pageList'][_0x5d7f75(_0x2124a3._0x494744)](_0x2cadab);const _0x499aa7=this[_0x5d7f75(_0x2124a3._0x350269)]['length']-0x1;for(const _0x16808a of this['newPageListeners']){try{_0x16808a({'index':_0x499aa7,'url':_0x38495b});}catch{}}return _0x499aa7;}[_0xeb371e(0xd1)](_0x56a2e1){const _0x10d26d={_0x2c71bc:0xcf,_0xfcde9c:0xd5,_0x2de1f4:0xe2,_0x505462:0xcf,_0x20fe9d:0xdc},_0x5202e5=_0xeb371e;if(_0x56a2e1<0x0||_0x56a2e1>=this[_0x5202e5(_0x10d26d._0x2c71bc)][_0x5202e5(0xe2)])throw new DriverError(_0x5202e5(_0x10d26d._0xfcde9c),{'index':_0x56a2e1,'available':this['pageList'][_0x5202e5(_0x10d26d._0x2de1f4)]});this[_0x5202e5(_0x10d26d._0x505462)][_0x5202e5(_0x10d26d._0x20fe9d)](_0x56a2e1,0x1);}async[_0xeb371e(0xc2)](_0x71cff0){const _0x572c49={_0x391e9a:0xaa,_0x23d572:0xc2,_0x160f26:0xae,_0x564484:0xaf},_0x2fd9c2=_0xeb371e;this[_0x2fd9c2(_0x572c49._0x391e9a)](_0x2fd9c2(_0x572c49._0x23d572),[_0x71cff0]);if(!_0x71cff0['steps'][_0x2fd9c2(0xe2)])throw new LocatorError(_0x2fd9c2(_0x572c49._0x160f26),{'locator':_0x71cff0});this['frameStack'][_0x2fd9c2(_0x572c49._0x564484)](_0x71cff0);}async[_0xeb371e(0xd0)](){const _0x25866a={_0x5e3e68:0xaa,_0x26ab32:0xd0,_0x4678ad:0xda,_0x190697:0xe2,_0x31df7c:0xc3},_0x2dc0f7=_0xeb371e;this[_0x2dc0f7(_0x25866a._0x5e3e68)](_0x2dc0f7(_0x25866a._0x26ab32),[]);if(this[_0x2dc0f7(_0x25866a._0x4678ad)][_0x2dc0f7(_0x25866a._0x190697)]===0x0)throw new DriverError(_0x2dc0f7(_0x25866a._0x31df7c),{});this[_0x2dc0f7(0xda)][_0x2dc0f7(0xe1)]();}async[_0xeb371e(0xdb)](_0x11279e,_0x321d59){const _0x409a46={_0xdd481b:0xaa,_0x20189b:0xdb},_0x4d9e96=_0xeb371e;this[_0x4d9e96(_0x409a46._0xdd481b)](_0x4d9e96(_0x409a46._0x20189b),[_0x11279e,_0x321d59]),this['localStorageState'][_0x11279e]=_0x321d59;}async[_0xeb371e(0x75)](_0x5ce2d0){const _0x32a810={_0x491a7d:0xc9},_0x3cd0d9=_0xeb371e;return this['record']('getLocalStorage',[_0x5ce2d0]),this[_0x3cd0d9(_0x32a810._0x491a7d)][_0x5ce2d0]??null;}async['setCookie'](_0x26b21d,_0x1df803,_0x22d70a){const _0xad8337={_0x27b97d:0xaa,_0x436ce7:0x98},_0x55f30f=_0xeb371e;this[_0x55f30f(_0xad8337._0x27b97d)]('setCookie',[_0x26b21d,_0x1df803,_0x22d70a]),this[_0x55f30f(_0xad8337._0x436ce7)][_0x26b21d]=_0x1df803;}async['getCookie'](_0x10d291){const _0x5af258={_0x407e6c:0xaa,_0x3f4013:0x98},_0x4f3cd3=_0xeb371e;return this[_0x4f3cd3(_0x5af258._0x407e6c)](_0x4f3cd3(0xb5),[_0x10d291]),this[_0x4f3cd3(_0x5af258._0x3f4013)][_0x10d291]??null;}async[_0xeb371e(0xe5)](_0xcd59c){const _0x4eab6c=_0xeb371e;this[_0x4eab6c(0xaa)](_0x4eab6c(0xe5),[_0xcd59c]);}async[_0xeb371e(0xb8)](_0x50f86c){const _0x12e487=_0xeb371e;return this[_0x12e487(0xaa)]('evaluate',[_0x50f86c]),void 0x0;}async[_0xeb371e(0x97)](){const _0x1e34f2=_0xeb371e;this[_0x1e34f2(0xaa)]('close',[]);}['frameDepth'](){const _0x888fa5={_0x1a9e60:0xe2},_0x44dfcf=_0xeb371e;return this[_0x44dfcf(0xda)][_0x44dfcf(_0x888fa5._0x1a9e60)];}},FakeWebDriver=class{constructor(_0xa4c90a={}){const _0x1180bd=_0xeb371e;this[_0x1180bd(0x8f)]=_0xa4c90a,this[_0x1180bd(0xbe)]=createRecorder();}[_0xeb371e(0x8f)];static{__name(this,_0xeb371e(0x7d));}[_0xeb371e(0x70)]=![];[_0xeb371e(0xbe)];['contexts']=[];async[_0xeb371e(0xb6)](_0x4d8019){const _0x214f68={_0x2b8911:0xb6,_0x192258:0x70},_0x220fab=_0xeb371e;this[_0x220fab(0xbe)][_0x220fab(0xaf)]({'scope':'driver','method':_0x220fab(_0x214f68._0x2b8911),'args':[_0x4d8019]}),this[_0x220fab(_0x214f68._0x192258)]=!![];}async[_0xeb371e(0xca)](_0x4810da){const _0x14164c={_0x26a739:0xbe,_0x5eadfc:0xd4,_0xfc1459:0xbe,_0x53ea15:0x88,_0x371b08:0x77,_0x1f039f:0xe2,_0xc32d57:0x77},_0x4f750a=_0xeb371e;this[_0x4f750a(_0x14164c._0x26a739)][_0x4f750a(0xaf)]({'scope':_0x4f750a(_0x14164c._0x5eadfc),'method':_0x4f750a(0xca),'args':[_0x4810da]});if(!this['launched'])throw new DriverError(_0x4f750a(0x94),{});const _0x4255a2=new FakeContext(this[_0x4f750a(_0x14164c._0xfc1459)],this[_0x4f750a(0x8f)],_0x4f750a(_0x14164c._0x53ea15)+this[_0x4f750a(_0x14164c._0x371b08)][_0x4f750a(_0x14164c._0x1f039f)]);return this[_0x4f750a(_0x14164c._0xc32d57)]['push'](_0x4255a2),_0x4255a2;}async[_0xeb371e(0x97)](){const _0x26c100={_0x5caeb9:0xd4},_0x52e274=_0xeb371e;this[_0x52e274(0xbe)]['push']({'scope':_0x52e274(_0x26c100._0x5caeb9),'method':'close','args':[]}),this['launched']=![];}[_0xeb371e(0x80)](){return void 0x0;}async[_0xeb371e(0x8e)](){const _0x1d6178=_0xeb371e;throw new DriverError(_0x1d6178(0xa3),{});}[_0xeb371e(0xe8)](_0x1ed45f){const _0x1ccc28=_0xeb371e;throw new DriverError(_0x1ccc28(0x9f),{});}[_0xeb371e(0xa4)](){const _0x146a5a=_0xeb371e;return this['recorder'][_0x146a5a(0xa4)]();}[_0xeb371e(0x87)](_0x1a7f57){const _0x55ccfa={_0x2de913:0xe3},_0x1f5609=_0xeb371e;return this['recorder']['calls']()[_0x1f5609(_0x55ccfa._0x2de913)](_0x2b40fd=>_0x2b40fd[_0x1f5609(0xb0)]===_0x1a7f57);}};export{FakeWebDriver};
|
|
1
|
+
function _0x270b(_0xcec87e,_0x436d56){_0xcec87e=_0xcec87e-0x18f;const _0x182f06=_0x182f();let _0x270bfa=_0x182f06[_0xcec87e];if(_0x270b['QHqkUi']===undefined){var _0xeae874=function(_0x278cbe){const _0x590767='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3812e5='',_0x444a60='';for(let _0xfe7289=0x0,_0x1daf50,_0x4e1ade,_0x1f8ccb=0x0;_0x4e1ade=_0x278cbe['charAt'](_0x1f8ccb++);~_0x4e1ade&&(_0x1daf50=_0xfe7289%0x4?_0x1daf50*0x40+_0x4e1ade:_0x4e1ade,_0xfe7289++%0x4)?_0x3812e5+=String['fromCharCode'](0xff&_0x1daf50>>(-0x2*_0xfe7289&0x6)):0x0){_0x4e1ade=_0x590767['indexOf'](_0x4e1ade);}for(let _0x539e05=0x0,_0x20b1ef=_0x3812e5['length'];_0x539e05<_0x20b1ef;_0x539e05++){_0x444a60+='%'+('00'+_0x3812e5['charCodeAt'](_0x539e05)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x444a60);};_0x270b['QOmeZq']=_0xeae874,_0x270b['OcTQhQ']={},_0x270b['QHqkUi']=!![];}const _0x55aff7=_0x182f06[0x0],_0x2f9ef9=_0xcec87e+_0x55aff7,_0x41686f=_0x270b['OcTQhQ'][_0x2f9ef9];return!_0x41686f?(_0x270bfa=_0x270b['QOmeZq'](_0x270bfa),_0x270b['OcTQhQ'][_0x2f9ef9]=_0x270bfa):_0x270bfa=_0x41686f,_0x270bfa;}const _0x2db01d=_0x270b;(function(_0x51b598,_0x5bd198){const _0x5b4d6a={_0x2a3eab:0x1a7,_0x3f395c:0x1f2,_0x4ed4bb:0x1be,_0x1af903:0x190,_0xf09f55:0x1a2},_0x32f4d2=_0x270b,_0xc9d200=_0x51b598();while(!![]){try{const _0x3f9628=-parseInt(_0x32f4d2(0x20c))/0x1*(-parseInt(_0x32f4d2(_0x5b4d6a._0x2a3eab))/0x2)+-parseInt(_0x32f4d2(0x1ce))/0x3*(-parseInt(_0x32f4d2(0x1d2))/0x4)+-parseInt(_0x32f4d2(0x1e0))/0x5+-parseInt(_0x32f4d2(_0x5b4d6a._0x3f395c))/0x6*(-parseInt(_0x32f4d2(_0x5b4d6a._0x4ed4bb))/0x7)+parseInt(_0x32f4d2(0x1ec))/0x8+parseInt(_0x32f4d2(_0x5b4d6a._0x1af903))/0x9+-parseInt(_0x32f4d2(_0x5b4d6a._0xf09f55))/0xa;if(_0x3f9628===_0x5bd198)break;else _0xc9d200['push'](_0xc9d200['shift']());}catch(_0x355051){_0xc9d200['push'](_0xc9d200['shift']());}}}(_0x182f,0x3e8a9));var __defProp=Object[_0x2db01d(0x195)],__name=(_0x3812e5,_0x444a60)=>__defProp(_0x3812e5,_0x2db01d(0x20b),{'value':_0x444a60,'configurable':!![]});function _0x182f(){const _0x38faf6=['zMLSBa','D2fPDezVCK5HDMLNyxrPB24','zgvSzxrL','z2v0tg9JywXtDg9YywDL','Dgv4DenVBNrLBNrcEurLzMf1Bhq','zxzHBhvHDgvszxn1Bhq','y2XPy2S','mZm2ntGWoevoCwHwza','zhjPDMvY','z29cywnR','Bwf5yMvuAhjVDW','y29VA2LLu3rHDgu','C2vSzwn0t3b0Aw9U','mtj4yMfJCNa','Aw5WDxrwywX1zq','B25bzNrLCKnSAwnR','Aw5PDgLHBfvYBa','Aw5UzxjuzxH0qNLezwzHDwX0','z29gB3j3yxjK','iJ48l2rPDJ4','C2v0qwn0AxzLugfNzq','BMv3q29UDgv4Da','DgL0Bgu','zxHPDezYyw1LignHBgXLzcb3AxrOig5VigzYyw1Lig9UihrOzsbZDgfJAW','pgrPDIbKyxrHlxvUB3rLC3qTCMvMpsi','ywn0AxzLswr4','yxr0CMLIDxrLC0j5rgvMyxvSDa','ChjLC3m','Bg9JywXtDg9YywDL','lNbHz2u','yMvOyxzPB3i','y2XPCgjVyxjKugfZDgu','yxr0ywnOrxHPC3rPBMCGBM90ihn1ChbVCNrLzcbIEsbgywTLv2vIrhjPDMvY','BgvUz3rO','D2fPDezVCLrLEhq','rMfRzvbHz2u','zw1PDezHA2vqB3b1Ca','C2nYB2XSsw50B1zPzxC','BMfTzq','odK5odzfCvL6t1m','yxr0ywnOrxHPC3rPBMC','z290BW','Bgf1BMnOzwq','mJCXntKZmgjhzNr2qW','Aw5WDxrwywX1zuj5rgvMyxvSDa','y29VA2LLCW','z2v0qxr0CMLIDxrL','C2nYzwvUC2HVDa','zgvMAw5LuhjVCgvYDhK','Bg9JywXtDg9YywDLu3rHDgu','Cg9WDxbpBKnSAwnR','ChvZAa','y29UBMvJDfnOyxjLza','AxnwAxnPyMXL','zMfRzs1WBMC','y29UBMvJDfnOyxjLzcbUB3qGC3vWCg9YDgvKigj5iezHA2vxzwjeCML2zxi','y29UC29SzuvUDhjPzxm','BMv3ugfNzuXPC3rLBMvYCW','y3jLyxrLuMvJB3jKzxi','zxzHBhvHDgvpBKXVy2f0B3i','CgfNzuXPC3q','mtu0ndiXmZbms2v0rMS','C3vIC2nYAwjL','C2nVCgu','B3v0zxjiDg1SqNLszwy','lNbHz2uW','ofj4AKfWDG','zNjHBwvtDgfJAW','zMfRzsb0AxrSzq','z2v0q29VA2LL','zxjYB3jpBK5LEhrby3rPB24','pgrPDJ48l2rPDJ4','DhLWzq','C2nYzwvUC2HVDej5DgvZ','D2fPDezVCG','D2fPDezVCKXVywrtDgf0zq','y2XVC2u','Bwv0Ag9K','zg91yMXLq2XPy2S','tg9JyxrVCKvYCM9Y','y2HLy2TLzfn0yxrLqNLezwzHDwX0','Aw5ZCgvJDevSzw1LBNq','Dgv4DenVBNrLBNq','CMvJB3jK','y29UDgv4Dhm','zw50zxjgCMfTzq','zNvUy3rPB24','zxzHBhvHDgu','B3v0zxjive1m','mtCWmdi5m0f1v3fyqW','zhjHz0fUzerYB3a','zw50zxjgCMfTzsbJywXSzwqGD2L0AcbLBxb0EsbSB2nHDg9Y','y3vYCMvUDfvYBa','D3nfBMrWB2LUDa','Bgf1BMnO','rMfRzunVBNrLEhq','CgfNzxm','A2LUza','C3rLChm','y2fSBhngB3i','rMfRzvDLyKrYAxzLCG','C2v0q29VA2LL','DxbSB2fKrMLSzq','y2XVC2vgywTLugfNzq','y3r4','mtq1ndG3muPsqNrgDG','Dw5JAgvJAW','y291BNq','BMv0D29YA0vUDhjPzxm','nermEKXxAW','AxneAxnHyMXLza','CMvJB3jKzxi','B25ozxDqywDL','Aw5UzxjuzxH0','CMvSB2fK','Ag92zxi','BM8Gywn0AxzLihbHz2uGAw4Gy29UDgv4Da','CgfNzsbPBMrLEcbVDxqGB2yGCMfUz2u','CMvM','y2HLy2S','AxnwAxnPyMXLqNLezwzHDwX0','BMv3q29UDgv4DcbJywXSzwqGyMvMB3jLigXHDw5JAcGP','ywjVDxq6yMXHBMS','mti2nda2nwX2t0H2vG','D2fPDezVCLvYBa','ywn0AxzLugfNzq','y2fSBhm','zxHPDezYyw1L'];_0x182f=function(){return _0x38faf6;};return _0x182f();}function subscribe(_0xfe7289,_0x1daf50){const _0x5e8af3={_0x151b40:0x1e7};return _0xfe7289['add'](_0x1daf50),()=>{const _0x1ad85d=_0x270b;_0xfe7289[_0x1ad85d(_0x5e8af3._0x151b40)](_0x1daf50);};}__name(subscribe,_0x2db01d(0x1a3));import{UnotestError}from'@unotest/core';var DriverError=class extends UnotestError{static{__name(this,'DriverError');}},LocatorError=class extends UnotestError{static{__name(this,_0x2db01d(0x1b4));}};function createRecorder(){const _0x40a333={_0x5ca034:0x1e3},_0x204f7f=_0x2db01d,_0x4e1ade=[];let _0x1f8ccb=0x0;return{'push':__name(_0x539e05=>_0x4e1ade[_0x204f7f(0x198)]({..._0x539e05,'seq':_0x1f8ccb++}),'push'),'calls':__name(()=>_0x4e1ade,_0x204f7f(_0x40a333._0x5ca034))};}__name(createRecorder,_0x2db01d(0x19f));var FakePage=class{constructor(_0x20b1ef,_0x5b30f0,_0x22b6a3,_0x49dac7){const _0x1769af=_0x2db01d;this[_0x1769af(0x1d4)]=_0x20b1ef,this[_0x1769af(0x203)]=_0x5b30f0,this[_0x1769af(0x1a4)]=_0x22b6a3,this['currentUrl']=_0x49dac7;}[_0x2db01d(0x1d4)];['behavior'];[_0x2db01d(0x1a4)];static{__name(this,_0x2db01d(0x208));}[_0x2db01d(0x1c1)];[_0x2db01d(0x1f4)];[_0x2db01d(0x1b8)](_0x274f52,_0x3fcaa3){const _0x57dcb2={_0x3c0f5c:0x1d4,_0x3b8cb1:0x198},_0x3eea20=_0x2db01d;this[_0x3eea20(_0x57dcb2._0x3c0f5c)][_0x3eea20(_0x57dcb2._0x3b8cb1)]({'scope':this[_0x3eea20(0x1a4)],'method':_0x274f52,'args':_0x3fcaa3});}[_0x2db01d(0x1ef)](){const _0x25be34={_0x3fd481:0x1ab},_0x3773d4=_0x2db01d;if(this[_0x3773d4(0x203)][_0x3773d4(_0x25be34._0x3fd481)]){const _0x3547c5=this[_0x3773d4(0x203)][_0x3773d4(_0x25be34._0x3fd481)];this['behavior']['errorOnNextAction']=void 0x0;throw _0x3547c5;}}['url'](){const _0x3971c9=_0x2db01d;return this[_0x3971c9(0x1c1)];}async['title'](){const _0x45b82f={_0x41df3c:0x1fb,_0x25672b:0x1a9},_0x4162b6=_0x2db01d;return this[_0x4162b6(0x1b8)](_0x4162b6(_0x45b82f._0x41df3c),[]),_0x4162b6(_0x45b82f._0x25672b);}async[_0x2db01d(0x1eb)](_0x4d7d1e,_0x3af385){const _0x5ed5a5={_0x4cb928:0x1b8,_0x334f82:0x1eb},_0x1c67e6=_0x2db01d;this[_0x1c67e6(_0x5ed5a5._0x4cb928)](_0x1c67e6(_0x5ed5a5._0x334f82),[_0x4d7d1e,_0x3af385]),this[_0x1c67e6(0x1ef)](),this[_0x1c67e6(0x1f4)]?.();}async[_0x2db01d(0x1b3)](_0x193341,_0x3a51d6){const _0x313edd={_0x9544ba:0x1b3},_0x1583d4=_0x2db01d;this[_0x1583d4(0x1b8)](_0x1583d4(_0x313edd._0x9544ba),[_0x193341,_0x3a51d6]),this[_0x1583d4(0x1ef)]();}async[_0x2db01d(0x1e5)](_0x3e5b52,_0x510674,_0x2ac214){const _0x8bdbd6={_0x52ddaa:0x1b8,_0x41bfea:0x1ef},_0x32bff7=_0x2db01d;this[_0x32bff7(_0x8bdbd6._0x52ddaa)]('fill',[_0x3e5b52,_0x510674,_0x2ac214]),this[_0x32bff7(_0x8bdbd6._0x41bfea)]();}async[_0x2db01d(0x200)](_0x352c29,_0x51c5aa,_0x4eab7b){const _0xdaa25e=_0x2db01d;this['record'](_0xdaa25e(0x200),[_0x352c29,_0x51c5aa,_0x4eab7b]),this[_0xdaa25e(0x1ef)]();}async[_0x2db01d(0x1dc)](_0x59225b,_0x5624f6){const _0x5321b4=_0x2db01d;this[_0x5321b4(0x1b8)](_0x5321b4(0x1dc),[_0x59225b,_0x5624f6]),this[_0x5321b4(0x1ef)]();}async[_0x2db01d(0x1cf)](_0x4a6545,_0x52526a){const _0x3d425a={_0x5e87ae:0x1cf},_0x4b5182=_0x2db01d;this['record'](_0x4b5182(_0x3d425a._0x5e87ae),[_0x4a6545,_0x52526a]),this[_0x4b5182(0x1ef)]();}async[_0x2db01d(0x1f1)](_0xb1f341,_0x4692c5,_0x3ddd2e){const _0x185220={_0x3696b9:0x1ef},_0x2d006f=_0x2db01d;this[_0x2d006f(0x1b8)](_0x2d006f(0x1f1),[_0xb1f341,_0x4692c5,_0x3ddd2e]),this[_0x2d006f(_0x185220._0x3696b9)]();}async[_0x2db01d(0x1d8)](_0x2dc21a,_0x4c07db){const _0x20eabf={_0x27216d:0x1ef},_0x9f50e7=_0x2db01d;this[_0x9f50e7(0x1b8)]('hover',[_0x2dc21a,_0x4c07db]),this[_0x9f50e7(_0x20eabf._0x27216d)]();}async[_0x2db01d(0x20a)](_0x5be87e){const _0x1661ae=_0x2db01d;this[_0x1661ae(0x1b8)]('scrollIntoView',[_0x5be87e]),this[_0x1661ae(0x1ef)]();}async[_0x2db01d(0x1bf)](_0x2817da,_0x330a27,_0x1e2531){const _0x317a9d=_0x2db01d;this['record'](_0x317a9d(0x1bf),[_0x2817da,_0x330a27,_0x1e2531]),this[_0x317a9d(0x1ef)]();}async[_0x2db01d(0x1cb)](_0x35fb1b,_0x166d66){const _0x44730c={_0xa7ea83:0x1b8,_0xbc97a8:0x1cb},_0xe54936=_0x2db01d;this[_0xe54936(_0x44730c._0xa7ea83)](_0xe54936(_0x44730c._0xbc97a8),[_0x35fb1b,_0x166d66]),this[_0xe54936(0x1ef)]();}async['clipboardPaste'](_0x2e5f90,_0x1b0959){const _0x5edaee=_0x2db01d;this[_0x5edaee(0x1b8)](_0x5edaee(0x204),[_0x2e5f90,_0x1b0959]),this[_0x5edaee(0x1ef)]();}async[_0x2db01d(0x1d0)](_0x4a7d63){const _0x1ab594=_0x2db01d;return this[_0x1ab594(0x1b8)](_0x1ab594(0x1d0),[_0x4a7d63]),this['behavior']['countByDefault']??0x1;}async[_0x2db01d(0x1b7)](_0x11de74){const _0x5d2e6e={_0x84d4e0:0x1e9},_0x38ef61=_0x2db01d;return this[_0x38ef61(0x1b8)]('textContent',[_0x11de74]),this[_0x38ef61(0x203)][_0x38ef61(_0x5d2e6e._0x84d4e0)]??'';}async[_0x2db01d(0x1d6)](_0x3b385a){const _0x35604c={_0xc0fda5:0x1b8,_0x4303d4:0x1d6,_0x54a0f7:0x1f6,_0x4713ac:0x1e9},_0x97e297=_0x2db01d;return this[_0x97e297(_0x35604c._0xc0fda5)](_0x97e297(_0x35604c._0x4303d4),[_0x3b385a]),this['behavior'][_0x97e297(_0x35604c._0x54a0f7)]??this[_0x97e297(0x203)][_0x97e297(_0x35604c._0x4713ac)]??'';}async['inputValue'](_0x2b203b){const _0x2a90de={_0x4058ec:0x1b8},_0x464ea0=_0x2db01d;return this[_0x464ea0(_0x2a90de._0x4058ec)](_0x464ea0(0x1f3),[_0x2b203b]),this[_0x464ea0(0x203)][_0x464ea0(0x191)]??'';}async['checkedState'](_0x6912fc){const _0x46a184={_0x375c35:0x1b8,_0x2d9018:0x203},_0x46c71b=_0x2db01d;return this[_0x46c71b(_0x46a184._0x375c35)]('checkedState',[_0x6912fc]),this[_0x46c71b(_0x46a184._0x2d9018)][_0x46c71b(0x1b5)]??null;}async[_0x2db01d(0x19a)](_0x497344){const _0x2fb6d4={_0x21b55e:0x1b8,_0x1f20b4:0x19a,_0x406ecb:0x1dd},_0x7ffab2=_0x2db01d;return this[_0x7ffab2(_0x2fb6d4._0x21b55e)](_0x7ffab2(_0x2fb6d4._0x1f20b4),[_0x497344]),this[_0x7ffab2(0x203)][_0x7ffab2(_0x2fb6d4._0x406ecb)]??!![];}async[_0x2db01d(0x1d3)](_0x33a33d){const _0x527b6b=_0x2db01d;return this[_0x527b6b(0x1b8)](_0x527b6b(0x1d3),[_0x33a33d]),this[_0x527b6b(0x203)]['isDisabledByDefault']??![];}async[_0x2db01d(0x193)](_0x2aefb5,_0x2a0714){const _0x26b33c={_0x50cbcd:0x1b8,_0x3218d7:0x193},_0x2fddf8=_0x2db01d;return this[_0x2fddf8(_0x26b33c._0x50cbcd)](_0x2fddf8(_0x26b33c._0x3218d7),[_0x2aefb5,_0x2a0714]),this['behavior'][_0x2fddf8(0x1ff)]?.[_0x2a0714]??null;}async['waitFor'](_0x156a1c,_0x51be78){const _0xe59a87=_0x2db01d;this[_0xe59a87(0x1b8)](_0xe59a87(0x1af),[_0x156a1c,_0x51be78]);}async[_0x2db01d(0x1e1)](_0x3a3ac8,_0x93fd3d){const _0x378aee={_0x5ce11a:0x1e1},_0x589eb2=_0x2db01d;this[_0x589eb2(0x1b8)](_0x589eb2(_0x378aee._0x5ce11a),[_0x3a3ac8,_0x93fd3d]);}async[_0x2db01d(0x207)](_0x5404fd,_0x53416e){const _0x5aadda={_0x2cb6b1:0x1b8},_0x317af1=_0x2db01d;this[_0x317af1(_0x5aadda._0x2cb6b1)](_0x317af1(0x207),[_0x5404fd,_0x53416e]);}async[_0x2db01d(0x1e6)](_0x456366){const _0x515e1c={_0x2f7ad7:0x1e6},_0x2ecfdd=_0x2db01d;this['record'](_0x2ecfdd(_0x515e1c._0x2f7ad7),[_0x456366]);}async[_0x2db01d(0x1b0)](_0x9bb2c4,_0x53ecbb){const _0x1eb10a=_0x2db01d;this[_0x1eb10a(0x1b8)](_0x1eb10a(0x1b0),[_0x9bb2c4,_0x53ecbb]);}async[_0x2db01d(0x20e)](_0x521280,_0x183824){const _0x5f2db2=_0x2db01d;this[_0x5f2db2(0x1b8)](_0x5f2db2(0x20e),[_0x521280,_0x183824]),this[_0x5f2db2(0x1c1)]=_0x521280;}async[_0x2db01d(0x1d7)](_0x3ad58f){const _0x34b0da={_0x37fc43:0x1d7},_0x223647=_0x2db01d;this['record'](_0x223647(_0x34b0da._0x37fc43),[_0x3ad58f]);}async[_0x2db01d(0x1ee)](_0x384fe4){const _0x251b5c=_0x2db01d;this[_0x251b5c(0x1b8)](_0x251b5c(0x1ee),[_0x384fe4]);}async[_0x2db01d(0x1f7)](_0x48af38){const _0x4fc490=_0x2db01d;this['record'](_0x4fc490(0x1f7),[_0x48af38]);}async[_0x2db01d(0x1bc)](_0x3ad62b){const _0x58c11f=_0x2db01d;return this[_0x58c11f(0x1b8)](_0x58c11f(0x1bc),[_0x3ad62b]),this['behavior'][_0x58c11f(0x1ea)];}async[_0x2db01d(0x1a0)](_0x1aae5e,_0x26b3e6){const _0x53a67a=_0x2db01d;return this[_0x53a67a(0x1b8)](_0x53a67a(0x1a0),[_0x1aae5e,_0x26b3e6]),void 0x0;}async['inspectElement'](_0x50f023){const _0x4c212e={_0x5c787f:0x206},_0x372ed8=_0x2db01d;this['record'](_0x372ed8(0x1b6),[_0x50f023]);if(_0x50f023['steps'][_0x372ed8(_0x4c212e._0x5c787f)]!==0x1||_0x50f023['steps'][0x0]['kind']!=='ref')return null;const _0x1c28ab=_0x50f023['steps'][0x0][_0x372ed8(0x1db)],_0xc225f8=this[_0x372ed8(0x203)]['elementHintByRef']?.[_0x1c28ab];return _0xc225f8??null;}async[_0x2db01d(0x194)](_0x74b236){const _0x2ef6d5={_0x2b96a4:0x1ae},_0x2bfad4=_0x2db01d;return this['record']('screenshot',[_0x74b236]),this[_0x2bfad4(_0x2ef6d5._0x2b96a4)](_0x74b236?.['type']);}async['screenshotElement'](_0x1af0f7,_0x5bc980){const _0x372bd6={_0x51faff:0x1b8},_0x19780b=_0x2db01d;return this[_0x19780b(_0x372bd6._0x51faff)]('screenshotElement',[_0x1af0f7,_0x5bc980]),this[_0x19780b(0x1ae)](_0x5bc980?.[_0x19780b(0x1ad)]);}[_0x2db01d(0x1ae)](_0x385419){const _0x5be542={_0x14625b:0x203,_0x156dbd:0x1ae},_0x521f6d=_0x2db01d,_0x4fea5b=this[_0x521f6d(_0x5be542._0x14625b)][_0x521f6d(_0x5be542._0x156dbd)];if(_0x4fea5b===void 0x0)return Buffer['from'](_0x521f6d(0x19b));return typeof _0x4fea5b===_0x521f6d(0x1bb)?_0x4fea5b(_0x385419):_0x4fea5b;}async[_0x2db01d(0x1bd)](_0x382a60){const _0x437560={_0x408683:0x1c7,_0x11886e:0x1db,_0x4cc33c:0x1a5,_0x4aa25e:0x1fd,_0x1caab2:0x1f8},_0x5bb1cf=_0x2db01d;this[_0x5bb1cf(0x1b8)](_0x5bb1cf(0x1bd),[_0x382a60]);if(_0x382a60[_0x5bb1cf(0x1c7)][_0x5bb1cf(0x206)]===0x1&&_0x382a60[_0x5bb1cf(_0x437560._0x408683)][0x0][_0x5bb1cf(0x1c6)]==='ref'){const _0x2d7ed8=_0x382a60[_0x5bb1cf(0x1c7)][0x0][_0x5bb1cf(_0x437560._0x11886e)];return this['behavior'][_0x5bb1cf(_0x437560._0x4cc33c)]?.[_0x2d7ed8]??_0x5bb1cf(_0x437560._0x4aa25e)+_0x2d7ed8+_0x5bb1cf(_0x437560._0x1caab2);}return _0x5bb1cf(0x1ac);}},FakeContext=class{constructor(_0x3dad51,_0x540831,_0x18ed14){const _0xd396b7={_0x1e7fe5:0x203,_0x16f54f:0x1a4,_0x3f41bf:0x1f5,_0x12a152:0x1a1,_0x5d6c73:0x201,_0x109505:0x192},_0x128680=_0x2db01d;this[_0x128680(0x1d4)]=_0x3dad51,this[_0x128680(_0xd396b7._0x1e7fe5)]=_0x540831,this[_0x128680(_0xd396b7._0x16f54f)]=_0x18ed14;const _0x26b63d=new FakePage(_0x3dad51,_0x540831,_0x18ed14+_0x128680(0x1a6),_0x540831[_0x128680(_0xd396b7._0x3f41bf)]??_0x128680(0x1df));_0x540831[_0x128680(0x197)]&&(_0x26b63d[_0x128680(0x1f4)]=()=>{const _0x81774a=_0x128680;this[_0x81774a(0x209)](_0x540831['popupOnClick']);}),this[_0x128680(_0xd396b7._0x12a152)]=[_0x26b63d],this['localStorageState']={..._0x540831[_0x128680(_0xd396b7._0x5d6c73)]??{}},this[_0x128680(0x1f0)]={..._0x540831[_0x128680(_0xd396b7._0x109505)]??{}};}[_0x2db01d(0x1d4)];[_0x2db01d(0x203)];[_0x2db01d(0x1a4)];static{__name(this,_0x2db01d(0x1c4));}[_0x2db01d(0x1a1)];[_0x2db01d(0x1fe)]=0x0;[_0x2db01d(0x1a8)]=[];[_0x2db01d(0x196)];[_0x2db01d(0x1f0)];[_0x2db01d(0x19e)]=new Set();[_0x2db01d(0x1b8)](_0x594729,_0x144e4c){const _0x42845b={_0x2ea408:0x198},_0x52fb0e=_0x2db01d;this[_0x52fb0e(0x1d4)][_0x52fb0e(_0x42845b._0x2ea408)]({'scope':this['scope'],'method':_0x594729,'args':_0x144e4c});}[_0x2db01d(0x1c5)](){const _0x32f325=_0x2db01d;return this[_0x32f325(0x1a1)];}[_0x2db01d(0x1e2)](){const _0x49fa03=_0x2db01d,_0x532288=this['pageList'][this['activeIdx']];if(!_0x532288)throw new DriverError(_0x49fa03(0x1d9),{'activeIdx':this['activeIdx']});return _0x532288;}[_0x2db01d(0x19d)](){const _0x262d14={_0x4ca2f6:0x19d},_0x7e679=_0x2db01d;return this[_0x7e679(0x203)][_0x7e679(_0x262d14._0x4ca2f6)]??[];}['networkEntries'](){const _0x6f2251=_0x2db01d;return this['behavior'][_0x6f2251(0x1d1)]??[];}async['setActivePage'](_0x3638be){const _0x3dc3c1={_0x43f520:0x1f9,_0x25b327:0x1a1,_0x47132e:0x206,_0x16b200:0x1a8},_0x51a75f=_0x2db01d;this['record'](_0x51a75f(_0x3dc3c1._0x43f520),[_0x3638be]);if(_0x3638be<0x0||_0x3638be>=this[_0x51a75f(_0x3dc3c1._0x25b327)]['length'])throw new DriverError(_0x51a75f(0x1da),{'index':_0x3638be,'available':this[_0x51a75f(_0x3dc3c1._0x25b327)][_0x51a75f(_0x3dc3c1._0x47132e)]});this['activeIdx']=_0x3638be,this[_0x51a75f(_0x3dc3c1._0x16b200)][_0x51a75f(0x206)]=0x0;}[_0x2db01d(0x1d5)](_0x36c1e1){const _0x83d9fc=_0x2db01d;return subscribe(this[_0x83d9fc(0x19e)],_0x36c1e1);}['emitFakePopup'](_0xdb665d){const _0x4ea23d={_0x257986:0x1a4,_0x3b1d7f:0x1d4,_0x3d6da0:0x1a1,_0x3f86f3:0x206,_0x18bc00:0x19e},_0x4c621b=_0x2db01d,_0x59a463=this[_0x4c621b(_0x4ea23d._0x257986)]+_0x4c621b(0x202)+this['pageList']['length'],_0x2a3ba8=new FakePage(this[_0x4c621b(_0x4ea23d._0x3b1d7f)],this['behavior'],_0x59a463,_0xdb665d);this[_0x4c621b(_0x4ea23d._0x3d6da0)][_0x4c621b(0x198)](_0x2a3ba8);const _0x82588e=this[_0x4c621b(_0x4ea23d._0x3d6da0)][_0x4c621b(_0x4ea23d._0x3f86f3)]-0x1;for(const _0x305af9 of this[_0x4c621b(_0x4ea23d._0x18bc00)]){try{_0x305af9({'index':_0x82588e,'url':_0xdb665d});}catch{}}return _0x82588e;}[_0x2db01d(0x1cc)](_0x361246){const _0x41d0b8={_0x126b41:0x206},_0x33cebc=_0x2db01d;if(_0x361246<0x0||_0x361246>=this['pageList'][_0x33cebc(_0x41d0b8._0x126b41)])throw new DriverError(_0x33cebc(0x1da),{'index':_0x361246,'available':this[_0x33cebc(0x1a1)][_0x33cebc(0x206)]});this['pageList']['splice'](_0x361246,0x1);}async[_0x2db01d(0x1ba)](_0x43015a){const _0xf71510={_0x547437:0x1ba,_0x12d157:0x1c0,_0x49b1df:0x1a8,_0x1efbb2:0x198},_0x3edf8e=_0x2db01d;this['record'](_0x3edf8e(_0xf71510._0x547437),[_0x43015a]);if(!_0x43015a['steps'][_0x3edf8e(0x206)])throw new LocatorError(_0x3edf8e(_0xf71510._0x12d157),{'locator':_0x43015a});this[_0x3edf8e(_0xf71510._0x49b1df)][_0x3edf8e(_0xf71510._0x1efbb2)](_0x43015a);}async['exitFrame'](){const _0x5d4b6e={_0x5b58c0:0x1e4,_0x1241f8:0x1a8,_0x3f8e0d:0x1fc},_0x290273=_0x2db01d;this[_0x290273(0x1b8)](_0x290273(_0x5d4b6e._0x5b58c0),[]);if(this[_0x290273(_0x5d4b6e._0x1241f8)][_0x290273(0x206)]===0x0)throw new DriverError(_0x290273(_0x5d4b6e._0x3f8e0d),{});this[_0x290273(0x1a8)]['pop']();}async['setLocalStorage'](_0x49b1ca,_0x6edc){const _0x5ccc6d=_0x2db01d;this[_0x5ccc6d(0x1b8)]('setLocalStorage',[_0x49b1ca,_0x6edc]),this[_0x5ccc6d(0x196)][_0x49b1ca]=_0x6edc;}async[_0x2db01d(0x1e8)](_0x129a84){const _0xf6f082={_0x564d7e:0x1e8},_0x4f743d=_0x2db01d;return this[_0x4f743d(0x1b8)](_0x4f743d(_0xf6f082._0x564d7e),[_0x129a84]),this['localStorageState'][_0x129a84]??null;}async['setCookie'](_0x177437,_0x375ce6,_0x3db6db){const _0x5f3d82={_0x1ea3f9:0x1f0},_0x1386b7=_0x2db01d;this['record'](_0x1386b7(0x1ca),[_0x177437,_0x375ce6,_0x3db6db]),this[_0x1386b7(_0x5f3d82._0x1ea3f9)][_0x177437]=_0x375ce6;}async[_0x2db01d(0x1aa)](_0xe89973){const _0x4af7ec={_0x399a2c:0x1aa,_0x7c05f5:0x1f0},_0x45e2b7=_0x2db01d;return this['record'](_0x45e2b7(_0x4af7ec._0x399a2c),[_0xe89973]),this[_0x45e2b7(_0x4af7ec._0x7c05f5)][_0xe89973]??null;}async['saveStorageState'](_0x93f1f6){const _0x415723=_0x2db01d;this[_0x415723(0x1b8)]('saveStorageState',[_0x93f1f6]);}async[_0x2db01d(0x1bc)](_0x198e0c){const _0x536623=_0x2db01d;return this[_0x536623(0x1b8)]('evaluate',[_0x198e0c]),void 0x0;}async[_0x2db01d(0x1b1)](){const _0x4f8130=_0x2db01d;this[_0x4f8130(0x1b8)]('close',[]);}['frameDepth'](){const _0x4abe32={_0x2c2b5c:0x1a8},_0x429321=_0x2db01d;return this[_0x429321(_0x4abe32._0x2c2b5c)]['length'];}},FakeWebDriver=class{constructor(_0x3af242={}){const _0x36606e=_0x2db01d;this[_0x36606e(0x203)]=_0x3af242,this['recorder']=createRecorder();}[_0x2db01d(0x203)];static{__name(this,_0x2db01d(0x1c9));}[_0x2db01d(0x18f)]=![];[_0x2db01d(0x1d4)];[_0x2db01d(0x1b9)]=[];async[_0x2db01d(0x1c3)](_0x341d21){const _0x40e533={_0xd5500b:0x1d4,_0x5517c1:0x198},_0xcbbbed=_0x2db01d;this[_0xcbbbed(_0x40e533._0xd5500b)][_0xcbbbed(_0x40e533._0x5517c1)]({'scope':_0xcbbbed(0x1ed),'method':_0xcbbbed(0x1c3),'args':[_0x341d21]}),this['launched']=!![];}async[_0x2db01d(0x1fa)](_0x5d6d2c){const _0x1858d9={_0x30bdad:0x1d4,_0x43ef23:0x198,_0x363e78:0x1fa,_0xb7abe0:0x18f,_0x3d0fae:0x198},_0x5535ab=_0x2db01d;this[_0x5535ab(_0x1858d9._0x30bdad)][_0x5535ab(_0x1858d9._0x43ef23)]({'scope':_0x5535ab(0x1ed),'method':_0x5535ab(_0x1858d9._0x363e78),'args':[_0x5d6d2c]});if(!this[_0x5535ab(_0x1858d9._0xb7abe0)])throw new DriverError(_0x5535ab(0x1de),{});const _0x1a0646=new FakeContext(this[_0x5535ab(0x1d4)],this[_0x5535ab(0x203)],_0x5535ab(0x1cd)+this['contexts']['length']);return this[_0x5535ab(0x1b9)][_0x5535ab(_0x1858d9._0x3d0fae)](_0x1a0646),_0x1a0646;}async[_0x2db01d(0x1b1)](){const _0x57c22d={_0x117b34:0x198},_0x3bc9f1=_0x2db01d;this['recorder'][_0x3bc9f1(_0x57c22d._0x117b34)]({'scope':'driver','method':_0x3bc9f1(0x1b1),'args':[]}),this['launched']=![];}[_0x2db01d(0x1c2)](){return void 0x0;}async[_0x2db01d(0x199)](){const _0x2f1e3f=_0x2db01d;throw new DriverError(_0x2f1e3f(0x19c),{});}[_0x2db01d(0x20d)](_0x434b49){const _0x155c8d=_0x2db01d;throw new DriverError(_0x155c8d(0x205),{});}[_0x2db01d(0x1e3)](){const _0x1746c7={_0x47ff54:0x1d4},_0x1ec0f7=_0x2db01d;return this[_0x1ec0f7(_0x1746c7._0x47ff54)][_0x1ec0f7(0x1e3)]();}[_0x2db01d(0x1c8)](_0x44e421){const _0x452a55=_0x2db01d;return this[_0x452a55(0x1d4)]['calls']()['filter'](_0x2bc8a4=>_0x2bc8a4[_0x452a55(0x1b2)]===_0x44e421);}};export{FakeWebDriver};
|
package/dist/dsl/index.d.ts
CHANGED
|
@@ -275,6 +275,16 @@ interface ActiveRuntime {
|
|
|
275
275
|
* the same error is closing enclosing statements, `lastFailure` stays
|
|
276
276
|
* on the statement that raised it. */
|
|
277
277
|
unwinding: boolean;
|
|
278
|
+
/** The failure this run stopped at, kept from the moment the executor
|
|
279
|
+
* paused on it.
|
|
280
|
+
*
|
|
281
|
+
* It exists because continuing is how a failure gets INSPECTED: with
|
|
282
|
+
* `pauseOnFailure`, the walker holds at the error and, once resumed,
|
|
283
|
+
* carries on with the next statement — so a run that broke can still
|
|
284
|
+
* reach the end and report `completed`. It did not stop being broken
|
|
285
|
+
* because somebody looked at it, and the verdict must not depend on
|
|
286
|
+
* whether anyone did. */
|
|
287
|
+
pausedOnFailure: ActiveRuntime['lastFailure'];
|
|
278
288
|
lastResult: RunResult | null;
|
|
279
289
|
createdAt: number;
|
|
280
290
|
/** Active TTL timer (only when state is paused-failure). */
|
|
@@ -328,6 +338,16 @@ declare class TestRuntimeManager {
|
|
|
328
338
|
runOptions: RunOptions;
|
|
329
339
|
}): string;
|
|
330
340
|
pump(id: string): Promise<ExecutionEvent | RunResult>;
|
|
341
|
+
/** The run's verdict — the executor's own, corrected for the one thing
|
|
342
|
+
* it cannot see: that a failure it paused on was resumed rather than
|
|
343
|
+
* fixed.
|
|
344
|
+
*
|
|
345
|
+
* Only that case. A run the executor already calls failed keeps its own
|
|
346
|
+
* error and its soft failures; a clean run stays clean. (Mobile's
|
|
347
|
+
* `resumeRetriesFailedStep` re-runs the failed statement instead of
|
|
348
|
+
* going past it — web never sets it, and if it ever does, the retry's
|
|
349
|
+
* own `step-end` decides and this correction has to be revisited.) */
|
|
350
|
+
private verdict;
|
|
331
351
|
step(id: string): Promise<ExecutionEvent | RunResult>;
|
|
332
352
|
resume(id: string): Promise<ExecutionEvent | RunResult>;
|
|
333
353
|
abort(id: string): Promise<void>;
|