@unotest/web 0.5.0 → 0.6.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.
@@ -6,8 +6,10 @@ description: Write a new E2E test for the web application under test using @unot
6
6
  # Skill: write-e2e-test
7
7
 
8
8
  You are writing an end-to-end test using `@unotest/web` against a web
9
- app. The test lives in `unotest/e2e/<name>.js` in the project under
10
- test (NOT in the `@unotest/web` package itself).
9
+ app. The test lives in `unotest/e2e/<feature>/<name>.js` in the project
10
+ under test (NOT in the `@unotest/web` package itself). Scenarios are
11
+ grouped by feature/page in subfolders — never placed directly in the
12
+ `unotest/e2e/` root (the linter rejects that with `lint:scenario-in-root`).
11
13
 
12
14
  **Default mode is verify-against-live-app.** A test that hasn't been
13
15
  run is unverified — selectors may be invented, transitions may race,
@@ -53,7 +55,7 @@ Then move to Phase 1. Three files in, exploration done.
53
55
 
54
56
  ```
55
57
  new_context { } → { ok, url: "about:blank" }
56
- explore_start { scenario_name: "<flow-name>" } → { explorationId }
58
+ explore_start { scenario_name: "<feature>/<name>" } → { explorationId }
57
59
  ```
58
60
 
59
61
  Keep the `explorationId` — every recorded step needs it.
@@ -196,10 +198,12 @@ Read the warnings before saving:
196
198
  Then persist:
197
199
 
198
200
  ```
199
- save_exploration_as_test { explorationId, scenarioName: "<name>" }
201
+ save_exploration_as_test { explorationId, scenarioName: "<feature>/<name>" }
200
202
  ```
201
203
 
202
- Writes `unotest/e2e/<name>.js`. File exists? Pass `overwrite: true`.
204
+ Writes `unotest/e2e/<feature>/<name>.js`. `scenarioName` MUST include a
205
+ feature subfolder (e.g. `auth/login`) — a bare name is rejected. File
206
+ exists? Pass `overwrite: true`.
203
207
 
204
208
  ### Phase 5 — reset state, then run_test
205
209
 
package/CHANGELOG.md CHANGED
@@ -5,6 +5,55 @@ 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.6.1] - 2026-06-03
9
+
10
+ ### Added
11
+
12
+ - **External variables and secrets.** Scenarios reference external values
13
+ by bare `UPPER_SNAKE` identifiers (`APP_BASE_URL`, `TEST_USER_EMAIL`)
14
+ instead of hard-coding them. Non-secret values live in `unotest/.env`,
15
+ secrets in `unotest/.secrets` (gitignored); both are created by `init`
16
+ and loaded fresh on every run. Secret values are masked as
17
+ `‹secret:NAME›` in logs, debug output, and recorded artifacts, so they
18
+ never reach a saved file in plaintext.
19
+ - **Reusable flows.** Recorded exploration steps can be tagged with a
20
+ `flow` group and extracted on save into a `flow_<name>()` helper under
21
+ `unotest/e2e/_helpers/`; the generated test calls the helper instead of
22
+ inlining the steps. The new `explore_run_flow` MCP tool replays an
23
+ existing `flow_*` helper without re-recording it, and `explore_start`
24
+ now surfaces the available flows and the declared variable names.
25
+ - **Run source snapshot.** Each run writes a `sources.json` (the entry
26
+ scenario plus every loaded helper as they were when the run began), so a
27
+ run always renders against the code that actually executed even if the
28
+ file is edited afterward. (Consumes `@unotest/protocol`'s `RunSources`.)
29
+ - **New scenario linter rules:** `scenario-in-root` (scenarios must live in
30
+ a feature subfolder) and `mustache-in-dsl` (flags `{{NAME}}` template
31
+ syntax inside DSL string literals).
32
+
33
+ ### Changed (BREAKING)
34
+
35
+ - **Scenarios must live in a feature subfolder.** A scenario placed
36
+ directly in `unotest/e2e/` is now rejected by the linter — use
37
+ `unotest/e2e/<feature>/<name>.js` (the `e2e/` root is reserved for
38
+ `_helpers/`). The MCP `scenarioName` argument (`explore_start` /
39
+ `save_exploration_as_test`) likewise requires `<feature>/<name>` form,
40
+ and `init` scaffolds the welcome smoke test at
41
+ `unotest/e2e/welcome/smoke.js`.
42
+ - **`{{NAME}}` inside a DSL string literal is now a lint error.** That form
43
+ is only for MCP recorded values; in scenario code, reference a variable
44
+ as a bare identifier (`fill(loc, PASSWORD)`).
45
+
46
+ ### Fixed
47
+
48
+ - **Windows: path handling.** Run-artifact paths (entry, `sources.json`
49
+ keys, step `file` events) are normalized to project-relative posix, so
50
+ the viewer's asset allowlist and source mapping match on Windows — a
51
+ native `\` previously broke them.
52
+ - **Actionable error when no browser is installed.** Playwright launch now
53
+ preflights the browser binary and fails with a clear message hinting
54
+ `npx @unotest/web install-chromium`, instead of a raw stack trace; launch
55
+ failures are printed to the console instead of exiting silently.
56
+
8
57
  ## [0.5.0] - 2026-05-29
9
58
 
10
59
  ### Added
package/README.md CHANGED
@@ -9,80 +9,80 @@ structured failure bundles.
9
9
 
10
10
  ---
11
11
 
12
- ## 1. Setup (once)
13
-
14
- Works in any project — Node, Django, Rails, Go, anything. No `package.json`
15
- required; everything runs through `npx`.
12
+ ## 1. Setup
16
13
 
17
14
  ```sh
18
- npx @unotest/web@latest init # writes config, starter scenario, and .mcp.json
19
- npx @unotest/web install-chromium # skip if you picked system Chrome during init
15
+ npx @unotest/web@latest init
20
16
  ```
21
17
 
22
- `init` is idempotentit never overwrites your edits.
23
-
24
- ## 2. Connect your agent
18
+ Run once in your project any stack (Node, Django, Rails, Go, …), no
19
+ `package.json` required. `init` writes the config and a starter scenario,
20
+ sets up the browser (bundled Chromium, or your system Chrome if you pick it
21
+ during the prompt), and wires the MCP config so Claude Code / Cursor / Codex
22
+ pick the server up automatically. Re-run anytime to update — it never
23
+ overwrites your edits.
25
24
 
26
- `init` already wrote `.mcp.json` for you, **pinned to the version that ran
27
- it** so the MCP server never drifts. Most clients (Claude Code, Cursor, …)
28
- pick it up automatically. The entry it writes looks like:
25
+ ## 2. Open the viewer
29
26
 
30
- ```json
31
- {
32
- "mcpServers": {
33
- "unotest-web": { "command": "npx", "args": ["-y", "@unotest/web@0.5.0", "mcp"] }
34
- }
35
- }
27
+ ```sh
28
+ npx @unotest/web viewer
36
29
  ```
37
30
 
38
- Re-run `npx @unotest/web@latest init` to bump the pin. That's it your
39
- agent now has the tools to explore your app and write tests.
40
-
41
- ## 3. Create a test — just ask
31
+ A local IDE-style UI for your tests no cloud, no account. This is your
32
+ home base: browse scenarios, run them, and watch each step live. (Details
33
+ in §5.)
42
34
 
43
- In your AI editor, point it at a running app and describe the flow in
44
- plain English:
35
+ ## 3. Create a test just ask your agent
45
36
 
46
- > **"Write an e2e test: log in as a demo user, open the first project,
47
- > and check the dashboard shows today's date."**
37
+ In your AI editor (Claude Code, Codex, Cursor, …), open your project and
38
+ describe the flow in plain English:
48
39
 
49
- The agent then, through the MCP server:
40
+ > **"Open https://playground.unotest.com, go to the _Click vs Double-click_
41
+ > section, click the _Click me_ button, and check that a popup appears."**
50
42
 
51
- 1. **Explores your live app** (`explore_step` / `explore_record`) —
52
- clicks, fills, navigates — and watches the real DOM via semantic
53
- snapshots.
54
- 2. **Writes the scenario** to `unotest/e2e/<name>.js`, picking stable
55
- selectors (`getByTestId` `getByRole` never brittle CSS).
56
- 3. **Runs it** (`run_test`) and, if it fails, **debugs itself** — reads
57
- the paused browser state, the failure bundle, and console, then edits
58
- and re-runs.
43
+ Through the MCP server the agent explores your live app clicking,
44
+ filling, reading the real DOM via semantic snapshots — then writes a clean
45
+ scenario to `unotest/e2e/<name>.js` with stable selectors (`getByTestId` →
46
+ `getByRole` never brittle CSS), runs it, and debugs itself if it
47
+ fails. You get a reviewable `.js` test: read it, tweak it, commit it.
59
48
 
60
- You get a clean, reviewable `.js` test. You read it, tweak if you want,
61
- and commit. No hand-written selectors, no flaky waits.
49
+ > For best results, point the agent at its authoring guide, shipped with
50
+ > the package at `node_modules/@unotest/web/guides/agent-integration.md`.
62
51
 
63
- > Give the agent its authoring guide for best results — see
64
- > [agent-integration.md](https://github.com/unotest/web/blob/main/docs/manuals/agent-integration.md).
52
+ ## 4. Run a test
65
53
 
66
- ## 4. Run your tests
54
+ Click any scenario in the viewer, or run from the CLI:
67
55
 
68
56
  ```sh
69
- npx @unotest/web e2e <name> # one scenario
70
- npx @unotest/web e2e # see usage / list
57
+ npx @unotest/web e2e <name> # one scenario
58
+ npx @unotest/web e2e # list / usage
71
59
  ```
72
60
 
73
- Steps are grouped under `//@collapse("...")` blocks. The title says **what**
74
- the group does in plain English; the steps inside are **how**. This isn't
75
- decoration it's the intent your agent reads back to repair a step when a
76
- selector drifts, and it's how the viewer and block-editor fold a scenario
77
- into readable sections. Every step lives inside a block:
61
+ ## 5. Watch it run the viewer
62
+
63
+ `npx @unotest/web viewer` opens a local UI (no cloud, no account):
64
+
65
+ - **Scenario tree** scenarios, collections, helpers, and run history.
66
+ - **Run from the UI** — results stream live over WebSocket as steps execute.
67
+ - **Block view** — each `//@collapse` group folds into a section with
68
+ per-step status; a failure pins an error card to the offending line.
69
+ - **Step debugger** — set gutter breakpoints, run paused, inspect the live
70
+ DOM at each stop.
71
+ - **Inspector** — screenshots and failure artifacts per run.
72
+ - **Integrated terminal** — a docked xterm (toggle `` ⌃` ``) to drive the
73
+ CLI without leaving the window.
74
+
75
+ ### Writing by hand (optional)
76
+
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
80
 
79
81
  ```js
80
82
  function test_login() {
81
- //@collapse("Log in as demo user")
83
+ //@collapse("Log in as the demo user")
82
84
  goto('https://app.example.com');
83
- click(getByRole('button', { name: /sign in/i }));
84
85
  fill(getByLabel('Email'), 'demo@example.com');
85
- fill(getByLabel('Password'), 'demo');
86
86
  click(getByRole('button', { name: 'Continue' }));
87
87
  //@endcollapse
88
88
 
@@ -92,32 +92,8 @@ function test_login() {
92
92
  }
93
93
  ```
94
94
 
95
- ## 5. Watch it run the viewer
96
-
97
- ```sh
98
- npx @unotest/web viewer
99
- ```
100
-
101
- A local IDE-style UI for your test runs (no cloud, no account):
102
-
103
- - **Scenario tree** — browse scenarios, collections, helpers, and run history.
104
- - **Run from the UI** — launch any scenario or collection; results stream
105
- live over WebSocket as steps execute.
106
- - **Block view** — each `//@collapse` group rendered as a foldable section
107
- with per-step status; failures pin an error card to the offending line.
108
- - **Step debugger** — set breakpoints in the gutter, run paused, and
109
- inspect the live DOM at each stop.
110
- - **Inspector** — screenshots and failure artifacts per run.
111
- - **Integrated terminal** — a docked xterm (toggle with `` ⌃` ``) to drive
112
- the CLI without leaving the window.
113
- - **Source ↔ block** — switch between the raw `.js` and the block view.
114
-
115
- ---
116
-
117
- ## Writing by hand (optional)
118
-
119
- Scenarios are plain `.js`. The DSL uses the familiar modern
120
- browser-automation vocabulary, so it reads the way you already expect:
95
+ The DSL uses the familiar modern browser-automation vocabulary, so it reads
96
+ the way you already expect:
121
97
 
122
98
  - **Navigation** — `goto`, `reload`, `waitForUrl`
123
99
  - **Locators** — `getByRole`, `getByTestId`, `getByLabel`, `getByText`, `getByPlaceholder`, `locator`
@@ -125,21 +101,20 @@ browser-automation vocabulary, so it reads the way you already expect:
125
101
  - **Assertions** — `assertText`, `assertUrl`, `assertVisible`, `assertChecked`, `expect`
126
102
  - **Setup** — `dbQuery`, `dbExec`, `apiCall`, `shell`, `evaluate`
127
103
 
128
- Full reference: [`dsl-reference.md`](https://github.com/unotest/web/blob/main/docs/dsl-reference.md).
129
-
130
- ## Browser support
104
+ Full reference, shipped with the package:
105
+ `node_modules/@unotest/web/guides/dsl-reference.md` (plus operational guides
106
+ alongside it in `guides/`).
131
107
 
132
- Chromium — use your system Chrome, or a bundled build via
133
- `npx @unotest/web install-chromium`.
108
+ ---
134
109
 
135
110
  ## Ecosystem
136
111
 
137
112
  | Package | Role |
138
113
  |---|---|
139
114
  | `@unotest/web` | this package — CLI / MCP server / runner |
140
- | [`@unotest/viewer`](https://github.com/unotest/viewer) | local results browser |
141
- | [`@unotest/protocol`](https://github.com/unotest/protocol) | shared types |
142
- | [`@unotest/dsl`](https://github.com/unotest/dsl) | scenario parser + validator engine |
115
+ | [`@unotest/viewer`](https://www.npmjs.com/package/@unotest/viewer) | local results browser |
116
+ | [`@unotest/protocol`](https://www.npmjs.com/package/@unotest/protocol) | shared types |
117
+ | [`@unotest/dsl`](https://www.npmjs.com/package/@unotest/dsl) | scenario parser + validator engine |
143
118
 
144
119
  ## License
145
120
 
@@ -17,43 +17,21 @@
17
17
 
18
18
  import { spawn } from "node:child_process";
19
19
  import { fileURLToPath, pathToFileURL } from "node:url";
20
- import { dirname, resolve, join } from "node:path";
20
+ import { dirname, resolve } from "node:path";
21
21
  import { createRequire } from "node:module";
22
- import { existsSync, readFileSync } from "node:fs";
22
+ import { existsSync } from "node:fs";
23
23
 
24
24
  const here = dirname(fileURLToPath(import.meta.url));
25
25
  const root = resolve(here, "..");
26
26
 
27
- // Load <cwd>/unotest/.env into process.env before anything else (MCP server
28
- // and CLI both reach buildLaunchOpts / config / db drivers via process.env).
29
- // Existing process.env wins values from `.mcp.json` env or the user's
30
- // shell override the file. Format: KEY=VALUE per line, `#` comments,
31
- // surrounding single/double quotes stripped if balanced.
32
- function loadUnotestEnv() {
33
- const path = join(process.cwd(), "unotest", ".env");
34
- if (!existsSync(path)) return;
35
- let raw;
36
- try { raw = readFileSync(path, "utf8"); } catch { return; }
37
- for (const line of raw.split(/\r?\n/)) {
38
- const trimmed = line.trim();
39
- if (trimmed === "" || trimmed.startsWith("#")) continue;
40
- const eq = trimmed.indexOf("=");
41
- if (eq <= 0) continue;
42
- const key = trimmed.slice(0, eq).trim();
43
- if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) continue;
44
- if (process.env[key] !== undefined) continue;
45
- let value = trimmed.slice(eq + 1).trim();
46
- if (value.length >= 2) {
47
- const first = value[0];
48
- const last = value[value.length - 1];
49
- if ((first === '"' || first === "'") && first === last) {
50
- value = value.slice(1, -1);
51
- }
52
- }
53
- process.env[key] = value;
54
- }
55
- }
56
- loadUnotestEnv();
27
+ // NOTE: `unotest/.env` is intentionally NOT loaded here. The dispatcher runs
28
+ // in every process including the long-lived `viewer` launcher and
29
+ // flattening `.env` into a launcher's process.env freezes a boot snapshot
30
+ // that spawned runs would inherit, so UI edits to `.env` wouldn't apply
31
+ // until the launcher restarted. Instead, `loadConfig()` flattens `.env` per
32
+ // run-process via `applyEnvFile`; the viewer never loads config, so each
33
+ // scenario run it spawns is a fresh process that reads the current file.
34
+ // See src/config/env-file.ts.
57
35
 
58
36
  // Resolve tsx CLI binary from @unotest/web's own node_modules. tsx CLI
59
37
  // (`tsx/cli` export → dist/cli.mjs) handles both legacy and modern Node
@@ -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", "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:dsl"]>;
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", "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:dsl"]>, 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" | "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:dsl", "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" | "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:dsl", "off" | "warn" | "error">>;
106
106
  }>;
107
107
  type LinterConfig = z.infer<typeof LinterConfigSchema>;
108
108
  declare const McpConfigSchema: z.ZodObject<{
@@ -228,13 +228,13 @@ declare const UnotestConfigSchema: z.ZodObject<{
228
228
  defaultNavigationTimeoutMs: z.ZodNumber;
229
229
  linter: z.ZodObject<{
230
230
  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", "validator:unknown-function", "validator:dsl"]>, z.ZodEnum<["off", "warn", "error"]>>;
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"]>>;
232
232
  }, "strip", z.ZodTypeAny, {
233
233
  enabled: boolean;
234
- rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "validator:unknown-function" | "validator:dsl", "off" | "warn" | "error">>;
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">>;
235
235
  }, {
236
236
  enabled: boolean;
237
- rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "validator:unknown-function" | "validator:dsl", "off" | "warn" | "error">>;
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">>;
238
238
  }>;
239
239
  mcp: z.ZodObject<{
240
240
  transport: z.ZodLiteral<"stdio">;
@@ -292,7 +292,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
292
292
  defaultNavigationTimeoutMs: number;
293
293
  linter: {
294
294
  enabled: boolean;
295
- rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "validator:unknown-function" | "validator:dsl", "off" | "warn" | "error">>;
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">>;
296
296
  };
297
297
  mcp: {
298
298
  transport: "stdio";
@@ -335,7 +335,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
335
335
  defaultNavigationTimeoutMs: number;
336
336
  linter: {
337
337
  enabled: boolean;
338
- rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "validator:unknown-function" | "validator:dsl", "off" | "warn" | "error">>;
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">>;
339
339
  };
340
340
  mcp: {
341
341
  transport: "stdio";
@@ -1 +1 @@
1
- var _0x13b842=_0x5c89;function _0xdd09(){var _0x5e35ee=['mte0mdu3m1D1qvHbvG','C3rYAw5N','Dw5VDgvZDc9LmMu','DxjS','mtiWnte3mgXgtwTPsq','CMvJB3jK','B2jQzwn0','og51D0rnAq','y3jHC2G','zxjYB3i','zgLZBwLZCW','Bwf4','D2vIA2L0','yM9VBgvHBG','DMfSAwrHDg9YoMrZBa','BNvTyMvY','BgLUDdP4Cgf0Aa','C3rKAw8','nda2ota3mwPkrfvnza','D2fYBG','y2HYB21LlwjLDge','y2HYB21L','B3b0Aw9UywW','BwLU','yxjYyxK','mtGZndnut05hBwm','BNvSBa','mti4mtu3r2L4B1rK','BgLUDdPKAxnHBwjPzY1IEs1PBMrLEa','Aw50','BxnLzgDL','Dw5VDgvZDc9LmMuVx2HLBhbLCNm','odCYmty5mhn6tKX6qW','DhjHBNnPzw50','BgL0zxjHBa','Cg9ZAxrPDMu','Dw5PB24','mti2odaZmtbvvxP6Exe','zw51Bq','y2HYB21PDw0','BgLUDdPVyMz1C2nHDgvKlwnSyxnZ','ywnJzxb0','zMLYzwzVEa','B2zM','zgvMyxvSDa','mJj1CwzxvLG','lNvUB3rLC3qVzMfPBhvYzxm','BMv0D29YAW','mtqWv2jAt3zn'];_0xdd09=function(){return _0x5e35ee;};return _0xdd09();}(function(_0x21391e,_0x290be0){var _0x3fe06b={_0x580772:0x1ee},_0x2523e1=_0x5c89,_0x24948d=_0x21391e();while(!![]){try{var _0x13f503=-parseInt(_0x2523e1(0x1f5))/0x1*(-parseInt(_0x2523e1(0x209))/0x2)+-parseInt(_0x2523e1(0x1f7))/0x3*(parseInt(_0x2523e1(0x20c))/0x4)+-parseInt(_0x2523e1(0x211))/0x5+parseInt(_0x2523e1(0x1fc))/0x6+parseInt(_0x2523e1(0x20d))/0x7+parseInt(_0x2523e1(0x214))/0x8*(-parseInt(_0x2523e1(_0x3fe06b._0x580772))/0x9)+parseInt(_0x2523e1(0x201))/0xa;if(_0x13f503===_0x290be0)break;else _0x24948d['push'](_0x24948d['shift']());}catch(_0x579fa0){_0x24948d['push'](_0x24948d['shift']());}}}(_0xdd09,0xdb3f8));import{z}from'zod';function _0x5c89(_0x13dc6a,_0x2e4bdd){_0x13dc6a=_0x13dc6a-0x1ea;var _0xdd09ee=_0xdd09();var _0x5c8924=_0xdd09ee[_0x13dc6a];if(_0x5c89['gBJOUl']===undefined){var _0x154e3c=function(_0x59b266){var _0x217219='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x54907f='',_0x350b77='';for(var _0x7ff67b=0x0,_0x294a3c,_0x5646bb,_0x34038e=0x0;_0x5646bb=_0x59b266['charAt'](_0x34038e++);~_0x5646bb&&(_0x294a3c=_0x7ff67b%0x4?_0x294a3c*0x40+_0x5646bb:_0x5646bb,_0x7ff67b++%0x4)?_0x54907f+=String['fromCharCode'](0xff&_0x294a3c>>(-0x2*_0x7ff67b&0x6)):0x0){_0x5646bb=_0x217219['indexOf'](_0x5646bb);}for(var _0x23afbd=0x0,_0x3f5513=_0x54907f['length'];_0x23afbd<_0x3f5513;_0x23afbd++){_0x350b77+='%'+('00'+_0x54907f['charCodeAt'](_0x23afbd)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x350b77);};_0x5c89['yWsZuA']=_0x154e3c,_0x5c89['dCxQZg']={},_0x5c89['gBJOUl']=!![];}var _0x3c3e52=_0xdd09ee[0x0],_0x1f40d4=_0x13dc6a+_0x3c3e52,_0x504fd8=_0x5c89['dCxQZg'][_0x1f40d4];return!_0x504fd8?(_0x5c8924=_0x5c89['yWsZuA'](_0x5c8924),_0x5c89['dCxQZg'][_0x1f40d4]=_0x5c8924):_0x5c8924=_0x504fd8,_0x5c8924;}var BrowserSchema=z[_0x13b842(0x202)]([_0x13b842(0x203),_0x13b842(0x206),_0x13b842(0x219)]),BrowserChannelSchema=z[_0x13b842(0x200)]([z[_0x13b842(0x1fe)](_0x13b842(0x1f1)),z[_0x13b842(0x1fe)](_0x13b842(0x1fa)),z[_0x13b842(0x1fe)](_0x13b842(0x1f0)),z[_0x13b842(0x1f6)]()])['optional'](),ViewportSchema=z[_0x13b842(0x213)]({'width':z['number']()[_0x13b842(0x1f9)]()[_0x13b842(0x1ff)](),'height':z['number']()[_0x13b842(0x1f9)]()[_0x13b842(0x1ff)]()}),RetryReasonSchema=z['enum']([_0x13b842(0x1fd),_0x13b842(0x20b),_0x13b842(0x215)]),RetryConfigSchema=z['object']({'count':z[_0x13b842(0x1eb)]()[_0x13b842(0x1f9)]()[_0x13b842(0x1f3)](0x0)[_0x13b842(0x218)](0xa),'on':z[_0x13b842(0x1f4)](RetryReasonSchema)}),FailureBundleConfigSchema=z[_0x13b842(0x213)]({'tier1':z[_0x13b842(0x1fe)](!![])[_0x13b842(0x208)](!![]),'tier2':z[_0x13b842(0x21a)](),'tier3':z['object']({'network':z[_0x13b842(0x21a)](),'video':z[_0x13b842(0x21a)]()}),'retention':z['object']({'runs':z[_0x13b842(0x1eb)]()[_0x13b842(0x1f9)]()[_0x13b842(0x1ff)](),'days':z[_0x13b842(0x1eb)]()[_0x13b842(0x1f9)]()[_0x13b842(0x1ff)]()}),'storageDir':z[_0x13b842(0x20e)]()['min'](0x1)}),DialogPolicySchema=z['enum']([_0x13b842(0x205),_0x13b842(0x217),'manual']),LinterRuleIdSchema=z['enum'](['lint:deep-css',_0x13b842(0x1ec),_0x13b842(0x204),'lint:pause-explicit',_0x13b842(0x1f8),'lint:evaluate-discouraged','validator:unknown-function',_0x13b842(0x1ea)]),LinterSeveritySchema=z[_0x13b842(0x202)]([_0x13b842(0x207),'warn',_0x13b842(0x216)]),LinterConfigSchema=z[_0x13b842(0x213)]({'enabled':z[_0x13b842(0x21a)](),'rules':z[_0x13b842(0x212)](LinterRuleIdSchema,LinterSeveritySchema)}),McpConfigSchema=z[_0x13b842(0x213)]({'transport':z[_0x13b842(0x1fe)](_0x13b842(0x1ed))}),SandboxConfigSchema=z[_0x13b842(0x213)]({'shellCwd':z[_0x13b842(0x20e)]()['optional'](),'database':z[_0x13b842(0x20e)]()[_0x13b842(0x1f2)](),'apiBaseUrl':z[_0x13b842(0x20e)]()[_0x13b842(0x210)]()[_0x13b842(0x1f2)]()}),UnotestConfigSchema=z[_0x13b842(0x213)]({'baseUrl':z[_0x13b842(0x20e)]()[_0x13b842(0x210)]()['optional'](),'browsers':z[_0x13b842(0x1f4)](BrowserSchema)['min'](0x1),'channel':BrowserChannelSchema,'viewport':ViewportSchema,'retry':RetryConfigSchema,'failureBundle':FailureBundleConfigSchema,'dialogPolicy':DialogPolicySchema,'storageState':z['string']()[_0x13b842(0x1f2)](),'testDir':z['string']()['min'](0x1),'helpersDir':z[_0x13b842(0x20e)]()[_0x13b842(0x1f3)](0x1),'defaultTimeoutMs':z[_0x13b842(0x1eb)]()['int']()[_0x13b842(0x1ff)](),'defaultNavigationTimeoutMs':z['number']()['int']()[_0x13b842(0x1ff)](),'linter':LinterConfigSchema,'mcp':McpConfigSchema,'sandbox':SandboxConfigSchema}),DEFAULT_CONFIG={'browsers':[_0x13b842(0x203)],'viewport':{'width':0x500,'height':0x2d0},'retry':{'count':0x0,'on':[_0x13b842(0x1fd)]},'failureBundle':{'tier1':!![],'tier2':!![],'tier3':{'network':![],'video':![]},'retention':{'runs':0x14,'days':0x7},'storageDir':_0x13b842(0x20a)},'dialogPolicy':_0x13b842(0x205),'testDir':_0x13b842(0x20f),'helpersDir':_0x13b842(0x1fb),'defaultTimeoutMs':0xbb8,'defaultNavigationTimeoutMs':0x3a98,'linter':{'enabled':!![],'rules':{'lint:deep-css':'warn','lint:xpath':'warn','lint:obfuscated-class':_0x13b842(0x1ef),'lint:pause-explicit':_0x13b842(0x1ef),'lint:disambig-by-index':_0x13b842(0x207),'lint:evaluate-discouraged':_0x13b842(0x1ef),'validator:unknown-function':_0x13b842(0x216),'validator:dsl':_0x13b842(0x216)}},'mcp':{'transport':'stdio'},'sandbox':{}};export{BrowserChannelSchema,BrowserSchema,DEFAULT_CONFIG,DialogPolicySchema,FailureBundleConfigSchema,LinterConfigSchema,LinterRuleIdSchema,LinterSeveritySchema,McpConfigSchema,RetryConfigSchema,RetryReasonSchema,SandboxConfigSchema,UnotestConfigSchema,ViewportSchema};
1
+ var _0x3f780a=_0x4bf5;function _0x427e(){var _0x4d9537=['mZaXnJiZmhrhuu9Zwa','BgLUDdPTDxn0ywnOzs1PBI1KC2W','DMfSAwrHDg9YoNvUA25VD24TzNvUy3rPB24','B2jQzwn0','BgLUDdPWyxvZzs1LEhbSAwnPDa','Dw5VDgvZDc9LmMuVx2HLBhbLCNm','Dw5VDgvZDc9LmMu','BgLUDdP4Cgf0Aa','C3rYAw5N','zgLZBwLZCW','BwLU','mtqZouDIwfzyvW','Bwf4','DxjS','mJG1otC1mNHwEKLRsW','mZC3nJuWrhr2Avrn','Dw5PB24','zw51Bq','BgLUDdPZy2vUyxjPBY1PBI1YB290','lNvUB3rLC3qVzMfPBhvYzxm','mteWnZKZndbAvKTfqNe','D2fYBG','BgLUDdPVyMz1C2nHDgvKlwnSyxnZ','yxjYyxK','B3b0Aw9UywW','DhjHBNnPzw50','BxnLzgDL','yM9VBgvHBG','y3jHC2G','DMfSAwrHDg9YoMrZBa','y2HYB21LlwjLDge','C3rKAw8','Cg9ZAxrPDMu','y2HYB21L','ndq4oty2n0LzuLPpua','CMvJB3jK','BgL0zxjHBa','D2vIA2L0','mtHiwxP6yLO','ntm5nePmCMLntq','BNvTyMvY','ywnJzxb0','zxjYB3i','BgLUDdPKAxnHBwjPzY1IEs1PBMrLEa','nJuYv1Hmzfrd','BMv0D29YAW','BwfUDwfS','odK4Aer1ten6','B2zM','Aw50'];_0x427e=function(){return _0x4d9537;};return _0x427e();}(function(_0x1cfabc,_0x57ddf6){var _0x1ab5aa={_0x40acee:0xd9,_0x88f6ca:0xeb,_0x16834e:0xdc,_0x1bf7aa:0xcc,_0x9e6ea7:0xbe},_0x5f16d6=_0x4bf5,_0x160ed3=_0x1cfabc();while(!![]){try{var _0x34bb21=parseInt(_0x5f16d6(0xe7))/0x1*(-parseInt(_0x5f16d6(_0x1ab5aa._0x40acee))/0x2)+-parseInt(_0x5f16d6(0xd1))/0x3*(-parseInt(_0x5f16d6(0xd6))/0x4)+parseInt(_0x5f16d6(_0x1ab5aa._0x88f6ca))/0x5+-parseInt(_0x5f16d6(_0x1ab5aa._0x16834e))/0x6+-parseInt(_0x5f16d6(_0x1ab5aa._0x1bf7aa))/0x7+-parseInt(_0x5f16d6(0xea))/0x8+parseInt(_0x5f16d6(0xd0))/0x9*(parseInt(_0x5f16d6(_0x1ab5aa._0x9e6ea7))/0xa);if(_0x34bb21===_0x57ddf6)break;else _0x160ed3['push'](_0x160ed3['shift']());}catch(_0x11c655){_0x160ed3['push'](_0x160ed3['shift']());}}}(_0x427e,0x6aa46));import{z}from'zod';var BrowserSchema=z[_0x3f780a(0xbb)](['chromium','firefox',_0x3f780a(0xcf)]),BrowserChannelSchema=z[_0x3f780a(0xec)]([z[_0x3f780a(0xce)](_0x3f780a(0xcb)),z[_0x3f780a(0xce)](_0x3f780a(0xc4)),z['literal'](_0x3f780a(0xc8)),z['null']()])[_0x3f780a(0xc2)](),ViewportSchema=z[_0x3f780a(0xdf)]({'width':z[_0x3f780a(0xd2)]()['int']()[_0x3f780a(0xca)](),'height':z[_0x3f780a(0xd2)]()[_0x3f780a(0xdb)]()[_0x3f780a(0xca)]()}),RetryReasonSchema=z['enum']([_0x3f780a(0xc3),_0x3f780a(0xd7),_0x3f780a(0xc6)]),RetryConfigSchema=z[_0x3f780a(0xdf)]({'count':z[_0x3f780a(0xd2)]()[_0x3f780a(0xdb)]()['min'](0x0)[_0x3f780a(0xe8)](0xa),'on':z[_0x3f780a(0xc1)](RetryReasonSchema)}),FailureBundleConfigSchema=z[_0x3f780a(0xdf)]({'tier1':z[_0x3f780a(0xce)](!![])['default'](!![]),'tier2':z[_0x3f780a(0xc5)](),'tier3':z[_0x3f780a(0xdf)]({'network':z[_0x3f780a(0xc5)](),'video':z[_0x3f780a(0xc5)]()}),'retention':z[_0x3f780a(0xdf)]({'runs':z[_0x3f780a(0xd2)]()[_0x3f780a(0xdb)]()[_0x3f780a(0xca)](),'days':z[_0x3f780a(0xd2)]()[_0x3f780a(0xdb)]()[_0x3f780a(0xca)]()}),'storageDir':z[_0x3f780a(0xe4)]()[_0x3f780a(0xe6)](0x1)}),DialogPolicySchema=z['enum']([_0x3f780a(0xd3),_0x3f780a(0xe5),_0x3f780a(0xd8)]),LinterRuleIdSchema=z['enum'](['lint:deep-css',_0x3f780a(0xe3),_0x3f780a(0xc0),_0x3f780a(0xe0),_0x3f780a(0xd5),'lint:evaluate-discouraged',_0x3f780a(0xbc),_0x3f780a(0xdd),_0x3f780a(0xde),_0x3f780a(0xc7)]),LinterSeveritySchema=z['enum']([_0x3f780a(0xda),_0x3f780a(0xbf),_0x3f780a(0xd4)]),LinterConfigSchema=z[_0x3f780a(0xdf)]({'enabled':z[_0x3f780a(0xc5)](),'rules':z[_0x3f780a(0xcd)](LinterRuleIdSchema,LinterSeveritySchema)}),McpConfigSchema=z['object']({'transport':z[_0x3f780a(0xce)](_0x3f780a(0xc9))}),SandboxConfigSchema=z[_0x3f780a(0xdf)]({'shellCwd':z['string']()[_0x3f780a(0xc2)](),'database':z[_0x3f780a(0xe4)]()[_0x3f780a(0xc2)](),'apiBaseUrl':z[_0x3f780a(0xe4)]()[_0x3f780a(0xe9)]()[_0x3f780a(0xc2)]()}),UnotestConfigSchema=z[_0x3f780a(0xdf)]({'baseUrl':z[_0x3f780a(0xe4)]()[_0x3f780a(0xe9)]()[_0x3f780a(0xc2)](),'browsers':z[_0x3f780a(0xc1)](BrowserSchema)[_0x3f780a(0xe6)](0x1),'channel':BrowserChannelSchema,'viewport':ViewportSchema,'retry':RetryConfigSchema,'failureBundle':FailureBundleConfigSchema,'dialogPolicy':DialogPolicySchema,'storageState':z['string']()['optional'](),'testDir':z['string']()['min'](0x1),'helpersDir':z['string']()[_0x3f780a(0xe6)](0x1),'defaultTimeoutMs':z[_0x3f780a(0xd2)]()['int']()[_0x3f780a(0xca)](),'defaultNavigationTimeoutMs':z[_0x3f780a(0xd2)]()[_0x3f780a(0xdb)]()[_0x3f780a(0xca)](),'linter':LinterConfigSchema,'mcp':McpConfigSchema,'sandbox':SandboxConfigSchema}),DEFAULT_CONFIG={'browsers':['chromium'],'viewport':{'width':0x500,'height':0x2d0},'retry':{'count':0x0,'on':['transient']},'failureBundle':{'tier1':!![],'tier2':!![],'tier3':{'network':![],'video':![]},'retention':{'runs':0x14,'days':0x7},'storageDir':_0x3f780a(0xbd)},'dialogPolicy':'accept','testDir':_0x3f780a(0xe2),'helpersDir':_0x3f780a(0xe1),'defaultTimeoutMs':0xbb8,'defaultNavigationTimeoutMs':0x3a98,'linter':{'enabled':!![],'rules':{'lint:deep-css':_0x3f780a(0xbf),'lint:xpath':_0x3f780a(0xbf),'lint:obfuscated-class':_0x3f780a(0xbf),'lint:pause-explicit':_0x3f780a(0xbf),'lint:disambig-by-index':_0x3f780a(0xda),'lint:evaluate-discouraged':_0x3f780a(0xbf),'lint:scenario-in-root':_0x3f780a(0xd4),'lint:mustache-in-dsl':_0x3f780a(0xd4),'validator:unknown-function':_0x3f780a(0xd4),'validator:dsl':_0x3f780a(0xd4)}},'mcp':{'transport':_0x3f780a(0xc9)},'sandbox':{}};function _0x4bf5(_0x13e0c9,_0x369f2e){_0x13e0c9=_0x13e0c9-0xbb;var _0x427e17=_0x427e();var _0x4bf5c4=_0x427e17[_0x13e0c9];if(_0x4bf5['ieAQtt']===undefined){var _0x57fc61=function(_0x361d85){var _0xb29cd5='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x23b1fb='',_0xc6d02e='';for(var _0x3faefb=0x0,_0x33cf88,_0x1440a3,_0xcaf1b2=0x0;_0x1440a3=_0x361d85['charAt'](_0xcaf1b2++);~_0x1440a3&&(_0x33cf88=_0x3faefb%0x4?_0x33cf88*0x40+_0x1440a3:_0x1440a3,_0x3faefb++%0x4)?_0x23b1fb+=String['fromCharCode'](0xff&_0x33cf88>>(-0x2*_0x3faefb&0x6)):0x0){_0x1440a3=_0xb29cd5['indexOf'](_0x1440a3);}for(var _0x1c2dd0=0x0,_0x31b236=_0x23b1fb['length'];_0x1c2dd0<_0x31b236;_0x1c2dd0++){_0xc6d02e+='%'+('00'+_0x23b1fb['charCodeAt'](_0x1c2dd0)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xc6d02e);};_0x4bf5['OvveEh']=_0x57fc61,_0x4bf5['KcSzyd']={},_0x4bf5['ieAQtt']=!![];}var _0x59c87b=_0x427e17[0x0],_0x73397d=_0x13e0c9+_0x59c87b,_0x1e6f77=_0x4bf5['KcSzyd'][_0x73397d];return!_0x1e6f77?(_0x4bf5c4=_0x4bf5['OvveEh'](_0x4bf5c4),_0x4bf5['KcSzyd'][_0x73397d]=_0x4bf5c4):_0x4bf5c4=_0x1e6f77,_0x4bf5c4;}export{BrowserChannelSchema,BrowserSchema,DEFAULT_CONFIG,DialogPolicySchema,FailureBundleConfigSchema,LinterConfigSchema,LinterRuleIdSchema,LinterSeveritySchema,McpConfigSchema,RetryConfigSchema,RetryReasonSchema,SandboxConfigSchema,UnotestConfigSchema,ViewportSchema};
@@ -1 +1 @@
1
- const _0x4a869d=_0x1849;(function(_0x2ec872,_0x7c990){const _0x44fa64={_0x5b50c1:0x18a,_0x128e3d:0x14d,_0x2b03c4:0x174,_0x5d538f:0x17e},_0x59b464=_0x1849,_0x24c9a5=_0x2ec872();while(!![]){try{const _0x39e305=parseInt(_0x59b464(_0x44fa64._0x5b50c1))/0x1*(-parseInt(_0x59b464(0x1a0))/0x2)+parseInt(_0x59b464(_0x44fa64._0x128e3d))/0x3+parseInt(_0x59b464(0x161))/0x4*(-parseInt(_0x59b464(_0x44fa64._0x2b03c4))/0x5)+parseInt(_0x59b464(0x16f))/0x6*(parseInt(_0x59b464(0x175))/0x7)+-parseInt(_0x59b464(0x1a6))/0x8*(-parseInt(_0x59b464(0x176))/0x9)+parseInt(_0x59b464(0x1b5))/0xa*(-parseInt(_0x59b464(0x1bb))/0xb)+-parseInt(_0x59b464(0x199))/0xc*(-parseInt(_0x59b464(_0x44fa64._0x5d538f))/0xd);if(_0x39e305===_0x7c990)break;else _0x24c9a5['push'](_0x24c9a5['shift']());}catch(_0x3a02fd){_0x24c9a5['push'](_0x24c9a5['shift']());}}}(_0x2396,0x422bf));var __defProp=Object[_0x4a869d(0x169)],__name=(_0x5aabeb,_0x498db2)=>__defProp(_0x5aabeb,_0x4a869d(0x196),{'value':_0x498db2,'configurable':!![]}),UnotestError=class extends Error{static{__name(this,_0x4a869d(0x16e));}[_0x4a869d(0x193)];constructor(_0x401f95,_0x566d17={}){const _0x32d4f6={_0xb5bb28:0x196},_0xa6d0b8=_0x4a869d;super(_0x401f95),this[_0xa6d0b8(_0x32d4f6._0xb5bb28)]=new.target.name,this['context']=Object['freeze']({..._0x566d17}),typeof Error[_0xa6d0b8(0x153)]===_0xa6d0b8(0x165)&&Error['captureStackTrace'](this,new.target);}},DriverError=class extends UnotestError{static{__name(this,_0x4a869d(0x172));}},LocatorError=class extends UnotestError{static{__name(this,_0x4a869d(0x16d));}};function createRecorder(){const _0x14b1aa={_0x97ebfe:0x15a},_0x34a5ea=_0x4a869d,_0x3acd30=[];let _0x6a761a=0x0;return{'push':__name(_0x27a0a5=>_0x3acd30['push']({..._0x27a0a5,'seq':_0x6a761a++}),_0x34a5ea(0x1b1)),'calls':__name(()=>_0x3acd30,_0x34a5ea(_0x14b1aa._0x97ebfe))};}__name(createRecorder,_0x4a869d(0x1a7));function _0x2396(){const _0x131871=['y2HLy2S','B25bzNrLCKnSAwnR','mZGXq1LozejJ','z29cywnR','y291BNq','C2f2zvn0B3jHz2vtDgf0zq','z29gB3j3yxjK','CMvJB3jKzxi','ywn0AxzLugfNzq','Bg9JywXtDg9YywDLu3rHDgu','z2v0q29VA2LL','y29UDgv4Da','zhjPDMvY','yMvOyxzPB3i','BMfTzq','zg91yMXLq2XPy2S','C2v0qwn0AxzLugfNzq','mZyWue9YwhDg','zxHPDezYyw1L','y3vYCMvUDfvYBa','BgvUz3rO','rMfRzvbHz2u','yxr0CMLIDxrLC0j5rgvMyxvSDa','CgfNzuXPC3q','mJiXogPWAerWqq','rMfRzvDLyKrYAxzLCG','Aw5PDgLHBfvYBa','DxbSB2fKrMLSzq','Aw5WDxrwywX1zuj5rgvMyxvSDa','CgfNzxm','mta3ndm3nK9Yy3PvEa','y3jLyxrLuMvJB3jKzxi','zxjYB3jpBK5LEhrby3rPB24','Ag92zxi','Bwv0Ag9K','ywjVDxq6yMXHBMS','Dw5JAgvJAW','rMfRzunVBNrLEhq','Aw5WDxrwywX1zq','zNjHBwvtDgfJAW','ywrK','ChvZAa','AxnwAxnPyMXLqNLezwzHDwX0','zgvSzxrL','z2v0qxr0CMLIDxrL','ndmWnJKWBMrhEhzr','D2fPDezVCLvYBa','zNjHBwvezxb0Aa','CMvM','Cg9WDxbpBKnSAwnR','D2fPDezVCLrLEhq','ndrXrKLJqLi','C2nYB2XSsw50B1zPzxC','y2XVC2u','nZi4mdC5sgHcuwT4','Bg9JywXtDg9YywDL','zxzHBhvHDgu','zw1PDezHA2vqB3b1Ca','ywn0AxzLswr4','CMvJB3jK','y2fWDhvYzvn0ywnRvhjHy2u','z2v0tg9JywXtDg9YywDL','DgL0Bgu','zMLSBa','B3v0zxjiDg1SqNLszwy','y29VA2LLu3rHDgu','AxnwAxnPyMXL','y2fSBhm','zMfRzs1WBMC','y29UC29SzuvUDhjPzxm','BMv3ugfNzuXPC3rLBMvYCW','BMv3q29UDgv4DcbJywXSzwqGyMvMB3jLigXHDw5JAcGP','lNbHz2uW','pgrPDIbKyxrHlxvUB3rLC3qTCMvMpsi','ota1mZa4svrZA0zh','Bgf1BMnOzwq','D2fPDezVCG','C3rLChm','zNvUy3rPB24','zw50zxjgCMfTzsbJywXSzwqGD2L0AcbLBxb0EsbSB2nHDg9Y','CMvSB2fK','Bgf1BMnO','zgvMAw5LuhjVCgvYDhK','z290BW','C2v0q29VA2LL','B3v0zxjive1m','tg9JyxrVCKvYCM9Y','vw5VDgvZDevYCM9Y','mtK4ode0mM1uyuvtuW','y29VA2LLCW','y2XPy2S','rhjPDMvYrxjYB3i','Bwf5yMvuAhjVDW','nvPfvujLCW','n05Tt3HHuq','mJDHAfDuBwS','Dgv4DenVBNrLBNq','D2fPDezVCK5HDMLNyxrPB24','Aw5ZCgvJDevSzw1LBNq','zhjHz0fUzerYB3a','C2nVCgu','BMv3q29UDgv4Da','C2v0tg9JywXtDg9YywDL','ndK5mZnvq0nbreG','zxHPDezYyw1LignHBgXLzcb3AxrOig5VigzYyw1Lig9UihrOzsbZDgfJAW','BM8Gywn0AxzLihbHz2uGAw4Gy29UDgv4Da','y291BNrcEurLzMf1Bhq','ChjLC3m','CgfNzsbPBMrLEcbVDxqGB2yGCMfUz2u','C2nYzwvUC2HVDa','y29UDgv4Dhm','Dgv4DenVBNrLBNrcEurLzMf1Bhq','A2LUza'];_0x2396=function(){return _0x131871;};return _0x2396();}function _0x1849(_0x7aeb19,_0xf1fe3f){_0x7aeb19=_0x7aeb19-0x14b;const _0x239656=_0x2396();let _0x1849f6=_0x239656[_0x7aeb19];if(_0x1849['swzEsR']===undefined){var _0x109bf8=function(_0x3a1cac){const _0x41d51a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5aabeb='',_0x498db2='';for(let _0x401f95=0x0,_0x566d17,_0x3acd30,_0x6a761a=0x0;_0x3acd30=_0x3a1cac['charAt'](_0x6a761a++);~_0x3acd30&&(_0x566d17=_0x401f95%0x4?_0x566d17*0x40+_0x3acd30:_0x3acd30,_0x401f95++%0x4)?_0x5aabeb+=String['fromCharCode'](0xff&_0x566d17>>(-0x2*_0x401f95&0x6)):0x0){_0x3acd30=_0x41d51a['indexOf'](_0x3acd30);}for(let _0x27a0a5=0x0,_0x8fc89=_0x5aabeb['length'];_0x27a0a5<_0x8fc89;_0x27a0a5++){_0x498db2+='%'+('00'+_0x5aabeb['charCodeAt'](_0x27a0a5)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x498db2);};_0x1849['usbhXU']=_0x109bf8,_0x1849['HyYyyB']={},_0x1849['swzEsR']=!![];}const _0x57126a=_0x239656[0x0],_0x4b26ba=_0x7aeb19+_0x57126a,_0x4463b8=_0x1849['HyYyyB'][_0x4b26ba];return!_0x4463b8?(_0x1849f6=_0x1849['usbhXU'](_0x1849f6),_0x1849['HyYyyB'][_0x4b26ba]=_0x1849f6):_0x1849f6=_0x4463b8,_0x1849f6;}var FakePage=class{constructor(_0x8fc89,_0xe0f5ff,_0x1fe8c2,_0x178297){const _0x53bc9d=_0x4a869d;this[_0x53bc9d(0x18f)]=_0x8fc89,this['behavior']=_0xe0f5ff,this[_0x53bc9d(0x17b)]=_0x1fe8c2,this['currentUrl']=_0x178297;}['recorder'];[_0x4a869d(0x195)];['scope'];static{__name(this,_0x4a869d(0x19d));}['currentUrl'];[_0x4a869d(0x189)];[_0x4a869d(0x152)](_0x34201b,_0x57624d){const _0x366003=_0x4a869d;this['recorder']['push']({'scope':this[_0x366003(0x17b)],'method':_0x34201b,'args':_0x57624d});}[_0x4a869d(0x173)](){const _0x158a51={_0x4c5c25:0x195},_0x381121=_0x4a869d;if(this[_0x381121(_0x158a51._0x4c5c25)]['errorOnNextAction']){const _0xef1419=this[_0x381121(0x195)]['errorOnNextAction'];this[_0x381121(0x195)][_0x381121(0x1a8)]=void 0x0;throw _0xef1419;}}['url'](){const _0x20ae33=_0x4a869d;return this[_0x20ae33(0x19b)];}async[_0x4a869d(0x155)](){const _0x55d067=_0x4a869d;return this[_0x55d067(0x152)](_0x55d067(0x155),[]),'fake\x20title';}async[_0x4a869d(0x171)](_0x3e616e,_0x1eead9){const _0x30d5f0={_0x593a12:0x152,_0x1f3e93:0x173},_0x378d41=_0x4a869d;this[_0x378d41(_0x30d5f0._0x593a12)](_0x378d41(0x171),[_0x3e616e,_0x1eead9]),this[_0x378d41(_0x30d5f0._0x1f3e93)](),this[_0x378d41(0x189)]?.();}async[_0x4a869d(0x197)](_0x4262f6,_0x199ec3){const _0x5d9328=_0x4a869d;this[_0x5d9328(0x152)](_0x5d9328(0x197),[_0x4262f6,_0x199ec3]),this['maybeThrow']();}async[_0x4a869d(0x156)](_0x45aa88,_0x5c2ce2,_0x4ce986){const _0x156ac6={_0x562473:0x156,_0x3047ee:0x173},_0x380c8a=_0x4a869d;this[_0x380c8a(0x152)](_0x380c8a(_0x156ac6._0x562473),[_0x45aa88,_0x5c2ce2,_0x4ce986]),this[_0x380c8a(_0x156ac6._0x3047ee)]();}async[_0x4a869d(0x182)](_0x4dc11c,_0x21ca02,_0xc5b8e3){const _0x217ef1={_0x1b5116:0x152,_0x47c756:0x182,_0x3a3eeb:0x173},_0x1d5f0c=_0x4a869d;this[_0x1d5f0c(_0x217ef1._0x1b5116)](_0x1d5f0c(_0x217ef1._0x47c756),[_0x4dc11c,_0x21ca02,_0xc5b8e3]),this[_0x1d5f0c(_0x217ef1._0x3a3eeb)]();}async[_0x4a869d(0x188)](_0x4530a8,_0x149c0d){const _0x499898={_0x1bdc63:0x188,_0x30e934:0x173},_0x1bae68=_0x4a869d;this[_0x1bae68(0x152)](_0x1bae68(_0x499898._0x1bdc63),[_0x4530a8,_0x149c0d]),this[_0x1bae68(_0x499898._0x30e934)]();}async[_0x4a869d(0x1ac)](_0x2aa561,_0x51ef47){const _0x25f770=_0x4a869d;this[_0x25f770(0x152)]('uncheck',[_0x2aa561,_0x51ef47]),this[_0x25f770(0x173)]();}async['selectOption'](_0x39e353,_0x10713f,_0x4b1039){const _0x4e9b40={_0x8efbd6:0x173},_0x39e794=_0x4a869d;this[_0x39e794(0x152)]('selectOption',[_0x39e353,_0x10713f,_0x4b1039]),this[_0x39e794(_0x4e9b40._0x8efbd6)]();}async[_0x4a869d(0x1a9)](_0x5ed490,_0x4a73e4){const _0x45814e={_0x42e454:0x1a9,_0x3294e4:0x173},_0x334d4f=_0x4a869d;this[_0x334d4f(0x152)](_0x334d4f(_0x45814e._0x42e454),[_0x5ed490,_0x4a73e4]),this[_0x334d4f(_0x45814e._0x3294e4)]();}async[_0x4a869d(0x14b)](_0x5cf9c1){const _0x4155a9={_0x368e33:0x152,_0x1362db:0x173},_0x27440c=_0x4a869d;this[_0x27440c(_0x4155a9._0x368e33)](_0x27440c(0x14b),[_0x5cf9c1]),this[_0x27440c(_0x4155a9._0x1362db)]();}async[_0x4a869d(0x17a)](_0x1d08ca,_0x28c85e,_0x1cbc68){const _0x34d46e=_0x4a869d;this['record'](_0x34d46e(0x17a),[_0x1d08ca,_0x28c85e,_0x1cbc68]),this['maybeThrow']();}async[_0x4a869d(0x1a3)](_0x2af61c,_0x580dfb){const _0x2a8f33={_0x5aa9c6:0x152},_0x52a543=_0x4a869d;this[_0x52a543(_0x2a8f33._0x5aa9c6)](_0x52a543(0x1a3),[_0x2af61c,_0x580dfb]),this['maybeThrow']();}async['clipboardPaste'](_0x481c82,_0x4ec792){const _0x5b7127={_0x1e9ec7:0x173},_0x526b6a=_0x4a869d;this[_0x526b6a(0x152)]('clipboardPaste',[_0x481c82,_0x4ec792]),this[_0x526b6a(_0x5b7127._0x1e9ec7)]();}async[_0x4a869d(0x18c)](_0x132d76){const _0xaf85a1={_0x1ff5ec:0x18c,_0x57bde1:0x181},_0x433960=_0x4a869d;return this[_0x433960(0x152)](_0x433960(_0xaf85a1._0x1ff5ec),[_0x132d76]),this[_0x433960(0x195)][_0x433960(_0xaf85a1._0x57bde1)]??0x1;}async[_0x4a869d(0x177)](_0xf78a67){const _0x277ec3=_0x4a869d;return this['record'](_0x277ec3(0x177),[_0xf78a67]),this['behavior'][_0x277ec3(0x186)]??'';}async[_0x4a869d(0x1ae)](_0x192c1c){const _0xe72aad=_0x4a869d;return this[_0xe72aad(0x152)](_0xe72aad(0x1ae),[_0x192c1c]),this[_0xe72aad(0x195)][_0xe72aad(0x1a4)]??'';}async['isVisible'](_0x38a764){const _0x5ca15f={_0x1acc53:0x152},_0x4cd16a=_0x4a869d;return this[_0x4cd16a(_0x5ca15f._0x1acc53)](_0x4cd16a(0x159),[_0x38a764]),this[_0x4cd16a(0x195)][_0x4cd16a(0x1b2)]??!![];}async[_0x4a869d(0x1b4)](_0x4fa1c4,_0x5ee643){const _0x456ed4={_0x3715a0:0x195},_0x5d3cf7=_0x4a869d;return this['record']('getAttribute',[_0x4fa1c4,_0x5ee643]),this[_0x5d3cf7(_0x456ed4._0x3715a0)][_0x5d3cf7(0x19e)]?.[_0x5ee643]??null;}async[_0x4a869d(0x163)](_0x18b069,_0x24bf1b){const _0x374e03=_0x4a869d;this['record'](_0x374e03(0x163),[_0x18b069,_0x24bf1b]);}async[_0x4a869d(0x1b6)](_0x59a135,_0x5f2597){this['record']('waitForUrl',[_0x59a135,_0x5f2597]);}async[_0x4a869d(0x1ba)](_0x2620ed,_0x467e31){const _0xeb96ae={_0x266a7a:0x152},_0x23d055=_0x4a869d;this[_0x23d055(_0xeb96ae._0x266a7a)]('waitForText',[_0x2620ed,_0x467e31]);}async[_0x4a869d(0x178)](_0x4d156f){const _0x389016={_0x50657a:0x178},_0x2290ed=_0x4a869d;this['record'](_0x2290ed(_0x389016._0x50657a),[_0x4d156f]);}async[_0x4a869d(0x16a)](_0x1d5838,_0x989e3c){const _0x312b3d={_0x531045:0x152,_0x1d9918:0x19b},_0x322995=_0x4a869d;this[_0x322995(_0x312b3d._0x531045)](_0x322995(0x16a),[_0x1d5838,_0x989e3c]),this[_0x322995(_0x312b3d._0x1d9918)]=_0x1d5838;}async[_0x4a869d(0x167)](_0x1eb4d8){const _0x408f5d={_0x2b2476:0x152,_0x3416d6:0x167},_0x52abe8=_0x4a869d;this[_0x52abe8(_0x408f5d._0x2b2476)](_0x52abe8(_0x408f5d._0x3416d6),[_0x1eb4d8]);}async[_0x4a869d(0x18b)](_0x2fd3a6){const _0x321369=_0x4a869d;this['record'](_0x321369(0x18b),[_0x2fd3a6]);}async['goForward'](_0x4b1eef){const _0x2ee767={_0xb1425c:0x152},_0x168776=_0x4a869d;this[_0x168776(_0x2ee767._0xb1425c)](_0x168776(0x18e),[_0x4b1eef]);}async[_0x4a869d(0x14f)](_0x1eb53d){const _0x42632f={_0x390b3e:0x152,_0x226da5:0x14f},_0x517b19=_0x4a869d;return this[_0x517b19(_0x42632f._0x390b3e)](_0x517b19(_0x42632f._0x226da5),[_0x1eb53d]),void 0x0;}async['evaluateOnLocator'](_0x30cd0b,_0x4c4879){const _0x2fe89c=_0x4a869d;return this[_0x2fe89c(0x152)]('evaluateOnLocator',[_0x30cd0b,_0x4c4879]),void 0x0;}async[_0x4a869d(0x179)](_0x7571b4){const _0xa5a469={_0x56c691:0x152,_0x259af6:0x1b8,_0x524820:0x195},_0x477eb4=_0x4a869d;this[_0x477eb4(_0xa5a469._0x56c691)]('inspectElement',[_0x7571b4]);if(_0x7571b4[_0x477eb4(0x164)]['length']!==0x1||_0x7571b4[_0x477eb4(0x164)][0x0][_0x477eb4(0x187)]!==_0x477eb4(_0xa5a469._0x259af6))return null;const _0x6ed100=_0x7571b4[_0x477eb4(0x164)][0x0][_0x477eb4(_0xa5a469._0x259af6)],_0x1fe540=this[_0x477eb4(_0xa5a469._0x524820)]['elementHintByRef']?.[_0x6ed100];return _0x1fe540??null;}async[_0x4a869d(0x184)](_0x41b579){const _0x125df5={_0x40d5e2:0x15b},_0x2cfeed=_0x4a869d;return this[_0x2cfeed(0x152)](_0x2cfeed(0x184),[_0x41b579]),Buffer['from'](_0x2cfeed(_0x125df5._0x40d5e2));}async[_0x4a869d(0x16c)](_0x25cf89){const _0x1a8fc9={_0x46da18:0x152,_0x173398:0x157},_0x359f51=_0x4a869d;this[_0x359f51(_0x1a8fc9._0x46da18)](_0x359f51(0x16c),[_0x25cf89]);if(_0x25cf89[_0x359f51(0x164)]['length']===0x1&&_0x25cf89[_0x359f51(0x164)][0x0][_0x359f51(0x187)]===_0x359f51(0x1b8)){const _0x4e7e93=_0x25cf89[_0x359f51(0x164)][0x0][_0x359f51(0x1b8)];return this['behavior'][_0x359f51(_0x1a8fc9._0x173398)]?.[_0x4e7e93]??_0x359f51(0x160)+_0x4e7e93+'\x22></div>';}return'<div></div>';}},FakeContext=class{constructor(_0x4cb42a,_0x5616af,_0x43e542){const _0x206720={_0x123ae2:0x17b,_0x301482:0x1a2,_0x4b7d18:0x19f,_0x3e4677:0x191},_0x650591={_0x378692:0x1b9},_0x1b4ffd=_0x4a869d;this[_0x1b4ffd(0x18f)]=_0x4cb42a,this['behavior']=_0x5616af,this[_0x1b4ffd(_0x206720._0x123ae2)]=_0x43e542;const _0x5653e3=new FakePage(_0x4cb42a,_0x5616af,_0x43e542+_0x1b4ffd(0x15f),_0x5616af[_0x1b4ffd(_0x206720._0x301482)]??_0x1b4ffd(0x1ab));_0x5616af[_0x1b4ffd(0x1b9)]&&(_0x5653e3[_0x1b4ffd(0x189)]=()=>{const _0x19561d=_0x1b4ffd;this[_0x19561d(0x150)](_0x5616af[_0x19561d(_0x650591._0x378692)]);}),this[_0x1b4ffd(_0x206720._0x4b7d18)]=[_0x5653e3],this[_0x1b4ffd(_0x206720._0x3e4677)]={..._0x5616af[_0x1b4ffd(0x14e)]??{}},this['cookieState']={..._0x5616af[_0x1b4ffd(0x170)]??{}};}[_0x4a869d(0x18f)];['behavior'];[_0x4a869d(0x17b)];static{__name(this,_0x4a869d(0x1ad));}['pageList'];['activeIdx']=0x0;['frameStack']=[];[_0x4a869d(0x191)];[_0x4a869d(0x158)];['newPageListeners']=new Set();[_0x4a869d(0x152)](_0x3089e0,_0x365cc4){const _0x145bb7={_0x35b46f:0x18f,_0x4cfc08:0x1b1},_0x22bcd4=_0x4a869d;this[_0x22bcd4(_0x145bb7._0x35b46f)][_0x22bcd4(_0x145bb7._0x4cfc08)]({'scope':this[_0x22bcd4(0x17b)],'method':_0x3089e0,'args':_0x365cc4});}[_0x4a869d(0x1a5)](){const _0x18cd1b=_0x4a869d;return this[_0x18cd1b(0x19f)];}[_0x4a869d(0x190)](){const _0x3f1fe2={_0x325362:0x180},_0x1401de=_0x4a869d,_0x1144ec=this[_0x1401de(0x19f)][this['activeIdx']];if(!_0x1144ec)throw new DriverError(_0x1401de(_0x3f1fe2._0x325362),{'activeIdx':this[_0x1401de(0x151)]});return _0x1144ec;}['consoleEntries'](){const _0x363867={_0xb68e54:0x195,_0x4e631d:0x15c},_0x347dd6=_0x4a869d;return this[_0x347dd6(_0x363867._0xb68e54)][_0x347dd6(_0x363867._0x4e631d)]??[];}async[_0x4a869d(0x198)](_0x3885e2){const _0x15908f={_0x42f0e3:0x152,_0x3febca:0x198,_0x1a8d7b:0x19f,_0x1f7229:0x19c},_0x4cacd8=_0x4a869d;this[_0x4cacd8(_0x15908f._0x42f0e3)](_0x4cacd8(_0x15908f._0x3febca),[_0x3885e2]);if(_0x3885e2<0x0||_0x3885e2>=this[_0x4cacd8(_0x15908f._0x1a8d7b)][_0x4cacd8(0x19c)])throw new DriverError(_0x4cacd8(0x183),{'index':_0x3885e2,'available':this['pageList'][_0x4cacd8(0x19c)]});this[_0x4cacd8(0x151)]=_0x3885e2,this['frameStack'][_0x4cacd8(_0x15908f._0x1f7229)]=0x0;}['onNewPage'](_0x4ed811){const _0x194f23={_0x4f5411:0x1b0},_0x2ad4e7={_0x5aa6ab:0x15d},_0xba1db7=_0x4a869d;return this[_0xba1db7(0x15d)][_0xba1db7(_0x194f23._0x4f5411)](_0x4ed811),()=>{const _0x17147c=_0xba1db7;this[_0x17147c(_0x2ad4e7._0x5aa6ab)][_0x17147c(0x1b3)](_0x4ed811);};}['emitFakePopup'](_0x3378b3){const _0x2ea93f={_0x2dd852:0x195,_0xa900fe:0x19f},_0x31aa08=_0x4a869d,_0x190b51=this[_0x31aa08(0x17b)]+'.page'+this['pageList'][_0x31aa08(0x19c)],_0x2aaa8d=new FakePage(this[_0x31aa08(0x18f)],this[_0x31aa08(_0x2ea93f._0x2dd852)],_0x190b51,_0x3378b3);this['pageList']['push'](_0x2aaa8d);const _0x1be337=this[_0x31aa08(_0x2ea93f._0xa900fe)]['length']-0x1;for(const _0x548127 of this[_0x31aa08(0x15d)]){try{_0x548127({'index':_0x1be337,'url':_0x3378b3});}catch{}}return _0x1be337;}async['enterFrame'](_0xdad943){const _0x1a52bf={_0x48c368:0x152,_0x3c4b79:0x166,_0x1a09d9:0x1b1},_0x3d5f26=_0x4a869d;this[_0x3d5f26(_0x1a52bf._0x48c368)]('enterFrame',[_0xdad943]);if(!_0xdad943[_0x3d5f26(0x164)]['length'])throw new LocatorError(_0x3d5f26(_0x1a52bf._0x3c4b79),{'locator':_0xdad943});this[_0x3d5f26(0x1af)][_0x3d5f26(_0x1a52bf._0x1a09d9)](_0xdad943);}async[_0x4a869d(0x19a)](){const _0x4d8ff3={_0x323c5c:0x19c},_0xf6146b=_0x4a869d;this['record']('exitFrame',[]);if(this['frameStack'][_0xf6146b(_0x4d8ff3._0x323c5c)]===0x0)throw new DriverError(_0xf6146b(0x17f),{});this[_0xf6146b(0x1af)]['pop']();}async[_0x4a869d(0x17d)](_0x427c68,_0x4035cf){const _0x4e8a1f=_0x4a869d;this[_0x4e8a1f(0x152)](_0x4e8a1f(0x17d),[_0x427c68,_0x4035cf]),this[_0x4e8a1f(0x191)][_0x427c68]=_0x4035cf;}async[_0x4a869d(0x154)](_0x2ab06d){const _0x4b75c6={_0x478a3d:0x154,_0x7c1ad3:0x191},_0x28948b=_0x4a869d;return this[_0x28948b(0x152)](_0x28948b(_0x4b75c6._0x478a3d),[_0x2ab06d]),this[_0x28948b(_0x4b75c6._0x7c1ad3)][_0x2ab06d]??null;}async[_0x4a869d(0x16b)](_0x1061af,_0x3a22d7,_0x13ed29){const _0x2a2734={_0x192c9e:0x16b,_0x428feb:0x158},_0x20c2cf=_0x4a869d;this['record'](_0x20c2cf(_0x2a2734._0x192c9e),[_0x1061af,_0x3a22d7,_0x13ed29]),this[_0x20c2cf(_0x2a2734._0x428feb)][_0x1061af]=_0x3a22d7;}async[_0x4a869d(0x192)](_0x57443c){const _0x115cf9={_0x4132ca:0x152,_0x40e839:0x158},_0x18f794=_0x4a869d;return this[_0x18f794(_0x115cf9._0x4132ca)](_0x18f794(0x192),[_0x57443c]),this[_0x18f794(_0x115cf9._0x40e839)][_0x57443c]??null;}async['saveStorageState'](_0x4f87ad){const _0x3031f7={_0x4f3fa9:0x152,_0x363e23:0x18d},_0x8fc42b=_0x4a869d;this[_0x8fc42b(_0x3031f7._0x4f3fa9)](_0x8fc42b(_0x3031f7._0x363e23),[_0x4f87ad]);}async[_0x4a869d(0x14f)](_0x1c8192){const _0x48f45e={_0x29c44c:0x152,_0x82bde8:0x14f},_0x176dd8=_0x4a869d;return this[_0x176dd8(_0x48f45e._0x29c44c)](_0x176dd8(_0x48f45e._0x82bde8),[_0x1c8192]),void 0x0;}async[_0x4a869d(0x14c)](){const _0x2cc963={_0x229544:0x152,_0x122612:0x14c},_0x1a5586=_0x4a869d;this[_0x1a5586(_0x2cc963._0x229544)](_0x1a5586(_0x2cc963._0x122612),[]);}[_0x4a869d(0x1b7)](){const _0x3b161f={_0x28ff8b:0x19c},_0x50404f=_0x4a869d;return this['frameStack'][_0x50404f(_0x3b161f._0x28ff8b)];}},FakeWebDriver=class{constructor(_0x212e17={}){const _0x2dc1cd={_0x152538:0x18f},_0x1879a4=_0x4a869d;this[_0x1879a4(0x195)]=_0x212e17,this[_0x1879a4(_0x2dc1cd._0x152538)]=createRecorder();}[_0x4a869d(0x195)];static{__name(this,_0x4a869d(0x1a1));}['launched']=![];[_0x4a869d(0x18f)];['contexts']=[];async[_0x4a869d(0x168)](_0x1bc443){const _0x1985ba={_0x5cfec3:0x18f,_0x3f1cef:0x1b1,_0x151601:0x194},_0x325ef4=_0x4a869d;this[_0x325ef4(_0x1985ba._0x5cfec3)][_0x325ef4(_0x1985ba._0x3f1cef)]({'scope':_0x325ef4(_0x1985ba._0x151601),'method':_0x325ef4(0x168),'args':[_0x1bc443]}),this[_0x325ef4(0x162)]=!![];}async[_0x4a869d(0x17c)](_0x394dea){const _0x4dd9d3={_0x142c85:0x18f,_0x1cb40d:0x162},_0x1cb90e=_0x4a869d;this[_0x1cb90e(_0x4dd9d3._0x142c85)][_0x1cb90e(0x1b1)]({'scope':'driver','method':'newContext','args':[_0x394dea]});if(!this[_0x1cb90e(_0x4dd9d3._0x1cb40d)])throw new DriverError(_0x1cb90e(0x15e),{});const _0x5bae8c=new FakeContext(this[_0x1cb90e(0x18f)],this[_0x1cb90e(0x195)],'ctx'+this[_0x1cb90e(0x185)][_0x1cb90e(0x19c)]);return this['contexts'][_0x1cb90e(0x1b1)](_0x5bae8c),_0x5bae8c;}async[_0x4a869d(0x14c)](){const _0xdb03c7=_0x4a869d;this['recorder']['push']({'scope':_0xdb03c7(0x194),'method':_0xdb03c7(0x14c),'args':[]}),this[_0xdb03c7(0x162)]=![];}['calls'](){return this['recorder']['calls']();}['callsFor'](_0x3159bf){const _0x5b1ff3={_0x432ab5:0x18f},_0x2e4324=_0x4a869d;return this[_0x2e4324(_0x5b1ff3._0x432ab5)][_0x2e4324(0x15a)]()['filter'](_0xb62e31=>_0xb62e31[_0x2e4324(0x1aa)]===_0x3159bf);}};export{FakeWebDriver};
1
+ const _0x2eed64=_0x18ee;(function(_0x5b3255,_0x56dfc5){const _0x1ccee0={_0x240e98:0x1fa,_0x116e42:0x1cb,_0x2cba7e:0x1ff},_0x45ac81=_0x18ee,_0xe6dcf9=_0x5b3255();while(!![]){try{const _0x386b9c=parseInt(_0x45ac81(0x196))/0x1*(parseInt(_0x45ac81(_0x1ccee0._0x240e98))/0x2)+-parseInt(_0x45ac81(0x19c))/0x3+parseInt(_0x45ac81(_0x1ccee0._0x116e42))/0x4+parseInt(_0x45ac81(0x1c4))/0x5+parseInt(_0x45ac81(_0x1ccee0._0x2cba7e))/0x6+-parseInt(_0x45ac81(0x1b0))/0x7*(parseInt(_0x45ac81(0x1d3))/0x8)+parseInt(_0x45ac81(0x1f7))/0x9;if(_0x386b9c===_0x56dfc5)break;else _0xe6dcf9['push'](_0xe6dcf9['shift']());}catch(_0x4a41bc){_0xe6dcf9['push'](_0xe6dcf9['shift']());}}}(_0x3754,0x93004));var __defProp=Object[_0x2eed64(0x1c3)],__name=(_0x23f8b6,_0x1ffdae)=>__defProp(_0x23f8b6,_0x2eed64(0x1cf),{'value':_0x1ffdae,'configurable':!![]}),UnotestError=class extends Error{static{__name(this,_0x2eed64(0x1bf));}[_0x2eed64(0x1ed)];constructor(_0x2dace3,_0x33aaf1={}){const _0x48cad7={_0xf45d35:0x1ed,_0x573007:0x1d0},_0x556ae8=_0x2eed64;super(_0x2dace3),this['name']=new.target.name,this[_0x556ae8(_0x48cad7._0xf45d35)]=Object['freeze']({..._0x33aaf1}),typeof Error[_0x556ae8(0x1d0)]===_0x556ae8(0x1c8)&&Error[_0x556ae8(_0x48cad7._0x573007)](this,new.target);}},DriverError=class extends UnotestError{static{__name(this,_0x2eed64(0x1f6));}},LocatorError=class extends UnotestError{static{__name(this,_0x2eed64(0x1d7));}};function createRecorder(){const _0x1ac643=_0x2eed64,_0x53e48c=[];let _0x5a0c91=0x0;return{'push':__name(_0x5b402b=>_0x53e48c[_0x1ac643(0x1c5)]({..._0x5b402b,'seq':_0x5a0c91++}),_0x1ac643(0x1c5)),'calls':__name(()=>_0x53e48c,_0x1ac643(0x1f8))};}__name(createRecorder,_0x2eed64(0x1da));var FakePage=class{constructor(_0x52dd21,_0xb77468,_0x186cb0,_0x4e08d1){const _0x55c018={_0x4438da:0x1d2,_0xa47849:0x1b4},_0x105c47=_0x2eed64;this[_0x105c47(_0x55c018._0x4438da)]=_0x52dd21,this[_0x105c47(_0x55c018._0xa47849)]=_0xb77468,this[_0x105c47(0x1be)]=_0x186cb0,this[_0x105c47(0x1e3)]=_0x4e08d1;}['recorder'];[_0x2eed64(0x1b4)];[_0x2eed64(0x1be)];static{__name(this,_0x2eed64(0x1f0));}[_0x2eed64(0x1e3)];[_0x2eed64(0x1cc)];['record'](_0x25ec55,_0xb654fb){const _0x4235ff={_0x3636a7:0x1d2,_0x449d04:0x1be},_0x19aa96=_0x2eed64;this[_0x19aa96(_0x4235ff._0x3636a7)][_0x19aa96(0x1c5)]({'scope':this[_0x19aa96(_0x4235ff._0x449d04)],'method':_0x25ec55,'args':_0xb654fb});}[_0x2eed64(0x1dd)](){const _0x324718={_0x575b4c:0x1b4,_0x59826a:0x1fe},_0x491c6c=_0x2eed64;if(this[_0x491c6c(0x1b4)][_0x491c6c(0x1fe)]){const _0xabbd62=this[_0x491c6c(_0x324718._0x575b4c)]['errorOnNextAction'];this[_0x491c6c(0x1b4)][_0x491c6c(_0x324718._0x59826a)]=void 0x0;throw _0xabbd62;}}['url'](){const _0x471e80={_0xf45e8e:0x1e3},_0x122d8a=_0x2eed64;return this[_0x122d8a(_0x471e80._0xf45e8e)];}async[_0x2eed64(0x1e2)](){const _0x19cfb4=_0x2eed64;return this[_0x19cfb4(0x1b1)](_0x19cfb4(0x1e2),[]),_0x19cfb4(0x1ee);}async[_0x2eed64(0x1ac)](_0x3f2068,_0x2bad7a){const _0x2e1344={_0x3cdf64:0x1ac,_0x45ddfb:0x1dd},_0x2cc7ec=_0x2eed64;this['record'](_0x2cc7ec(_0x2e1344._0x3cdf64),[_0x3f2068,_0x2bad7a]),this[_0x2cc7ec(_0x2e1344._0x45ddfb)](),this['onAfterClick']?.();}async[_0x2eed64(0x1a5)](_0xeb5a30,_0x38e245){const _0x4e93c0={_0x469a4a:0x1b1},_0x35d1be=_0x2eed64;this[_0x35d1be(_0x4e93c0._0x469a4a)](_0x35d1be(0x1a5),[_0xeb5a30,_0x38e245]),this[_0x35d1be(0x1dd)]();}async[_0x2eed64(0x1f4)](_0x45cdf5,_0x37c8b9,_0x52134e){const _0xfbb852={_0x49de33:0x1b1},_0x1d49be=_0x2eed64;this[_0x1d49be(_0xfbb852._0x49de33)]('fill',[_0x45cdf5,_0x37c8b9,_0x52134e]),this[_0x1d49be(0x1dd)]();}async[_0x2eed64(0x1c1)](_0xedfe4e,_0xd078ed,_0x1ec8c8){const _0x49a853={_0x197e73:0x1c1,_0xd7442a:0x1dd},_0x22af1e=_0x2eed64;this[_0x22af1e(0x1b1)](_0x22af1e(_0x49a853._0x197e73),[_0xedfe4e,_0xd078ed,_0x1ec8c8]),this[_0x22af1e(_0x49a853._0xd7442a)]();}async[_0x2eed64(0x203)](_0xca1d3a,_0x47dbc2){const _0xe51bb4=_0x2eed64;this['record'](_0xe51bb4(0x203),[_0xca1d3a,_0x47dbc2]),this[_0xe51bb4(0x1dd)]();}async[_0x2eed64(0x1fb)](_0x54c409,_0x4fbf29){const _0x148b7a={_0x58241c:0x1b1},_0x2225f0=_0x2eed64;this[_0x2225f0(_0x148b7a._0x58241c)](_0x2225f0(0x1fb),[_0x54c409,_0x4fbf29]),this[_0x2225f0(0x1dd)]();}async[_0x2eed64(0x1a2)](_0x2adaba,_0x329870,_0x103860){const _0x4b6898={_0x325cc7:0x1b1},_0x47cce0=_0x2eed64;this[_0x47cce0(_0x4b6898._0x325cc7)](_0x47cce0(0x1a2),[_0x2adaba,_0x329870,_0x103860]),this['maybeThrow']();}async[_0x2eed64(0x1aa)](_0xc49de3,_0x1de54c){const _0x391eee={_0x453fec:0x1dd},_0x483ef0=_0x2eed64;this['record'](_0x483ef0(0x1aa),[_0xc49de3,_0x1de54c]),this[_0x483ef0(_0x391eee._0x453fec)]();}async[_0x2eed64(0x1e0)](_0x2397af){const _0x4b5233={_0x1f4ff4:0x1b1,_0x2d8d9c:0x1e0,_0x4c2279:0x1dd},_0x5337c5=_0x2eed64;this[_0x5337c5(_0x4b5233._0x1f4ff4)](_0x5337c5(_0x4b5233._0x2d8d9c),[_0x2397af]),this[_0x5337c5(_0x4b5233._0x4c2279)]();}async[_0x2eed64(0x1b9)](_0x3c5792,_0x3ef54d,_0xf974f1){const _0x534c1e=_0x2eed64;this[_0x534c1e(0x1b1)](_0x534c1e(0x1b9),[_0x3c5792,_0x3ef54d,_0xf974f1]),this['maybeThrow']();}async[_0x2eed64(0x1e6)](_0x35a978,_0x4fbf7a){const _0x579829={_0x21995b:0x1b1,_0x496863:0x1dd},_0x5c4ad8=_0x2eed64;this[_0x5c4ad8(_0x579829._0x21995b)](_0x5c4ad8(0x1e6),[_0x35a978,_0x4fbf7a]),this[_0x5c4ad8(_0x579829._0x496863)]();}async[_0x2eed64(0x1b6)](_0x1b83dd,_0x41e209){const _0x283f17=_0x2eed64;this[_0x283f17(0x1b1)](_0x283f17(0x1b6),[_0x1b83dd,_0x41e209]),this[_0x283f17(0x1dd)]();}async[_0x2eed64(0x1b7)](_0x416def){const _0x3ff1f7={_0x501985:0x1a9},_0x12085d=_0x2eed64;return this[_0x12085d(0x1b1)](_0x12085d(0x1b7),[_0x416def]),this['behavior'][_0x12085d(_0x3ff1f7._0x501985)]??0x1;}async[_0x2eed64(0x1a4)](_0x282028){const _0x319cfa={_0x16d843:0x1b1,_0x38b262:0x1a4},_0x346189=_0x2eed64;return this[_0x346189(_0x319cfa._0x16d843)](_0x346189(_0x319cfa._0x38b262),[_0x282028]),this['behavior'][_0x346189(0x1fd)]??'';}async[_0x2eed64(0x1a0)](_0x3e18a8){const _0x46e93f=_0x2eed64;return this[_0x46e93f(0x1b1)]('inputValue',[_0x3e18a8]),this['behavior'][_0x46e93f(0x1ce)]??'';}async[_0x2eed64(0x1bd)](_0xc2a572){const _0x2cdd39={_0x2403de:0x1bd,_0x760302:0x1b4},_0x575919=_0x2eed64;return this[_0x575919(0x1b1)](_0x575919(_0x2cdd39._0x2403de),[_0xc2a572]),this[_0x575919(_0x2cdd39._0x760302)][_0x575919(0x19d)]??!![];}async[_0x2eed64(0x1ae)](_0x4afd4f,_0x4da106){const _0x214de9={_0x1d1b63:0x1b1,_0x4ffa1a:0x1b4,_0x199be6:0x1d5},_0x43d293=_0x2eed64;return this[_0x43d293(_0x214de9._0x1d1b63)](_0x43d293(0x1ae),[_0x4afd4f,_0x4da106]),this[_0x43d293(_0x214de9._0x4ffa1a)][_0x43d293(_0x214de9._0x199be6)]?.[_0x4da106]??null;}async['waitFor'](_0x33a02c,_0x110af1){const _0x13ce51={_0x530aa6:0x1b1},_0x553b4b=_0x2eed64;this[_0x553b4b(_0x13ce51._0x530aa6)]('waitFor',[_0x33a02c,_0x110af1]);}async[_0x2eed64(0x1c6)](_0x6335ef,_0x26af11){const _0x48220a={_0x5898cc:0x1c6},_0xc7e608=_0x2eed64;this['record'](_0xc7e608(_0x48220a._0x5898cc),[_0x6335ef,_0x26af11]);}async[_0x2eed64(0x1d6)](_0x27107a,_0x538521){const _0x5732ea={_0x3ac9ce:0x1b1,_0x1d6129:0x1d6},_0x2ee788=_0x2eed64;this[_0x2ee788(_0x5732ea._0x3ac9ce)](_0x2ee788(_0x5732ea._0x1d6129),[_0x27107a,_0x538521]);}async['waitForNavigation'](_0x596dd0){const _0x55987f=_0x2eed64;this[_0x55987f(0x1b1)]('waitForNavigation',[_0x596dd0]);}async[_0x2eed64(0x1fc)](_0xe7c42,_0x3faab6){const _0xea1046={_0x3c7a6f:0x1b1,_0x312865:0x1fc,_0x8411af:0x1e3},_0xdc75c7=_0x2eed64;this[_0xdc75c7(_0xea1046._0x3c7a6f)](_0xdc75c7(_0xea1046._0x312865),[_0xe7c42,_0x3faab6]),this[_0xdc75c7(_0xea1046._0x8411af)]=_0xe7c42;}async['reload'](_0x20d82b){const _0x4bf358={_0x3235e9:0x1d1},_0x15e356=_0x2eed64;this[_0x15e356(0x1b1)](_0x15e356(_0x4bf358._0x3235e9),[_0x20d82b]);}async['goBack'](_0x583338){const _0x38ab26={_0x14bd6d:0x1c2},_0x3bdee9=_0x2eed64;this[_0x3bdee9(0x1b1)](_0x3bdee9(_0x38ab26._0x14bd6d),[_0x583338]);}async[_0x2eed64(0x1f3)](_0x4dbdf4){const _0x51f836=_0x2eed64;this[_0x51f836(0x1b1)](_0x51f836(0x1f3),[_0x4dbdf4]);}async[_0x2eed64(0x19e)](_0x18fcf3){const _0x2e2895={_0x5de076:0x1b1},_0x498c39=_0x2eed64;return this[_0x498c39(_0x2e2895._0x5de076)]('evaluate',[_0x18fcf3]),void 0x0;}async[_0x2eed64(0x1de)](_0x44e76d,_0x5dc25b){const _0x447bb8={_0x1770d8:0x1b1,_0x3a687b:0x1de},_0x338439=_0x2eed64;return this[_0x338439(_0x447bb8._0x1770d8)](_0x338439(_0x447bb8._0x3a687b),[_0x44e76d,_0x5dc25b]),void 0x0;}async[_0x2eed64(0x1af)](_0x23e942){const _0x47a724={_0x200e8a:0x1b1},_0x6ca4c2=_0x2eed64;this[_0x6ca4c2(_0x47a724._0x200e8a)]('inspectElement',[_0x23e942]);if(_0x23e942[_0x6ca4c2(0x1ab)]['length']!==0x1||_0x23e942[_0x6ca4c2(0x1ab)][0x0][_0x6ca4c2(0x1ef)]!==_0x6ca4c2(0x1c9))return null;const _0x1bf399=_0x23e942[_0x6ca4c2(0x1ab)][0x0][_0x6ca4c2(0x1c9)],_0x4258ca=this['behavior']['elementHintByRef']?.[_0x1bf399];return _0x4258ca??null;}async['screenshot'](_0x37b648){const _0x2b6a6f={_0x1cc942:0x1a3},_0x256184=_0x2eed64;return this[_0x256184(0x1b1)](_0x256184(_0x2b6a6f._0x1cc942),[_0x37b648]),Buffer[_0x256184(0x204)](_0x256184(0x1a6));}async[_0x2eed64(0x201)](_0xb0f099){const _0x3536af={_0x49407a:0x1b1,_0x43f46e:0x1b8,_0xfaba8e:0x1c9,_0x121919:0x1b4,_0x2e652b:0x1b5},_0x289cfb=_0x2eed64;this[_0x289cfb(_0x3536af._0x49407a)](_0x289cfb(0x201),[_0xb0f099]);if(_0xb0f099['steps'][_0x289cfb(_0x3536af._0x43f46e)]===0x1&&_0xb0f099[_0x289cfb(0x1ab)][0x0]['kind']==='ref'){const _0x5caa25=_0xb0f099['steps'][0x0][_0x289cfb(_0x3536af._0xfaba8e)];return this[_0x289cfb(_0x3536af._0x121919)][_0x289cfb(0x1ea)]?.[_0x5caa25]??_0x289cfb(_0x3536af._0x2e652b)+_0x5caa25+'\x22></div>';}return _0x289cfb(0x198);}},FakeContext=class{constructor(_0x441068,_0x496233,_0x172c9f){const _0x3d32bd={_0x148a1a:0x1d2,_0x3def5e:0x1b4,_0x27a39f:0x1e8,_0x5b5038:0x1cc,_0xbdb71c:0x200},_0x52aad9=_0x2eed64;this[_0x52aad9(_0x3d32bd._0x148a1a)]=_0x441068,this[_0x52aad9(_0x3d32bd._0x3def5e)]=_0x496233,this['scope']=_0x172c9f;const _0x51d05d=new FakePage(_0x441068,_0x496233,_0x172c9f+_0x52aad9(_0x3d32bd._0x27a39f),_0x496233['initialUrl']??'about:blank');_0x496233[_0x52aad9(0x1cd)]&&(_0x51d05d[_0x52aad9(_0x3d32bd._0x5b5038)]=()=>{const _0x27ef7d=_0x52aad9;this[_0x27ef7d(0x1a7)](_0x496233[_0x27ef7d(0x1cd)]);}),this['pageList']=[_0x51d05d],this[_0x52aad9(0x1e7)]={..._0x496233[_0x52aad9(0x1e4)]??{}},this['cookieState']={..._0x496233[_0x52aad9(_0x3d32bd._0xbdb71c)]??{}};}[_0x2eed64(0x1d2)];[_0x2eed64(0x1b4)];[_0x2eed64(0x1be)];static{__name(this,_0x2eed64(0x1a1));}[_0x2eed64(0x1ad)];[_0x2eed64(0x1d9)]=0x0;[_0x2eed64(0x1e1)]=[];[_0x2eed64(0x1e7)];[_0x2eed64(0x197)];['newPageListeners']=new Set();[_0x2eed64(0x1b1)](_0x2b907c,_0x5735ca){const _0x2c99d8=_0x2eed64;this['recorder'][_0x2c99d8(0x1c5)]({'scope':this[_0x2c99d8(0x1be)],'method':_0x2b907c,'args':_0x5735ca});}['pages'](){const _0x1570ef={_0x20ad14:0x1ad},_0x15de23=_0x2eed64;return this[_0x15de23(_0x1570ef._0x20ad14)];}[_0x2eed64(0x1c0)](){const _0x1e6246={_0x34c839:0x1ad,_0x3a0fd8:0x1d4},_0x18cea3=_0x2eed64,_0x15e30a=this[_0x18cea3(_0x1e6246._0x34c839)][this['activeIdx']];if(!_0x15e30a)throw new DriverError(_0x18cea3(_0x1e6246._0x3a0fd8),{'activeIdx':this[_0x18cea3(0x1d9)]});return _0x15e30a;}[_0x2eed64(0x1ca)](){const _0x26d6d5=_0x2eed64;return this[_0x26d6d5(0x1b4)][_0x26d6d5(0x1ca)]??[];}async['setActivePage'](_0x1e9d36){const _0x587160={_0x5ade3b:0x1b1,_0x2dd0cc:0x1b8},_0x2de1d3=_0x2eed64;this[_0x2de1d3(_0x587160._0x5ade3b)](_0x2de1d3(0x1df),[_0x1e9d36]);if(_0x1e9d36<0x0||_0x1e9d36>=this[_0x2de1d3(0x1ad)][_0x2de1d3(0x1b8)])throw new DriverError(_0x2de1d3(0x19f),{'index':_0x1e9d36,'available':this['pageList'][_0x2de1d3(_0x587160._0x2dd0cc)]});this['activeIdx']=_0x1e9d36,this['frameStack'][_0x2de1d3(0x1b8)]=0x0;}[_0x2eed64(0x1d8)](_0x949823){const _0x1646ee={_0x270eef:0x1e5},_0x3c3007={_0x5942b9:0x1e5},_0x56da42=_0x2eed64;return this[_0x56da42(_0x1646ee._0x270eef)]['add'](_0x949823),()=>{const _0x579cc8=_0x56da42;this[_0x579cc8(_0x3c3007._0x5942b9)][_0x579cc8(0x1c7)](_0x949823);};}[_0x2eed64(0x1a7)](_0x35f3cd){const _0x15aae6={_0x16f2bd:0x1be,_0x1e747d:0x1b4,_0x258757:0x1ad,_0xcbc02b:0x1c5,_0x186298:0x1e5},_0x100acd=_0x2eed64,_0x3b71fe=this[_0x100acd(_0x15aae6._0x16f2bd)]+'.page'+this[_0x100acd(0x1ad)][_0x100acd(0x1b8)],_0x22a3b6=new FakePage(this['recorder'],this[_0x100acd(_0x15aae6._0x1e747d)],_0x3b71fe,_0x35f3cd);this[_0x100acd(_0x15aae6._0x258757)][_0x100acd(_0x15aae6._0xcbc02b)](_0x22a3b6);const _0x2fd48e=this['pageList']['length']-0x1;for(const _0x308039 of this[_0x100acd(_0x15aae6._0x186298)]){try{_0x308039({'index':_0x2fd48e,'url':_0x35f3cd});}catch{}}return _0x2fd48e;}async[_0x2eed64(0x1eb)](_0x50bbd3){const _0xc9ac8a={_0x1d6eaa:0x1b1,_0x5590e3:0x1b8,_0x202cc5:0x1e1},_0x571f94=_0x2eed64;this[_0x571f94(_0xc9ac8a._0x1d6eaa)](_0x571f94(0x1eb),[_0x50bbd3]);if(!_0x50bbd3['steps'][_0x571f94(_0xc9ac8a._0x5590e3)])throw new LocatorError(_0x571f94(0x1b2),{'locator':_0x50bbd3});this[_0x571f94(_0xc9ac8a._0x202cc5)][_0x571f94(0x1c5)](_0x50bbd3);}async[_0x2eed64(0x1b3)](){const _0x4ef4a8={_0x28874b:0x1b1},_0x221bc5=_0x2eed64;this[_0x221bc5(_0x4ef4a8._0x28874b)]('exitFrame',[]);if(this[_0x221bc5(0x1e1)][_0x221bc5(0x1b8)]===0x0)throw new DriverError('exitFrame\x20called\x20with\x20no\x20frame\x20on\x20the\x20stack',{});this[_0x221bc5(0x1e1)][_0x221bc5(0x19b)]();}async[_0x2eed64(0x1ec)](_0x4a8202,_0x44e005){const _0x50f892={_0x2e7f63:0x1ec,_0x319dc4:0x1e7},_0x5e661a=_0x2eed64;this[_0x5e661a(0x1b1)](_0x5e661a(_0x50f892._0x2e7f63),[_0x4a8202,_0x44e005]),this[_0x5e661a(_0x50f892._0x319dc4)][_0x4a8202]=_0x44e005;}async[_0x2eed64(0x1db)](_0x320609){const _0x4e402c={_0x267af2:0x1b1},_0x173213=_0x2eed64;return this[_0x173213(_0x4e402c._0x267af2)](_0x173213(0x1db),[_0x320609]),this[_0x173213(0x1e7)][_0x320609]??null;}async[_0x2eed64(0x202)](_0x28dc64,_0x3d1479,_0xeff1c7){const _0xf5cfe9={_0x75341:0x197},_0x2e9460=_0x2eed64;this[_0x2e9460(0x1b1)](_0x2e9460(0x202),[_0x28dc64,_0x3d1479,_0xeff1c7]),this[_0x2e9460(_0xf5cfe9._0x75341)][_0x28dc64]=_0x3d1479;}async[_0x2eed64(0x1f1)](_0x1eb81a){const _0x1a1038={_0x3df70f:0x1b1,_0x44915f:0x1f1},_0xa436fc=_0x2eed64;return this[_0xa436fc(_0x1a1038._0x3df70f)](_0xa436fc(_0x1a1038._0x44915f),[_0x1eb81a]),this[_0xa436fc(0x197)][_0x1eb81a]??null;}async[_0x2eed64(0x1a8)](_0x29c4e0){const _0x55515d=_0x2eed64;this[_0x55515d(0x1b1)](_0x55515d(0x1a8),[_0x29c4e0]);}async[_0x2eed64(0x19e)](_0x4a3974){return this['record']('evaluate',[_0x4a3974]),void 0x0;}async[_0x2eed64(0x1bc)](){const _0x38bc79=_0x2eed64;this['record'](_0x38bc79(0x1bc),[]);}['frameDepth'](){const _0x161e71={_0x478a00:0x1e1,_0x30092b:0x1b8},_0x4574e0=_0x2eed64;return this[_0x4574e0(_0x161e71._0x478a00)][_0x4574e0(_0x161e71._0x30092b)];}},FakeWebDriver=class{constructor(_0x34a109={}){const _0x44fd1d=_0x2eed64;this[_0x44fd1d(0x1b4)]=_0x34a109,this[_0x44fd1d(0x1d2)]=createRecorder();}['behavior'];static{__name(this,_0x2eed64(0x1e9));}['launched']=![];[_0x2eed64(0x1d2)];[_0x2eed64(0x1f5)]=[];async[_0x2eed64(0x1f9)](_0x272ced){const _0xe7a6bb={_0x156268:0x1f9,_0x46ca7e:0x1bb},_0x336fae=_0x2eed64;this['recorder'][_0x336fae(0x1c5)]({'scope':_0x336fae(0x1ba),'method':_0x336fae(_0xe7a6bb._0x156268),'args':[_0x272ced]}),this[_0x336fae(_0xe7a6bb._0x46ca7e)]=!![];}async[_0x2eed64(0x1dc)](_0x56181f){const _0x1f69bc={_0x316116:0x1dc,_0xfa0841:0x1d2,_0x411465:0x1f5,_0x43e272:0x1b8,_0xa5a325:0x1c5},_0x1a62be=_0x2eed64;this[_0x1a62be(0x1d2)]['push']({'scope':'driver','method':_0x1a62be(_0x1f69bc._0x316116),'args':[_0x56181f]});if(!this[_0x1a62be(0x1bb)])throw new DriverError(_0x1a62be(0x199),{});const _0x1fa0e9=new FakeContext(this[_0x1a62be(_0x1f69bc._0xfa0841)],this[_0x1a62be(0x1b4)],_0x1a62be(0x1f2)+this[_0x1a62be(_0x1f69bc._0x411465)][_0x1a62be(_0x1f69bc._0x43e272)]);return this[_0x1a62be(0x1f5)][_0x1a62be(_0x1f69bc._0xa5a325)](_0x1fa0e9),_0x1fa0e9;}async[_0x2eed64(0x1bc)](){const _0x7522c6={_0x4e82d4:0x1ba},_0x2b3039=_0x2eed64;this[_0x2b3039(0x1d2)][_0x2b3039(0x1c5)]({'scope':_0x2b3039(_0x7522c6._0x4e82d4),'method':_0x2b3039(0x1bc),'args':[]}),this['launched']=![];}['calls'](){const _0x33cb56=_0x2eed64;return this[_0x33cb56(0x1d2)][_0x33cb56(0x1f8)]();}['callsFor'](_0x55dcb6){const _0x2ad710={_0x44da37:0x1f8},_0x42c575=_0x2eed64;return this['recorder'][_0x42c575(_0x2ad710._0x44da37)]()['filter'](_0x5f011e=>_0x5f011e[_0x42c575(0x19a)]===_0x55dcb6);}};function _0x18ee(_0x257039,_0x60aaae){_0x257039=_0x257039-0x196;const _0x3754f3=_0x3754();let _0x18eeb7=_0x3754f3[_0x257039];if(_0x18ee['KLoMIe']===undefined){var _0x507139=function(_0x37d0bf){const _0x64530c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x23f8b6='',_0x1ffdae='';for(let _0x2dace3=0x0,_0x33aaf1,_0x53e48c,_0x5a0c91=0x0;_0x53e48c=_0x37d0bf['charAt'](_0x5a0c91++);~_0x53e48c&&(_0x33aaf1=_0x2dace3%0x4?_0x33aaf1*0x40+_0x53e48c:_0x53e48c,_0x2dace3++%0x4)?_0x23f8b6+=String['fromCharCode'](0xff&_0x33aaf1>>(-0x2*_0x2dace3&0x6)):0x0){_0x53e48c=_0x64530c['indexOf'](_0x53e48c);}for(let _0x5b402b=0x0,_0x52dd21=_0x23f8b6['length'];_0x5b402b<_0x52dd21;_0x5b402b++){_0x1ffdae+='%'+('00'+_0x23f8b6['charCodeAt'](_0x5b402b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1ffdae);};_0x18ee['FemZbU']=_0x507139,_0x18ee['hTckdN']={},_0x18ee['KLoMIe']=!![];}const _0x161151=_0x3754f3[0x0],_0xafded5=_0x257039+_0x161151,_0x4dfb74=_0x18ee['hTckdN'][_0xafded5];return!_0x4dfb74?(_0x18eeb7=_0x18ee['FemZbU'](_0x18eeb7),_0x18ee['hTckdN'][_0xafded5]=_0x18eeb7):_0x18eeb7=_0x4dfb74,_0x18eeb7;}function _0x3754(){const _0x5c9158=['y29VA2LLCW','B3v0zxjive1m','C2v0q29VA2LL','y2HLy2S','zNjVBq','mJiYnJqXwKfZDujy','y29VA2LLu3rHDgu','pgrPDJ48l2rPDJ4','BMv3q29UDgv4DcbJywXSzwqGyMvMB3jLigXHDw5JAcGP','Bwv0Ag9K','Cg9W','mZu2ntmYnKLbDuLssa','AxnwAxnPyMXLqNLezwzHDwX0','zxzHBhvHDgu','CgfNzsbPBMrLEcbVDxqGB2yGCMfUz2u','Aw5WDxrwywX1zq','rMfRzunVBNrLEhq','C2vSzwn0t3b0Aw9U','C2nYzwvUC2HVDa','Dgv4DenVBNrLBNq','zg91yMXLq2XPy2S','zMfRzs1WBMC','zw1PDezHA2vqB3b1Ca','C2f2zvn0B3jHz2vtDgf0zq','y291BNrcEurLzMf1Bhq','Ag92zxi','C3rLChm','y2XPy2S','CgfNzuXPC3q','z2v0qxr0CMLIDxrL','Aw5ZCgvJDevSzw1LBNq','mZvMuLLwrMO','CMvJB3jK','zw50zxjgCMfTzsbJywXSzwqGD2L0AcbLBxb0EsbSB2nHDg9Y','zxHPDezYyw1L','yMvOyxzPB3i','pgrPDIbKyxrHlxvUB3rLC3qTCMvMpsi','y2XPCgjVyxjKugfZDgu','y291BNq','BgvUz3rO','zhjHz0fUzerYB3a','zhjPDMvY','Bgf1BMnOzwq','y2XVC2u','AxnwAxnPyMXL','C2nVCgu','vw5VDgvZDevYCM9Y','ywn0AxzLugfNzq','ChjLC3m','z29cywnR','zgvMAw5LuhjVCgvYDhK','mJq5ndq3mhfru0PKzq','ChvZAa','D2fPDezVCLvYBa','zgvSzxrL','zNvUy3rPB24','CMvM','y29UC29SzuvUDhjPzxm','mJeYmdqWngfNAu14CW','B25bzNrLCKnSAwnR','Cg9WDxbpBKnSAwnR','Aw5WDxrwywX1zuj5rgvMyxvSDa','BMfTzq','y2fWDhvYzvn0ywnRvhjHy2u','CMvSB2fK','CMvJB3jKzxi','ndK5nZG0AuzjqMDw','BM8Gywn0AxzLihbHz2uGAw4Gy29UDgv4Da','yxr0CMLIDxrLC0j5rgvMyxvSDa','D2fPDezVCLrLEhq','tg9JyxrVCKvYCM9Y','B25ozxDqywDL','ywn0AxzLswr4','y3jLyxrLuMvJB3jKzxi','z2v0tg9JywXtDg9YywDL','BMv3q29UDgv4Da','Bwf5yMvuAhjVDW','zxzHBhvHDgvpBKXVy2f0B3i','C2v0qwn0AxzLugfNzq','C2nYB2XSsw50B1zPzxC','zNjHBwvtDgfJAW','DgL0Bgu','y3vYCMvUDfvYBa','Bg9JywXtDg9YywDL','BMv3ugfNzuXPC3rLBMvYCW','DxbSB2fKrMLSzq','Bg9JywXtDg9YywDLu3rHDgu','lNbHz2uW','rMfRzvDLyKrYAxzLCG','B3v0zxjiDg1SqNLszwy','zw50zxjgCMfTzq','C2v0tg9JywXtDg9YywDL','y29UDgv4Da','zMfRzsb0AxrSzq','A2LUza','rMfRzvbHz2u','z2v0q29VA2LL','y3r4','z29gB3j3yxjK','zMLSBa','y29UDgv4Dhm','rhjPDMvYrxjYB3i','mtC5ody4nKzsy21ztW','y2fSBhm','Bgf1BMnO','nhnNrgfyAa','Dw5JAgvJAW','z290BW','Dgv4DenVBNrLBNrcEurLzMf1Bhq','zxjYB3jpBK5LEhrby3rPB24','mJu3mJC1mLDZreXdua'];_0x3754=function(){return _0x5c9158;};return _0x3754();}export{FakeWebDriver};