@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.
@@ -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 collapse into one `//@collapse(...) …
156
- //@endcollapse` block in the generated test, so the `section` must read
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
- `//@collapse("description")` block (linter enforces). The title is the
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
- //@collapse("Seed a fresh demo user")
374
- wipe_e2e_users();
375
- seed_user('demo@example.com', 'secret');
376
- //@endcollapse
377
-
378
- //@collapse("Sign in as the demo user")
379
- signin_as('demo@example.com', 'secret');
380
- //@endcollapse
381
-
382
- //@collapse("Dashboard shows the Today widget")
383
- assertVisible(getByRole('region', {name: 'Today'}));
384
- //@endcollapse
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`. Use the diagnostic tools:
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. **`get_page_snapshot { }`** — current page outline. Look for whether
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
- 3. **`list_failures` + `get_failure_console` / `get_failure_trace` /
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
- 4. **`agent_fix { runId }`** — composes a structured fix-context
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
- 5. **`open_viewer { }`** — boots the localhost viewer for the project
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 `//@collapse` blocks — and they're
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 `//@collapse` group folds into a section with
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
- `//@collapse("what this does")` block — plain-English intent the agent reads
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
- //@collapse("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
- //@endcollapse
88
-
89
- //@collapse("Dashboard is shown after login")
90
- assertText(getByRole('heading'), 'Dashboard');
91
- //@endcollapse
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
 
@@ -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:dsl"]>;
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:dsl"]>, z.ZodEnum<["off", "warn", "error"]>>;
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:dsl", "off" | "warn" | "error">>;
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:dsl", "off" | "warn" | "error">>;
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:dsl"]>, z.ZodEnum<["off", "warn", "error"]>>;
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:dsl", "off" | "warn" | "error">>;
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:dsl", "off" | "warn" | "error">>;
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:dsl", "off" | "warn" | "error">>;
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:dsl", "off" | "warn" | "error">>;
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 };
@@ -1 +1 @@
1
- function _0x16c7(){var _0xb973b1=['Cg9ZAxrPDMu','CMvJB3jK','zw51Bq','C3rYAw5N','zxjYB3i','mtjMqLfpzNa','Aw50','BgL0zxjHBa','mZu4nK5xwLbkzq','mtuZmdm1yvLirMvm','mtuZA1vPqM9R','y2HYB21LlwjLDge','Dw5VDgvZDc9LmMuVx2HLBhbLCNm','B2zM','y2HYB21PDw0','zgvMyxvSDa','y3jHC2G','BNvSBa','y2HYB21L','BxnLzgDL','nZe5otCWwuL5r3HT','Dw5PB24','BNvTyMvY','D2vIA2L0','BwLU','B3b0Aw9UywW','DxjS','DMfSAwrHDg9YoNvUA25VD24TzNvUy3rPB24','mJu0nJbzBuHRqNe','D2fYBG','B2jQzwn0','zgLZBwLZCW','BgLUDdPZy2vUyxjPBY1PBI1YB290','BMv0D29YAW','mZaXC29WD2Tr','yM9VBgvHBG','BgLUDdPLDMfSDwf0zs1KAxnJB3vYywDLza','yxjYyxK','ywnJzxb0','DhjHBNnPzw50','Dw5VDgvZDc9LmMu','BwfUDwfS','mZCWodbWt3vmB1y','otC5u1f3zMH4','mJm1odGXmeXcDvPQDa','DMfSAwrHDg9YoMrZBa','BgLUDdPTDxn0ywnOzs1PBI1KC2W','otu2nhDrvKrmzW','zMLYzwzVEa'];_0x16c7=function(){return _0xb973b1;};return _0x16c7();}var _0x3893a2=_0x1f93;(function(_0x224983,_0x4ea4ba){var _0x4a0693={_0xb7d0c5:0xab,_0x5053dd:0xa8,_0x4ef3b5:0xc5,_0x33befc:0xcd},_0x80a53d=_0x1f93,_0x2a1e1b=_0x224983();while(!![]){try{var _0x5ceb66=parseInt(_0x80a53d(0xac))/0x1+-parseInt(_0x80a53d(_0x4a0693._0xb7d0c5))/0x2+parseInt(_0x80a53d(0xad))/0x3*(-parseInt(_0x80a53d(0xa1))/0x4)+parseInt(_0x80a53d(0xb7))/0x5*(parseInt(_0x80a53d(_0x4a0693._0x5053dd))/0x6)+-parseInt(_0x80a53d(_0x4a0693._0x4ef3b5))/0x7*(parseInt(_0x80a53d(_0x4a0693._0x33befc))/0x8)+parseInt(_0x80a53d(0xcf))/0x9+-parseInt(_0x80a53d(0xbf))/0xa*(parseInt(_0x80a53d(0xce))/0xb);if(_0x5ceb66===_0x4ea4ba)break;else _0x2a1e1b['push'](_0x2a1e1b['shift']());}catch(_0x5b69b7){_0x2a1e1b['push'](_0x2a1e1b['shift']());}}}(_0x16c7,0x25788));import{z}from'zod';function _0x1f93(_0x1ec1b0,_0x2c48d8){_0x1ec1b0=_0x1ec1b0-0x9f;var _0x16c79d=_0x16c7();var _0x1f9358=_0x16c79d[_0x1ec1b0];if(_0x1f93['iUYfIn']===undefined){var _0x1e2f01=function(_0x5ba337){var _0x379035='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x5ad0e0='',_0x477573='';for(var _0x2f68f7=0x0,_0x1cbf77,_0x5c6ba6,_0x10bb37=0x0;_0x5c6ba6=_0x5ba337['charAt'](_0x10bb37++);~_0x5c6ba6&&(_0x1cbf77=_0x2f68f7%0x4?_0x1cbf77*0x40+_0x5c6ba6:_0x5c6ba6,_0x2f68f7++%0x4)?_0x5ad0e0+=String['fromCharCode'](0xff&_0x1cbf77>>(-0x2*_0x2f68f7&0x6)):0x0){_0x5c6ba6=_0x379035['indexOf'](_0x5c6ba6);}for(var _0x5865de=0x0,_0x5b87a9=_0x5ad0e0['length'];_0x5865de<_0x5b87a9;_0x5865de++){_0x477573+='%'+('00'+_0x5ad0e0['charCodeAt'](_0x5865de)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x477573);};_0x1f93['UPRwyN']=_0x1e2f01,_0x1f93['fNATEj']={},_0x1f93['iUYfIn']=!![];}var _0xad7c19=_0x16c79d[0x0],_0x3792ff=_0x1ec1b0+_0xad7c19,_0x5080ef=_0x1f93['fNATEj'][_0x3792ff];return!_0x5080ef?(_0x1f9358=_0x1f93['UPRwyN'](_0x1f9358),_0x1f93['fNATEj'][_0x3792ff]=_0x1f9358):_0x1f9358=_0x5080ef,_0x1f9358;}var BrowserSchema=z[_0x3893a2(0xa5)](['chromium',_0x3893a2(0xa2),_0x3893a2(0xba)]),BrowserChannelSchema=z[_0x3893a2(0xb8)]([z['literal'](_0x3893a2(0xb5)),z[_0x3893a2(0xaa)](_0x3893a2(0xb6)),z[_0x3893a2(0xaa)](_0x3893a2(0xae)),z[_0x3893a2(0xb4)]()])[_0x3893a2(0xbc)](),ViewportSchema=z[_0x3893a2(0xc1)]({'width':z[_0x3893a2(0xb9)]()[_0x3893a2(0xa9)]()[_0x3893a2(0xa3)](),'height':z[_0x3893a2(0xb9)]()[_0x3893a2(0xa9)]()[_0x3893a2(0xa3)]()}),RetryReasonSchema=z[_0x3893a2(0xa5)]([_0x3893a2(0xca),_0x3893a2(0xc4),_0x3893a2(0xb3)]),RetryConfigSchema=z[_0x3893a2(0xc1)]({'count':z[_0x3893a2(0xb9)]()[_0x3893a2(0xa9)]()[_0x3893a2(0xbb)](0x0)['max'](0xa),'on':z['array'](RetryReasonSchema)}),FailureBundleConfigSchema=z[_0x3893a2(0xc1)]({'tier1':z['literal'](!![])[_0x3893a2(0xb2)](!![]),'tier2':z[_0x3893a2(0xc6)](),'tier3':z[_0x3893a2(0xc1)]({'network':z[_0x3893a2(0xc6)](),'video':z[_0x3893a2(0xc6)]()}),'retention':z[_0x3893a2(0xc1)]({'runs':z[_0x3893a2(0xb9)]()[_0x3893a2(0xa9)]()[_0x3893a2(0xa3)](),'days':z[_0x3893a2(0xb9)]()[_0x3893a2(0xa9)]()[_0x3893a2(0xa3)]()}),'storageDir':z[_0x3893a2(0xa6)]()['min'](0x1)}),DialogPolicySchema=z[_0x3893a2(0xa5)]([_0x3893a2(0xc9),_0x3893a2(0xc2),_0x3893a2(0xcc)]),LinterRuleIdSchema=z[_0x3893a2(0xa5)](['lint:deep-css','lint:xpath','lint:obfuscated-class','lint:pause-explicit','lint:disambig-by-index',_0x3893a2(0xc7),_0x3893a2(0xc3),_0x3893a2(0xa0),_0x3893a2(0xbe),_0x3893a2(0x9f)]),LinterSeveritySchema=z[_0x3893a2(0xa5)](['off',_0x3893a2(0xc0),'error']),LinterConfigSchema=z[_0x3893a2(0xc1)]({'enabled':z[_0x3893a2(0xc6)](),'rules':z[_0x3893a2(0xa4)](LinterRuleIdSchema,LinterSeveritySchema)}),McpConfigSchema=z['object']({'transport':z['literal']('stdio')}),SandboxConfigSchema=z[_0x3893a2(0xc1)]({'shellCwd':z[_0x3893a2(0xa6)]()['optional'](),'database':z[_0x3893a2(0xa6)]()['optional'](),'apiBaseUrl':z['string']()[_0x3893a2(0xbd)]()['optional']()}),UnotestConfigSchema=z['object']({'baseUrl':z[_0x3893a2(0xa6)]()[_0x3893a2(0xbd)]()[_0x3893a2(0xbc)](),'browsers':z[_0x3893a2(0xc8)](BrowserSchema)['min'](0x1),'channel':BrowserChannelSchema,'viewport':ViewportSchema,'retry':RetryConfigSchema,'failureBundle':FailureBundleConfigSchema,'dialogPolicy':DialogPolicySchema,'storageState':z[_0x3893a2(0xa6)]()[_0x3893a2(0xbc)](),'testDir':z[_0x3893a2(0xa6)]()['min'](0x1),'helpersDir':z[_0x3893a2(0xa6)]()[_0x3893a2(0xbb)](0x1),'defaultTimeoutMs':z[_0x3893a2(0xb9)]()[_0x3893a2(0xa9)]()[_0x3893a2(0xa3)](),'defaultNavigationTimeoutMs':z[_0x3893a2(0xb9)]()[_0x3893a2(0xa9)]()[_0x3893a2(0xa3)](),'linter':LinterConfigSchema,'mcp':McpConfigSchema,'sandbox':SandboxConfigSchema}),DEFAULT_CONFIG={'browsers':[_0x3893a2(0xb1)],'viewport':{'width':0x500,'height':0x2d0},'retry':{'count':0x0,'on':['transient']},'failureBundle':{'tier1':!![],'tier2':!![],'tier3':{'network':![],'video':![]},'retention':{'runs':0x14,'days':0x7},'storageDir':'.unotest/failures'},'dialogPolicy':_0x3893a2(0xc9),'testDir':_0x3893a2(0xcb),'helpersDir':_0x3893a2(0xaf),'defaultTimeoutMs':0xbb8,'defaultNavigationTimeoutMs':0x3a98,'linter':{'enabled':!![],'rules':{'lint:deep-css':'warn','lint:xpath':_0x3893a2(0xc0),'lint:obfuscated-class':_0x3893a2(0xc0),'lint:pause-explicit':_0x3893a2(0xc0),'lint:disambig-by-index':_0x3893a2(0xb0),'lint:evaluate-discouraged':_0x3893a2(0xc0),'lint:scenario-in-root':_0x3893a2(0xa7),'lint:mustache-in-dsl':'error','validator:unknown-function':_0x3893a2(0xa7),'validator:dsl':_0x3893a2(0xa7)}},'mcp':{'transport':'stdio'},'sandbox':{}};export{BrowserChannelSchema,BrowserSchema,DEFAULT_CONFIG,DialogPolicySchema,FailureBundleConfigSchema,LinterConfigSchema,LinterRuleIdSchema,LinterSeveritySchema,McpConfigSchema,RetryConfigSchema,RetryReasonSchema,SandboxConfigSchema,UnotestConfigSchema,ViewportSchema};
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};
@@ -1,5 +1,5 @@
1
- import { E as ElementHint, W as WebDriver, L as LaunchOptions, C as ContextOptions, D as DriverContext } from '../interfaces-iTfjd1zT.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, N as NavigationOptions, P as PressOptions, R as ReloadOptions, S as ScreenshotOptions, e as SelectOptions, V as Viewport, f as WaitOptions, g as WaitState } from '../interfaces-iTfjd1zT.js';
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. */
@@ -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};