@unotest/web 0.6.2 → 0.9.1
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/.claude/skills/write-e2e-test/SKILL.md +37 -22
- package/CHANGELOG.md +63 -0
- package/README.md +12 -12
- package/dist/config/schema.d.ts +81 -10
- package/dist/config/schema.js +1 -1
- package/dist/driver/index.d.ts +7 -2
- package/dist/driver/index.js +1 -1
- package/dist/dsl/index.d.ts +33 -107
- package/dist/dsl/index.js +1 -1
- package/dist/dsl/web-dsl-language-service.d.ts +18 -0
- package/dist/dsl/web-dsl-language-service.js +1 -0
- package/dist/inspection/page-inject.d.ts +45 -1
- package/dist/inspection/page-inject.js +253 -4
- package/dist/{interfaces-iTfjd1zT.d.ts → interfaces-dbZG10RS.d.ts} +40 -1
- package/dist/{linter-DzAzJpab.d.ts → linter-CM2CpIyW.d.ts} +1 -1
- package/dist/mcp/server.js +1 -1
- package/dist/runner/cli.d.ts +8 -14
- package/dist/runner/cli.js +1 -1
- package/dist/runner/init/chrome-probe.d.ts +15 -0
- package/dist/runner/init/chrome-probe.js +1 -0
- 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.d.ts +24 -0
- package/dist/runner/scaffold-workspace.js +1 -0
- package/dist/runner/serve-fixture.js +1 -1
- package/dist/runner/web-runner-adapter.d.ts +1 -1
- package/dist/runner/web-runner-adapter.js +1 -1
- package/examples/fixtures/break-fix-app/serve.mjs +6 -2
- package/guides/dsl-reference.md +7 -7
- package/package.json +21 -4
- package/src/mcp/prompts/agent-test-author.md +17 -5
|
@@ -152,8 +152,8 @@ For each page state you traverse:
|
|
|
152
152
|
repeatedly, stop and ask the user.
|
|
153
153
|
|
|
154
154
|
When recording, `description` and `section` are **required**.
|
|
155
|
-
Adjacent same-section entries
|
|
156
|
-
|
|
155
|
+
Adjacent same-section entries are wrapped in one `step("...", () => { … })`
|
|
156
|
+
block in the generated test, so the `section` must read
|
|
157
157
|
like a line in a human test PLAN — the user-facing GOAL of the block
|
|
158
158
|
("Sign in", "Open first car card", "Apply status filter"), **never** a
|
|
159
159
|
generic mechanic ("Navigation", "Actions", "Click", "Load data"). Use the
|
|
@@ -363,25 +363,25 @@ built-in DSL functions.
|
|
|
363
363
|
composite multi-step helpers.
|
|
364
364
|
|
|
365
365
|
**Saved test structure.** Every step in a `test_*` entry must sit inside a
|
|
366
|
-
|
|
366
|
+
`step("description", () => { … })` block (linter enforces). The title is the
|
|
367
367
|
plain-English intent of the group; when a step later breaks you read it
|
|
368
368
|
back to repair the group. The recorder groups by phase automatically; when
|
|
369
369
|
you hand-edit, keep each chunk inside its own block:
|
|
370
370
|
|
|
371
371
|
```js
|
|
372
372
|
function test_dashboard_loads_with_widgets() {
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
373
|
+
step("Seed a fresh demo user", () => {
|
|
374
|
+
wipe_e2e_users();
|
|
375
|
+
seed_user('demo@example.com', 'secret');
|
|
376
|
+
});
|
|
377
|
+
|
|
378
|
+
step("Sign in as the demo user", () => {
|
|
379
|
+
signin_as('demo@example.com', 'secret');
|
|
380
|
+
});
|
|
381
|
+
|
|
382
|
+
step("Dashboard shows the Today widget", () => {
|
|
383
|
+
assertVisible(getByRole('region', {name: 'Today'}));
|
|
384
|
+
});
|
|
385
385
|
}
|
|
386
386
|
```
|
|
387
387
|
|
|
@@ -391,21 +391,32 @@ function test_dashboard_loads_with_widgets() {
|
|
|
391
391
|
## Failure recovery
|
|
392
392
|
|
|
393
393
|
`paused-failure` from `run_test` keeps the browser context alive and
|
|
394
|
-
the runtime addressable by `runtimeId`.
|
|
394
|
+
the runtime addressable by `runtimeId`. `run_test` also auto-attaches
|
|
395
|
+
you to that live page, so `get_page_snapshot` / `find_element` /
|
|
396
|
+
`check_locator` already target the page being debugged — no manual
|
|
397
|
+
`attach_debug_session`. Use the diagnostic tools:
|
|
395
398
|
|
|
396
399
|
1. **`inspect_runtime { runtimeId }`** — `lastFailure` (error + line/col
|
|
397
400
|
+ AST node) + `vars` (every assignment up to the pause). Tells you
|
|
398
401
|
what was observed vs expected and the state the scenario built.
|
|
399
|
-
2. **`
|
|
402
|
+
2. **`check_locator { locator }`** — paste the EXACT locator from the
|
|
403
|
+
failing line (e.g. `getByRole('row').filter({hasText:'Uma Quinn'}).first()`).
|
|
404
|
+
Reports, against the live paused page, how many elements it matches
|
|
405
|
+
and — when the chain ends in `.first()`/`.last()`/`.nth()` —
|
|
406
|
+
`pinned.ofCount`, the count that index op silently collapsed (a
|
|
407
|
+
`.first()` hiding 16 identical rows is the classic break), plus
|
|
408
|
+
per-match role/name/text/testId. Verify a selector at runtime
|
|
409
|
+
instead of guessing or re-running the whole test.
|
|
410
|
+
3. **`get_page_snapshot { }`** — current page outline. Look for whether
|
|
400
411
|
the locator is reachable, or whether the page navigated somewhere
|
|
401
412
|
unexpected.
|
|
402
|
-
|
|
413
|
+
4. **`list_failures` + `get_failure_console` / `get_failure_trace` /
|
|
403
414
|
`get_failure_network`** — failure bundle. `get_failure_console` is
|
|
404
415
|
often the giveaway when the failure is really a runtime error in
|
|
405
416
|
the app.
|
|
406
|
-
|
|
417
|
+
5. **`agent_fix { runId }`** — composes a structured fix-context
|
|
407
418
|
prompt. **It does NOT patch your code** (D-25); you apply edits.
|
|
408
|
-
|
|
419
|
+
6. **`open_viewer { }`** — boots the localhost viewer for the project
|
|
409
420
|
if it isn't running, returns its URL. The viewer renders the block-
|
|
410
421
|
tree of the failing scenario with live status, plus a log-tail of
|
|
411
422
|
the child runner's stdio. Useful when you want a human (or yourself)
|
|
@@ -462,6 +473,10 @@ no recording.
|
|
|
462
473
|
Every locator must resolve to exactly one element. When you see
|
|
463
474
|
`getByRole('row', {name: 'X'}) resolved to 301 elements`:
|
|
464
475
|
|
|
476
|
+
- **`check_locator { locator }`** (when a browser is live) — paste the
|
|
477
|
+
chain and it tells you the exact `count` and, for a `.first()`/`.nth()`
|
|
478
|
+
chain, `pinned.ofCount` (how many it collapsed). The fastest way to
|
|
479
|
+
confirm a locator is over-matching and by how much, without re-running.
|
|
465
480
|
- Narrow the `name` to a uniquely-identifying substring. `name`
|
|
466
481
|
substring-matches: pick wording that hits only one row (a header's
|
|
467
482
|
full label `"Pending (300)"` or a row-specific ID like `"573"`).
|
|
@@ -469,7 +484,7 @@ Every locator must resolve to exactly one element. When you see
|
|
|
469
484
|
to skip manual disambiguation — scoped search returns the single ref
|
|
470
485
|
directly.
|
|
471
486
|
- Only use `.first()` / `.nth(N)` when the position itself is the
|
|
472
|
-
semantic anchor.
|
|
487
|
+
semantic anchor — and `check_locator` shows `pinned.ofCount === 1`.
|
|
473
488
|
|
|
474
489
|
## Anti-patterns
|
|
475
490
|
|
|
@@ -501,7 +516,7 @@ Every locator must resolve to exactly one element. When you see
|
|
|
501
516
|
names, or `xpath=…`.** Stop and ask the user whether the app should
|
|
502
517
|
expose a `data-testid` or accessible name.
|
|
503
518
|
- **Don't omit `section` / `description` when recording.** They shape
|
|
504
|
-
the generated test into readable
|
|
519
|
+
the generated test into readable `step(...)` blocks — and they're
|
|
505
520
|
required.
|
|
506
521
|
- **Don't consider the task done without `next.outcome === "completed"`.**
|
|
507
522
|
"I recorded the flow, generated the file, looks right" is not done.
|
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,69 @@ All notable changes to `@unotest/web` are documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.9.1] - 2026-06-14
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **`check_locator` MCP tool + runtime locator probe.** Evaluate a DSL locator
|
|
13
|
+
string against the live page and see what it actually matches — count, the N a
|
|
14
|
+
trailing `.first()`/`.last()`/`.nth()` silently collapsed, and where each match
|
|
15
|
+
points — instead of guessing or re-running the whole test. Same parser/core
|
|
16
|
+
(`probe-locator`) the runner uses, so a result here equals the runtime locator.
|
|
17
|
+
- **Interactive debug + auto-attach.** `run_test --debug` auto-attaches the MCP
|
|
18
|
+
session to the paused run's shared browser, so `get_page_snapshot` /
|
|
19
|
+
`find_element` / `check_locator` hit the page being debugged. Collaborative
|
|
20
|
+
`probe` command (the human's `check_locator` twin) is handled by the runner.
|
|
21
|
+
- **Agent tool calls in the viewer's System console.** A new `StepsToolEventSink`
|
|
22
|
+
publishes each MCP tool call + result (secret-redacted, capped) into the
|
|
23
|
+
attached run's `steps.jsonl`, so the human sees what the agent is doing.
|
|
24
|
+
- **Run breakpoints published to `runtime.json`** (`.debugger.json` seed +
|
|
25
|
+
`--breakpoints` override), so the viewer paints gutter dots for non-persisted
|
|
26
|
+
breakpoints.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- **Shared runner machinery extracted to `@unotest/core`** (run-artifact /
|
|
31
|
+
run-manifest / runtime-state writers, debug-commands watcher, env reader) and
|
|
32
|
+
consumed via thin web bindings.
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- **`abort` now actually terminates a paused run.** A `{cmd:abort}` on a run
|
|
37
|
+
paused mid-statement could not unwind the suspended executor, leaving the
|
|
38
|
+
process + headed browser alive with a fresh heartbeat (the viewer showed a
|
|
39
|
+
ghost "active" session). Abort now force-terminates the runner the same clean
|
|
40
|
+
way Ctrl-C / SIGTERM does, emitting a terminal `run:finished` and closing the
|
|
41
|
+
browser.
|
|
42
|
+
|
|
43
|
+
## [0.9.0] - 2026-06-11
|
|
44
|
+
|
|
45
|
+
### Added
|
|
46
|
+
|
|
47
|
+
- **Opt-in capture artifacts for the viewer inspector.** `UNOTEST_NETWORK=1`
|
|
48
|
+
records each request/response to the run's `network.json`; `UNOTEST_CONSOLE=1`
|
|
49
|
+
records the browser console to `console.json`. Written per run (any outcome),
|
|
50
|
+
redacted of secrets. Off by default — zero overhead.
|
|
51
|
+
- **`runtime.json` for every run.** The runtime-state writer (vars / scope /
|
|
52
|
+
call stack) now runs for plain headless runs too, not just `--debug`, so the
|
|
53
|
+
viewer's Vars inspector is populated on any run.
|
|
54
|
+
- **Friendly relative-`goto` error.** `goto('/path')` with no `baseUrl`
|
|
55
|
+
configured now throws a typed `NavigationError` that names the URL and the fix,
|
|
56
|
+
instead of Playwright's "Cannot navigate to invalid URL". When `baseUrl` is
|
|
57
|
+
set, Playwright resolves the relative path as before.
|
|
58
|
+
|
|
59
|
+
### Changed
|
|
60
|
+
|
|
61
|
+
- **MCP collaboration is discoverable.** `get_active_context` now reports an
|
|
62
|
+
attachable live debug session (`attachable` + a hint); the no-active-context
|
|
63
|
+
error points at `attach_debug_session`; the server `instructions` mention
|
|
64
|
+
joining a human's live session. `findShareableRun` is shared between
|
|
65
|
+
`attach_debug_session` and `get_active_context`.
|
|
66
|
+
- **`init` defaults.** Generated `unotest/.env` sets `APP_BASE_URL` to the
|
|
67
|
+
unotest playground and the example scenarios use relative `goto('/...')`;
|
|
68
|
+
`API_BASE_URL` and `PROJECT_ROOT` are dropped; `UNOTEST_NETWORK` /
|
|
69
|
+
`UNOTEST_CONSOLE` are added under Runner config.
|
|
70
|
+
|
|
8
71
|
## [0.6.2] - 2026-06-05
|
|
9
72
|
|
|
10
73
|
### Added
|
package/README.md
CHANGED
|
@@ -64,7 +64,7 @@ npx @unotest/web e2e # list / usage
|
|
|
64
64
|
|
|
65
65
|
- **Scenario tree** — scenarios, collections, helpers, and run history.
|
|
66
66
|
- **Run from the UI** — results stream live over WebSocket as steps execute.
|
|
67
|
-
- **Block view** — each
|
|
67
|
+
- **Block view** — each `step(...)` group folds into a section with
|
|
68
68
|
per-step status; a failure pins an error card to the offending line.
|
|
69
69
|
- **Step debugger** — set gutter breakpoints, run paused, inspect the live
|
|
70
70
|
DOM at each stop.
|
|
@@ -75,20 +75,20 @@ npx @unotest/web e2e # list / usage
|
|
|
75
75
|
### Writing by hand (optional)
|
|
76
76
|
|
|
77
77
|
Scenarios are plain `.js`. Every executable step sits inside a
|
|
78
|
-
|
|
79
|
-
back to repair a step when a selector drifts:
|
|
78
|
+
`step("what this does", () => { … })` block — plain-English intent the agent
|
|
79
|
+
reads back to repair a step when a selector drifts:
|
|
80
80
|
|
|
81
81
|
```js
|
|
82
82
|
function test_login() {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
83
|
+
step("Log in as the demo user", () => {
|
|
84
|
+
goto('https://app.example.com');
|
|
85
|
+
fill(getByLabel('Email'), 'demo@example.com');
|
|
86
|
+
click(getByRole('button', { name: 'Continue' }));
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
step("Dashboard is shown after login", () => {
|
|
90
|
+
assertText(getByRole('heading'), 'Dashboard');
|
|
91
|
+
});
|
|
92
92
|
}
|
|
93
93
|
```
|
|
94
94
|
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -90,19 +90,19 @@ declare const FailureBundleConfigSchema: z.ZodObject<{
|
|
|
90
90
|
type FailureBundleConfig = z.infer<typeof FailureBundleConfigSchema>;
|
|
91
91
|
declare const DialogPolicySchema: z.ZodEnum<["accept", "dismiss", "manual"]>;
|
|
92
92
|
type DialogPolicy = z.infer<typeof DialogPolicySchema>;
|
|
93
|
-
declare const LinterRuleIdSchema: z.ZodEnum<["lint:deep-css", "lint:xpath", "lint:obfuscated-class", "lint:pause-explicit", "lint:disambig-by-index", "lint:evaluate-discouraged", "lint:scenario-in-root", "lint:mustache-in-dsl", "validator:unknown-function", "validator:
|
|
93
|
+
declare const LinterRuleIdSchema: z.ZodEnum<["lint:deep-css", "lint:xpath", "lint:obfuscated-class", "lint:pause-explicit", "lint:disambig-by-index", "lint:evaluate-discouraged", "lint:scenario-in-root", "lint:mustache-in-dsl", "validator:unknown-function", "validator:arity", "validator:arg-kind", "validator:step-coverage", "validator:step-shape", "validator:meta-shape", "validator:function-shape", "validator:for-shape", "validator:if-shape", "validator:var-shape", "validator:unsupported-statement", "validator:unsupported-expression", "validator:string-concat", "validator:semantic-loss", "validator:list-arg", "validator:wrapped-format"]>;
|
|
94
94
|
type LinterRuleId = z.infer<typeof LinterRuleIdSchema>;
|
|
95
95
|
declare const LinterSeveritySchema: z.ZodEnum<["off", "warn", "error"]>;
|
|
96
96
|
type LinterSeverity = z.infer<typeof LinterSeveritySchema>;
|
|
97
97
|
declare const LinterConfigSchema: z.ZodObject<{
|
|
98
98
|
enabled: z.ZodBoolean;
|
|
99
|
-
rules: z.ZodRecord<z.ZodEnum<["lint:deep-css", "lint:xpath", "lint:obfuscated-class", "lint:pause-explicit", "lint:disambig-by-index", "lint:evaluate-discouraged", "lint:scenario-in-root", "lint:mustache-in-dsl", "validator:unknown-function", "validator:
|
|
99
|
+
rules: z.ZodRecord<z.ZodEnum<["lint:deep-css", "lint:xpath", "lint:obfuscated-class", "lint:pause-explicit", "lint:disambig-by-index", "lint:evaluate-discouraged", "lint:scenario-in-root", "lint:mustache-in-dsl", "validator:unknown-function", "validator:arity", "validator:arg-kind", "validator:step-coverage", "validator:step-shape", "validator:meta-shape", "validator:function-shape", "validator:for-shape", "validator:if-shape", "validator:var-shape", "validator:unsupported-statement", "validator:unsupported-expression", "validator:string-concat", "validator:semantic-loss", "validator:list-arg", "validator:wrapped-format"]>, z.ZodEnum<["off", "warn", "error"]>>;
|
|
100
100
|
}, "strip", z.ZodTypeAny, {
|
|
101
101
|
enabled: boolean;
|
|
102
|
-
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "validator:unknown-function" | "validator:
|
|
102
|
+
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
103
103
|
}, {
|
|
104
104
|
enabled: boolean;
|
|
105
|
-
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "validator:unknown-function" | "validator:
|
|
105
|
+
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
106
106
|
}>;
|
|
107
107
|
type LinterConfig = z.infer<typeof LinterConfigSchema>;
|
|
108
108
|
declare const McpConfigSchema: z.ZodObject<{
|
|
@@ -133,8 +133,67 @@ declare const SandboxConfigSchema: z.ZodObject<{
|
|
|
133
133
|
apiBaseUrl?: string | undefined;
|
|
134
134
|
}>;
|
|
135
135
|
type SandboxConfig = z.infer<typeof SandboxConfigSchema>;
|
|
136
|
+
declare const WebServerConfigSchema: z.ZodObject<{
|
|
137
|
+
/** Shell command that starts the app under test (`npm run dev`,
|
|
138
|
+
* `python manage.py runserver`, …). Runs in the user's shell from the
|
|
139
|
+
* project root. */
|
|
140
|
+
command: z.ZodString;
|
|
141
|
+
/** URL probed for readiness — any HTTP response counts as up. Usually
|
|
142
|
+
* equals `baseUrl`; declared explicitly because a dev server may
|
|
143
|
+
* answer on a different path/port than the tests navigate to. */
|
|
144
|
+
url: z.ZodString;
|
|
145
|
+
/** When the URL is already up, reuse that server instead of spawning a
|
|
146
|
+
* second one (default true — covers a dev server the user or the
|
|
147
|
+
* viewer already started). `false` makes an occupied URL an error,
|
|
148
|
+
* Playwright-style for CI strictness. */
|
|
149
|
+
reuseExistingServer: z.ZodDefault<z.ZodBoolean>;
|
|
150
|
+
/** How long to wait for the URL to come up after spawning. */
|
|
151
|
+
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
152
|
+
}, "strip", z.ZodTypeAny, {
|
|
153
|
+
command: string;
|
|
154
|
+
url: string;
|
|
155
|
+
reuseExistingServer: boolean;
|
|
156
|
+
timeoutMs: number;
|
|
157
|
+
}, {
|
|
158
|
+
command: string;
|
|
159
|
+
url: string;
|
|
160
|
+
reuseExistingServer?: boolean | undefined;
|
|
161
|
+
timeoutMs?: number | undefined;
|
|
162
|
+
}>;
|
|
163
|
+
type WebServerConfig = z.infer<typeof WebServerConfigSchema>;
|
|
136
164
|
declare const UnotestConfigSchema: z.ZodObject<{
|
|
137
165
|
baseUrl: z.ZodOptional<z.ZodString>;
|
|
166
|
+
/** Dev-server lifecycle for the app under test (M-12). Unset → the app
|
|
167
|
+
* is expected to be running already (current behaviour). When set, the
|
|
168
|
+
* CLI ensures it per run; `npx @unotest/web app-server` / the viewer
|
|
169
|
+
* hold a long-lived instance and runs then reuse it. */
|
|
170
|
+
webServer: z.ZodOptional<z.ZodObject<{
|
|
171
|
+
/** Shell command that starts the app under test (`npm run dev`,
|
|
172
|
+
* `python manage.py runserver`, …). Runs in the user's shell from the
|
|
173
|
+
* project root. */
|
|
174
|
+
command: z.ZodString;
|
|
175
|
+
/** URL probed for readiness — any HTTP response counts as up. Usually
|
|
176
|
+
* equals `baseUrl`; declared explicitly because a dev server may
|
|
177
|
+
* answer on a different path/port than the tests navigate to. */
|
|
178
|
+
url: z.ZodString;
|
|
179
|
+
/** When the URL is already up, reuse that server instead of spawning a
|
|
180
|
+
* second one (default true — covers a dev server the user or the
|
|
181
|
+
* viewer already started). `false` makes an occupied URL an error,
|
|
182
|
+
* Playwright-style for CI strictness. */
|
|
183
|
+
reuseExistingServer: z.ZodDefault<z.ZodBoolean>;
|
|
184
|
+
/** How long to wait for the URL to come up after spawning. */
|
|
185
|
+
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
186
|
+
}, "strip", z.ZodTypeAny, {
|
|
187
|
+
command: string;
|
|
188
|
+
url: string;
|
|
189
|
+
reuseExistingServer: boolean;
|
|
190
|
+
timeoutMs: number;
|
|
191
|
+
}, {
|
|
192
|
+
command: string;
|
|
193
|
+
url: string;
|
|
194
|
+
reuseExistingServer?: boolean | undefined;
|
|
195
|
+
timeoutMs?: number | undefined;
|
|
196
|
+
}>>;
|
|
138
197
|
browsers: z.ZodArray<z.ZodEnum<["chromium", "firefox", "webkit"]>, "many">;
|
|
139
198
|
channel: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"chrome">, z.ZodLiteral<"msedge">, z.ZodLiteral<"chrome-beta">, z.ZodNull]>>;
|
|
140
199
|
viewport: z.ZodObject<{
|
|
@@ -228,13 +287,13 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
228
287
|
defaultNavigationTimeoutMs: z.ZodNumber;
|
|
229
288
|
linter: z.ZodObject<{
|
|
230
289
|
enabled: z.ZodBoolean;
|
|
231
|
-
rules: z.ZodRecord<z.ZodEnum<["lint:deep-css", "lint:xpath", "lint:obfuscated-class", "lint:pause-explicit", "lint:disambig-by-index", "lint:evaluate-discouraged", "lint:scenario-in-root", "lint:mustache-in-dsl", "validator:unknown-function", "validator:
|
|
290
|
+
rules: z.ZodRecord<z.ZodEnum<["lint:deep-css", "lint:xpath", "lint:obfuscated-class", "lint:pause-explicit", "lint:disambig-by-index", "lint:evaluate-discouraged", "lint:scenario-in-root", "lint:mustache-in-dsl", "validator:unknown-function", "validator:arity", "validator:arg-kind", "validator:step-coverage", "validator:step-shape", "validator:meta-shape", "validator:function-shape", "validator:for-shape", "validator:if-shape", "validator:var-shape", "validator:unsupported-statement", "validator:unsupported-expression", "validator:string-concat", "validator:semantic-loss", "validator:list-arg", "validator:wrapped-format"]>, z.ZodEnum<["off", "warn", "error"]>>;
|
|
232
291
|
}, "strip", z.ZodTypeAny, {
|
|
233
292
|
enabled: boolean;
|
|
234
|
-
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "validator:unknown-function" | "validator:
|
|
293
|
+
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
235
294
|
}, {
|
|
236
295
|
enabled: boolean;
|
|
237
|
-
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "validator:unknown-function" | "validator:
|
|
296
|
+
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
238
297
|
}>;
|
|
239
298
|
mcp: z.ZodObject<{
|
|
240
299
|
transport: z.ZodLiteral<"stdio">;
|
|
@@ -292,7 +351,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
292
351
|
defaultNavigationTimeoutMs: number;
|
|
293
352
|
linter: {
|
|
294
353
|
enabled: boolean;
|
|
295
|
-
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "validator:unknown-function" | "validator:
|
|
354
|
+
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
296
355
|
};
|
|
297
356
|
mcp: {
|
|
298
357
|
transport: "stdio";
|
|
@@ -303,6 +362,12 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
303
362
|
apiBaseUrl?: string | undefined;
|
|
304
363
|
};
|
|
305
364
|
baseUrl?: string | undefined;
|
|
365
|
+
webServer?: {
|
|
366
|
+
command: string;
|
|
367
|
+
url: string;
|
|
368
|
+
reuseExistingServer: boolean;
|
|
369
|
+
timeoutMs: number;
|
|
370
|
+
} | undefined;
|
|
306
371
|
channel?: "chrome" | "msedge" | "chrome-beta" | null | undefined;
|
|
307
372
|
storageState?: string | undefined;
|
|
308
373
|
}, {
|
|
@@ -335,7 +400,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
335
400
|
defaultNavigationTimeoutMs: number;
|
|
336
401
|
linter: {
|
|
337
402
|
enabled: boolean;
|
|
338
|
-
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "validator:unknown-function" | "validator:
|
|
403
|
+
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
339
404
|
};
|
|
340
405
|
mcp: {
|
|
341
406
|
transport: "stdio";
|
|
@@ -346,6 +411,12 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
346
411
|
apiBaseUrl?: string | undefined;
|
|
347
412
|
};
|
|
348
413
|
baseUrl?: string | undefined;
|
|
414
|
+
webServer?: {
|
|
415
|
+
command: string;
|
|
416
|
+
url: string;
|
|
417
|
+
reuseExistingServer?: boolean | undefined;
|
|
418
|
+
timeoutMs?: number | undefined;
|
|
419
|
+
} | undefined;
|
|
349
420
|
channel?: "chrome" | "msedge" | "chrome-beta" | null | undefined;
|
|
350
421
|
storageState?: string | undefined;
|
|
351
422
|
}>;
|
|
@@ -353,4 +424,4 @@ type UnotestConfig = z.infer<typeof UnotestConfigSchema>;
|
|
|
353
424
|
type UnotestConfigInput = z.input<typeof UnotestConfigSchema>;
|
|
354
425
|
declare const DEFAULT_CONFIG: UnotestConfig;
|
|
355
426
|
|
|
356
|
-
export { type Browser, type BrowserChannel, BrowserChannelSchema, BrowserSchema, DEFAULT_CONFIG, type DialogPolicy, DialogPolicySchema, type FailureBundleConfig, FailureBundleConfigSchema, type LinterConfig, LinterConfigSchema, type LinterRuleId, LinterRuleIdSchema, type LinterSeverity, LinterSeveritySchema, type McpConfig, McpConfigSchema, type RetryConfig, RetryConfigSchema, type RetryReason, RetryReasonSchema, type SandboxConfig, SandboxConfigSchema, type UnotestConfig, type UnotestConfigInput, UnotestConfigSchema, type Viewport, ViewportSchema };
|
|
427
|
+
export { type Browser, type BrowserChannel, BrowserChannelSchema, BrowserSchema, DEFAULT_CONFIG, type DialogPolicy, DialogPolicySchema, type FailureBundleConfig, FailureBundleConfigSchema, type LinterConfig, LinterConfigSchema, type LinterRuleId, LinterRuleIdSchema, type LinterSeverity, LinterSeveritySchema, type McpConfig, McpConfigSchema, type RetryConfig, RetryConfigSchema, type RetryReason, RetryReasonSchema, type SandboxConfig, SandboxConfigSchema, type UnotestConfig, type UnotestConfigInput, UnotestConfigSchema, type Viewport, ViewportSchema, type WebServerConfig, WebServerConfigSchema };
|
package/dist/config/schema.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
var _0x4b4ff9=_0x31c8;(function(_0x4ef68e,_0x2ff5c6){var _0x3f1675={_0x3a326e:0x163,_0x54f536:0x18c,_0x166f0e:0x16e,_0x4e62de:0x184,_0x3312cb:0x15e,_0x1e47d2:0x17b},_0x3988c2=_0x31c8,_0x4ac811=_0x4ef68e();while(!![]){try{var _0x4564cd=-parseInt(_0x3988c2(0x17d))/0x1*(-parseInt(_0x3988c2(0x186))/0x2)+parseInt(_0x3988c2(_0x3f1675._0x3a326e))/0x3+-parseInt(_0x3988c2(_0x3f1675._0x54f536))/0x4*(parseInt(_0x3988c2(0x166))/0x5)+parseInt(_0x3988c2(_0x3f1675._0x166f0e))/0x6+parseInt(_0x3988c2(_0x3f1675._0x4e62de))/0x7*(parseInt(_0x3988c2(_0x3f1675._0x3312cb))/0x8)+parseInt(_0x3988c2(0x15c))/0x9*(-parseInt(_0x3988c2(0x18b))/0xa)+-parseInt(_0x3988c2(_0x3f1675._0x1e47d2))/0xb*(parseInt(_0x3988c2(0x160))/0xc);if(_0x4564cd===_0x2ff5c6)break;else _0x4ac811['push'](_0x4ac811['shift']());}catch(_0x403cfa){_0x4ac811['push'](_0x4ac811['shift']());}}}(_0x3422,0x1f3c5));function _0x31c8(_0xed4411,_0x2de1dd){_0xed4411=_0xed4411-0x150;var _0x342232=_0x3422();var _0x31c863=_0x342232[_0xed4411];if(_0x31c8['zKgNuR']===undefined){var _0xe1f7d7=function(_0x15c9b7){var _0x2fcc8a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x2f850d='',_0x3b47d0='';for(var _0x48180b=0x0,_0x2a6cd7,_0x3b96a7,_0x41d138=0x0;_0x3b96a7=_0x15c9b7['charAt'](_0x41d138++);~_0x3b96a7&&(_0x2a6cd7=_0x48180b%0x4?_0x2a6cd7*0x40+_0x3b96a7:_0x3b96a7,_0x48180b++%0x4)?_0x2f850d+=String['fromCharCode'](0xff&_0x2a6cd7>>(-0x2*_0x48180b&0x6)):0x0){_0x3b96a7=_0x2fcc8a['indexOf'](_0x3b96a7);}for(var _0x2c34b8=0x0,_0x3d7d2e=_0x2f850d['length'];_0x2c34b8<_0x3d7d2e;_0x2c34b8++){_0x3b47d0+='%'+('00'+_0x2f850d['charCodeAt'](_0x2c34b8)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3b47d0);};_0x31c8['BEcFSJ']=_0xe1f7d7,_0x31c8['mudoHD']={},_0x31c8['zKgNuR']=!![];}var _0x2e12dc=_0x342232[0x0],_0x113424=_0xed4411+_0x2e12dc,_0xace658=_0x31c8['mudoHD'][_0x113424];return!_0xace658?(_0x31c863=_0x31c8['BEcFSJ'](_0x31c863),_0x31c8['mudoHD'][_0x113424]=_0x31c863):_0x31c863=_0xace658,_0x31c863;}import{z}from'zod';function _0x3422(){var _0x433420=['DMfSAwrHDg9YoMz1BMn0Aw9UlxnOyxbL','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlwv4ChjLC3nPB24','BgLUDdPVyMz1C2nHDgvKlwnSyxnZ','y3jHC2G','BNvSBa','D2vIA2L0','zxjYB3i','nJnsEgviB0S','C3rKAw8','otG0A013C3fJ','zw51Bq','mtjbvhfmBgK','C3rYAw5N','BwfUDwfS','mZKYotm3ywzXwKDs','y2HYB21LlwjLDge','ywnJzxb0','nuvYwxzTuG','Dw5VDgvZDc9LmMu','DMfSAwrHDg9YoNnLBwfUDgLJlwXVC3m','BgL0zxjHBa','BgLUDdPZy2vUyxjPBY1PBI1YB290','BgLUDdPWyxvZzs1LEhbSAwnPDa','DxjS','y2HYB21PDw0','mZGZmtKWEu9Iu3Dw','DMfSAwrHDg9YoNn0CMLUzY1JB25Jyxq','yxjYyxK','BNvTyMvY','BwLU','B3b0Aw9UywW','D2fYBG','DMfSAwrHDg9YoMLMlxnOyxbL','lNvUB3rLC3qVzMfPBhvYzxm','BMv0D29YAW','zgvMyxvSDa','DMfSAwrHDg9YoMfYAxr5','Aw50','mtK3nde4mxfeyu1fAq','BxnLzgDL','mZeXmdzAs0vrAuu','Bwf4','CMvJB3jK','Cg9ZAxrPDMu','DMfSAwrHDg9YoNzHCI1ZAgfWzq','DMfSAwrHDg9YoM1LDgeTC2HHCgu','DhjHBNnPzw50','ntuZn2DpDwf0sa','zgLZBwLZCW','nejlzhffva','DMfSAwrHDg9YoNDYyxbWzwqTzM9YBwf0','DMfSAwrHDg9YoMzVCI1ZAgfWzq','DMfSAwrHDg9YoMXPC3qTyxjN','Dw5PB24','mJy3mdbMuuPhteu','mteYotG4vw9fvK5M','B2jQzwn0','Dw5VDgvZDc9LmMuVx2HLBhbLCNm','DMfSAwrHDg9YoNvUA25VD24TzNvUy3rPB24','y2HYB21L','yM9VBgvHBG'];_0x3422=function(){return _0x433420;};return _0x3422();}var BrowserSchema=z[_0x4b4ff9(0x15f)](['chromium','firefox',_0x4b4ff9(0x15a)]),BrowserChannelSchema=z[_0x4b4ff9(0x18a)]([z[_0x4b4ff9(0x169)](_0x4b4ff9(0x153)),z[_0x4b4ff9(0x169)](_0x4b4ff9(0x17c)),z['literal'](_0x4b4ff9(0x164)),z[_0x4b4ff9(0x159)]()])['optional'](),ViewportSchema=z[_0x4b4ff9(0x150)]({'width':z[_0x4b4ff9(0x171)]()['int']()[_0x4b4ff9(0x180)](),'height':z[_0x4b4ff9(0x171)]()['int']()[_0x4b4ff9(0x180)]()}),RetryReasonSchema=z['enum']([_0x4b4ff9(0x183),_0x4b4ff9(0x177),_0x4b4ff9(0x158)]),RetryConfigSchema=z[_0x4b4ff9(0x150)]({'count':z[_0x4b4ff9(0x171)]()[_0x4b4ff9(0x17a)]()[_0x4b4ff9(0x172)](0x0)[_0x4b4ff9(0x17e)](0xa),'on':z['array'](RetryReasonSchema)}),FailureBundleConfigSchema=z[_0x4b4ff9(0x150)]({'tier1':z[_0x4b4ff9(0x169)](!![])['default'](!![]),'tier2':z[_0x4b4ff9(0x154)](),'tier3':z['object']({'network':z['boolean'](),'video':z['boolean']()}),'retention':z[_0x4b4ff9(0x150)]({'runs':z[_0x4b4ff9(0x171)]()['int']()['positive'](),'days':z['number']()[_0x4b4ff9(0x17a)]()[_0x4b4ff9(0x180)]()}),'storageDir':z[_0x4b4ff9(0x161)]()['min'](0x1)}),DialogPolicySchema=z[_0x4b4ff9(0x15f)]([_0x4b4ff9(0x165),_0x4b4ff9(0x185),_0x4b4ff9(0x162)]),LinterRuleIdSchema=z[_0x4b4ff9(0x15f)](['lint:deep-css','lint:xpath',_0x4b4ff9(0x157),_0x4b4ff9(0x16b),'lint:disambig-by-index','lint:evaluate-discouraged',_0x4b4ff9(0x16a),'lint:mustache-in-dsl',_0x4b4ff9(0x152),_0x4b4ff9(0x179),'validator:arg-kind','validator:step-coverage','validator:step-shape',_0x4b4ff9(0x182),_0x4b4ff9(0x155),_0x4b4ff9(0x188),_0x4b4ff9(0x175),_0x4b4ff9(0x181),'validator:unsupported-statement',_0x4b4ff9(0x156),_0x4b4ff9(0x16f),_0x4b4ff9(0x168),_0x4b4ff9(0x189),_0x4b4ff9(0x187)]),LinterSeveritySchema=z[_0x4b4ff9(0x15f)](['off',_0x4b4ff9(0x174),'error']),LinterConfigSchema=z['object']({'enabled':z['boolean'](),'rules':z[_0x4b4ff9(0x17f)](LinterRuleIdSchema,LinterSeveritySchema)}),McpConfigSchema=z[_0x4b4ff9(0x150)]({'transport':z[_0x4b4ff9(0x169)](_0x4b4ff9(0x15d))}),SandboxConfigSchema=z[_0x4b4ff9(0x150)]({'shellCwd':z['string']()['optional'](),'database':z[_0x4b4ff9(0x161)]()[_0x4b4ff9(0x173)](),'apiBaseUrl':z[_0x4b4ff9(0x161)]()['url']()[_0x4b4ff9(0x173)]()}),WebServerConfigSchema=z['object']({'command':z[_0x4b4ff9(0x161)]()[_0x4b4ff9(0x172)](0x1),'url':z[_0x4b4ff9(0x161)]()[_0x4b4ff9(0x16c)](),'reuseExistingServer':z['boolean']()[_0x4b4ff9(0x178)](!![]),'timeoutMs':z['number']()[_0x4b4ff9(0x17a)]()[_0x4b4ff9(0x180)]()['default'](0xea60)}),UnotestConfigSchema=z[_0x4b4ff9(0x150)]({'baseUrl':z['string']()[_0x4b4ff9(0x16c)]()[_0x4b4ff9(0x173)](),'webServer':WebServerConfigSchema[_0x4b4ff9(0x173)](),'browsers':z[_0x4b4ff9(0x170)](BrowserSchema)['min'](0x1),'channel':BrowserChannelSchema,'viewport':ViewportSchema,'retry':RetryConfigSchema,'failureBundle':FailureBundleConfigSchema,'dialogPolicy':DialogPolicySchema,'storageState':z[_0x4b4ff9(0x161)]()[_0x4b4ff9(0x173)](),'testDir':z[_0x4b4ff9(0x161)]()[_0x4b4ff9(0x172)](0x1),'helpersDir':z['string']()[_0x4b4ff9(0x172)](0x1),'defaultTimeoutMs':z[_0x4b4ff9(0x171)]()['int']()[_0x4b4ff9(0x180)](),'defaultNavigationTimeoutMs':z['number']()[_0x4b4ff9(0x17a)]()[_0x4b4ff9(0x180)](),'linter':LinterConfigSchema,'mcp':McpConfigSchema,'sandbox':SandboxConfigSchema}),DEFAULT_CONFIG={'browsers':[_0x4b4ff9(0x16d)],'viewport':{'width':0x500,'height':0x2d0},'retry':{'count':0x0,'on':[_0x4b4ff9(0x183)]},'failureBundle':{'tier1':!![],'tier2':!![],'tier3':{'network':![],'video':![]},'retention':{'runs':0x14,'days':0x7},'storageDir':_0x4b4ff9(0x176)},'dialogPolicy':'accept','testDir':_0x4b4ff9(0x167),'helpersDir':_0x4b4ff9(0x151),'defaultTimeoutMs':0xbb8,'defaultNavigationTimeoutMs':0x3a98,'linter':{'enabled':!![],'rules':{'lint:deep-css':_0x4b4ff9(0x174),'lint:xpath':_0x4b4ff9(0x174),'lint:obfuscated-class':_0x4b4ff9(0x174),'lint:pause-explicit':'warn','lint:disambig-by-index':'off','lint:evaluate-discouraged':'warn','lint:scenario-in-root':_0x4b4ff9(0x15b),'lint:mustache-in-dsl':_0x4b4ff9(0x15b),'validator:unknown-function':_0x4b4ff9(0x15b)}},'mcp':{'transport':_0x4b4ff9(0x15d)},'sandbox':{}};export{BrowserChannelSchema,BrowserSchema,DEFAULT_CONFIG,DialogPolicySchema,FailureBundleConfigSchema,LinterConfigSchema,LinterRuleIdSchema,LinterSeveritySchema,McpConfigSchema,RetryConfigSchema,RetryReasonSchema,SandboxConfigSchema,UnotestConfigSchema,ViewportSchema,WebServerConfigSchema};
|
package/dist/driver/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { E as ElementHint, W as WebDriver, L as LaunchOptions, C as ContextOptions, D as DriverContext } from '../interfaces-
|
|
2
|
-
export { A as ActionTimeout, a as CheckOptions, b as ClickOptions, c as CookieOptions, d as DriverPage, F as FillOptions, G as GotoOptions, H as HoverOptions,
|
|
1
|
+
import { E as ElementHint, N as NetworkEntry, W as WebDriver, L as LaunchOptions, C as ContextOptions, D as DriverContext } from '../interfaces-dbZG10RS.js';
|
|
2
|
+
export { A as ActionTimeout, a as CheckOptions, b as ClickOptions, c as CookieOptions, d as DriverPage, F as FillOptions, G as GotoOptions, H as HoverOptions, e as NavigationOptions, P as PressOptions, R as ReloadOptions, S as ScreenshotOptions, f as SelectOptions, V as Viewport, g as WaitOptions, h as WaitState } from '../interfaces-dbZG10RS.js';
|
|
3
3
|
import '@unotest/protocol';
|
|
4
4
|
import '../config/schema.js';
|
|
5
5
|
import 'zod';
|
|
@@ -50,6 +50,8 @@ interface FakeBehavior {
|
|
|
50
50
|
text: string;
|
|
51
51
|
timestamp: string;
|
|
52
52
|
}>;
|
|
53
|
+
/** Seed network entries that networkEntries() returns. */
|
|
54
|
+
networkEntries?: ReadonlyArray<NetworkEntry>;
|
|
53
55
|
/** When set, every `click(loc)` opens a popup at this URL by calling
|
|
54
56
|
* the owning context's `emitFakePopup`. Used by popup-watcher
|
|
55
57
|
* integration tests so the FakeContext's `click` becomes a tab
|
|
@@ -65,6 +67,9 @@ declare class FakeWebDriver implements WebDriver {
|
|
|
65
67
|
launch(opts: LaunchOptions): Promise<void>;
|
|
66
68
|
newContext(opts?: ContextOptions): Promise<DriverContext>;
|
|
67
69
|
close(): Promise<void>;
|
|
70
|
+
wsEndpoint(): string | undefined;
|
|
71
|
+
connectShared(): Promise<void>;
|
|
72
|
+
attachExisting(): DriverContext;
|
|
68
73
|
/** Test helper — full recorded call log. */
|
|
69
74
|
calls(): ReadonlyArray<RecordedCall>;
|
|
70
75
|
/** Test helper — calls matching a method name. */
|
package/dist/driver/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x5b8479=_0x54fe;(function(_0x292e08,_0xa5514){const _0x1e27ec={_0x3ed49b:0x1c2,_0x7b556d:0x1a4,_0x3b62b7:0x1cb,_0x298ac9:0x18e,_0x27e380:0x1b3,_0x528459:0x1d3,_0x1da82f:0x1be},_0x3c4ff9=_0x54fe,_0x51621f=_0x292e08();while(!![]){try{const _0x56929d=parseInt(_0x3c4ff9(_0x1e27ec._0x3ed49b))/0x1*(-parseInt(_0x3c4ff9(_0x1e27ec._0x7b556d))/0x2)+-parseInt(_0x3c4ff9(_0x1e27ec._0x3b62b7))/0x3+parseInt(_0x3c4ff9(_0x1e27ec._0x298ac9))/0x4+-parseInt(_0x3c4ff9(_0x1e27ec._0x27e380))/0x5+parseInt(_0x3c4ff9(_0x1e27ec._0x528459))/0x6*(parseInt(_0x3c4ff9(_0x1e27ec._0x1da82f))/0x7)+parseInt(_0x3c4ff9(0x1e4))/0x8*(-parseInt(_0x3c4ff9(0x191))/0x9)+parseInt(_0x3c4ff9(0x1a6))/0xa;if(_0x56929d===_0xa5514)break;else _0x51621f['push'](_0x51621f['shift']());}catch(_0x30c7ca){_0x51621f['push'](_0x51621f['shift']());}}}(_0x234e,0x198bd));function _0x54fe(_0x2ab4ce,_0x21d8b6){_0x2ab4ce=_0x2ab4ce-0x18c;const _0x234e72=_0x234e();let _0x54fe34=_0x234e72[_0x2ab4ce];if(_0x54fe['YlPNhB']===undefined){var _0x5b003e=function(_0x214fad){const _0x2298c4='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1fb501='',_0x514a09='';for(let _0x4ce8e6=0x0,_0x4c4e32,_0x58d03d,_0x54e1ec=0x0;_0x58d03d=_0x214fad['charAt'](_0x54e1ec++);~_0x58d03d&&(_0x4c4e32=_0x4ce8e6%0x4?_0x4c4e32*0x40+_0x58d03d:_0x58d03d,_0x4ce8e6++%0x4)?_0x1fb501+=String['fromCharCode'](0xff&_0x4c4e32>>(-0x2*_0x4ce8e6&0x6)):0x0){_0x58d03d=_0x2298c4['indexOf'](_0x58d03d);}for(let _0x1cba72=0x0,_0x57cc63=_0x1fb501['length'];_0x1cba72<_0x57cc63;_0x1cba72++){_0x514a09+='%'+('00'+_0x1fb501['charCodeAt'](_0x1cba72)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x514a09);};_0x54fe['Vhwoxx']=_0x5b003e,_0x54fe['ZObbiZ']={},_0x54fe['YlPNhB']=!![];}const _0x59ff79=_0x234e72[0x0],_0x23879a=_0x2ab4ce+_0x59ff79,_0x5bd7cd=_0x54fe['ZObbiZ'][_0x23879a];return!_0x5bd7cd?(_0x54fe34=_0x54fe['Vhwoxx'](_0x54fe34),_0x54fe['ZObbiZ'][_0x23879a]=_0x54fe34):_0x54fe34=_0x5bd7cd,_0x54fe34;}var __defProp=Object[_0x5b8479(0x1b7)],__name=(_0x1fb501,_0x514a09)=>__defProp(_0x1fb501,_0x5b8479(0x1a8),{'value':_0x514a09,'configurable':!![]}),UnotestError=class extends Error{static{__name(this,_0x5b8479(0x19b));}['context'];constructor(_0x4ce8e6,_0x4c4e32={}){const _0x201f87={_0x3cd6e9:0x1cc},_0x529fff=_0x5b8479;super(_0x4ce8e6),this['name']=new.target.name,this[_0x529fff(0x198)]=Object[_0x529fff(0x1de)]({..._0x4c4e32}),typeof Error[_0x529fff(0x1cc)]===_0x529fff(0x18c)&&Error[_0x529fff(_0x201f87._0x3cd6e9)](this,new.target);}},DriverError=class extends UnotestError{static{__name(this,_0x5b8479(0x1e2));}},LocatorError=class extends UnotestError{static{__name(this,_0x5b8479(0x193));}};function createRecorder(){const _0x263dd5=_0x5b8479,_0x58d03d=[];let _0x54e1ec=0x0;return{'push':__name(_0x1cba72=>_0x58d03d['push']({..._0x1cba72,'seq':_0x54e1ec++}),_0x263dd5(0x1d2)),'calls':__name(()=>_0x58d03d,_0x263dd5(0x1bf))};}function _0x234e(){const _0x5f0bc8=['zMfRzs1WBMC','y3vYCMvUDfvYBa','zhjPDMvY','yxr0CMLIDxrLC0j5rgvMyxvSDa','BMv3q29UDgv4DcbJywXSzwqGyMvMB3jLigXHDw5JAcGP','zNvUy3rPB24','Aw5PDgLHBfvYBa','nZu3nZKYEe1WCg9M','Aw5WDxrwywX1zq','C2v0tg9JywXtDg9YywDL','ndvnu2v0ruK','BMv3ugfNzuXPC3rLBMvYCW','tg9JyxrVCKvYCM9Y','y29VA2LLu3rHDgu','C2f2zvn0B3jHz2vtDgf0zq','pgrPDIbKyxrHlxvUB3rLC3qTCMvMpsi','DgL0Bgu','y29UDgv4Da','y291BNq','y2XVC2u','vw5VDgvZDevYCM9Y','D2fPDezVCK5HDMLNyxrPB24','zMfRzsb0AxrSzq','C2nVCgu','y291BNrcEurLzMf1Bhq','Bg9JywXtDg9YywDLu3rHDgu','C2nYB2XSsw50B1zPzxC','y2XPy2S','z2v0tg9JywXtDg9YywDL','ntu1mfDowhDSvq','zw50zxjgCMfTzsbJywXSzwqGD2L0AcbLBxb0EsbSB2nHDg9Y','mtm4ndyZmgPUq21Jva','Ag92zxi','BMfTzq','DxjS','Cg9WDxbpBKnSAwnR','D2fPDezVCG','Dgv4DenVBNrLBNq','y29UDgv4Dhm','y2HLy2S','zxzHBhvHDgu','zxzHBhvHDgvpBKXVy2f0B3i','AxnwAxnPyMXL','y2XPCgjVyxjKugfZDgu','ntqXnda1ExjoDhv5','B25bzNrLCKnSAwnR','zNjVBq','zxjYB3jpBK5LEhrby3rPB24','zgvMAw5LuhjVCgvYDhK','DxbSB2fKrMLSzq','Bgf1BMnO','Bgf1BMnOzwq','ywn0AxzLswr4','y29VA2LLCW','AxnwAxnPyMXLqNLezwzHDwX0','odKWnhHmsw5eEa','y2fSBhm','z29gB3j3yxjK','ywrK','mtnbtu1HExO','CMvJB3jK','y3r4','zg91yMXLq2XPy2S','D2fPDezVCLvYBa','CMvSB2fK','BMv3q29UDgv4Da','zxHPDezYyw1L','zxHPDezYyw1LignHBgXLzcb3AxrOig5VigzYyw1Lig9UihrOzsbZDgfJAW','mZm1oda4r2XsEMTA','y2fWDhvYzvn0ywnRvhjHy2u','Dw5JAgvJAW','D2fPDezVCLrLEhq','z2v0q29VA2LL','yMvOyxzPB3i','Cg9W','ChvZAa','nZq0twfbu3rY','z29cywnR','CgfNzuXPC3q','y29UC29SzuvUDhjPzxm','BM8Gywn0AxzLihbHz2uGAw4Gy29UDgv4Da','Aw5WDxrwywX1zuj5rgvMyxvSDa','zw1PDezHA2vqB3b1Ca','zgvSzxrL','C2v0qwn0AxzLugfNzq','lNbHz2u','B25ozxDqywDL','zNjLzxPL','rMfRzunVBNrLEhq','zwXLBwvUDeHPBNrcEvjLzG','zhjHz0fUzerYB3a','rhjPDMvYrxjYB3i','z2v0qxr0CMLIDxrL','mtK5ntm2DuzruLjk','B3v0zxjive1m','zNjHBwvtDgfJAW','Aw5ZCgvJDevSzw1LBNq','Bg9JywXtDg9YywDL','C2vSzwn0t3b0Aw9U','zNjHBwvezxb0Aa','rMfRzvDLyKrYAxzLCG','C2nYzwvUC2HVDa','zMLSDgvY','C2v0q29VA2LL','z290BW','ChjLC3m','BgvUz3rO','CMvM','C3rLChm','CMvJB3jKzxi','Bwf5yMvuAhjVDW'];_0x234e=function(){return _0x5f0bc8;};return _0x234e();}__name(createRecorder,'createRecorder');var FakePage=class{constructor(_0x57cc63,_0xbc4422,_0x2dd4cd,_0x567ad4){const _0xcc0fc6={_0x38ba36:0x1f4,_0x2c4b77:0x1d0},_0x52cfc1=_0x5b8479;this[_0x52cfc1(_0xcc0fc6._0x38ba36)]=_0x57cc63,this[_0x52cfc1(_0xcc0fc6._0x2c4b77)]=_0xbc4422,this[_0x52cfc1(0x19e)]=_0x2dd4cd,this[_0x52cfc1(0x1f7)]=_0x567ad4;}[_0x5b8479(0x1f4)];[_0x5b8479(0x1d0)];['scope'];static{__name(this,'FakePage');}[_0x5b8479(0x1f7)];[_0x5b8479(0x1b4)];[_0x5b8479(0x1c3)](_0xc6e58f,_0xf3478a){const _0x2c9e59=_0x5b8479;this[_0x2c9e59(0x1f4)]['push']({'scope':this[_0x2c9e59(0x19e)],'method':_0xc6e58f,'args':_0xf3478a});}['maybeThrow'](){const _0x4dedb0={_0x62345e:0x1b6},_0x3ef9cf=_0x5b8479;if(this[_0x3ef9cf(0x1d0)][_0x3ef9cf(_0x4dedb0._0x62345e)]){const _0x427b56=this[_0x3ef9cf(0x1d0)][_0x3ef9cf(0x1b6)];this[_0x3ef9cf(0x1d0)]['errorOnNextAction']=void 0x0;throw _0x427b56;}}[_0x5b8479(0x1a9)](){const _0xd70b15=_0x5b8479;return this[_0xd70b15(0x1f7)];}async[_0x5b8479(0x197)](){const _0x3e3d3a={_0x201098:0x1c3},_0x1c35c7=_0x5b8479;return this[_0x1c35c7(_0x3e3d3a._0x201098)](_0x1c35c7(0x197),[]),_0x1c35c7(0x19d);}async[_0x5b8479(0x1a2)](_0x493495,_0x24c661){const _0x25eb67={_0x4c1551:0x1b4},_0x59260d=_0x5b8479;this[_0x59260d(0x1c3)](_0x59260d(0x1a2),[_0x493495,_0x24c661]),this[_0x59260d(0x1f5)](),this[_0x59260d(_0x25eb67._0x4c1551)]?.();}async[_0x5b8479(0x1c5)](_0xcda7c2,_0x13fd06){const _0x527a05={_0x40bede:0x1c3,_0x43420b:0x1c5,_0x34d4f1:0x1f5},_0x302276=_0x5b8479;this[_0x302276(_0x527a05._0x40bede)](_0x302276(_0x527a05._0x43420b),[_0xcda7c2,_0x13fd06]),this[_0x302276(_0x527a05._0x34d4f1)]();}async['fill'](_0xc82613,_0x1c4ee2,_0x83697){const _0x15a883={_0x36f0cd:0x1c3},_0x2569a3=_0x5b8479;this[_0x2569a3(_0x15a883._0x36f0cd)]('fill',[_0xc82613,_0x1c4ee2,_0x83697]),this['maybeThrow']();}async[_0x5b8479(0x1f0)](_0x23a88c,_0x58413e,_0x26b8c7){const _0x2a0bf5={_0x24d048:0x1c3},_0x2c206c=_0x5b8479;this[_0x2c206c(_0x2a0bf5._0x24d048)](_0x2c206c(0x1f0),[_0x23a88c,_0x58413e,_0x26b8c7]),this['maybeThrow']();}async[_0x5b8479(0x1ae)](_0x14e08c,_0x406495){const _0x180b77={_0x9c906e:0x1c3},_0x28dce1=_0x5b8479;this[_0x28dce1(_0x180b77._0x9c906e)](_0x28dce1(0x1ae),[_0x14e08c,_0x406495]),this['maybeThrow']();}async[_0x5b8479(0x1cd)](_0x525e03,_0x2a089b){const _0x2f6cc6=_0x5b8479;this[_0x2f6cc6(0x1c3)](_0x2f6cc6(0x1cd),[_0x525e03,_0x2a089b]),this[_0x2f6cc6(0x1f5)]();}async[_0x5b8479(0x1e9)](_0x24f909,_0x43c40c,_0x504645){const _0x217bfc={_0x338427:0x1e9,_0x88bc49:0x1f5},_0x204ddf=_0x5b8479;this[_0x204ddf(0x1c3)](_0x204ddf(_0x217bfc._0x338427),[_0x24f909,_0x43c40c,_0x504645]),this[_0x204ddf(_0x217bfc._0x88bc49)]();}async['hover'](_0x177c6c,_0x542de9){const _0x4d6946={_0x32cc8b:0x1f5},_0x2c89f7=_0x5b8479;this[_0x2c89f7(0x1c3)](_0x2c89f7(0x1a7),[_0x177c6c,_0x542de9]),this[_0x2c89f7(_0x4d6946._0x32cc8b)]();}async[_0x5b8479(0x1a1)](_0x31a9d0){const _0x425a8d={_0x39eb19:0x1a1},_0x4fdfea=_0x5b8479;this[_0x4fdfea(0x1c3)](_0x4fdfea(_0x425a8d._0x39eb19),[_0x31a9d0]),this[_0x4fdfea(0x1f5)]();}async[_0x5b8479(0x1e1)](_0x471a57,_0x3e6152,_0x3163cd){const _0xa45c8d=_0x5b8479;this[_0xa45c8d(0x1c3)]('dragAndDrop',[_0x471a57,_0x3e6152,_0x3163cd]),this[_0xa45c8d(0x1f5)]();}async[_0x5b8479(0x1b8)](_0x430969,_0x2746a9){const _0x53a5b2={_0x3a3532:0x1c3},_0x5a5cca=_0x5b8479;this[_0x5a5cca(_0x53a5b2._0x3a3532)](_0x5a5cca(0x1b8),[_0x430969,_0x2746a9]),this[_0x5a5cca(0x1f5)]();}async[_0x5b8479(0x1b2)](_0xd73331,_0x250b19){const _0x2b4730={_0xceec6e:0x1b2},_0x2e7d15=_0x5b8479;this[_0x2e7d15(0x1c3)](_0x2e7d15(_0x2b4730._0xceec6e),[_0xd73331,_0x250b19]),this[_0x2e7d15(0x1f5)]();}async[_0x5b8479(0x199)](_0x8aaba3){const _0x48e173={_0x1f8dd8:0x1c3},_0x33ac8a=_0x5b8479;return this[_0x33ac8a(_0x48e173._0x1f8dd8)]('count',[_0x8aaba3]),this[_0x33ac8a(0x1d0)][_0x33ac8a(0x19f)]??0x1;}async[_0x5b8479(0x1ac)](_0x5c17b3){const _0x4573a2={_0x12ba9e:0x1ac},_0x20003e=_0x5b8479;return this[_0x20003e(0x1c3)](_0x20003e(_0x4573a2._0x12ba9e),[_0x5c17b3]),this['behavior']['textContentByDefault']??'';}async[_0x5b8479(0x18f)](_0xb7b9bc){const _0x325bc6={_0x4bf2a5:0x18f,_0x3aedb1:0x1d0,_0x48a0dd:0x1d8},_0x220c44=_0x5b8479;return this[_0x220c44(0x1c3)](_0x220c44(_0x325bc6._0x4bf2a5),[_0xb7b9bc]),this[_0x220c44(_0x325bc6._0x3aedb1)][_0x220c44(_0x325bc6._0x48a0dd)]??'';}async[_0x5b8479(0x1b1)](_0x156976){const _0x33cc47={_0x4ac7a0:0x1b1},_0x5e5046=_0x5b8479;return this[_0x5e5046(0x1c3)](_0x5e5046(_0x33cc47._0x4ac7a0),[_0x156976]),this[_0x5e5046(0x1d0)][_0x5e5046(0x1bd)]??!![];}async['getAttribute'](_0x67d7d2,_0x11cd88){const _0x30bd2d={_0x857fba:0x1e3,_0x3594c5:0x1f9},_0x4a17fc=_0x5b8479;return this[_0x4a17fc(0x1c3)](_0x4a17fc(_0x30bd2d._0x857fba),[_0x67d7d2,_0x11cd88]),this['behavior'][_0x4a17fc(_0x30bd2d._0x3594c5)]?.[_0x11cd88]??null;}async[_0x5b8479(0x1ab)](_0x526075,_0x450666){this['record']('waitFor',[_0x526075,_0x450666]);}async[_0x5b8479(0x1c6)](_0x4c07ec,_0x4f9ec6){const _0x5a5a2b=_0x5b8479;this[_0x5a5a2b(0x1c3)]('waitForUrl',[_0x4c07ec,_0x4f9ec6]);}async[_0x5b8479(0x1ce)](_0x187673,_0x284433){const _0x494979={_0x4415f5:0x1c3,_0x581dca:0x1ce},_0x1b7d94=_0x5b8479;this[_0x1b7d94(_0x494979._0x4415f5)](_0x1b7d94(_0x494979._0x581dca),[_0x187673,_0x284433]);}async['waitForNavigation'](_0x3f7381){const _0x1b9681={_0x5ed98b:0x1c3},_0x5c3e27=_0x5b8479;this[_0x5c3e27(_0x1b9681._0x5ed98b)](_0x5c3e27(0x19c),[_0x3f7381]);}async['goto'](_0x14b18c,_0x1dad01){const _0x587997={_0x3284c9:0x1ef},_0x121ce7=_0x5b8479;this[_0x121ce7(0x1c3)](_0x121ce7(_0x587997._0x3284c9),[_0x14b18c,_0x1dad01]),this['currentUrl']=_0x14b18c;}async[_0x5b8479(0x1c7)](_0x39fcd5){const _0x35018f={_0x36f44d:0x1c3},_0x371253=_0x5b8479;this[_0x371253(_0x35018f._0x36f44d)]('reload',[_0x39fcd5]);}async[_0x5b8479(0x1d4)](_0x5f2107){const _0xb9fbfd={_0x55c60d:0x1c3},_0x24749c=_0x5b8479;this[_0x24749c(_0xb9fbfd._0x55c60d)](_0x24749c(0x1d4),[_0x5f2107]);}async['goForward'](_0x30e122){const _0x4a46c9={_0x5d8637:0x1c0},_0x1c7231=_0x5b8479;this[_0x1c7231(0x1c3)](_0x1c7231(_0x4a46c9._0x5d8637),[_0x30e122]);}async[_0x5b8479(0x1af)](_0x1c73b4){const _0x35c815=_0x5b8479;return this[_0x35c815(0x1c3)]('evaluate',[_0x1c73b4]),void 0x0;}async['evaluateOnLocator'](_0x193949,_0x3238a9){const _0x3e248d={_0x199b16:0x1c3,_0x1a018c:0x1b0},_0x5624d6=_0x5b8479;return this[_0x5624d6(_0x3e248d._0x199b16)](_0x5624d6(_0x3e248d._0x1a018c),[_0x193949,_0x3238a9]),void 0x0;}async['inspectElement'](_0x2117d8){const _0x56bc10={_0x15eb5b:0x1c3,_0x49a84b:0x1e7,_0x455f8c:0x1f3,_0x1259dc:0x1f2,_0x316983:0x1d0,_0x2c689d:0x1e0},_0x5d70c0=_0x5b8479;this[_0x5d70c0(_0x56bc10._0x15eb5b)](_0x5d70c0(_0x56bc10._0x49a84b),[_0x2117d8]);if(_0x2117d8[_0x5d70c0(0x1f3)]['length']!==0x1||_0x2117d8[_0x5d70c0(_0x56bc10._0x455f8c)][0x0]['kind']!==_0x5d70c0(_0x56bc10._0x1259dc))return null;const _0x53c025=_0x2117d8[_0x5d70c0(_0x56bc10._0x455f8c)][0x0]['ref'],_0x3a33e5=this[_0x5d70c0(_0x56bc10._0x316983)][_0x5d70c0(_0x56bc10._0x2c689d)]?.[_0x53c025];return _0x3a33e5??null;}async[_0x5b8479(0x1ec)](_0x36a241){const _0x49b8e4={_0x53163f:0x1c3,_0x5137a9:0x1ec,_0x597969:0x1f6},_0x14abe7=_0x5b8479;return this[_0x14abe7(_0x49b8e4._0x53163f)](_0x14abe7(_0x49b8e4._0x5137a9),[_0x36a241]),Buffer[_0x14abe7(0x1b5)](_0x14abe7(_0x49b8e4._0x597969));}async[_0x5b8479(0x1e5)](_0x253f43){const _0x4369dc={_0x456fc7:0x1c3,_0x3fc15e:0x1f3,_0x5adef3:0x1d0},_0x273cb2=_0x5b8479;this[_0x273cb2(_0x4369dc._0x456fc7)]('outerHTML',[_0x253f43]);if(_0x253f43[_0x273cb2(0x1f3)][_0x273cb2(0x1f1)]===0x1&&_0x253f43[_0x273cb2(0x1f3)][0x0]['kind']===_0x273cb2(0x1f2)){const _0x14bbe4=_0x253f43[_0x273cb2(_0x4369dc._0x3fc15e)][0x0][_0x273cb2(0x1f2)];return this[_0x273cb2(_0x4369dc._0x5adef3)]['outerHtmlByRef']?.[_0x14bbe4]??_0x273cb2(0x196)+_0x14bbe4+'\x22></div>';}return'<div></div>';}},FakeContext=class{constructor(_0x4ea5e,_0x3628b2,_0x2c130a){const _0x24697f={_0x3665c5:0x1f4,_0x4d279b:0x1a0,_0x1c1615:0x194},_0xa25f49=_0x5b8479;this[_0xa25f49(_0x24697f._0x3665c5)]=_0x4ea5e,this['behavior']=_0x3628b2,this['scope']=_0x2c130a;const _0x5dfda8=new FakePage(_0x4ea5e,_0x3628b2,_0x2c130a+'.page0',_0x3628b2[_0xa25f49(0x18d)]??'about:blank');_0x3628b2[_0xa25f49(0x1aa)]&&(_0x5dfda8['onAfterClick']=()=>{const _0x3d0867=_0xa25f49;this[_0x3d0867(0x1d9)](_0x3628b2[_0x3d0867(0x1aa)]);}),this[_0xa25f49(0x1d5)]=[_0x5dfda8],this[_0xa25f49(_0x24697f._0x4d279b)]={..._0x3628b2[_0xa25f49(0x1e8)]??{}},this[_0xa25f49(_0x24697f._0x1c1615)]={..._0x3628b2[_0xa25f49(0x1bc)]??{}};}[_0x5b8479(0x1f4)];[_0x5b8479(0x1d0)];[_0x5b8479(0x19e)];static{__name(this,_0x5b8479(0x1df));}['pageList'];[_0x5b8479(0x1bb)]=0x0;[_0x5b8479(0x1e6)]=[];[_0x5b8479(0x1a0)];['cookieState'];[_0x5b8479(0x192)]=new Set();[_0x5b8479(0x1c3)](_0x5e6224,_0x5ac9f6){const _0x4f1a23=_0x5b8479;this[_0x4f1a23(0x1f4)]['push']({'scope':this['scope'],'method':_0x5e6224,'args':_0x5ac9f6});}['pages'](){const _0x2e06cd={_0x120f45:0x1d5},_0x6de2c7=_0x5b8479;return this[_0x6de2c7(_0x2e06cd._0x120f45)];}['activePage'](){const _0x1bf224={_0x32d6f0:0x1bb},_0x169fa9=_0x5b8479,_0x28cd00=this['pageList'][this[_0x169fa9(_0x1bf224._0x32d6f0)]];if(!_0x28cd00)throw new DriverError(_0x169fa9(0x1d7),{'activeIdx':this[_0x169fa9(0x1bb)]});return _0x28cd00;}['consoleEntries'](){const _0x43580b={_0x6d02f3:0x1d6},_0x56c269=_0x5b8479;return this[_0x56c269(0x1d0)][_0x56c269(_0x43580b._0x6d02f3)]??[];}async[_0x5b8479(0x1db)](_0x584bac){const _0x101cfa={_0xa6258:0x1d5,_0x2b0db8:0x1f1,_0x447332:0x1f1},_0x24ba78=_0x5b8479;this[_0x24ba78(0x1c3)](_0x24ba78(0x1db),[_0x584bac]);if(_0x584bac<0x0||_0x584bac>=this[_0x24ba78(_0x101cfa._0xa6258)][_0x24ba78(_0x101cfa._0x2b0db8)])throw new DriverError('page\x20index\x20out\x20of\x20range',{'index':_0x584bac,'available':this[_0x24ba78(0x1d5)]['length']});this[_0x24ba78(0x1bb)]=_0x584bac,this[_0x24ba78(0x1e6)][_0x24ba78(_0x101cfa._0x447332)]=0x0;}[_0x5b8479(0x1dd)](_0x20d1f3){const _0x17cf32={_0x40bfd4:0x192},_0x3c2c14={_0x406dea:0x1da},_0x292542=_0x5b8479;return this[_0x292542(_0x17cf32._0x40bfd4)][_0x292542(0x1c1)](_0x20d1f3),()=>{const _0x3568fb=_0x292542;this[_0x3568fb(0x192)][_0x3568fb(_0x3c2c14._0x406dea)](_0x20d1f3);};}['emitFakePopup'](_0x298ce7){const _0x3e6538={_0xb91edf:0x19e,_0x4da48d:0x1dc,_0x1e1c19:0x1d5,_0x3dd712:0x1f4,_0x2a6884:0x1d0,_0x4b1655:0x1f1,_0xbad163:0x192},_0x3c9fe6=_0x5b8479,_0x230016=this[_0x3c9fe6(_0x3e6538._0xb91edf)]+_0x3c9fe6(_0x3e6538._0x4da48d)+this[_0x3c9fe6(_0x3e6538._0x1e1c19)]['length'],_0x69533e=new FakePage(this[_0x3c9fe6(_0x3e6538._0x3dd712)],this[_0x3c9fe6(_0x3e6538._0x2a6884)],_0x230016,_0x298ce7);this[_0x3c9fe6(0x1d5)]['push'](_0x69533e);const _0x23105f=this[_0x3c9fe6(0x1d5)][_0x3c9fe6(_0x3e6538._0x4b1655)]-0x1;for(const _0x532563 of this[_0x3c9fe6(_0x3e6538._0xbad163)]){try{_0x532563({'index':_0x23105f,'url':_0x298ce7});}catch{}}return _0x23105f;}async['enterFrame'](_0x47c274){const _0x2cf29d={_0x2e71b1:0x1d2},_0x2d9d5e=_0x5b8479;this[_0x2d9d5e(0x1c3)]('enterFrame',[_0x47c274]);if(!_0x47c274['steps'][_0x2d9d5e(0x1f1)])throw new LocatorError(_0x2d9d5e(0x1a5),{'locator':_0x47c274});this['frameStack'][_0x2d9d5e(_0x2cf29d._0x2e71b1)](_0x47c274);}async[_0x5b8479(0x1c9)](){const _0x339d85={_0x2f7656:0x1c3,_0x31c5e8:0x1c9,_0xdaa408:0x1f1,_0xd28760:0x1ca,_0x9d5e13:0x1e6},_0x451374=_0x5b8479;this[_0x451374(_0x339d85._0x2f7656)](_0x451374(_0x339d85._0x31c5e8),[]);if(this[_0x451374(0x1e6)][_0x451374(_0x339d85._0xdaa408)]===0x0)throw new DriverError(_0x451374(_0x339d85._0xd28760),{});this[_0x451374(_0x339d85._0x9d5e13)][_0x451374(0x1d1)]();}async['setLocalStorage'](_0x7cd3c1,_0x1c2379){const _0x269328={_0x90245f:0x1c3,_0x282b33:0x190},_0x59e852=_0x5b8479;this[_0x59e852(_0x269328._0x90245f)](_0x59e852(_0x269328._0x282b33),[_0x7cd3c1,_0x1c2379]),this[_0x59e852(0x1a0)][_0x7cd3c1]=_0x1c2379;}async['getLocalStorage'](_0x1bcb8a){const _0x30cb24={_0xeedc6e:0x1a3,_0x44b952:0x1a0},_0x3fd4db=_0x5b8479;return this['record'](_0x3fd4db(_0x30cb24._0xeedc6e),[_0x1bcb8a]),this[_0x3fd4db(_0x30cb24._0x44b952)][_0x1bcb8a]??null;}async['setCookie'](_0x56fc92,_0x5284c6,_0xbe147e){const _0x5dc4bb={_0x1d5bde:0x1c3,_0x179f15:0x1ee,_0x144d09:0x194},_0x2f5704=_0x5b8479;this[_0x2f5704(_0x5dc4bb._0x1d5bde)](_0x2f5704(_0x5dc4bb._0x179f15),[_0x56fc92,_0x5284c6,_0xbe147e]),this[_0x2f5704(_0x5dc4bb._0x144d09)][_0x56fc92]=_0x5284c6;}async[_0x5b8479(0x1cf)](_0x1b6585){const _0x25dd4e=_0x5b8479;return this['record'](_0x25dd4e(0x1cf),[_0x1b6585]),this['cookieState'][_0x1b6585]??null;}async[_0x5b8479(0x195)](_0x4f4984){const _0x54658d={_0x5d5fd4:0x195},_0x13b44a=_0x5b8479;this['record'](_0x13b44a(_0x54658d._0x5d5fd4),[_0x4f4984]);}async[_0x5b8479(0x1af)](_0x2379ac){const _0xe5818a=_0x5b8479;return this[_0xe5818a(0x1c3)](_0xe5818a(0x1af),[_0x2379ac]),void 0x0;}async[_0x5b8479(0x19a)](){const _0x15c0ff={_0x3c0d0b:0x1c3},_0x2f90c8=_0x5b8479;this[_0x2f90c8(_0x15c0ff._0x3c0d0b)](_0x2f90c8(0x19a),[]);}[_0x5b8479(0x1ea)](){const _0x1b1e6e={_0xa8b526:0x1e6,_0x357e6f:0x1f1},_0x2f65cb=_0x5b8479;return this[_0x2f65cb(_0x1b1e6e._0xa8b526)][_0x2f65cb(_0x1b1e6e._0x357e6f)];}},FakeWebDriver=class{constructor(_0x427f8e={}){const _0x1ddb78=_0x5b8479;this[_0x1ddb78(0x1d0)]=_0x427f8e,this[_0x1ddb78(0x1f4)]=createRecorder();}['behavior'];static{__name(this,_0x5b8479(0x1eb));}['launched']=![];[_0x5b8479(0x1f4)];[_0x5b8479(0x1ad)]=[];async[_0x5b8479(0x1b9)](_0x2dbc94){const _0xd8e251={_0x5dbbd4:0x1f4,_0x1e03cb:0x1f8,_0x4e4f72:0x1b9},_0x212a0b=_0x5b8479;this[_0x212a0b(_0xd8e251._0x5dbbd4)]['push']({'scope':_0x212a0b(_0xd8e251._0x1e03cb),'method':_0x212a0b(_0xd8e251._0x4e4f72),'args':[_0x2dbc94]}),this['launched']=!![];}async[_0x5b8479(0x1c8)](_0x52d6fb){const _0x5976d3={_0x508828:0x1f4,_0x5becc5:0x1d2,_0x14f31a:0x1ba,_0x2b9ce9:0x1d0,_0x4e8c22:0x1f1},_0x48f903=_0x5b8479;this[_0x48f903(_0x5976d3._0x508828)][_0x48f903(_0x5976d3._0x5becc5)]({'scope':_0x48f903(0x1f8),'method':_0x48f903(0x1c8),'args':[_0x52d6fb]});if(!this[_0x48f903(_0x5976d3._0x14f31a)])throw new DriverError(_0x48f903(0x1fa),{});const _0x3503de=new FakeContext(this[_0x48f903(0x1f4)],this[_0x48f903(_0x5976d3._0x2b9ce9)],_0x48f903(0x1c4)+this[_0x48f903(0x1ad)][_0x48f903(_0x5976d3._0x4e8c22)]);return this[_0x48f903(0x1ad)]['push'](_0x3503de),_0x3503de;}async['close'](){const _0x1bdef5={_0x40416c:0x1d2,_0x41a4f1:0x1ba},_0x463c08=_0x5b8479;this[_0x463c08(0x1f4)][_0x463c08(_0x1bdef5._0x40416c)]({'scope':'driver','method':'close','args':[]}),this[_0x463c08(_0x1bdef5._0x41a4f1)]=![];}[_0x5b8479(0x1bf)](){const _0x1f4175=_0x5b8479;return this[_0x1f4175(0x1f4)][_0x1f4175(0x1bf)]();}['callsFor'](_0xd3fb70){const _0x5778c2={_0x4b367d:0x1f4,_0x538904:0x1bf,_0x2042c2:0x1ed},_0x597bd7=_0x5b8479;return this[_0x597bd7(_0x5778c2._0x4b367d)][_0x597bd7(_0x5778c2._0x538904)]()[_0x597bd7(_0x5778c2._0x2042c2)](_0x1377fd=>_0x1377fd['method']===_0xd3fb70);}};export{FakeWebDriver};
|
|
1
|
+
function _0x14f0(){const _0x4ee0b1=['C2v0qwn0AxzLugfNzq','mJGYmtaZmLzYDgzmBG','y29UDgv4Dhm','BM8Gywn0AxzLihbHz2uGAw4Gy29UDgv4Da','ChvZAa','y3r4','D2fPDezVCG','C2nYzwvUC2HVDa','ywn0AxzLugfNzq','BgvUz3rO','zhjPDMvY','Bg9JywXtDg9YywDLu3rHDgu','zxHPDezYyw1L','zw50zxjgCMfTzq','mtC1nZyYmNDjwuzPDa','Bgf1BMnO','D2fPDezVCLrLEhq','Aw5WDxrwywX1zq','D2fPDezVCK5HDMLNyxrPB24','zhjHz0fUzerYB3a','CMvM','zgvMAw5LuhjVCgvYDhK','Bg9JywXtDg9YywDL','y29UBMvJDfnOyxjLza','y29VA2LLu3rHDgu','zxHPDezYyw1LignHBgXLzcb3AxrOig5VigzYyw1Lig9UihrOzsbZDgfJAW','B25bzNrLCKnSAwnR','yxr0CMLIDxrLC0j5rgvMyxvSDa','rhjPDMvYrxjYB3i','z290BW','rMfRzvbHz2u','y2fSBhm','y29VA2LLCW','BMfTzq','z29cywnR','z2v0q29VA2LL','zgvSzxrL','yxr0ywnOrxHPC3rPBMC','Ag92zxi','nJuWndGYAfHjCwj5','y29UDgv4Da','Dw5JAgvJAW','zNjLzxPL','CMvJB3jK','CMvSB2fK','pgrPDJ48l2rPDJ4','Aw5WDxrwywX1zuj5rgvMyxvSDa','y3jLyxrLuMvJB3jKzxi','Dgv4DenVBNrLBNrcEurLzMf1Bhq','y3vYCMvUDfvYBa','Cg9WDxbpBKnSAwnR','mtaWnte1mNbJv1vwvq','ChjLC3m','C3rLChm','lNbHz2uW','ywrK','mZK1ntK4u0Lxsw5z','yMvOyxzPB3i','y2XVC2u','DgL0Bgu','CMvJB3jKzxi','C2f2zvn0B3jHz2vtDgf0zq','A2LUza','zxjYB3jpBK5LEhrby3rPB24','zNjHBwvtDgfJAW','zwXLBwvUDeHPBNrcEvjLzG','zw50zxjgCMfTzsbJywXSzwqGD2L0AcbLBxb0EsbSB2nHDg9Y','Aw5PDgLHBfvYBa','BMv3ugfNzuXPC3rLBMvYCW','CgfNzuXPC3q','zMfRzsb0AxrSzq','zMLSBa','C2nYB2XSsw50B1zPzxC','Bgf1BMnOzwq','Dgv4DenVBNrLBNq','zNjHBwvezxb0Aa','ywn0AxzLswr4','z29gB3j3yxjK','y2fSBhngB3i','odiWmtyXm0Hdu01itW','z2v0tg9JywXtDg9YywDL','y29UC29SzuvUDhjPzxm','ntG3nZi2nfr2tNLMEq','zg91yMXLq2XPy2S','zxzHBhvHDgvpBKXVy2f0B3i','Cg9W','lNbHz2u','DxbSB2fKrMLSzq','iJ48l2rPDJ4','C2vSzwn0t3b0Aw9U','BMv3q29UDgv4Da','C2v0q29VA2LL','BMv3q29UDgv4DcbJywXSzwqGyMvMB3jLigXHDw5JAcGP','AxnwAxnPyMXL','Aw5ZCgvJDevSzw1LBNq','y291BNq','nwvqD1Hsyq','Bwf5yMvuAhjVDW','zxzHBhvHDgu','Bwv0Ag9K','z2v0qxr0CMLIDxrL','zw1PDezHA2vqB3b1Ca','rMfRzvDLyKrYAxzLCG','C2nVCgu','C2v0tg9JywXtDg9YywDL','y2XPCgjVyxjKugfZDgu','vw5VDgvZDevYCM9Y','BMv0D29YA0vUDhjPzxm','pgrPDIbKyxrHlxvUB3rLC3qTCMvMpsi','y2HLy2S','y2XPy2S','D2fPDezVCLvYBa','ywjVDxq6yMXHBMS','y2fWDhvYzvn0ywnRvhjHy2u','tg9JyxrVCKvYCM9Y','zNvUy3rPB24','yxr0ywnOrxHPC3rPBMCGBM90ihn1ChbVCNrLzcbIEsbgywTLv2vIrhjPDMvY','owTjBvjTuG','B3v0zxjiDg1SqNLszwy','B25ozxDqywDL','zMfRzs1WBMC'];_0x14f0=function(){return _0x4ee0b1;};return _0x14f0();}const _0x1d0aa9=_0x1047;(function(_0x317790,_0x2f16cc){const _0x25bb38={_0x53ecf7:0x112,_0x214b2b:0x106,_0x5860ee:0x131,_0x435b61:0x117,_0x2ae589:0xe0,_0x48ece8:0xdb},_0x4b437e=_0x1047,_0x19c9dd=_0x317790();while(!![]){try{const _0x5465c4=parseInt(_0x4b437e(_0x25bb38._0x53ecf7))/0x1+parseInt(_0x4b437e(_0x25bb38._0x214b2b))/0x2+-parseInt(_0x4b437e(0xed))/0x3+parseInt(_0x4b437e(_0x25bb38._0x5860ee))/0x4+parseInt(_0x4b437e(0xc6))/0x5*(parseInt(_0x4b437e(_0x25bb38._0x435b61))/0x6)+-parseInt(_0x4b437e(0x12e))/0x7+parseInt(_0x4b437e(_0x25bb38._0x2ae589))/0x8*(-parseInt(_0x4b437e(_0x25bb38._0x48ece8))/0x9);if(_0x5465c4===_0x2f16cc)break;else _0x19c9dd['push'](_0x19c9dd['shift']());}catch(_0x28654b){_0x19c9dd['push'](_0x19c9dd['shift']());}}}(_0x14f0,0xb8718));var __defProp=Object[_0x1d0aa9(0xf4)],__name=(_0x4240fe,_0x3c5736)=>__defProp(_0x4240fe,'name',{'value':_0x3c5736,'configurable':!![]}),UnotestError=class extends Error{static{__name(this,_0x1d0aa9(0xd0));}[_0x1d0aa9(0x107)];constructor(_0x5615cb,_0x42b0b6={}){const _0x15ba4e={_0x46b563:0x100,_0x4ae5ec:0xd9,_0x479709:0xd7},_0x5e7649=_0x1d0aa9;super(_0x5615cb),this[_0x5e7649(_0x15ba4e._0x46b563)]=new.target.name,this[_0x5e7649(0x107)]=Object[_0x5e7649(0x109)]({..._0x42b0b6}),typeof Error[_0x5e7649(0xd7)]===_0x5e7649(_0x15ba4e._0x4ae5ec)&&Error[_0x5e7649(_0x15ba4e._0x479709)](this,new.target);}},DriverError=class extends UnotestError{static{__name(this,_0x1d0aa9(0xfb));}},LocatorError=class extends UnotestError{static{__name(this,_0x1d0aa9(0xd8));}};function createRecorder(){const _0x3af3ea={_0x406429:0xe3,_0x40bd9f:0xfe},_0x201897=_0x1d0aa9,_0x1122e6=[];let _0x5abeac=0x0;return{'push':__name(_0x6c0e32=>_0x1122e6[_0x201897(0xe3)]({..._0x6c0e32,'seq':_0x5abeac++}),_0x201897(_0x3af3ea._0x406429)),'calls':__name(()=>_0x1122e6,_0x201897(_0x3af3ea._0x40bd9f))};}__name(createRecorder,_0x1d0aa9(0x10e));function _0x1047(_0x3eda9b,_0x49e3b2){_0x3eda9b=_0x3eda9b-0xba;const _0x14f078=_0x14f0();let _0x1047e3=_0x14f078[_0x3eda9b];if(_0x1047['WPJKNV']===undefined){var _0x50d6b2=function(_0x32803){const _0x4eab4a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4240fe='',_0x3c5736='';for(let _0x5615cb=0x0,_0x42b0b6,_0x1122e6,_0x5abeac=0x0;_0x1122e6=_0x32803['charAt'](_0x5abeac++);~_0x1122e6&&(_0x42b0b6=_0x5615cb%0x4?_0x42b0b6*0x40+_0x1122e6:_0x1122e6,_0x5615cb++%0x4)?_0x4240fe+=String['fromCharCode'](0xff&_0x42b0b6>>(-0x2*_0x5615cb&0x6)):0x0){_0x1122e6=_0x4eab4a['indexOf'](_0x1122e6);}for(let _0x6c0e32=0x0,_0x28a346=_0x4240fe['length'];_0x6c0e32<_0x28a346;_0x6c0e32++){_0x3c5736+='%'+('00'+_0x4240fe['charCodeAt'](_0x6c0e32)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3c5736);};_0x1047['LJuGPi']=_0x50d6b2,_0x1047['qdFYDS']={},_0x1047['WPJKNV']=!![];}const _0x21659f=_0x14f078[0x0],_0x529aca=_0x3eda9b+_0x21659f,_0x47cd85=_0x1047['qdFYDS'][_0x529aca];return!_0x47cd85?(_0x1047e3=_0x1047['LJuGPi'](_0x1047e3),_0x1047['qdFYDS'][_0x529aca]=_0x1047e3):_0x1047e3=_0x47cd85,_0x1047e3;}var FakePage=class{constructor(_0x28a346,_0x539ce6,_0x54bccf,_0x216771){const _0x503381={_0x56dbae:0x11b,_0xe58738:0x118},_0x1138fc=_0x1d0aa9;this[_0x1138fc(_0x503381._0x56dbae)]=_0x28a346,this[_0x1138fc(_0x503381._0xe58738)]=_0x539ce6,this['scope']=_0x54bccf,this['currentUrl']=_0x216771;}[_0x1d0aa9(0x11b)];[_0x1d0aa9(0x118)];['scope'];static{__name(this,_0x1d0aa9(0xfd));}[_0x1d0aa9(0x110)];[_0x1d0aa9(0xf9)];[_0x1d0aa9(0x10a)](_0x5a7fe5,_0x26f6df){const _0x22e896={_0x52db22:0xe3},_0x1022d0=_0x1d0aa9;this[_0x1022d0(0x11b)][_0x1022d0(_0x22e896._0x52db22)]({'scope':this[_0x1022d0(0xcd)],'method':_0x5a7fe5,'args':_0x26f6df});}[_0x1d0aa9(0xc7)](){const _0x55bd52={_0x2c5c61:0x11e},_0x45115a=_0x1d0aa9;if(this[_0x45115a(0x118)][_0x45115a(_0x55bd52._0x2c5c61)]){const _0x3d65a8=this['behavior']['errorOnNextAction'];this[_0x45115a(0x118)]['errorOnNextAction']=void 0x0;throw _0x3d65a8;}}['url'](){const _0x72bf18=_0x1d0aa9;return this[_0x72bf18(0x110)];}async[_0x1d0aa9(0x11a)](){const _0x2ec9da={_0x2a4022:0x10a},_0x39038a=_0x1d0aa9;return this[_0x39038a(_0x2ec9da._0x2a4022)]('title',[]),_0x39038a(0x125);}async[_0x1d0aa9(0xd4)](_0x23155b,_0x35fb7c){const _0x5de501={_0x4bc877:0xd4,_0x51aeb3:0xc7,_0x2ff727:0xf9},_0x5ebd60=_0x1d0aa9;this[_0x5ebd60(0x10a)](_0x5ebd60(_0x5de501._0x4bc877),[_0x23155b,_0x35fb7c]),this[_0x5ebd60(_0x5de501._0x51aeb3)](),this[_0x5ebd60(_0x5de501._0x2ff727)]?.();}async[_0x1d0aa9(0x132)](_0x4301aa,_0x2914ce){const _0x51b07e={_0x6ac584:0xc7},_0x31aa1a=_0x1d0aa9;this['record'](_0x31aa1a(0x132),[_0x4301aa,_0x2914ce]),this[_0x31aa1a(_0x51b07e._0x6ac584)]();}async[_0x1d0aa9(0x126)](_0x4d0894,_0x24f8f4,_0x43d8b7){const _0x286fc0={_0x19a3fb:0x10a},_0x4d6a64=_0x1d0aa9;this[_0x4d6a64(_0x286fc0._0x19a3fb)]('fill',[_0x4d0894,_0x24f8f4,_0x43d8b7]),this[_0x4d6a64(0xc7)]();}async[_0x1d0aa9(0x113)](_0x54dc10,_0x288dba,_0x26fbbf){const _0x58cfc6={_0x4a0923:0x10a,_0xdcd5ea:0x113,_0x36ce50:0xc7},_0x288c2e=_0x1d0aa9;this[_0x288c2e(_0x58cfc6._0x4a0923)](_0x288c2e(_0x58cfc6._0xdcd5ea),[_0x54dc10,_0x288dba,_0x26fbbf]),this[_0x288c2e(_0x58cfc6._0x36ce50)]();}async[_0x1d0aa9(0xd3)](_0x543481,_0x294462){const _0xd197b7={_0x326014:0xd3},_0x510d92=_0x1d0aa9;this[_0x510d92(0x10a)](_0x510d92(_0xd197b7._0x326014),[_0x543481,_0x294462]),this[_0x510d92(0xc7)]();}async[_0x1d0aa9(0x108)](_0x4fed37,_0x420874){const _0x13f3f1=_0x1d0aa9;this[_0x13f3f1(0x10a)](_0x13f3f1(0x108),[_0x4fed37,_0x420874]),this[_0x13f3f1(0xc7)]();}async[_0x1d0aa9(0xbf)](_0x45a2e0,_0x48fdb8,_0xd43bb){const _0x12f20a=_0x1d0aa9;this[_0x12f20a(0x10a)](_0x12f20a(0xbf),[_0x45a2e0,_0x48fdb8,_0xd43bb]),this[_0x12f20a(0xc7)]();}async[_0x1d0aa9(0x105)](_0x49e285,_0x212827){const _0x4598b8={_0x1531c1:0xc7},_0x5475ce=_0x1d0aa9;this['record'](_0x5475ce(0x105),[_0x49e285,_0x212827]),this[_0x5475ce(_0x4598b8._0x1531c1)]();}async['scrollIntoView'](_0x1ea50f){const _0x186fa1={_0x35b5c3:0x10a,_0xc8f0de:0x127,_0x135395:0xc7},_0x2a5595=_0x1d0aa9;this[_0x2a5595(_0x186fa1._0x35b5c3)](_0x2a5595(_0x186fa1._0xc8f0de),[_0x1ea50f]),this[_0x2a5595(_0x186fa1._0x135395)]();}async[_0x1d0aa9(0xf2)](_0x45c48a,_0x2415f7,_0x595f00){const _0x4d68e9={_0x1f7c0d:0x10a,_0x58a011:0xf2,_0x2991af:0xc7},_0x16b330=_0x1d0aa9;this[_0x16b330(_0x4d68e9._0x1f7c0d)](_0x16b330(_0x4d68e9._0x58a011),[_0x45c48a,_0x2415f7,_0x595f00]),this[_0x16b330(_0x4d68e9._0x2991af)]();}async[_0x1d0aa9(0xbd)](_0x2ba560,_0x1b5631){const _0x13de31={_0x1391ad:0x10a},_0x38b481=_0x1d0aa9;this[_0x38b481(_0x13de31._0x1391ad)]('uploadFile',[_0x2ba560,_0x1b5631]),this[_0x38b481(0xc7)]();}async[_0x1d0aa9(0xcf)](_0x3f1bc4,_0x18d281){const _0x384ac5=_0x1d0aa9;this['record'](_0x384ac5(0xcf),[_0x3f1bc4,_0x18d281]),this['maybeThrow']();}async[_0x1d0aa9(0xc5)](_0x78489e){const _0x2afaf9={_0x42ca9e:0xc5,_0x1ec13a:0x118},_0x2d73c5=_0x1d0aa9;return this[_0x2d73c5(0x10a)](_0x2d73c5(_0x2afaf9._0x42ca9e),[_0x78489e]),this[_0x2d73c5(_0x2afaf9._0x1ec13a)]['countByDefault']??0x1;}async[_0x1d0aa9(0x129)](_0x5ac0a4){const _0x2bc81c={_0x455196:0x10a,_0x197370:0x118,_0x543f6e:0x10f},_0x1a62f5=_0x1d0aa9;return this[_0x1a62f5(_0x2bc81c._0x455196)](_0x1a62f5(0x129),[_0x5ac0a4]),this[_0x1a62f5(_0x2bc81c._0x197370)][_0x1a62f5(_0x2bc81c._0x543f6e)]??'';}async[_0x1d0aa9(0xf0)](_0x3cff97){const _0x1c5d26={_0x1473d1:0xf0,_0x3c1bbc:0x118,_0x2f8f99:0x10d},_0x3d60a1=_0x1d0aa9;return this[_0x3d60a1(0x10a)](_0x3d60a1(_0x1c5d26._0x1473d1),[_0x3cff97]),this[_0x3d60a1(_0x1c5d26._0x3c1bbc)][_0x3d60a1(_0x1c5d26._0x2f8f99)]??'';}async['isVisible'](_0x515047){const _0x2d6b9a={_0x1a7986:0x118},_0x35f726=_0x1d0aa9;return this[_0x35f726(0x10a)](_0x35f726(0xc3),[_0x515047]),this[_0x35f726(_0x2d6b9a._0x1a7986)]['isVisibleByDefault']??!![];}async[_0x1d0aa9(0xca)](_0x199fe5,_0x434056){const _0xdd20c3={_0x2b6213:0x118},_0x28a250=_0x1d0aa9;return this['record']('getAttribute',[_0x199fe5,_0x434056]),this[_0x28a250(_0xdd20c3._0x2b6213)][_0x28a250(0xfa)]?.[_0x434056]??null;}async[_0x1d0aa9(0xe5)](_0x393aca,_0x34804b){const _0x530c94={_0x7ef7bc:0x10a,_0x332a4f:0xe5},_0x14faa7=_0x1d0aa9;this[_0x14faa7(_0x530c94._0x7ef7bc)](_0x14faa7(_0x530c94._0x332a4f),[_0x393aca,_0x34804b]);}async[_0x1d0aa9(0xd5)](_0x78d918,_0x13bdc5){const _0x63cf4d={_0xddcfd6:0x10a},_0x3299e3=_0x1d0aa9;this[_0x3299e3(_0x63cf4d._0xddcfd6)](_0x3299e3(0xd5),[_0x78d918,_0x13bdc5]);}async[_0x1d0aa9(0xef)](_0x3a5860,_0x1bbdfb){const _0x25b8b3={_0x57948c:0x10a,_0x2d4801:0xef},_0x242bed=_0x1d0aa9;this[_0x242bed(_0x25b8b3._0x57948c)](_0x242bed(_0x25b8b3._0x2d4801),[_0x3a5860,_0x1bbdfb]);}async[_0x1d0aa9(0xf1)](_0x54bf8b){const _0x2215e5=_0x1d0aa9;this[_0x2215e5(0x10a)](_0x2215e5(0xf1),[_0x54bf8b]);}async[_0x1d0aa9(0xfc)](_0x5a0ddb,_0x1ffe43){this['record']('goto',[_0x5a0ddb,_0x1ffe43]),this['currentUrl']=_0x5a0ddb;}async[_0x1d0aa9(0x10b)](_0x4acfbe){const _0x5d0cc7={_0x4d41e5:0x10a},_0x3a7990=_0x1d0aa9;this[_0x3a7990(_0x5d0cc7._0x4d41e5)](_0x3a7990(0x10b),[_0x4acfbe]);}async[_0x1d0aa9(0x101)](_0x16c919){const _0x56167e={_0x46b403:0x10a},_0x339ebb=_0x1d0aa9;this[_0x339ebb(_0x56167e._0x46b403)](_0x339ebb(0x101),[_0x16c919]);}async[_0x1d0aa9(0x12c)](_0x3a5f67){const _0x47a83d={_0x4f469a:0x10a},_0x5ef295=_0x1d0aa9;this[_0x5ef295(_0x47a83d._0x4f469a)](_0x5ef295(0x12c),[_0x3a5f67]);}async[_0x1d0aa9(0xc8)](_0x3cf1c8){const _0xc828dc=_0x1d0aa9;return this['record'](_0xc828dc(0xc8),[_0x3cf1c8]),void 0x0;}async[_0x1d0aa9(0xba)](_0x346cf1,_0x7fba47){const _0x4228cb={_0x4ecd52:0x10a},_0x28d7e4=_0x1d0aa9;return this[_0x28d7e4(_0x4228cb._0x4ecd52)](_0x28d7e4(0xba),[_0x346cf1,_0x7fba47]),void 0x0;}async[_0x1d0aa9(0xc4)](_0x2ebd8a){const _0x526d75={_0x56e10d:0x10a,_0x139448:0xf3,_0x1ae1c9:0xf3},_0x403112=_0x1d0aa9;this[_0x403112(_0x526d75._0x56e10d)](_0x403112(0xc4),[_0x2ebd8a]);if(_0x2ebd8a[_0x403112(0x114)][_0x403112(0xe8)]!==0x1||_0x2ebd8a[_0x403112(0x114)][0x0][_0x403112(0x11d)]!==_0x403112(_0x526d75._0x139448))return null;const _0x259079=_0x2ebd8a[_0x403112(0x114)][0x0][_0x403112(_0x526d75._0x1ae1c9)],_0x1f3712=this[_0x403112(0x118)][_0x403112(0x120)]?.[_0x259079];return _0x1f3712??null;}async[_0x1d0aa9(0xe6)](_0x210646){const _0x3404ac={_0x30b08d:0x10a},_0x11e912=_0x1d0aa9;return this[_0x11e912(_0x3404ac._0x30b08d)](_0x11e912(0xe6),[_0x210646]),Buffer['from'](_0x11e912(0xde));}async['outerHTML'](_0x4a51ed){const _0x1be2a1={_0x34396f:0x10a,_0x2491e3:0x114,_0x329a95:0x11d,_0x52334e:0xdc,_0x2df43:0xd2,_0x132368:0xbe,_0x39df08:0x10c},_0x30cfce=_0x1d0aa9;this[_0x30cfce(_0x1be2a1._0x34396f)]('outerHTML',[_0x4a51ed]);if(_0x4a51ed[_0x30cfce(_0x1be2a1._0x2491e3)][_0x30cfce(0xe8)]===0x1&&_0x4a51ed['steps'][0x0][_0x30cfce(_0x1be2a1._0x329a95)]===_0x30cfce(0xf3)){const _0x45d9c8=_0x4a51ed['steps'][0x0]['ref'];return this['behavior'][_0x30cfce(_0x1be2a1._0x52334e)]?.[_0x45d9c8]??_0x30cfce(_0x1be2a1._0x2df43)+_0x45d9c8+_0x30cfce(_0x1be2a1._0x132368);}return _0x30cfce(_0x1be2a1._0x39df08);}},FakeContext=class{constructor(_0x38270b,_0x3ff44a,_0x2ad7da){const _0x4cbd28={_0x33f222:0x11b,_0x1e0c07:0xcd,_0x3465b0:0x115,_0x278bd2:0x111,_0x4c9d44:0xf5,_0x326c02:0xf7,_0x453db8:0xff},_0x33eb23={_0x132b26:0xcb,_0x4957c0:0x111},_0x6d347e=_0x1d0aa9;this[_0x6d347e(_0x4cbd28._0x33f222)]=_0x38270b,this[_0x6d347e(0x118)]=_0x3ff44a,this[_0x6d347e(_0x4cbd28._0x1e0c07)]=_0x2ad7da;const _0x29bd67=new FakePage(_0x38270b,_0x3ff44a,_0x2ad7da+_0x6d347e(_0x4cbd28._0x3465b0),_0x3ff44a[_0x6d347e(0x122)]??_0x6d347e(0xd6));_0x3ff44a[_0x6d347e(_0x4cbd28._0x278bd2)]&&(_0x29bd67[_0x6d347e(0xf9)]=()=>{const _0x7caafa=_0x6d347e;this[_0x7caafa(_0x33eb23._0x132b26)](_0x3ff44a[_0x7caafa(_0x33eb23._0x4957c0)]);}),this['pageList']=[_0x29bd67],this['localStorageState']={..._0x3ff44a[_0x6d347e(_0x4cbd28._0x4c9d44)]??{}},this[_0x6d347e(_0x4cbd28._0x326c02)]={..._0x3ff44a[_0x6d347e(_0x4cbd28._0x453db8)]??{}};}[_0x1d0aa9(0x11b)];[_0x1d0aa9(0x118)];[_0x1d0aa9(0xcd)];static{__name(this,'FakeContext');}[_0x1d0aa9(0x124)];['activeIdx']=0x0;[_0x1d0aa9(0x11f)]=[];[_0x1d0aa9(0xea)];[_0x1d0aa9(0xf7)];[_0x1d0aa9(0x123)]=new Set();['record'](_0xd33ef1,_0x585f29){const _0x1151c8={_0x484a90:0xe3},_0x32db9f=_0x1d0aa9;this['recorder'][_0x32db9f(_0x1151c8._0x484a90)]({'scope':this[_0x32db9f(0xcd)],'method':_0xd33ef1,'args':_0x585f29});}['pages'](){const _0x3713ea=_0x1d0aa9;return this[_0x3713ea(0x124)];}[_0x1d0aa9(0xe7)](){const _0x412067={_0x449a64:0x124,_0x23791c:0xe2},_0x12e4a8=_0x1d0aa9,_0x37d24c=this[_0x12e4a8(_0x412067._0x449a64)][this[_0x12e4a8(0x12b)]];if(!_0x37d24c)throw new DriverError(_0x12e4a8(_0x412067._0x23791c),{'activeIdx':this[_0x12e4a8(0x12b)]});return _0x37d24c;}[_0x1d0aa9(0x130)](){const _0x2d2a73=_0x1d0aa9;return this[_0x2d2a73(0x118)][_0x2d2a73(0x130)]??[];}[_0x1d0aa9(0xd1)](){const _0x17ea65={_0x3be4a5:0xd1},_0x2d708f=_0x1d0aa9;return this[_0x2d708f(0x118)][_0x2d708f(_0x17ea65._0x3be4a5)]??[];}async['setActivePage'](_0x34726c){const _0x1e8c19={_0x4fc34c:0xdf,_0x2deb30:0x124,_0x4d9219:0x11f},_0x2cb177=_0x1d0aa9;this[_0x2cb177(0x10a)](_0x2cb177(_0x1e8c19._0x4fc34c),[_0x34726c]);if(_0x34726c<0x0||_0x34726c>=this['pageList']['length'])throw new DriverError('page\x20index\x20out\x20of\x20range',{'index':_0x34726c,'available':this[_0x2cb177(_0x1e8c19._0x2deb30)][_0x2cb177(0xe8)]});this['activeIdx']=_0x34726c,this[_0x2cb177(_0x1e8c19._0x4d9219)]['length']=0x0;}[_0x1d0aa9(0xdd)](_0x3f41fc){const _0x168fdf={_0x591562:0x123},_0x148a76={_0x41c4ad:0x103},_0x2f5963=_0x1d0aa9;return this[_0x2f5963(_0x168fdf._0x591562)][_0x2f5963(0x116)](_0x3f41fc),()=>{const _0x58563a=_0x2f5963;this['newPageListeners'][_0x58563a(_0x148a76._0x41c4ad)](_0x3f41fc);};}['emitFakePopup'](_0x15e02f){const _0x5382b9={_0x481563:0xcd,_0x205090:0x124},_0x40928c=_0x1d0aa9,_0x4e665a=this[_0x40928c(_0x5382b9._0x481563)]+_0x40928c(0xbc)+this[_0x40928c(_0x5382b9._0x205090)][_0x40928c(0xe8)],_0xf410d2=new FakePage(this[_0x40928c(0x11b)],this[_0x40928c(0x118)],_0x4e665a,_0x15e02f);this['pageList'][_0x40928c(0xe3)](_0xf410d2);const _0x225e26=this[_0x40928c(0x124)][_0x40928c(0xe8)]-0x1;for(const _0x12e05b of this['newPageListeners']){try{_0x12e05b({'index':_0x225e26,'url':_0x15e02f});}catch{}}return _0x225e26;}async[_0x1d0aa9(0xec)](_0x15abfe){const _0x70e1a={_0x33da1c:0xec,_0x29c408:0x121,_0x3d3a26:0x11f},_0x4580da=_0x1d0aa9;this[_0x4580da(0x10a)](_0x4580da(_0x70e1a._0x33da1c),[_0x15abfe]);if(!_0x15abfe['steps']['length'])throw new LocatorError(_0x4580da(_0x70e1a._0x29c408),{'locator':_0x15abfe});this[_0x4580da(_0x70e1a._0x3d3a26)][_0x4580da(0xe3)](_0x15abfe);}async[_0x1d0aa9(0xeb)](){const _0x55fd16={_0x3be186:0x10a,_0x133e47:0xeb,_0x5e613d:0xe8},_0x37e85f=_0x1d0aa9;this[_0x37e85f(_0x55fd16._0x3be186)](_0x37e85f(_0x55fd16._0x133e47),[]);if(this[_0x37e85f(0x11f)][_0x37e85f(_0x55fd16._0x5e613d)]===0x0)throw new DriverError(_0x37e85f(0xf8),{});this['frameStack'][_0x37e85f(0xbb)]();}async['setLocalStorage'](_0x127ed0,_0x23a475){const _0x2610c3={_0x532a3a:0xea},_0x3a4aeb=_0x1d0aa9;this['record'](_0x3a4aeb(0xce),[_0x127ed0,_0x23a475]),this[_0x3a4aeb(_0x2610c3._0x532a3a)][_0x127ed0]=_0x23a475;}async[_0x1d0aa9(0x12f)](_0xa16d9d){const _0x564743=_0x1d0aa9;return this[_0x564743(0x10a)](_0x564743(0x12f),[_0xa16d9d]),this[_0x564743(0xea)][_0xa16d9d]??null;}async[_0x1d0aa9(0xc1)](_0x37b0d6,_0x34de4f,_0x39c412){const _0x23457c=_0x1d0aa9;this[_0x23457c(0x10a)](_0x23457c(0xc1),[_0x37b0d6,_0x34de4f,_0x39c412]),this[_0x23457c(0xf7)][_0x37b0d6]=_0x34de4f;}async[_0x1d0aa9(0x102)](_0x5a4b6f){const _0x43d871={_0x55232c:0x102},_0x50e89d=_0x1d0aa9;return this['record'](_0x50e89d(_0x43d871._0x55232c),[_0x5a4b6f]),this[_0x50e89d(0xf7)][_0x5a4b6f]??null;}async[_0x1d0aa9(0x11c)](_0x4d0b70){const _0x2c6f0e={_0x317e0d:0x10a},_0x4bd6ff=_0x1d0aa9;this[_0x4bd6ff(_0x2c6f0e._0x317e0d)]('saveStorageState',[_0x4d0b70]);}async[_0x1d0aa9(0xc8)](_0x3851eb){const _0x3f9322={_0x5460b5:0x10a},_0x227b8c=_0x1d0aa9;return this[_0x227b8c(_0x3f9322._0x5460b5)](_0x227b8c(0xc8),[_0x3851eb]),void 0x0;}async[_0x1d0aa9(0x119)](){const _0x239d1f={_0x324808:0x10a},_0x4c5317=_0x1d0aa9;this[_0x4c5317(_0x239d1f._0x324808)]('close',[]);}[_0x1d0aa9(0x12a)](){const _0x3ce36c=_0x1d0aa9;return this[_0x3ce36c(0x11f)]['length'];}},FakeWebDriver=class{constructor(_0x58ab08={}){const _0x4e5fd2={_0x33d229:0x11b},_0x1a404e=_0x1d0aa9;this[_0x1a404e(0x118)]=_0x58ab08,this[_0x1a404e(_0x4e5fd2._0x33d229)]=createRecorder();}['behavior'];static{__name(this,_0x1d0aa9(0xcc));}[_0x1d0aa9(0x128)]=![];[_0x1d0aa9(0x11b)];['contexts']=[];async[_0x1d0aa9(0xee)](_0x457e37){const _0x1f37b9={_0x4ed4f2:0x11b,_0x1ce1b6:0xe9,_0xce25a1:0x128},_0x572fae=_0x1d0aa9;this[_0x572fae(_0x1f37b9._0x4ed4f2)]['push']({'scope':_0x572fae(_0x1f37b9._0x1ce1b6),'method':_0x572fae(0xee),'args':[_0x457e37]}),this[_0x572fae(_0x1f37b9._0xce25a1)]=!![];}async['newContext'](_0x154f5){const _0x2f125a={_0x249542:0xc0,_0x5b4d9b:0x128,_0x526b1c:0xc2,_0x2c9e58:0x118,_0x1999d2:0xe4,_0xfaeed9:0xe1,_0x4c1b79:0xe8},_0x383990=_0x1d0aa9;this['recorder'][_0x383990(0xe3)]({'scope':'driver','method':_0x383990(_0x2f125a._0x249542),'args':[_0x154f5]});if(!this[_0x383990(_0x2f125a._0x5b4d9b)])throw new DriverError(_0x383990(_0x2f125a._0x526b1c),{});const _0xaafddb=new FakeContext(this['recorder'],this[_0x383990(_0x2f125a._0x2c9e58)],_0x383990(_0x2f125a._0x1999d2)+this[_0x383990(_0x2f125a._0xfaeed9)][_0x383990(_0x2f125a._0x4c1b79)]);return this['contexts']['push'](_0xaafddb),_0xaafddb;}async[_0x1d0aa9(0x119)](){const _0x8409ef={_0xda8021:0x11b,_0x452544:0xe3,_0x50abb6:0x128},_0x2fb5b7=_0x1d0aa9;this[_0x2fb5b7(_0x8409ef._0xda8021)][_0x2fb5b7(_0x8409ef._0x452544)]({'scope':'driver','method':_0x2fb5b7(0x119),'args':[]}),this[_0x2fb5b7(_0x8409ef._0x50abb6)]=![];}['wsEndpoint'](){return void 0x0;}async[_0x1d0aa9(0xf6)](){throw new DriverError('connectShared\x20not\x20supported\x20by\x20FakeWebDriver',{});}[_0x1d0aa9(0x104)](){const _0x3541a1={_0x37c070:0xda},_0x55aa73=_0x1d0aa9;throw new DriverError(_0x55aa73(_0x3541a1._0x37c070),{});}['calls'](){const _0x1cd7cd={_0x180e95:0x11b},_0x2b7035=_0x1d0aa9;return this[_0x2b7035(_0x1cd7cd._0x180e95)][_0x2b7035(0xfe)]();}[_0x1d0aa9(0x12d)](_0x2a6550){const _0x3ad365={_0x2f14ed:0x11b},_0xa1228f=_0x1d0aa9;return this[_0xa1228f(_0x3ad365._0x2f14ed)][_0xa1228f(0xfe)]()['filter'](_0x682d3a=>_0x682d3a[_0xa1228f(0xc9)]===_0x2a6550);}};export{FakeWebDriver};
|