@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.
- package/.claude/skills/write-e2e-test.md +9 -5
- package/CHANGELOG.md +49 -0
- package/README.md +59 -84
- package/bin/unotest-web.js +10 -32
- package/dist/config/schema.d.ts +9 -9
- package/dist/config/schema.js +1 -1
- package/dist/driver/index.js +1 -1
- package/dist/dsl/index.d.ts +25 -20
- package/dist/dsl/index.js +1 -1
- package/dist/linter-DzAzJpab.d.ts +21 -0
- package/dist/mcp/server.js +1 -1
- package/dist/runner/cli.d.ts +10 -1
- package/dist/runner/cli.js +1 -1
- package/dist/runner/init.js +1 -1
- package/dist/runner/install-chromium.js +1 -1
- package/dist/runner/prepare-fix.js +1 -1
- package/dist/runner/serve-fixture.js +1 -1
- package/dist/runner/web-runner-adapter.js +1 -1
- package/guides/agent-integration.md +297 -0
- package/guides/dsl-reference.md +670 -0
- package/package.json +29 -39
- package/src/mcp/prompts/agent-test-author.md +71 -1
|
@@ -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
|
|
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: "<
|
|
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`.
|
|
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
|
|
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
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
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
|
-
```
|
|
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
|
-
|
|
39
|
-
|
|
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
|
-
|
|
44
|
-
plain English:
|
|
35
|
+
## 3. Create a test — just ask your agent
|
|
45
36
|
|
|
46
|
-
|
|
47
|
-
|
|
37
|
+
In your AI editor (Claude Code, Codex, Cursor, …), open your project and
|
|
38
|
+
describe the flow in plain English:
|
|
48
39
|
|
|
49
|
-
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
61
|
-
|
|
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
|
-
|
|
64
|
-
> [agent-integration.md](https://github.com/unotest/web/blob/main/docs/manuals/agent-integration.md).
|
|
52
|
+
## 4. Run a test
|
|
65
53
|
|
|
66
|
-
|
|
54
|
+
Click any scenario in the viewer, or run from the CLI:
|
|
67
55
|
|
|
68
56
|
```sh
|
|
69
|
-
npx @unotest/web e2e <name>
|
|
70
|
-
npx @unotest/web e2e
|
|
57
|
+
npx @unotest/web e2e <name> # one scenario
|
|
58
|
+
npx @unotest/web e2e # list / usage
|
|
71
59
|
```
|
|
72
60
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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
|
-
|
|
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:
|
|
129
|
-
|
|
130
|
-
|
|
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
|
-
|
|
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://
|
|
141
|
-
| [`@unotest/protocol`](https://
|
|
142
|
-
| [`@unotest/dsl`](https://
|
|
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
|
|
package/bin/unotest-web.js
CHANGED
|
@@ -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
|
|
20
|
+
import { dirname, resolve } from "node:path";
|
|
21
21
|
import { createRequire } from "node:module";
|
|
22
|
-
import { existsSync
|
|
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
|
-
//
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
//
|
|
31
|
-
//
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -90,19 +90,19 @@ declare const FailureBundleConfigSchema: z.ZodObject<{
|
|
|
90
90
|
type FailureBundleConfig = z.infer<typeof FailureBundleConfigSchema>;
|
|
91
91
|
declare const DialogPolicySchema: z.ZodEnum<["accept", "dismiss", "manual"]>;
|
|
92
92
|
type DialogPolicy = z.infer<typeof DialogPolicySchema>;
|
|
93
|
-
declare const LinterRuleIdSchema: z.ZodEnum<["lint:deep-css", "lint:xpath", "lint:obfuscated-class", "lint:pause-explicit", "lint:disambig-by-index", "lint:evaluate-discouraged", "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";
|
package/dist/config/schema.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
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};
|
package/dist/driver/index.js
CHANGED
|
@@ -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};
|