@unotest/web 0.29.0 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/write-e2e-test/SKILL.md +41 -2
- package/.claude/skills/write-e2e-test-ground/SKILL.md +44 -2
- package/CHANGELOG.md +130 -0
- package/dist/config/schema.d.ts +12 -12
- package/dist/config/schema.js +1 -1
- package/dist/driver/index.d.ts +3 -3
- package/dist/driver/index.js +1 -1
- package/dist/dsl/index.d.ts +2 -2
- package/dist/dsl/index.js +1 -1
- package/dist/dsl/web-dsl-language-service.js +1 -1
- package/dist/inspection/page-inject.d.ts +1 -1
- package/dist/{interfaces-SzdtOj1F.d.ts → interfaces-BluheUKs.d.ts} +9 -2
- package/dist/mcp/server.js +1 -1
- package/dist/runner/cli.js +1 -1
- package/dist/runner/init/chrome-probe.js +1 -1
- package/dist/runner/init.js +1 -1
- package/dist/runner/install-chromium.js +1 -1
- package/dist/runner/prepare-fix.js +1 -1
- package/dist/runner/scaffold-workspace.js +1 -1
- package/dist/runner/serve-fixture.js +1 -1
- package/dist/runner/web-runner-adapter.js +1 -1
- package/package.json +8 -8
- package/types/unotest-dsl.d.ts +2 -2
|
@@ -87,6 +87,15 @@ APP_BASE_URL) — same idea as run_test's per-call `env`.
|
|
|
87
87
|
`explore_start` opens the browser itself. Do NOT call `new_context`
|
|
88
88
|
first — it's for RESETTING the browser (Phase 5), not for starting.
|
|
89
89
|
|
|
90
|
+
**Variables in steps.** In a value field (`fill` value, `press` key,
|
|
91
|
+
`select_option` value, `goto` url) the bare NAME of a `.env`/`.secrets`
|
|
92
|
+
variable is a reference: `value: "PASSWORD"` types the secret live and
|
|
93
|
+
the saved test says `fill(loc, PASSWORD)`. In a locator's text or an
|
|
94
|
+
assertion's text a bare NAME is the literal it looks like — to reference
|
|
95
|
+
a variable there write `{{NAME}}` (`text: "{{GREETING}}"`); the reply
|
|
96
|
+
warns when a literal equals a variable's name. Never type a secret's
|
|
97
|
+
VALUE: it is recorded as the name anyway, and the reply says so.
|
|
98
|
+
|
|
90
99
|
### Phase 2 — first recorded step: navigate
|
|
91
100
|
|
|
92
101
|
```
|
|
@@ -418,7 +427,23 @@ Assertions:
|
|
|
418
427
|
|
|
419
428
|
State reads:
|
|
420
429
|
- `getTitle()`, `getUrl()`, `getAttribute(loc, name)`, `getInnerText(loc)`,
|
|
421
|
-
`getInputValue(loc)
|
|
430
|
+
`getInputValue(loc)`, `count(loc)`; `textContains(haystack, needle)`
|
|
431
|
+
for a substring probe on a string you already hold
|
|
432
|
+
(`assertTrue(textContains(out.stdout, 'ready'))`).
|
|
433
|
+
- A `textarea` / `input` VALUE is not page text: `waitForText` and
|
|
434
|
+
`assertText` never see it. Check it with `assertValue(loc, expected)`
|
|
435
|
+
— it polls until the timeout (5 s by default, `{timeout}` to raise
|
|
436
|
+
it), so a value that fills in late is fine. For a substring of the
|
|
437
|
+
value there is no polling assert: read it in a loop —
|
|
438
|
+
`for (i = 0; i < 20; i = i + 1) { if (textContains(getInputValue(loc), 'x')) { break; } pause(200); // lint-ok: polling a textarea value }`
|
|
439
|
+
— then assert.
|
|
440
|
+
- Only the vocabulary above is expression language. `!` is rejected by
|
|
441
|
+
the parser (`unotest-web lint`: `parse error — Invalid token`);
|
|
442
|
+
`JSON.stringify` / `Date.now()` / `indexOf` and other JS globals and
|
|
443
|
+
string methods are rejected by the validator with the replacement
|
|
444
|
+
named (`use json(value)`, `use nowMs()`, `use textContains(haystack,
|
|
445
|
+
needle)`). Express the check as an assertion or a locator
|
|
446
|
+
(`assertHidden`, `assertCount`, `.filter({hasText})`, `textContains`).
|
|
422
447
|
|
|
423
448
|
Sandbox primitives:
|
|
424
449
|
- `shell("cmd", "arg", …, options?)` — `execFile` style, no shell interpretation. Non-zero exit fails the step; pass `{allowNonZero: true}` to inspect `res.code` yourself. Wall-clock budget `{timeoutMs}` (default 120s).
|
|
@@ -433,8 +458,17 @@ Sandbox primitives:
|
|
|
433
458
|
JSON — there is no key-name magic.
|
|
434
459
|
|
|
435
460
|
Escape hatch:
|
|
436
|
-
- `evaluate(\`js body\`,
|
|
461
|
+
- `evaluate(\`js body\`, arg?)` — raw backticks, no `${}`. Linter
|
|
437
462
|
warns `lint:evaluate-discouraged`. Use only when nothing above fits.
|
|
463
|
+
The body gets at most ONE argument — extra arguments reach it like
|
|
464
|
+
this: none → nothing, exactly one → the value itself, **with two or
|
|
465
|
+
more extra arguments the body receives ONE array** — destructure it:
|
|
466
|
+
`evaluate('function(n){ return n * 2 }', 21)` and
|
|
467
|
+
`evaluate('([a, b]) => a + b', a, b)`. The linter's warning says so
|
|
468
|
+
when it sees two or more.
|
|
469
|
+
- Native dialogs (`confirm()` / `alert()` / `prompt()`) are accepted by
|
|
470
|
+
the runner itself (`dialogPolicy: "accept"` by default) — a "Remove"
|
|
471
|
+
that asks first needs no special step.
|
|
438
472
|
|
|
439
473
|
Time helpers: `nowMs()`, `today()`, `daysFromNow(n)`. Marker helper: `randomWord(len)` — random lowercase letters, digit-free. Debug helper: `json(value)` — serialize any value for an assert message: `assertTrue(res.status == 202, json(res.body))`.
|
|
440
474
|
|
|
@@ -635,6 +669,11 @@ Every locator must resolve to exactly one element. When you see
|
|
|
635
669
|
multi-matches.** Element order is brittle. Use `.filter({hasText:
|
|
636
670
|
'…'})` or `.filter({has: someLocator})`. Linter flags index-based
|
|
637
671
|
picking as `lint:disambig-by-index`.
|
|
672
|
+
- **Don't assert "the first row of the list / audit".** On a shared
|
|
673
|
+
stand another run (or a person) writes rows between your steps. Give
|
|
674
|
+
your own data a unique marker (`randomWord()` in a name or note),
|
|
675
|
+
find your row by it (`.filter({hasText: marker})`), and remove what
|
|
676
|
+
you created at the end of the scenario.
|
|
638
677
|
- **Don't reach for `locator(...)` with `>` combinators, hashed class
|
|
639
678
|
names, or `xpath=…`.** Stop and ask the user whether the app should
|
|
640
679
|
expose a `data-testid` or accessible name.
|
|
@@ -112,6 +112,15 @@ APP_BASE_URL) — same idea as run_test's per-call `env`.
|
|
|
112
112
|
`explore_start` opens the browser itself. Do NOT call `new_context`
|
|
113
113
|
first — it's for RESETTING the browser (Phase 5), not for starting.
|
|
114
114
|
|
|
115
|
+
**Variables in steps.** In a value field (`fill` value, `press` key,
|
|
116
|
+
`select_option` value, `goto` url) the bare NAME of a `.env`/`.secrets`
|
|
117
|
+
variable is a reference: `value: "PASSWORD"` types the secret live and
|
|
118
|
+
the saved test says `fill(loc, PASSWORD)`. In a locator's text or an
|
|
119
|
+
assertion's text a bare NAME is the literal it looks like — to reference
|
|
120
|
+
a variable there write `{{NAME}}` (`text: "{{GREETING}}"`); the reply
|
|
121
|
+
warns when a literal equals a variable's name. Never type a secret's
|
|
122
|
+
VALUE: it is recorded as the name anyway, and the reply says so.
|
|
123
|
+
|
|
115
124
|
### Phase 2 — record the known steps as ONE batch
|
|
116
125
|
|
|
117
126
|
**Batch-first default.** When the task brief already spells out the
|
|
@@ -549,7 +558,23 @@ Assertions:
|
|
|
549
558
|
|
|
550
559
|
State reads:
|
|
551
560
|
- `getTitle()`, `getUrl()`, `getAttribute(loc, name)`, `getInnerText(loc)`,
|
|
552
|
-
`getInputValue(loc)
|
|
561
|
+
`getInputValue(loc)`, `count(loc)`; `textContains(haystack, needle)`
|
|
562
|
+
for a substring probe on a string you already hold
|
|
563
|
+
(`assertTrue(textContains(out.stdout, 'ready'))`).
|
|
564
|
+
- A `textarea` / `input` VALUE is not page text: `waitForText` and
|
|
565
|
+
`assertText` never see it. Check it with `assertValue(loc, expected)`
|
|
566
|
+
— it polls until the timeout (5 s by default, `{timeout}` to raise
|
|
567
|
+
it), so a value that fills in late is fine. For a substring of the
|
|
568
|
+
value there is no polling assert: read it in a loop —
|
|
569
|
+
`for (i = 0; i < 20; i = i + 1) { if (textContains(getInputValue(loc), 'x')) { break; } pause(200); // lint-ok: polling a textarea value }`
|
|
570
|
+
— then assert.
|
|
571
|
+
- Only the vocabulary above is expression language. `!` is rejected by
|
|
572
|
+
the parser (`unotest-web lint`: `parse error — Invalid token`);
|
|
573
|
+
`JSON.stringify` / `Date.now()` / `indexOf` and other JS globals and
|
|
574
|
+
string methods are rejected by the validator with the replacement
|
|
575
|
+
named (`use json(value)`, `use nowMs()`, `use textContains(haystack,
|
|
576
|
+
needle)`). Express the check as an assertion or a locator
|
|
577
|
+
(`assertHidden`, `assertCount`, `.filter({hasText})`, `textContains`).
|
|
553
578
|
|
|
554
579
|
Sandbox primitives:
|
|
555
580
|
- `shell("cmd", "arg", …, options?)` — `execFile` style, no shell interpretation. Non-zero exit fails the step; pass `{allowNonZero: true}` to inspect `res.code` yourself. Wall-clock budget `{timeoutMs}` (default 120s).
|
|
@@ -564,8 +589,17 @@ Sandbox primitives:
|
|
|
564
589
|
JSON — there is no key-name magic.
|
|
565
590
|
|
|
566
591
|
Escape hatch:
|
|
567
|
-
- `evaluate(\`js body\`,
|
|
592
|
+
- `evaluate(\`js body\`, arg?)` — raw backticks, no `${}`. Linter
|
|
568
593
|
warns `lint:evaluate-discouraged`. Use only when nothing above fits.
|
|
594
|
+
The body gets at most ONE argument — extra arguments reach it like
|
|
595
|
+
this: none → nothing, exactly one → the value itself, **with two or
|
|
596
|
+
more extra arguments the body receives ONE array** — destructure it:
|
|
597
|
+
`evaluate('function(n){ return n * 2 }', 21)` and
|
|
598
|
+
`evaluate('([a, b]) => a + b', a, b)`. The linter's warning says so
|
|
599
|
+
when it sees two or more.
|
|
600
|
+
- Native dialogs (`confirm()` / `alert()` / `prompt()`) are accepted by
|
|
601
|
+
the runner itself (`dialogPolicy: "accept"` by default) — a "Remove"
|
|
602
|
+
that asks first needs no special step.
|
|
569
603
|
|
|
570
604
|
Time helpers: `nowMs()`, `today()`, `daysFromNow(n)`. Marker helper: `randomWord(len)` — random lowercase letters, digit-free. Debug helper: `json(value)` — serialize any value for an assert message: `assertTrue(res.status == 202, json(res.body))`.
|
|
571
605
|
|
|
@@ -711,6 +745,9 @@ no recording.
|
|
|
711
745
|
- **`StaleRefError`** — a ref from an earlier lookup is no longer in
|
|
712
746
|
the DOM. Intent locators don't go stale (grounded per call) — retry
|
|
713
747
|
with the intent step, or re-ground via `ground_element`.
|
|
748
|
+
- **Grounder unavailable** — `explore_start` or the first intent step
|
|
749
|
+
says so; intent locators are off for the session. Use
|
|
750
|
+
`find_element({role, name, near?})` and its ref instead.
|
|
714
751
|
- **`RefResolveError`** — element has no stable identifier (testId /
|
|
715
752
|
role+name / aria-label / placeholder / alt / title / text / href /
|
|
716
753
|
stable id / name attribute). Best fix: ask the app team to add
|
|
@@ -769,6 +806,11 @@ Every locator must resolve to exactly one element. When you see
|
|
|
769
806
|
multi-matches.** Element order is brittle. Use `.filter({hasText:
|
|
770
807
|
'…'})` or `.filter({has: someLocator})`. Linter flags index-based
|
|
771
808
|
picking as `lint:disambig-by-index`.
|
|
809
|
+
- **Don't assert "the first row of the list / audit".** On a shared
|
|
810
|
+
stand another run (or a person) writes rows between your steps. Give
|
|
811
|
+
your own data a unique marker (`randomWord()` in a name or note),
|
|
812
|
+
find your row by it (`.filter({hasText: marker})`), and remove what
|
|
813
|
+
you created at the end of the scenario.
|
|
772
814
|
- **Don't reach for `locator(...)` with `>` combinators, hashed class
|
|
773
815
|
names, or `xpath=…`.** Stop and ask the user whether the app should
|
|
774
816
|
expose a `data-testid` or accessible name.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,135 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.30.0] - 2026-09-03
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 23de03c: On a hosted viewer (a box), the project and environment you are looking at
|
|
8
|
+
are now named and switched in the viewer's own tree header, in place of
|
|
9
|
+
the checkout directory it used to show there (`current`, which told
|
|
10
|
+
nobody anything). Previously the only way to another environment was
|
|
11
|
+
logging out and using the picker page. The chevrons appear on hover, like
|
|
12
|
+
the refresh button beside them, and only when something fronts the viewer
|
|
13
|
+
and offers it a list; a plain local viewer keeps the folder name it
|
|
14
|
+
always showed. Because
|
|
15
|
+
each environment on a box is its own viewer process, picking one is a full
|
|
16
|
+
page load into that viewer, and the menu shows which test bundle each
|
|
17
|
+
environment is running. The status bar's `.env.<name>` overlay switcher is
|
|
18
|
+
now labelled "env overlay", so the two senses of "environment" no longer
|
|
19
|
+
share a name. `@unotest/viewer/session` carries the two URLs this needs
|
|
20
|
+
(`environmentsUrl`, `switchEnvUrl`) and the `ViewerEnvOption` type, both
|
|
21
|
+
optional — a proxy that does not offer them gets the old behaviour.
|
|
22
|
+
|
|
23
|
+
### Patch Changes
|
|
24
|
+
|
|
25
|
+
- A run started in the first moments after the viewer boots is now discovered: the run watcher finishes its initial scan of the day directory before reporting itself started, instead of filing such a run as history.
|
|
26
|
+
- 3f5cab7: `bundle push` and `env push` no longer send you to "the box's
|
|
27
|
+
admin page" for a project token — there is no such page; tokens are
|
|
28
|
+
issued per project by the box's operator, and the refusal hints and the
|
|
29
|
+
missing-token message now say so.
|
|
30
|
+
- 3f5cab7: The vocabulary's description of `evaluate` now says how extra
|
|
31
|
+
arguments reach the body — none → nothing, exactly one → the value
|
|
32
|
+
itself, two or more → one array — matching the runtime, the linter's
|
|
33
|
+
hint and the authoring skill; it used to read as if they were positional
|
|
34
|
+
(`evaluate(js, ...args)`), and so did the generated DSL typings.
|
|
35
|
+
- 3f5cab7: A scenario that answers a native `confirm()` — a "Remove" button that
|
|
36
|
+
asks first, say — no longer fails when `run_test` auto-attaches the MCP
|
|
37
|
+
session to the run's browser, or after `attach_debug_session`. The
|
|
38
|
+
attaching client now applies the same dialog policy the run does
|
|
39
|
+
(`dialogPolicy`, accept by default) to the page it watches; before, it
|
|
40
|
+
listened for no dialogs at all, and Playwright dismisses every dialog on
|
|
41
|
+
behalf of a client that has no listener — so the second pair of eyes was
|
|
42
|
+
answering "no" before the run's own accept could land. The same scenario
|
|
43
|
+
passed with an exploration session open only because that session
|
|
44
|
+
happened to keep the run's browser to itself. Under `manual` the attached
|
|
45
|
+
client leaves the dialog to whoever handles it instead of dismissing it.
|
|
46
|
+
- 9f2e244: On a box, an administrator can now see a secret's value from the guard's
|
|
47
|
+
values page — the eye reveals it in the row, the copy button puts it on
|
|
48
|
+
the clipboard without showing it — and every look is a `secret.revealed`
|
|
49
|
+
entry in the box's audit trail, naming who, which secret and whether it
|
|
50
|
+
was shown or copied. The page is one table now (target, variables,
|
|
51
|
+
secrets), edited in place, with a JSON view that changes the whole
|
|
52
|
+
environment at once; a secret left as `"••••"` there is kept as it is.
|
|
53
|
+
The token door `env push` / `env set` talk to is unchanged: secrets stay
|
|
54
|
+
write-only on the wire.
|
|
55
|
+
|
|
56
|
+
`@unotest/protocol` carries the contract: `boxEnvSecretRevealPath` /
|
|
57
|
+
`boxEnvSecretsRevealPath` with their response parsers, the session-door
|
|
58
|
+
batch `BoxEnvValuesReplaceRequest` (`null` for a secret means "keep") and
|
|
59
|
+
`parseBoxEnvValuesReplaceRequest`, and the refusal code `unknown-secret`
|
|
60
|
+
for a reveal or a keep that names a secret the environment does not
|
|
61
|
+
hold. `isEnvVarName` now refuses `__proto__`: it is spelled like a
|
|
62
|
+
variable, but a plain object cannot hold it and the value was silently
|
|
63
|
+
lost. The CLI explains an `unknown-secret` refusal.
|
|
64
|
+
|
|
65
|
+
- 3f5cab7: `evaluate(js, …args)` has always handed the body its extra arguments in
|
|
66
|
+
one of three shapes — none, the single value, or ONE array for two or
|
|
67
|
+
more — while the authoring skill described them as positional. The
|
|
68
|
+
skill now states the rule with both spellings
|
|
69
|
+
(`evaluate('function(n){…}', 21)` / `evaluate('([a, b]) => …', a, b)`),
|
|
70
|
+
and the `lint:evaluate-discouraged` warning adds the same hint when it
|
|
71
|
+
sees two or more extra arguments; the runtime is unchanged. The skill
|
|
72
|
+
also gains the getters it left out (`count`, `getInputValue`,
|
|
73
|
+
`textContains`), the note that `waitForText` never sees a textarea's
|
|
74
|
+
value, the parser's refusal of `!` / `indexOf` / string methods, the
|
|
75
|
+
shared-stand rule against "the first row" (mark your own data, filter
|
|
76
|
+
by it, clean up), that native dialogs are accepted by the runner, and
|
|
77
|
+
what to do when the grounder is unavailable.
|
|
78
|
+
- 3f5cab7: While recording with `explore_step` / `explore_steps`, the bare NAME of a
|
|
79
|
+
scenario variable is substituted only where the step types a value into
|
|
80
|
+
the page — `fill`'s value, `press`'s key, `select_option`'s value,
|
|
81
|
+
`goto`'s url. In a locator's text or an assertion's expected text a bare
|
|
82
|
+
name is now the literal it looks like: `assertText(el, "BOX_LAB_PASSWORD")`
|
|
83
|
+
expects those letters, where before the live step silently waited for
|
|
84
|
+
the secret's value and the saved test said something else. To reference
|
|
85
|
+
a variable in a matcher, write `{{NAME}}`; the reply warns when a literal
|
|
86
|
+
happens to equal a variable's name. And a secret's value typed into a
|
|
87
|
+
value field is recorded as the secret's name (the reply says which), so
|
|
88
|
+
the value never lands in the test file.
|
|
89
|
+
- 3f5cab7: `run_test` no longer reports `spawn_failed` about a runner that is still
|
|
90
|
+
starting. Two runs launched together on a busy box took longer than the
|
|
91
|
+
fixed 10-second wait to write their first `runtime.json`, and the second
|
|
92
|
+
was declared dead while it was booting a browser. The wait now lasts as
|
|
93
|
+
long as the runner child is alive (up to 60 seconds), ends early when the
|
|
94
|
+
child joins the run queue, and — when the child really dies — says so with
|
|
95
|
+
its exit code and the last lines of its stderr, which the runner now
|
|
96
|
+
writes to `spawn.stderr.log` in its run directory.
|
|
97
|
+
|
|
98
|
+
`explore_start` now reports whether the grounder is usable for the
|
|
99
|
+
session: `grounder: {available: true}`, or `{available: false, reason,
|
|
100
|
+
hint}` when grounding is off, the backend is unreachable, or a required
|
|
101
|
+
model is not pulled (`"embeddinggemma" is not available there — pull it:
|
|
102
|
+
\`ollama pull embeddinggemma\``). An intent step in such a session fails
|
|
103
|
+
with the same words, not with the backend's raw error; the probe is one
|
|
104
|
+
short request per session.
|
|
105
|
+
|
|
106
|
+
Secret masking no longer rewrites the runner's own identifiers in
|
|
107
|
+
`runtime.json`: with `LOGIN=admin`, the scenario path `guard-admin.js`,
|
|
108
|
+
the test function `test_guard_admin` and the run id kept their names in
|
|
109
|
+
`inspect_runtime` replies instead of turning into `guard-‹secret:LOGIN›.js`.
|
|
110
|
+
Masking by value is unchanged everywhere else; the run id, scenario
|
|
111
|
+
path, test function and call-stack names are an explicit exception.
|
|
112
|
+
|
|
113
|
+
- 3f5cab7: `save_exploration_as_test` (and `generate_dsl_from_exploration`) now
|
|
114
|
+
write scoped locators — a `getByRole` / `getByText` / `locator(css)` step
|
|
115
|
+
under a parent, such as the "Reveal" button inside one table row — as
|
|
116
|
+
the chain the DSL already runs:
|
|
117
|
+
`locator('tr[data-row="A"]').getByRole('button', {name: 'Reveal', exact: true})`.
|
|
118
|
+
Before, any recorded step whose locator went below its root was skipped
|
|
119
|
+
with `NO_DSL_PRIMITIVE`, and the save was refused, although the step
|
|
120
|
+
had executed and the hand-written form worked. Every locator is now
|
|
121
|
+
rendered in the same method-chain spelling — narrowing steps too
|
|
122
|
+
(`getByRole('row').filter({hasText: 'Alice'}).first()` instead of
|
|
123
|
+
`first(filter(getByRole('row'), {hasText: 'Alice'}))`); both spellings
|
|
124
|
+
remain valid input, the runtime is unchanged.
|
|
125
|
+
- Updated dependencies [23de03c]
|
|
126
|
+
- Updated dependencies [9f2e244]
|
|
127
|
+
- @unotest/viewer@0.30.0
|
|
128
|
+
- @unotest/protocol@0.30.0
|
|
129
|
+
- @unotest/core@0.30.0
|
|
130
|
+
- @unotest/dsl@0.30.0
|
|
131
|
+
- @unotest/grounder-client@0.30.0
|
|
132
|
+
|
|
3
133
|
## [0.29.0] - 2026-09-02
|
|
4
134
|
|
|
5
135
|
### Minor Changes
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -215,15 +215,15 @@ declare const WebServerConfigSchema: z.ZodObject<{
|
|
|
215
215
|
/** How long to wait for the URL to come up after spawning. */
|
|
216
216
|
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
217
217
|
}, "strip", z.ZodTypeAny, {
|
|
218
|
-
command: string;
|
|
219
218
|
url: string;
|
|
220
|
-
reuseExistingServer: boolean;
|
|
221
219
|
timeoutMs: number;
|
|
222
|
-
}, {
|
|
223
220
|
command: string;
|
|
221
|
+
reuseExistingServer: boolean;
|
|
222
|
+
}, {
|
|
224
223
|
url: string;
|
|
225
|
-
|
|
224
|
+
command: string;
|
|
226
225
|
timeoutMs?: number | undefined;
|
|
226
|
+
reuseExistingServer?: boolean | undefined;
|
|
227
227
|
}>;
|
|
228
228
|
type WebServerConfig = z.infer<typeof WebServerConfigSchema>;
|
|
229
229
|
declare const UnotestConfigSchema: z.ZodObject<{
|
|
@@ -249,15 +249,15 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
249
249
|
/** How long to wait for the URL to come up after spawning. */
|
|
250
250
|
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
251
251
|
}, "strip", z.ZodTypeAny, {
|
|
252
|
-
command: string;
|
|
253
252
|
url: string;
|
|
254
|
-
reuseExistingServer: boolean;
|
|
255
253
|
timeoutMs: number;
|
|
256
|
-
}, {
|
|
257
254
|
command: string;
|
|
255
|
+
reuseExistingServer: boolean;
|
|
256
|
+
}, {
|
|
258
257
|
url: string;
|
|
259
|
-
|
|
258
|
+
command: string;
|
|
260
259
|
timeoutMs?: number | undefined;
|
|
260
|
+
reuseExistingServer?: boolean | undefined;
|
|
261
261
|
}>>;
|
|
262
262
|
browsers: z.ZodArray<z.ZodEnum<["chromium", "firefox", "webkit"]>, "many">;
|
|
263
263
|
channel: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"chrome">, z.ZodLiteral<"msedge">, z.ZodLiteral<"chrome-beta">, z.ZodNull]>>;
|
|
@@ -508,10 +508,10 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
508
508
|
};
|
|
509
509
|
baseUrl?: string | undefined;
|
|
510
510
|
webServer?: {
|
|
511
|
-
command: string;
|
|
512
511
|
url: string;
|
|
513
|
-
reuseExistingServer: boolean;
|
|
514
512
|
timeoutMs: number;
|
|
513
|
+
command: string;
|
|
514
|
+
reuseExistingServer: boolean;
|
|
515
515
|
} | undefined;
|
|
516
516
|
channel?: "chrome" | "msedge" | "chrome-beta" | null | undefined;
|
|
517
517
|
storageState?: string | undefined;
|
|
@@ -564,10 +564,10 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
564
564
|
};
|
|
565
565
|
baseUrl?: string | undefined;
|
|
566
566
|
webServer?: {
|
|
567
|
-
command: string;
|
|
568
567
|
url: string;
|
|
569
|
-
|
|
568
|
+
command: string;
|
|
570
569
|
timeoutMs?: number | undefined;
|
|
570
|
+
reuseExistingServer?: boolean | undefined;
|
|
571
571
|
} | undefined;
|
|
572
572
|
channel?: "chrome" | "msedge" | "chrome-beta" | null | undefined;
|
|
573
573
|
storageState?: string | undefined;
|
package/dist/config/schema.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var _0xb70be3=_0x1568;(function(_0x487679,_0xf30c69){var _0x564764={_0x39328b:0x102,_0x59616f:0xff,_0x6e10ff:0x119,_0x18b7c8:0xfc,_0x46e2f8:0x12a,_0x4f5fca:0x130},_0x580d82=_0x1568,_0x340ec3=_0x487679();while(!![]){try{var _0x164607=-parseInt(_0x580d82(_0x564764._0x39328b))/0x1*(parseInt(_0x580d82(0x11e))/0x2)+parseInt(_0x580d82(0xfb))/0x3*(parseInt(_0x580d82(_0x564764._0x59616f))/0x4)+-parseInt(_0x580d82(0x117))/0x5*(parseInt(_0x580d82(_0x564764._0x6e10ff))/0x6)+parseInt(_0x580d82(0x101))/0x7+parseInt(_0x580d82(_0x564764._0x18b7c8))/0x8*(parseInt(_0x580d82(_0x564764._0x46e2f8))/0x9)+parseInt(_0x580d82(0x10e))/0xa*(parseInt(_0x580d82(0xfe))/0xb)+-parseInt(_0x580d82(_0x564764._0x4f5fca))/0xc;if(_0x164607===_0xf30c69)break;else _0x340ec3['push'](_0x340ec3['shift']());}catch(_0x1b9f91){_0x340ec3['push'](_0x340ec3['shift']());}}}(_0x2f16,0x91f77));function _0x1568(_0x3c32df,_0x2877ec){_0x3c32df=_0x3c32df-0xf9;var _0x2f165e=_0x2f16();var _0x15683a=_0x2f165e[_0x3c32df];if(_0x1568['eflopM']===undefined){var _0x3aed1d=function(_0x643f24){var _0x48d278='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x34c2ef='',_0x1f31b5='';for(var _0x314cb3=0x0,_0x1d5fff,_0x4b0a9f,_0x5cc54a=0x0;_0x4b0a9f=_0x643f24['charAt'](_0x5cc54a++);~_0x4b0a9f&&(_0x1d5fff=_0x314cb3%0x4?_0x1d5fff*0x40+_0x4b0a9f:_0x4b0a9f,_0x314cb3++%0x4)?_0x34c2ef+=String['fromCharCode'](0xff&_0x1d5fff>>(-0x2*_0x314cb3&0x6)):0x0){_0x4b0a9f=_0x48d278['indexOf'](_0x4b0a9f);}for(var _0x54127f=0x0,_0x47953b=_0x34c2ef['length'];_0x54127f<_0x47953b;_0x54127f++){_0x1f31b5+='%'+('00'+_0x34c2ef['charCodeAt'](_0x54127f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1f31b5);};_0x1568['fyZHBF']=_0x3aed1d,_0x1568['JbVAVC']={},_0x1568['eflopM']=!![];}var _0x4abcf7=_0x2f165e[0x0],_0x50138f=_0x3c32df+_0x4abcf7,_0x39a36a=_0x1568['JbVAVC'][_0x50138f];return!_0x39a36a?(_0x15683a=_0x1568['fyZHBF'](_0x15683a),_0x1568['JbVAVC'][_0x50138f]=_0x15683a):_0x15683a=_0x39a36a,_0x15683a;}import{z}from'zod';var BrowserSchema=z['enum']([_0xb70be3(0x12e),_0xb70be3(0x120),_0xb70be3(0x125)]),BrowserChannelSchema=z[_0xb70be3(0x132)]([z[_0xb70be3(0x113)](_0xb70be3(0x109)),z['literal'](_0xb70be3(0x129)),z[_0xb70be3(0x113)]('chrome-beta'),z[_0xb70be3(0xfd)]()])['optional'](),ViewportSchema=z[_0xb70be3(0x12d)]({'width':z[_0xb70be3(0x112)]()[_0xb70be3(0x121)]()['positive'](),'height':z[_0xb70be3(0x112)]()[_0xb70be3(0x121)]()[_0xb70be3(0x11d)]()}),RetryReasonSchema=z[_0xb70be3(0x105)]([_0xb70be3(0x11c),_0xb70be3(0x134),'crash']),RetryConfigSchema=z[_0xb70be3(0x12d)]({'count':z[_0xb70be3(0x112)]()['int']()[_0xb70be3(0x103)](0x0)[_0xb70be3(0x133)](0xa),'on':z[_0xb70be3(0x138)](RetryReasonSchema)}),FailureBundleConfigSchema=z['object']({'tier1':z[_0xb70be3(0x113)](!![])[_0xb70be3(0x128)](!![]),'tier2':z[_0xb70be3(0x124)](),'tier3':z[_0xb70be3(0x12d)]({'network':z[_0xb70be3(0x124)](),'video':z[_0xb70be3(0x124)]()}),'retention':z[_0xb70be3(0x12d)]({'runs':z[_0xb70be3(0x112)]()['int']()[_0xb70be3(0x11d)](),'days':z[_0xb70be3(0x112)]()[_0xb70be3(0x121)]()[_0xb70be3(0x11d)]()}),'storageDir':z[_0xb70be3(0x11f)]()[_0xb70be3(0x103)](0x1)}),DialogPolicySchema=z['enum']([_0xb70be3(0x12f),_0xb70be3(0xf9),_0xb70be3(0x126)]),LinterRuleIdSchema=z[_0xb70be3(0x105)]([_0xb70be3(0x108),_0xb70be3(0x10b),_0xb70be3(0x12c),'lint:pause-explicit',_0xb70be3(0x111),_0xb70be3(0x10f),_0xb70be3(0x10a),'lint:mustache-in-dsl',_0xb70be3(0x114),'lint:regex-invalid',_0xb70be3(0x136),_0xb70be3(0x123),_0xb70be3(0x10c),_0xb70be3(0x11a),_0xb70be3(0x135),'validator:arity',_0xb70be3(0xfa),'validator:step-coverage','validator:step-shape','validator:meta-shape','validator:function-shape',_0xb70be3(0x131),'validator:if-shape',_0xb70be3(0x12b),_0xb70be3(0x137),_0xb70be3(0x115),'validator:string-concat','validator:semantic-loss',_0xb70be3(0x127),_0xb70be3(0x107)]),LinterSeveritySchema=z['enum']([_0xb70be3(0x118),'warn',_0xb70be3(0x122)]),LinterConfigSchema=z[_0xb70be3(0x12d)]({'enabled':z[_0xb70be3(0x124)](),'rules':z[_0xb70be3(0x116)](LinterRuleIdSchema,LinterSeveritySchema)}),QueueConfigSchema=z[_0xb70be3(0x12d)]({'enabled':z[_0xb70be3(0x124)]()[_0xb70be3(0x128)](!![]),'concurrency':z[_0xb70be3(0x112)]()[_0xb70be3(0x121)]()[_0xb70be3(0x11d)]()[_0xb70be3(0x128)](0x1)}),ScheduleSchema=z['object']({'collection':z[_0xb70be3(0x11f)]()['min'](0x1),'cron':z[_0xb70be3(0x11f)]()['min'](0x1),'env':z['string']()[_0xb70be3(0x103)](0x1)['optional'](),'prepare':z['string']()[_0xb70be3(0x103)](0x1)[_0xb70be3(0x100)]()}),McpConfigSchema=z['object']({'transport':z[_0xb70be3(0x113)](_0xb70be3(0x104))}),SandboxConfigSchema=z['object']({'shellCwd':z[_0xb70be3(0x11f)]()['optional'](),'shellTimeoutMs':z[_0xb70be3(0x112)]()[_0xb70be3(0x121)]()['positive']()[_0xb70be3(0x100)](),'exportSecrets':z['array'](z[_0xb70be3(0x11f)]())[_0xb70be3(0x100)](),'database':z[_0xb70be3(0x11f)]()[_0xb70be3(0x100)](),'apiBaseUrl':z[_0xb70be3(0x11f)]()[_0xb70be3(0x11b)]()[_0xb70be3(0x100)](),'uploadDir':z[_0xb70be3(0x11f)]()[_0xb70be3(0x100)]()}),WebServerConfigSchema=z['object']({'command':z['string']()[_0xb70be3(0x103)](0x1),'url':z[_0xb70be3(0x11f)]()[_0xb70be3(0x11b)](),'reuseExistingServer':z[_0xb70be3(0x124)]()[_0xb70be3(0x128)](!![]),'timeoutMs':z[_0xb70be3(0x112)]()[_0xb70be3(0x121)]()['positive']()[_0xb70be3(0x128)](0xea60)}),UnotestConfigSchema=z[_0xb70be3(0x12d)]({'baseUrl':z[_0xb70be3(0x11f)]()[_0xb70be3(0x11b)]()['optional'](),'webServer':WebServerConfigSchema['optional'](),'browsers':z['array'](BrowserSchema)[_0xb70be3(0x103)](0x1),'channel':BrowserChannelSchema,'viewport':ViewportSchema,'retry':RetryConfigSchema,'failureBundle':FailureBundleConfigSchema,'dialogPolicy':DialogPolicySchema,'storageState':z[_0xb70be3(0x11f)]()['optional'](),'testDir':z[_0xb70be3(0x11f)]()[_0xb70be3(0x103)](0x1),'helpersDir':z[_0xb70be3(0x11f)]()[_0xb70be3(0x103)](0x1),'defaultTimeoutMs':z[_0xb70be3(0x112)]()[_0xb70be3(0x121)]()['positive'](),'defaultNavigationTimeoutMs':z[_0xb70be3(0x112)]()[_0xb70be3(0x121)]()[_0xb70be3(0x11d)](),'linter':LinterConfigSchema,'mcp':McpConfigSchema,'queue':QueueConfigSchema,'schedules':z['array'](ScheduleSchema)[_0xb70be3(0x128)]([]),'sandbox':SandboxConfigSchema}),DEFAULT_CONFIG={'browsers':[_0xb70be3(0x12e)],'viewport':{'width':0x500,'height':0x2d0},'retry':{'count':0x0,'on':['transient']},'failureBundle':{'tier1':!![],'tier2':!![],'tier3':{'network':![],'video':![]},'retention':{'runs':0x14,'days':0x7},'storageDir':'.unotest/failures'},'dialogPolicy':'accept','testDir':_0xb70be3(0x10d),'helpersDir':_0xb70be3(0x110),'defaultTimeoutMs':0xbb8,'defaultNavigationTimeoutMs':0x7530,'linter':{'enabled':!![],'rules':{'lint:deep-css':_0xb70be3(0x106),'lint:xpath':_0xb70be3(0x106),'lint:obfuscated-class':'warn','lint:pause-explicit':_0xb70be3(0x106),'lint:disambig-by-index':_0xb70be3(0x118),'lint:evaluate-discouraged':'warn','lint:scenario-in-root':_0xb70be3(0x122),'lint:mustache-in-dsl':_0xb70be3(0x122),'lint:goto-concat':'warn','lint:regex-invalid':'error','lint:echo-assert':_0xb70be3(0x106),'lint:lint-ok-missing-reason':'warn','lint:flow-returns-value':_0xb70be3(0x106),'validator:unknown-function':_0xb70be3(0x122)}},'mcp':{'transport':'stdio'},'queue':{'enabled':!![],'concurrency':0x1},'schedules':[],'sandbox':{}};export{BrowserChannelSchema,BrowserSchema,DEFAULT_CONFIG,DialogPolicySchema,FailureBundleConfigSchema,LinterConfigSchema,LinterRuleIdSchema,LinterSeveritySchema,McpConfigSchema,QueueConfigSchema,RetryConfigSchema,RetryReasonSchema,SandboxConfigSchema,ScheduleSchema,UnotestConfigSchema,ViewportSchema,WebServerConfigSchema};function _0x2f16(){var _0x16bf16=['DMfSAwrHDg9YoMfYzY1RAw5K','mtiXmJe4uwnZzKTe','mti5mJe1mMDPzMHIDa','BNvSBa','mtu3m2fHrvDMAW','nhLID01pDa','B3b0Aw9UywW','ndGWmtK3mKP2revkwG','nteWn1DLrgnVBa','BwLU','C3rKAw8','zw51Bq','D2fYBG','DMfSAwrHDg9YoNDYyxbWzwqTzM9YBwf0','BgLUDdPKzwvWlwnZCW','y2HYB21L','BgLUDdPZy2vUyxjPBY1PBI1YB290','BgLUDdP4Cgf0Aa','BgLUDdPSAw50lw9Rlw1PC3nPBMCTCMvHC29U','Dw5VDgvZDc9LmMu','nJm4mtbutxHAu2G','BgLUDdPLDMfSDwf0zs1KAxnJB3vYywDLza','Dw5VDgvZDc9LmMuVx2HLBhbLCNm','BgLUDdPKAxnHBwjPzY1IEs1PBMrLEa','BNvTyMvY','BgL0zxjHBa','BgLUDdPNB3rVlwnVBMnHDa','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlwv4ChjLC3nPB24','CMvJB3jK','mZvty1zbD2K','B2zM','mZKZnJC4C09xsuvr','BgLUDdPMBg93lxjLDhvYBNmTDMfSDwu','DxjS','DhjHBNnPzw50','Cg9ZAxrPDMu','mtyYu25uqu1A','C3rYAw5N','zMLYzwzVEa','Aw50','zxjYB3i','BgLUDdPHCgKTy2fSBc1MAwXLlwjVzhK','yM9VBgvHBG','D2vIA2L0','BwfUDwfS','DMfSAwrHDg9YoMXPC3qTyxjN','zgvMyxvSDa','BxnLzgDL','nJnovMnIAuO','DMfSAwrHDg9YoNzHCI1ZAgfWzq','BgLUDdPVyMz1C2nHDgvKlwnSyxnZ','B2jQzwn0','y2HYB21PDw0','ywnJzxb0','mtu1odqXnZjqBunTrNi','DMfSAwrHDg9YoMzVCI1ZAgfWzq','Dw5PB24','Bwf4','BMv0D29YAW','DMfSAwrHDg9YoNvUA25VD24TzNvUy3rPB24','BgLUDdPLy2HVlwfZC2vYDa','DMfSAwrHDg9YoNvUC3vWCg9YDgvKlxn0yxrLBwvUDa','yxjYyxK','zgLZBwLZCW'];_0x2f16=function(){return _0x16bf16;};return _0x2f16();}
|
package/dist/driver/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { E as ElementHint, N as NetworkEntry, W as WebDriver, L as LaunchOptions, C as ContextOptions, D as DriverContext } from '../interfaces-
|
|
2
|
-
export {
|
|
1
|
+
import { E as ElementHint, N as NetworkEntry, W as WebDriver, L as LaunchOptions, C as ContextOptions, D as DriverContext, A as AttachOptions } from '../interfaces-BluheUKs.js';
|
|
2
|
+
export { a as ActionTimeout, b as CheckOptions, c as ClickOptions, d as CookieOptions, e as DriverPage, F as FillOptions, G as GotoOptions, H as HoverOptions, f as NavigationOptions, P as PressOptions, R as ReloadOptions, S as ScreenshotOptions, g as SelectOptions, V as Viewport, h as WaitOptions, i as WaitState } from '../interfaces-BluheUKs.js';
|
|
3
3
|
import '@unotest/protocol';
|
|
4
4
|
import '../config/schema.js';
|
|
5
5
|
import 'zod';
|
|
@@ -77,7 +77,7 @@ declare class FakeWebDriver implements WebDriver {
|
|
|
77
77
|
close(): Promise<void>;
|
|
78
78
|
wsEndpoint(): string | undefined;
|
|
79
79
|
connectShared(): Promise<void>;
|
|
80
|
-
attachExisting(): DriverContext;
|
|
80
|
+
attachExisting(_opts?: AttachOptions): DriverContext;
|
|
81
81
|
/** Test helper — full recorded call log. */
|
|
82
82
|
calls(): ReadonlyArray<RecordedCall>;
|
|
83
83
|
/** Test helper — calls matching a method name. */
|
package/dist/driver/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x5a369=_0x3aa3;(function(_0x36dbe9,_0x3f8e55){const _0x1e902c={_0x17ee67:0x126,_0xe36d61:0x168,_0x1f1463:0x172,_0x528a48:0x127,_0x426eb5:0x12c,_0x321306:0x140,_0x1026aa:0x122},_0x267bc3=_0x3aa3,_0x56827c=_0x36dbe9();while(!![]){try{const _0x205872=parseInt(_0x267bc3(_0x1e902c._0x17ee67))/0x1+parseInt(_0x267bc3(0x147))/0x2+parseInt(_0x267bc3(0x152))/0x3*(parseInt(_0x267bc3(_0x1e902c._0xe36d61))/0x4)+parseInt(_0x267bc3(0x130))/0x5*(-parseInt(_0x267bc3(0x169))/0x6)+-parseInt(_0x267bc3(_0x1e902c._0x1f1463))/0x7*(parseInt(_0x267bc3(0x109))/0x8)+parseInt(_0x267bc3(_0x1e902c._0x528a48))/0x9*(parseInt(_0x267bc3(_0x1e902c._0x426eb5))/0xa)+parseInt(_0x267bc3(_0x1e902c._0x321306))/0xb*(-parseInt(_0x267bc3(_0x1e902c._0x1026aa))/0xc);if(_0x205872===_0x3f8e55)break;else _0x56827c['push'](_0x56827c['shift']());}catch(_0x506b5a){_0x56827c['push'](_0x56827c['shift']());}}}(_0x48fc,0xe9b62));var __defProp=Object['defineProperty'],__name=(_0x17acf2,_0x42037d)=>__defProp(_0x17acf2,_0x5a369(0x114),{'value':_0x42037d,'configurable':!![]});function subscribe(_0x1cda37,_0xa08015){const _0x1ca022=_0x5a369;return _0x1cda37[_0x1ca022(0x13e)](_0xa08015),()=>{const _0x57c92e=_0x1ca022;_0x1cda37[_0x57c92e(0x131)](_0xa08015);};}__name(subscribe,_0x5a369(0x166));import{UnotestError}from'@unotest/core';function _0x48fc(){const _0x3a09a5=['iJ48l2rPDJ4','DxbSB2fKrMLSzq','zMLSBa','ndLfCvHev2y','y291BNq','zxjYB3jpBK5LEhrby3rPB24','y3r4','y2XPy2S','AxnwAxnPyMXL','z2v0qxr0CMLIDxrL','D2fPDezVCLrLEhq','zw1PDezHA2vqB3b1Ca','C3rLChm','y2XVC2vgywTLugfNzq','BMv0D29YA0vUDhjPzxm','z2v0tg9JywXtDg9YywDL','BgvUz3rO','B25ozxDqywDL','pgrPDIbKyxrHlxvUB3rLC3qTCMvMpsi','Aw5PDgLHBfvYBa','rhjPDMvYrxjYB3i','nti4mZKYrgLYvK9X','D3nfBMrWB2LUDa','Aw5ZCgvJDevSzw1LBNq','Bg9JywXtDg9YywDL','zhjPDMvY','zw50zxjgCMfTzsbJywXSzwqGD2L0AcbLBxb0EsbSB2nHDg9Y','yMvOyxzPB3i','C2nYzwvUC2HVDa','yxr0CMLIDxrLC0j5rgvMyxvSDa','zMfRzsb0AxrSzq','C2v0qwn0AxzLugfNzq','BMfTzq','C2v0tg9JywXtDg9YywDL','DgL0Bgu','C2nVCgu','Dgv4DenVBNrLBNrcEurLzMf1Bhq','B3v0zxjive1m','zNjHBwvezxb0Aa','CMvSB2fK','z29cywnR','yxr0ywnOrxHPC3rPBMC','D2fPDezVCG','y2XPCgjVyxjKugfZDgu','ChvZAa','C2nYB2XSsw50B1zPzxC','mtm2mJm3odbUqvDWvxu','y29VA2LLCW','y2XVC2u','Ag92zxi','mtC1mdi3meXTsK9xzG','mtyYmZi3mJrJyxPMzw8','Bgf1BMnO','tg9JyxrVCKvYCM9Y','AxneAxnHyMXLzej5rgvMyxvSDa','y29UBMvJDfnOyxjLzcbUB3qGC3vWCg9YDgvKigj5iezHA2vxzwjeCML2zxi','mtbwBw1gCxm','Bg9JywXtDg9YywDLu3rHDgu','y3vYCMvUDfvYBa','zxzHBhvHDgvpBKXVy2f0B3i','nuPdu093DG','zgvSzxrL','AxnwAxnPyMXLqNLezwzHDwX0','z290BW','y29UDgv4Dhm','Dgv4DenVBNrLBNq','zxzHBhvHDgu','B25bzNrLCKnSAwnR','D2fPDezVCKXVywrtDgf0zq','y291BNrcEurLzMf1Bhq','Aw5UzxjuzxH0qNLezwzHDwX0','z2v0q29VA2LL','ChjLC3m','y2HLy2TLzfn0yxrL','ywrK','zg91yMXLq2XPy2S','mJjqy0jzz1C','pgrPDJ48l2rPDJ4','z29gB3j3yxjK','CMvJB3jK','Cg9WDxbpBKnSAwnR','ywn0AxzLugfNzq','zwXLBwvUDeHPBNrcEvjLzG','mJCZntu2ogL6v2TNEq','C2f2zvn0B3jHz2vtDgf0zq','C3bSAwnL','y29UC29SzuvUDhjPzxm','BMv3q29UDgv4DcbJywXSzwqGyMvMB3jLigXHDw5JAcGP','zhjHz0fUzerYB3a','D2fPDezVCK5HDMLNyxrPB24','zMfRzs1WBMC','rMfRzvDLyKrYAxzLCG','CgfNzuXPC3q','Aw5WDxrwywX1zuj5rgvMyxvSDa','ntKYnZDxs3rMELe','Aw5UzxjuzxH0','y2HLy2S','y29UBMvJDfnOyxjLza','y29VA2LLu3rHDgu','ywn0AxzLswr4','y2fSBhm','D2fPDezVCLvYBa','AxneAxnHyMXLza','Bgf1BMnOzwq','Dw5JAgvJAW','A2LUza','BMv3ugfNzuXPC3rLBMvYCW','Bwf5yMvuAhjVDW','C2vSzwn0t3b0Aw9U','zNjHBwvtDgfJAW','rMfRzvbHz2u','lNbHz2u','CgfNzsbPBMrLEcbVDxqGB2yGCMfUz2u','zxHPDezYyw1L','C3vIC2nYAwjL','zw50zxjgCMfTzq','mJr6ELr5Ae0','oda5otKZngrnB2HQsq','CMvM','zNjVBq','ywjVDxq6yMXHBMS','CMvJB3jKzxi','BMv3q29UDgv4Da'];_0x48fc=function(){return _0x3a09a5;};return _0x48fc();}function _0x3aa3(_0x61b84d,_0x424f45){_0x61b84d=_0x61b84d-0x107;const _0x48fc90=_0x48fc();let _0x3aa33a=_0x48fc90[_0x61b84d];if(_0x3aa3['nwPpdS']===undefined){var _0x1cba9e=function(_0x37ec17){const _0x7b4db9='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x17acf2='',_0x42037d='';for(let _0x1cda37=0x0,_0xa08015,_0x57ce4f,_0x39a505=0x0;_0x57ce4f=_0x37ec17['charAt'](_0x39a505++);~_0x57ce4f&&(_0xa08015=_0x1cda37%0x4?_0xa08015*0x40+_0x57ce4f:_0x57ce4f,_0x1cda37++%0x4)?_0x17acf2+=String['fromCharCode'](0xff&_0xa08015>>(-0x2*_0x1cda37&0x6)):0x0){_0x57ce4f=_0x7b4db9['indexOf'](_0x57ce4f);}for(let _0xe0c171=0x0,_0x47e2d4=_0x17acf2['length'];_0xe0c171<_0x47e2d4;_0xe0c171++){_0x42037d+='%'+('00'+_0x17acf2['charCodeAt'](_0xe0c171)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x42037d);};_0x3aa3['eYbgwr']=_0x1cba9e,_0x3aa3['JDHFlk']={},_0x3aa3['nwPpdS']=!![];}const _0x3a672c=_0x48fc90[0x0],_0x5fa0ec=_0x61b84d+_0x3a672c,_0x2ce9a8=_0x3aa3['JDHFlk'][_0x5fa0ec];return!_0x2ce9a8?(_0x3aa33a=_0x3aa3['eYbgwr'](_0x3aa33a),_0x3aa3['JDHFlk'][_0x5fa0ec]=_0x3aa33a):_0x3aa33a=_0x2ce9a8,_0x3aa33a;}var DriverError=class extends UnotestError{static{__name(this,_0x5a369(0x108));}},LocatorError=class extends UnotestError{static{__name(this,_0x5a369(0x129));}};function createRecorder(){const _0x52feec=_0x5a369,_0x57ce4f=[];let _0x39a505=0x0;return{'push':__name(_0xe0c171=>_0x57ce4f[_0x52feec(0x120)]({..._0xe0c171,'seq':_0x39a505++}),'push'),'calls':__name(()=>_0x57ce4f,'calls')};}__name(createRecorder,'createRecorder');var FakePage=class{constructor(_0x47e2d4,_0x3d3e42,_0x3597f5,_0x1ca4f2){const _0x11c7cf=_0x5a369;this[_0x11c7cf(0x16d)]=_0x47e2d4,this['behavior']=_0x3d3e42,this[_0x11c7cf(0x117)]=_0x3597f5,this[_0x11c7cf(0x12e)]=_0x1ca4f2;}[_0x5a369(0x16d)];[_0x5a369(0x10f)];['scope'];static{__name(this,_0x5a369(0x162));}[_0x5a369(0x12e)];[_0x5a369(0x137)];[_0x5a369(0x143)](_0x5e89b4,_0x25e13b){const _0x592a5a={_0x3b2510:0x16d},_0x3e36e1=_0x5a369;this[_0x3e36e1(_0x592a5a._0x3b2510)]['push']({'scope':this[_0x3e36e1(0x117)],'method':_0x5e89b4,'args':_0x25e13b});}[_0x5a369(0x15f)](){const _0x7f3eb9={_0x8bf76d:0x174},_0x8b5fff=_0x5a369;if(this[_0x8b5fff(0x10f)]['errorOnNextAction']){const _0x3c2c6c=this[_0x8b5fff(0x10f)]['errorOnNextAction'];this[_0x8b5fff(0x10f)][_0x8b5fff(_0x7f3eb9._0x8bf76d)]=void 0x0;throw _0x3c2c6c;}}['url'](){const _0x2431a8=_0x5a369;return this[_0x2431a8(0x12e)];}async[_0x5a369(0x116)](){const _0x45dd43={_0x81c83a:0x116,_0x49b090:0x112},_0x47727b=_0x5a369;return this['record'](_0x47727b(_0x45dd43._0x81c83a),[]),_0x47727b(_0x45dd43._0x49b090);}async[_0x5a369(0x176)](_0x516679,_0xa2b8f1){const _0x23f0ec={_0x13fdec:0x176,_0x42cb01:0x137},_0x194e18=_0x5a369;this['record'](_0x194e18(_0x23f0ec._0x13fdec),[_0x516679,_0xa2b8f1]),this['maybeThrow'](),this[_0x194e18(_0x23f0ec._0x42cb01)]?.();}async[_0x5a369(0x13f)](_0x2bf403,_0xa3d319){const _0x50523b={_0x4c8592:0x13f},_0x4608a1=_0x5a369;this[_0x4608a1(0x143)](_0x4608a1(_0x50523b._0x4c8592),[_0x2bf403,_0xa3d319]),this['maybeThrow']();}async[_0x5a369(0x171)](_0x45f1bf,_0xd53ae6,_0x5a20f4){const _0x45048b={_0x46010e:0x143},_0x2994e8=_0x5a369;this[_0x2994e8(_0x45048b._0x46010e)](_0x2994e8(0x171),[_0x45f1bf,_0xd53ae6,_0x5a20f4]),this['maybeThrow']();}async[_0x5a369(0x13c)](_0x564094,_0x2235bc,_0x561425){const _0x2c26e5=_0x5a369;this[_0x2c26e5(0x143)]('press',[_0x564094,_0x2235bc,_0x561425]),this['maybeThrow']();}async[_0x5a369(0x154)](_0xebcde4,_0x56a1a5){const _0x1e3bac={_0x58d318:0x154,_0x4e60bd:0x15f},_0x143869=_0x5a369;this['record'](_0x143869(_0x1e3bac._0x58d318),[_0xebcde4,_0x56a1a5]),this[_0x143869(_0x1e3bac._0x4e60bd)]();}async[_0x5a369(0x15c)](_0x26ca2f,_0x583d24){const _0x3f84f8={_0x20205c:0x15f},_0x1a6df3=_0x5a369;this['record']('uncheck',[_0x26ca2f,_0x583d24]),this[_0x1a6df3(_0x3f84f8._0x20205c)]();}async[_0x5a369(0x160)](_0x2bf8de,_0x430b79,_0x3bf106){const _0x169b63={_0x34d5fb:0x143},_0x52baaf=_0x5a369;this[_0x52baaf(_0x169b63._0x34d5fb)](_0x52baaf(0x160),[_0x2bf8de,_0x430b79,_0x3bf106]),this['maybeThrow']();}async[_0x5a369(0x125)](_0x554d14,_0x27fae7){const _0x347b7e=_0x5a369;this[_0x347b7e(0x143)](_0x347b7e(0x125),[_0x554d14,_0x27fae7]),this[_0x347b7e(0x15f)]();}async[_0x5a369(0x121)](_0x4b1543){const _0x352de3={_0x3b0502:0x15f},_0x33d422=_0x5a369;this['record'](_0x33d422(0x121),[_0x4b1543]),this[_0x33d422(_0x352de3._0x3b0502)]();}async[_0x5a369(0x14c)](_0x5efe3d,_0x14ea2f,_0x314a97){const _0x14652d={_0x1b2078:0x15f},_0x4a4b43=_0x5a369;this[_0x4a4b43(0x143)]('dragAndDrop',[_0x5efe3d,_0x14ea2f,_0x314a97]),this[_0x4a4b43(_0x14652d._0x1b2078)]();}async[_0x5a369(0x170)](_0x23995d,_0x40e00d){const _0x560f7f=_0x5a369;this['record'](_0x560f7f(0x170),[_0x23995d,_0x40e00d]),this[_0x560f7f(0x15f)]();}async[_0x5a369(0x11f)](_0x54d5dd,_0xc9729c){const _0x3bdf27={_0x44f060:0x11f},_0x4fcdf2=_0x5a369;this['record'](_0x4fcdf2(_0x3bdf27._0x44f060),[_0x54d5dd,_0xc9729c]),this[_0x4fcdf2(0x15f)]();}async[_0x5a369(0x173)](_0x1d8164){const _0x1d8294={_0x29dd4a:0x139},_0x3c57e3=_0x5a369;return this['record'](_0x3c57e3(0x173),[_0x1d8164]),this[_0x3c57e3(0x10f)][_0x3c57e3(_0x1d8294._0x29dd4a)]??0x1;}async[_0x5a369(0x135)](_0x11a4df){const _0x2cc503={_0x2dd39d:0x135,_0xfa5fc8:0x10f,_0x52cda5:0x118},_0x262681=_0x5a369;return this['record'](_0x262681(_0x2cc503._0x2dd39d),[_0x11a4df]),this[_0x262681(_0x2cc503._0xfa5fc8)][_0x262681(_0x2cc503._0x52cda5)]??'';}async[_0x5a369(0x153)](_0x2bd429){const _0x1bb13e={_0x7a4062:0x10f},_0x299977=_0x5a369;return this[_0x299977(0x143)]('innerText',[_0x2bd429]),this[_0x299977(_0x1bb13e._0x7a4062)][_0x299977(0x13a)]??this['behavior']['textContentByDefault']??'';}async['inputValue'](_0x337824){const _0x5dd9a3=_0x5a369;return this[_0x5dd9a3(0x143)]('inputValue',[_0x337824]),this[_0x5dd9a3(0x10f)][_0x5dd9a3(0x151)]??'';}async[_0x5a369(0x13d)](_0x49f90e){const _0x7aa1e1={_0x1e74c1:0x143},_0xb2246b=_0x5a369;return this[_0xb2246b(_0x7aa1e1._0x1e74c1)](_0xb2246b(0x13d),[_0x49f90e]),this['behavior']['checkedStateByDefault']??null;}async[_0x5a369(0x177)](_0x37b641){const _0x3e01c4={_0x49f071:0x10f,_0x598ec7:0x132},_0x543fe7=_0x5a369;return this[_0x543fe7(0x143)](_0x543fe7(0x177),[_0x37b641]),this[_0x543fe7(_0x3e01c4._0x49f071)][_0x543fe7(_0x3e01c4._0x598ec7)]??!![];}async['isDisabled'](_0x4e8876){const _0xf0a058={_0x5e22a5:0x15a},_0x262d72=_0x5a369;return this['record'](_0x262d72(_0xf0a058._0x5e22a5),[_0x4e8876]),this[_0x262d72(0x10f)][_0x262d72(0x12a)]??![];}async[_0x5a369(0x178)](_0x26c567,_0x5baed4){const _0x101dd5={_0x36cdd9:0x178,_0x1b19dc:0x10f,_0x243415:0x111},_0x3c04d2=_0x5a369;return this[_0x3c04d2(0x143)](_0x3c04d2(_0x101dd5._0x36cdd9),[_0x26c567,_0x5baed4]),this[_0x3c04d2(_0x101dd5._0x1b19dc)][_0x3c04d2(_0x101dd5._0x243415)]?.[_0x5baed4]??null;}async[_0x5a369(0x11e)](_0x358dcf,_0x505a65){const _0x4cfd24={_0x440145:0x11e},_0x9bdc3e=_0x5a369;this[_0x9bdc3e(0x143)](_0x9bdc3e(_0x4cfd24._0x440145),[_0x358dcf,_0x505a65]);}async[_0x5a369(0x159)](_0x271d20,_0x598168){const _0x2e9941=_0x5a369;this[_0x2e9941(0x143)](_0x2e9941(0x159),[_0x271d20,_0x598168]);}async[_0x5a369(0x179)](_0xc63544,_0x2ddcbc){const _0x39253a={_0x11ae61:0x143,_0x5ba372:0x179},_0x565308=_0x5a369;this[_0x565308(_0x39253a._0x11ae61)](_0x565308(_0x39253a._0x5ba372),[_0xc63544,_0x2ddcbc]);}async[_0x5a369(0x14d)](_0x2d1b3e){const _0x4031dd=_0x5a369;this['record'](_0x4031dd(0x14d),[_0x2d1b3e]);}async[_0x5a369(0x138)](_0x1bf247,_0x18d779){const _0x9ae71e=_0x5a369;this[_0x9ae71e(0x143)](_0x9ae71e(0x138),[_0x1bf247,_0x18d779]);}async[_0x5a369(0x133)](_0x4ed72e,_0x589f1c){const _0x27eee3={_0x26c0c0:0x143},_0x58497e=_0x5a369;this[_0x58497e(_0x27eee3._0x26c0c0)]('goto',[_0x4ed72e,_0x589f1c]),this[_0x58497e(0x12e)]=_0x4ed72e;}async['reload'](_0x1c50e8){const _0x5c0c27={_0x2e4ee3:0x11b},_0x586d97=_0x5a369;this[_0x586d97(0x143)](_0x586d97(_0x5c0c27._0x2e4ee3),[_0x1c50e8]);}async['goBack'](_0x372d59){const _0x40a595={_0x3dfa3c:0x143},_0xeffa01=_0x5a369;this[_0xeffa01(_0x40a595._0x3dfa3c)](_0xeffa01(0x11c),[_0x372d59]);}async[_0x5a369(0x142)](_0x25bd92){const _0x44ac22={_0x3a5174:0x143},_0x19daf2=_0x5a369;this[_0x19daf2(_0x44ac22._0x3a5174)](_0x19daf2(0x142),[_0x25bd92]);}async['evaluate'](_0x43b6cc){const _0x492773=_0x5a369;return this[_0x492773(0x143)](_0x492773(0x136),[_0x43b6cc]),void 0x0;}async[_0x5a369(0x12f)](_0x548ace,_0x4c7916){const _0xad5522=_0x5a369;return this[_0xad5522(0x143)]('evaluateOnLocator',[_0x548ace,_0x4c7916]),void 0x0;}async[_0x5a369(0x10b)](_0x341ba9){const _0x4a087d={_0x3449eb:0x17b,_0x472aae:0x16a,_0x30583e:0x146},_0x1dfcef=_0x5a369;this['record'](_0x1dfcef(0x10b),[_0x341ba9]);if(_0x341ba9[_0x1dfcef(_0x4a087d._0x3449eb)][_0x1dfcef(0x17f)]!==0x1||_0x341ba9[_0x1dfcef(0x17b)][0x0]['kind']!==_0x1dfcef(_0x4a087d._0x472aae))return null;const _0x2d4ea7=_0x341ba9[_0x1dfcef(0x17b)][0x0][_0x1dfcef(0x16a)],_0x284e96=this[_0x1dfcef(0x10f)][_0x1dfcef(_0x4a087d._0x30583e)]?.[_0x2d4ea7];return _0x284e96??null;}async[_0x5a369(0x110)](_0x5ae291){const _0x8705b8={_0x6c5713:0x143,_0x7f8d88:0x110},_0x2aa399=_0x5a369;return this[_0x2aa399(_0x8705b8._0x6c5713)](_0x2aa399(_0x8705b8._0x7f8d88),[_0x5ae291]),Buffer[_0x2aa399(0x16b)](_0x2aa399(0x14e));}async['outerHTML'](_0x195b19){const _0x57657={_0x2de6c1:0x17f,_0x25c133:0x17b,_0x4d8adf:0x10f,_0xc69ac6:0x16f,_0x6c5a33:0x141},_0x34cf02=_0x5a369;this[_0x34cf02(0x143)](_0x34cf02(0x119),[_0x195b19]);if(_0x195b19[_0x34cf02(0x17b)][_0x34cf02(_0x57657._0x2de6c1)]===0x1&&_0x195b19[_0x34cf02(0x17b)][0x0][_0x34cf02(0x15d)]==='ref'){const _0x9d7ec3=_0x195b19[_0x34cf02(_0x57657._0x25c133)][0x0]['ref'];return this[_0x34cf02(_0x57657._0x4d8adf)]['outerHtmlByRef']?.[_0x9d7ec3]??_0x34cf02(0x181)+_0x9d7ec3+_0x34cf02(_0x57657._0xc69ac6);}return _0x34cf02(_0x57657._0x6c5a33);}},FakeContext=class{constructor(_0x33c4ea,_0x11832b,_0x376d37){const _0x7df6df={_0x3f223d:0x10f,_0xb329c7:0x117,_0xa93f8a:0x16c,_0x2f2dbf:0x150,_0x1a0bca:0x10c,_0x13a5de:0x123},_0x30cbeb={_0x15d2f1:0x17a},_0x3fe581=_0x5a369;this['recorder']=_0x33c4ea,this[_0x3fe581(_0x7df6df._0x3f223d)]=_0x11832b,this[_0x3fe581(_0x7df6df._0xb329c7)]=_0x376d37;const _0x3acb97=new FakePage(_0x33c4ea,_0x11832b,_0x376d37+'.page0',_0x11832b[_0x3fe581(0x107)]??_0x3fe581(_0x7df6df._0xa93f8a));_0x11832b['popupOnClick']&&(_0x3acb97['onAfterClick']=()=>{const _0x56b7db=_0x3fe581;this[_0x56b7db(_0x30cbeb._0x15d2f1)](_0x11832b[_0x56b7db(0x144)]);}),this[_0x3fe581(_0x7df6df._0x2f2dbf)]=[_0x3acb97],this['localStorageState']={..._0x11832b[_0x3fe581(_0x7df6df._0x1a0bca)]??{}},this['cookieState']={..._0x11832b[_0x3fe581(_0x7df6df._0x13a5de)]??{}};}[_0x5a369(0x16d)];['behavior'];['scope'];static{__name(this,'FakeContext');}[_0x5a369(0x150)];[_0x5a369(0x157)]=0x0;[_0x5a369(0x161)]=[];[_0x5a369(0x12d)];[_0x5a369(0x156)];[_0x5a369(0x15e)]=new Set();['record'](_0x5e7215,_0x40ab23){const _0x3f2d7b={_0x2612ec:0x120},_0x2f3f58=_0x5a369;this['recorder'][_0x2f3f58(_0x3f2d7b._0x2612ec)]({'scope':this['scope'],'method':_0x5e7215,'args':_0x40ab23});}['pages'](){const _0x2f0a58={_0x233be5:0x150},_0x5c68af=_0x5a369;return this[_0x5c68af(_0x2f0a58._0x233be5)];}[_0x5a369(0x145)](){const _0x20f76c=_0x5a369,_0x2a8aca=this[_0x20f76c(0x150)][this['activeIdx']];if(!_0x2a8aca)throw new DriverError('no\x20active\x20page\x20in\x20context',{'activeIdx':this['activeIdx']});return _0x2a8aca;}[_0x5a369(0x14a)](){const _0x3debd3={_0x12aa1d:0x14a},_0x3fa175=_0x5a369;return this['behavior'][_0x3fa175(_0x3debd3._0x12aa1d)]??[];}[_0x5a369(0x17d)](){const _0x13b6d5={_0x992d60:0x10f,_0x28da61:0x17d},_0x4a8ccd=_0x5a369;return this[_0x4a8ccd(_0x13b6d5._0x992d60)][_0x4a8ccd(_0x13b6d5._0x28da61)]??[];}async[_0x5a369(0x113)](_0x4173fd){const _0x1f243d={_0x43c15c:0x143,_0x39df75:0x164,_0x50cc0c:0x157},_0x11f1f6=_0x5a369;this[_0x11f1f6(_0x1f243d._0x43c15c)](_0x11f1f6(0x113),[_0x4173fd]);if(_0x4173fd<0x0||_0x4173fd>=this[_0x11f1f6(0x150)]['length'])throw new DriverError(_0x11f1f6(_0x1f243d._0x39df75),{'index':_0x4173fd,'available':this[_0x11f1f6(0x150)]['length']});this[_0x11f1f6(_0x1f243d._0x50cc0c)]=_0x4173fd,this[_0x11f1f6(0x161)]['length']=0x0;}[_0x5a369(0x180)](_0x33fc58){const _0x416d01=_0x5a369;return subscribe(this[_0x416d01(0x15e)],_0x33fc58);}['emitFakePopup'](_0x4c3e82){const _0x1b676f={_0x435c7a:0x117,_0x27716b:0x163,_0x2cec86:0x17f,_0x424355:0x150,_0x30e489:0x120,_0x6de9a3:0x15e},_0x48532c=_0x5a369,_0x234582=this[_0x48532c(_0x1b676f._0x435c7a)]+_0x48532c(_0x1b676f._0x27716b)+this['pageList'][_0x48532c(_0x1b676f._0x2cec86)],_0x757945=new FakePage(this[_0x48532c(0x16d)],this[_0x48532c(0x10f)],_0x234582,_0x4c3e82);this[_0x48532c(_0x1b676f._0x424355)][_0x48532c(_0x1b676f._0x30e489)](_0x757945);const _0x2c1a8e=this[_0x48532c(0x150)][_0x48532c(_0x1b676f._0x2cec86)]-0x1;for(const _0xb30b03 of this[_0x48532c(_0x1b676f._0x6de9a3)]){try{_0xb30b03({'index':_0x2c1a8e,'url':_0x4c3e82});}catch{}}return _0x2c1a8e;}[_0x5a369(0x17c)](_0x8c8ffc){const _0x67a09f={_0x14e5f7:0x17f,_0x2c6444:0x149},_0x2affdb=_0x5a369;if(_0x8c8ffc<0x0||_0x8c8ffc>=this[_0x2affdb(0x150)][_0x2affdb(_0x67a09f._0x14e5f7)])throw new DriverError('page\x20index\x20out\x20of\x20range',{'index':_0x8c8ffc,'available':this['pageList']['length']});this[_0x2affdb(0x150)][_0x2affdb(_0x67a09f._0x2c6444)](_0x8c8ffc,0x1);}async[_0x5a369(0x167)](_0x5e5287){const _0x40a702={_0x39962d:0x10e},_0x15f7f7=_0x5a369;this[_0x15f7f7(0x143)](_0x15f7f7(0x167),[_0x5e5287]);if(!_0x5e5287[_0x15f7f7(0x17b)][_0x15f7f7(0x17f)])throw new LocatorError(_0x15f7f7(_0x40a702._0x39962d),{'locator':_0x5e5287});this['frameStack']['push'](_0x5e5287);}async[_0x5a369(0x165)](){const _0x4fb9f8={_0x40a7a3:0x143,_0x338a2c:0x161,_0x2c9352:0x17f},_0x677d6b=_0x5a369;this[_0x677d6b(_0x4fb9f8._0x40a7a3)](_0x677d6b(0x165),[]);if(this[_0x677d6b(_0x4fb9f8._0x338a2c)][_0x677d6b(_0x4fb9f8._0x2c9352)]===0x0)throw new DriverError('exitFrame\x20called\x20with\x20no\x20frame\x20on\x20the\x20stack',{});this[_0x677d6b(_0x4fb9f8._0x338a2c)]['pop']();}async['setLocalStorage'](_0x46a76d,_0x2de9b4){const _0x10b9be={_0x411eb3:0x143,_0x1ec3fe:0x12d},_0x505995=_0x5a369;this[_0x505995(_0x10b9be._0x411eb3)](_0x505995(0x115),[_0x46a76d,_0x2de9b4]),this[_0x505995(_0x10b9be._0x1ec3fe)][_0x46a76d]=_0x2de9b4;}async[_0x5a369(0x17e)](_0x4e455f){const _0x35bde2={_0x40b5fe:0x12d},_0x25a145=_0x5a369;return this[_0x25a145(0x143)](_0x25a145(0x17e),[_0x4e455f]),this[_0x25a145(_0x35bde2._0x40b5fe)][_0x4e455f]??null;}async['setCookie'](_0x3559ff,_0x1e7baa,_0x2f7ab3){const _0x508f84=_0x5a369;this[_0x508f84(0x143)]('setCookie',[_0x3559ff,_0x1e7baa,_0x2f7ab3]),this['cookieState'][_0x3559ff]=_0x1e7baa;}async[_0x5a369(0x13b)](_0x404262){const _0x33d899=_0x5a369;return this[_0x33d899(0x143)]('getCookie',[_0x404262]),this['cookieState'][_0x404262]??null;}async[_0x5a369(0x148)](_0x23049a){const _0x252b7a={_0x1bd851:0x143},_0x2bcdb5=_0x5a369;this[_0x2bcdb5(_0x252b7a._0x1bd851)]('saveStorageState',[_0x23049a]);}async[_0x5a369(0x136)](_0x2a3bb3){const _0x1fe91f={_0x3ff783:0x143,_0x291b8d:0x136},_0x4e3169=_0x5a369;return this[_0x4e3169(_0x1fe91f._0x3ff783)](_0x4e3169(_0x1fe91f._0x291b8d),[_0x2a3bb3]),void 0x0;}async[_0x5a369(0x124)](){const _0x4a2cc7={_0x1002ee:0x124},_0x5f3024=_0x5a369;this[_0x5f3024(0x143)](_0x5f3024(_0x4a2cc7._0x1002ee),[]);}[_0x5a369(0x11a)](){const _0x3c88d2={_0x2ebd46:0x161,_0x3beb99:0x17f},_0x1dbfc1=_0x5a369;return this[_0x1dbfc1(_0x3c88d2._0x2ebd46)][_0x1dbfc1(_0x3c88d2._0x3beb99)];}},FakeWebDriver=class{constructor(_0x1565d2={}){const _0x44d7a5={_0xb830b:0x10f,_0x178af4:0x16d},_0x3f3772=_0x5a369;this[_0x3f3772(_0x44d7a5._0xb830b)]=_0x1565d2,this[_0x3f3772(_0x44d7a5._0x178af4)]=createRecorder();}[_0x5a369(0x10f)];static{__name(this,_0x5a369(0x14f));}['launched']=![];[_0x5a369(0x16d)];[_0x5a369(0x134)]=[];async[_0x5a369(0x128)](_0x6b7a79){const _0x2260f3={_0xc2aafe:0x10d},_0x106e74=_0x5a369;this[_0x106e74(0x16d)]['push']({'scope':_0x106e74(_0x2260f3._0xc2aafe),'method':'launch','args':[_0x6b7a79]}),this['launched']=!![];}async[_0x5a369(0x16e)](_0x588916){const _0x1219b5={_0x5d07f8:0x10f,_0x1fa957:0x134,_0x48cbcf:0x120},_0x5c1472=_0x5a369;this[_0x5c1472(0x16d)][_0x5c1472(0x120)]({'scope':_0x5c1472(0x10d),'method':'newContext','args':[_0x588916]});if(!this['launched'])throw new DriverError(_0x5c1472(0x14b),{});const _0x494835=new FakeContext(this[_0x5c1472(0x16d)],this[_0x5c1472(_0x1219b5._0x5d07f8)],_0x5c1472(0x175)+this[_0x5c1472(_0x1219b5._0x1fa957)][_0x5c1472(0x17f)]);return this['contexts'][_0x5c1472(_0x1219b5._0x48cbcf)](_0x494835),_0x494835;}async[_0x5a369(0x124)](){const _0x3336f4={_0x331124:0x16d,_0x3aef86:0x10d,_0x4f119d:0x124,_0x584520:0x15b},_0x2e5cac=_0x5a369;this[_0x2e5cac(_0x3336f4._0x331124)][_0x2e5cac(0x120)]({'scope':_0x2e5cac(_0x3336f4._0x3aef86),'method':_0x2e5cac(_0x3336f4._0x4f119d),'args':[]}),this[_0x2e5cac(_0x3336f4._0x584520)]=![];}[_0x5a369(0x10a)](){return void 0x0;}async[_0x5a369(0x155)](){const _0x4fc479=_0x5a369;throw new DriverError(_0x4fc479(0x12b),{});}[_0x5a369(0x11d)](){throw new DriverError('attachExisting\x20not\x20supported\x20by\x20FakeWebDriver',{});}[_0x5a369(0x158)](){const _0xa49c69={_0xcb4bc4:0x16d,_0x14b7f0:0x158},_0x34c64a=_0x5a369;return this[_0x34c64a(_0xa49c69._0xcb4bc4)][_0x34c64a(_0xa49c69._0x14b7f0)]();}['callsFor'](_0x2ac3fe){const _0x1033e4={_0x50844c:0x16d},_0x2d8347=_0x5a369;return this[_0x2d8347(_0x1033e4._0x50844c)][_0x2d8347(0x158)]()['filter'](_0x46b0dd=>_0x46b0dd['method']===_0x2ac3fe);}};export{FakeWebDriver};
|
|
1
|
+
const _0x1594e8=_0x2299;(function(_0x261b99,_0x4775e7){const _0x5ebcf2={_0x35492c:0x81,_0x2a0251:0xc9,_0x501fe6:0xa8},_0x28e84b=_0x2299,_0xdd0d1a=_0x261b99();while(!![]){try{const _0x5d4289=-parseInt(_0x28e84b(0xc5))/0x1+parseInt(_0x28e84b(_0x5ebcf2._0x35492c))/0x2+parseInt(_0x28e84b(0x95))/0x3*(-parseInt(_0x28e84b(0x6f))/0x4)+-parseInt(_0x28e84b(_0x5ebcf2._0x2a0251))/0x5+-parseInt(_0x28e84b(_0x5ebcf2._0x501fe6))/0x6+-parseInt(_0x28e84b(0xc1))/0x7+-parseInt(_0x28e84b(0xc8))/0x8*(-parseInt(_0x28e84b(0x8c))/0x9);if(_0x5d4289===_0x4775e7)break;else _0xdd0d1a['push'](_0xdd0d1a['shift']());}catch(_0xbf8dd0){_0xdd0d1a['push'](_0xdd0d1a['shift']());}}}(_0x22c7,0x83ac1));var __defProp=Object['defineProperty'],__name=(_0xa3f720,_0x29dda9)=>__defProp(_0xa3f720,_0x1594e8(0xca),{'value':_0x29dda9,'configurable':!![]});function subscribe(_0x3557f9,_0x42808e){const _0x335497={_0x25d005:0x89},_0x419ee8={_0x12a5e6:0x7b},_0x3b73bc=_0x1594e8;return _0x3557f9[_0x3b73bc(_0x335497._0x25d005)](_0x42808e),()=>{const _0x300771=_0x3b73bc;_0x3557f9[_0x300771(_0x419ee8._0x12a5e6)](_0x42808e);};}__name(subscribe,_0x1594e8(0x71));function _0x22c7(){const _0x26e458=['otqYmtmXBfPbB3vt','AxneAxnHyMXLzej5rgvMyxvSDa','yxr0ywnOrxHPC3rPBMC','mJq4qKL6twrQ','ndi3mJC0mefitg1qyG','BMfTzq','C2v0q29VA2LL','AxneAxnHyMXLza','CgfNzsbPBMrLEcbVDxqGB2yGCMfUz2u','BMv3q29UDgv4Da','y2fSBhm','BgvUz3rO','zxHPDezYyw1LignHBgXLzcb3AxrOig5VigzYyw1Lig9UihrOzsbZDgfJAW','y29VA2LLCW','Dgv4DenVBNrLBNrcEurLzMf1Bhq','Bwf5yMvuAhjVDW','BM8Gywn0AxzLihbHz2uGAw4Gy29UDgv4Da','C2nVCgu','C2v0tg9JywXtDg9YywDL','zg91yMXLq2XPy2S','C3bSAwnL','y2HLy2TLzfn0yxrL','zMfRzs1WBMC','ChvZAa','y2HLy2TLzfn0yxrLqNLezwzHDwX0','CMvJB3jKzxi','iJ48l2rPDJ4','AxnwAxnPyMXL','zw50zxjgCMfTzq','zxzHBhvHDgu','A2LUza','D3nfBMrWB2LUDa','lNbHz2u','CMvM','Dw5JAgvJAW','BMv3q29UDgv4DcbJywXSzwqGyMvMB3jLigXHDw5JAcGP','y2HLy2S','nZeXmtz5AeXXExO','y29VA2LLu3rHDgu','C3vIC2nYAwjL','C3rLChm','D2fPDezVCLvYBa','pgrPDIbKyxrHlxvUB3rLC3qTCMvMpsi','zNjVBq','y291BNq','Cg9W','zxjYB3jpBK5LEhrby3rPB24','CgfNzxm','Bg9JywXtDg9YywDL','zgvSzxrL','zhjHz0fUzerYB3a','y2XVC2u','D2fPDezVCKXVywrtDgf0zq','zMfRzsb0AxrSzq','BMv0D29YA0vUDhjPzxm','mta5ndG0mNLYve9uvq','z2v0q29VA2LL','C2nYzwvUC2HVDa','rMfRzunVBNrLEhq','D2fPDezVCG','C2v0qwn0AxzLugfNzq','B25ozxDqywDL','zxHPDezYyw1L','ywrK','zxzHBhvHDgvpBKXVy2f0B3i','BMv3ugfNzuXPC3rLBMvYCW','ody1ndeZzxnyrfjl','yxr0ywnOrxHPC3rPBMCGBM90ihn1ChbVCNrLzcbIEsbgywTLv2vIrhjPDMvY','lNbHz2uW','Dgv4DenVBNrLBNq','zwXLBwvUDeHPBNrcEvjLzG','yxr0CMLIDxrLC0j5rgvMyxvSDa','y2fSBhngB3i','AxnwAxnPyMXLqNLezwzHDwX0','zMLSDgvY','mte3Be9nAKvn','ywn0AxzLswr4','y29UDgv4Dhm','DgL0Bgu','D2fPDezVCLrLEhq','Aw5WDxrwywX1zq','Bwv0Ag9K','y2XPy2S','rhjPDMvYrxjYB3i','z29cywnR','CMvJB3jK','pgrPDJ48l2rPDJ4','B25bzNrLCKnSAwnR','Bg9JywXtDg9YywDLu3rHDgu','ChjLC3m','y2XPCgjVyxjKugfZDgu','CgfNzuXPC3q','DxbSB2fKrMLSzq','zw1PDezHA2vqB3b1Ca','mJi4otu0mhvjr0fKwa','y29UBMvJDfnOyxjLza','Aw5PDgLHBfvYBa','zNjHBwvezxb0Aa','CMvSB2fK','tg9JyxrVCKvYCM9Y','B3v0zxjive1m','yMvOyxzPB3i','y29UC29SzuvUDhjPzxm','C2f2zvn0B3jHz2vtDgf0zq','C2nYB2XSsw50B1zPzxC','y3r4','Aw5UzxjuzxH0qNLezwzHDwX0','y29UBMvJDfnOyxjLzcbUB3qGC3vWCg9YDgvKigj5iezHA2vxzwjeCML2zxi','D2fPDezVCK5HDMLNyxrPB24','zMLSBa','y3vYCMvUDfvYBa','Bgf1BMnO','C2vSzwn0t3b0Aw9U','Cg9WDxbpBKnSAwnR','z2v0qxr0CMLIDxrL','zhjPDMvY','Aw5UzxjuzxH0','zNjHBwvtDgfJAW','z2v0tg9JywXtDg9YywDL','odiXmtyZBKXWEg9K','Aw5ZCgvJDevSzw1LBNq','rMfRzvDLyKrYAxzLCG','Bgf1BMnOzwq'];_0x22c7=function(){return _0x26e458;};return _0x22c7();}import{UnotestError}from'@unotest/core';var DriverError=class extends UnotestError{static{__name(this,_0x1594e8(0x9d));}},LocatorError=class extends UnotestError{static{__name(this,_0x1594e8(0xad));}};function createRecorder(){const _0x3f0000={_0x40e2cd:0xdc,_0x3fb5c8:0xcf},_0x3131f9=_0x1594e8,_0x927fd5=[];let _0x247acc=0x0;return{'push':__name(_0xae7156=>_0x927fd5['push']({..._0xae7156,'seq':_0x247acc++}),_0x3131f9(_0x3f0000._0x40e2cd)),'calls':__name(()=>_0x927fd5,_0x3131f9(_0x3f0000._0x3fb5c8))};}function _0x2299(_0x308467,_0x227cf4){_0x308467=_0x308467-0x6c;const _0x22c7ee=_0x22c7();let _0x229981=_0x22c7ee[_0x308467];if(_0x2299['dzlKDD']===undefined){var _0x44673e=function(_0x5883e0){const _0x3ebe64='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xa3f720='',_0x29dda9='';for(let _0x3557f9=0x0,_0x42808e,_0x927fd5,_0x247acc=0x0;_0x927fd5=_0x5883e0['charAt'](_0x247acc++);~_0x927fd5&&(_0x42808e=_0x3557f9%0x4?_0x42808e*0x40+_0x927fd5:_0x927fd5,_0x3557f9++%0x4)?_0xa3f720+=String['fromCharCode'](0xff&_0x42808e>>(-0x2*_0x3557f9&0x6)):0x0){_0x927fd5=_0x3ebe64['indexOf'](_0x927fd5);}for(let _0xae7156=0x0,_0xe701b6=_0xa3f720['length'];_0xae7156<_0xe701b6;_0xae7156++){_0x29dda9+='%'+('00'+_0xa3f720['charCodeAt'](_0xae7156)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x29dda9);};_0x2299['JGpHZV']=_0x44673e,_0x2299['anbVxy']={},_0x2299['dzlKDD']=!![];}const _0x3aa1f3=_0x22c7ee[0x0],_0x411f54=_0x308467+_0x3aa1f3,_0x46f432=_0x2299['anbVxy'][_0x411f54];return!_0x46f432?(_0x229981=_0x2299['JGpHZV'](_0x229981),_0x2299['anbVxy'][_0x411f54]=_0x229981):_0x229981=_0x46f432,_0x229981;}__name(createRecorder,'createRecorder');var FakePage=class{constructor(_0xe701b6,_0x2f74bd,_0x41f3c4,_0x632dd){const _0xa794c7={_0x276abe:0xb8},_0x4b77ac=_0x1594e8;this[_0x4b77ac(0xde)]=_0xe701b6,this[_0x4b77ac(0xaf)]=_0x2f74bd,this[_0x4b77ac(0xd6)]=_0x41f3c4,this[_0x4b77ac(_0xa794c7._0x276abe)]=_0x632dd;}[_0x1594e8(0xde)];[_0x1594e8(0xaf)];[_0x1594e8(0xd6)];static{__name(this,'FakePage');}['currentUrl'];['onAfterClick'];['record'](_0x33ba35,_0x4a53d1){this['recorder']['push']({'scope':this['scope'],'method':_0x33ba35,'args':_0x4a53d1});}[_0x1594e8(0xd4)](){const _0x4e3ab2={_0x13f079:0xaf,_0x344c6c:0x78},_0x5c11c5=_0x1594e8;if(this['behavior']['errorOnNextAction']){const _0x3b710b=this[_0x5c11c5(0xaf)]['errorOnNextAction'];this[_0x5c11c5(_0x4e3ab2._0x13f079)][_0x5c11c5(_0x4e3ab2._0x344c6c)]=void 0x0;throw _0x3b710b;}}['url'](){return this['currentUrl'];}async[_0x1594e8(0x98)](){const _0x4afe76={_0x3623ca:0x9f,_0x312141:0x98},_0x52bd2a=_0x1594e8;return this[_0x52bd2a(_0x4afe76._0x3623ca)](_0x52bd2a(_0x4afe76._0x312141),[]),_0x52bd2a(0x7f);}async[_0x1594e8(0x9c)](_0x182a93,_0x15f164){const _0xbbd6e0={_0x46eafe:0x9f,_0x5c5837:0xd4},_0x129a89=_0x1594e8;this[_0x129a89(_0xbbd6e0._0x46eafe)](_0x129a89(0x9c),[_0x182a93,_0x15f164]),this[_0x129a89(_0xbbd6e0._0x5c5837)](),this['onAfterClick']?.();}async[_0x1594e8(0xd8)](_0x29a43e,_0x19bb2e){const _0x382b70={_0x3a03bf:0x9f,_0x158873:0xd8,_0x2d4a88:0xd4},_0x536ac3=_0x1594e8;this[_0x536ac3(_0x382b70._0x3a03bf)](_0x536ac3(_0x382b70._0x158873),[_0x29a43e,_0x19bb2e]),this[_0x536ac3(_0x382b70._0x2d4a88)]();}async[_0x1594e8(0xb7)](_0x10d03a,_0x49f6bc,_0x28e20b){const _0x34607f={_0x4f27f3:0x9f},_0x13c509=_0x1594e8;this[_0x13c509(_0x34607f._0x4f27f3)](_0x13c509(0xb7),[_0x10d03a,_0x49f6bc,_0x28e20b]),this[_0x13c509(0xd4)]();}async[_0x1594e8(0xa3)](_0x2fd525,_0x5300e1,_0x3ae113){const _0x4d4461={_0x7cbd77:0x9f},_0x45af72=_0x1594e8;this[_0x45af72(_0x4d4461._0x7cbd77)]('press',[_0x2fd525,_0x5300e1,_0x3ae113]),this[_0x45af72(0xd4)]();}async[_0x1594e8(0x6e)](_0x3e59de,_0x2c53d2){const _0x58c1fc={_0x35251b:0x9f,_0x4334a4:0x6e},_0x336907=_0x1594e8;this[_0x336907(_0x58c1fc._0x35251b)](_0x336907(_0x58c1fc._0x4334a4),[_0x3e59de,_0x2c53d2]),this['maybeThrow']();}async[_0x1594e8(0x6c)](_0xfb3350,_0x264ff9){const _0xe087f3={_0x27e53d:0x9f,_0xa29a81:0xd4},_0x418f4d=_0x1594e8;this[_0x418f4d(_0xe087f3._0x27e53d)](_0x418f4d(0x6c),[_0xfb3350,_0x264ff9]),this[_0x418f4d(_0xe087f3._0xa29a81)]();}async[_0x1594e8(0xba)](_0x25964e,_0x54271b,_0xd49806){const _0x2b0e0d={_0x313487:0x9f,_0x3442bb:0xd4},_0x4cf973=_0x1594e8;this[_0x4cf973(_0x2b0e0d._0x313487)](_0x4cf973(0xba),[_0x25964e,_0x54271b,_0xd49806]),this[_0x4cf973(_0x2b0e0d._0x3442bb)]();}async['hover'](_0x1d4c53,_0x54bed7){const _0x140c69={_0x185926:0x9f},_0x46b81e=_0x1594e8;this[_0x46b81e(_0x140c69._0x185926)]('hover',[_0x1d4c53,_0x54bed7]),this['maybeThrow']();}async['scrollIntoView'](_0x2cca66){const _0x14caa3={_0x26e84b:0x9f,_0x3e476f:0xb2},_0x52d523=_0x1594e8;this[_0x52d523(_0x14caa3._0x26e84b)](_0x52d523(_0x14caa3._0x3e476f),[_0x2cca66]),this['maybeThrow']();}async[_0x1594e8(0x7c)](_0x4215cb,_0x548019,_0x30b369){this['record']('dragAndDrop',[_0x4215cb,_0x548019,_0x30b369]),this['maybeThrow']();}async[_0x1594e8(0xa6)](_0x1d7e52,_0x36a55b){const _0x29ee4a={_0x178a93:0x9f,_0xfd57c:0xa6},_0x59b9d8=_0x1594e8;this[_0x59b9d8(_0x29ee4a._0x178a93)](_0x59b9d8(_0x29ee4a._0xfd57c),[_0x1d7e52,_0x36a55b]),this[_0x59b9d8(0xd4)]();}async['clipboardPaste'](_0x44af92,_0x493164){const _0xa3551e={_0x416137:0xa4},_0xe038ba=_0x1594e8;this[_0xe038ba(0x9f)](_0xe038ba(_0xa3551e._0x416137),[_0x44af92,_0x493164]),this[_0xe038ba(0xd4)]();}async[_0x1594e8(0x76)](_0x17f4d6){const _0x59c773={_0x5f50bc:0xaf},_0x1605c3=_0x1594e8;return this[_0x1605c3(0x9f)](_0x1605c3(0x76),[_0x17f4d6]),this[_0x1605c3(_0x59c773._0x5f50bc)]['countByDefault']??0x1;}async['textContent'](_0x252cdc){const _0xc7f494={_0x298350:0xaf},_0x10fb0d=_0x1594e8;return this['record'](_0x10fb0d(0x8f),[_0x252cdc]),this[_0x10fb0d(_0xc7f494._0x298350)]['textContentByDefault']??'';}async[_0x1594e8(0xbe)](_0x2470d4){const _0x861804={_0x5e9e3a:0x9f,_0x2df937:0xbe},_0x224656=_0x1594e8;return this[_0x224656(_0x861804._0x5e9e3a)](_0x224656(_0x861804._0x2df937),[_0x2470d4]),this[_0x224656(0xaf)][_0x224656(0xb4)]??this[_0x224656(0xaf)][_0x224656(0xd3)]??'';}async[_0x1594e8(0x9a)](_0x592e5a){const _0x303d61=_0x1594e8;return this['record'](_0x303d61(0x9a),[_0x592e5a]),this['behavior']['inputValueByDefault']??'';}async[_0x1594e8(0xda)](_0x5050d3){const _0x10b0d1={_0x573d5d:0xda,_0xc6471c:0xdd},_0x2be095=_0x1594e8;return this[_0x2be095(0x9f)](_0x2be095(_0x10b0d1._0x573d5d),[_0x5050d3]),this[_0x2be095(0xaf)][_0x2be095(_0x10b0d1._0xc6471c)]??null;}async[_0x1594e8(0xe0)](_0x2212e0){const _0x1f6dd7={_0x481ad4:0x9f},_0x3facf1=_0x1594e8;return this[_0x3facf1(_0x1f6dd7._0x481ad4)]('isVisible',[_0x2212e0]),this['behavior'][_0x3facf1(0x93)]??!![];}async[_0x1594e8(0xcc)](_0xc0d4c3){const _0x328102={_0x5b43df:0x9f,_0x230358:0xaf,_0x4d16d2:0xc6},_0xe2cdd1=_0x1594e8;return this[_0xe2cdd1(_0x328102._0x5b43df)]('isDisabled',[_0xc0d4c3]),this[_0xe2cdd1(_0x328102._0x230358)][_0xe2cdd1(_0x328102._0x4d16d2)]??![];}async[_0x1594e8(0xbc)](_0x3d6a4d,_0xecfb5d){const _0x59f3ce={_0xfd2c1:0x9f,_0x1377e9:0x91},_0x2cbe95=_0x1594e8;return this[_0x2cbe95(_0x59f3ce._0xfd2c1)](_0x2cbe95(0xbc),[_0x3d6a4d,_0xecfb5d]),this[_0x2cbe95(0xaf)][_0x2cbe95(_0x59f3ce._0x1377e9)]?.[_0xecfb5d]??null;}async[_0x1594e8(0x85)](_0x3986a9,_0x2643d5){const _0x20cadd=_0x1594e8;this['record'](_0x20cadd(0x85),[_0x3986a9,_0x2643d5]);}async[_0x1594e8(0x73)](_0x395c24,_0x20c4e9){const _0x41a37c={_0x31b739:0x73},_0x4c4acc=_0x1594e8;this[_0x4c4acc(0x9f)](_0x4c4acc(_0x41a37c._0x31b739),[_0x395c24,_0x20c4e9]);}async['waitForText'](_0x712661,_0x21d911){const _0x290995={_0x2d7f00:0x99},_0x1d078c=_0x1594e8;this['record'](_0x1d078c(_0x290995._0x2d7f00),[_0x712661,_0x21d911]);}async['waitForNavigation'](_0x32df92){const _0x2636b3=_0x1594e8;this['record'](_0x2636b3(0xb6),[_0x32df92]);}async['waitForLoadState'](_0x2da8c5,_0x2df635){const _0x462e84={_0x26d615:0x9f},_0x2b9412=_0x1594e8;this[_0x2b9412(_0x462e84._0x26d615)](_0x2b9412(0x7e),[_0x2da8c5,_0x2df635]);}async['goto'](_0x5f1933,_0x4c6be3){const _0x353156={_0x5b321d:0xb8},_0x2dce4d=_0x1594e8;this['record']('goto',[_0x5f1933,_0x4c6be3]),this[_0x2dce4d(_0x353156._0x5b321d)]=_0x5f1933;}async[_0x1594e8(0xac)](_0x981a36){const _0x4fdf1b={_0x319605:0x9f},_0x3132e8=_0x1594e8;this[_0x3132e8(_0x4fdf1b._0x319605)](_0x3132e8(0xac),[_0x981a36]);}async[_0x1594e8(0x9e)](_0x4be559){const _0x39d5af={_0x2fc3a8:0x9f},_0x129c90=_0x1594e8;this[_0x129c90(_0x39d5af._0x2fc3a8)](_0x129c90(0x9e),[_0x4be559]);}async['goForward'](_0x16f81c){this['record']('goForward',[_0x16f81c]);}async[_0x1594e8(0xe2)](_0x11e82d){const _0x423a6b={_0x159b2a:0x9f,_0x4ec5b4:0xe2},_0x3b02e4=_0x1594e8;return this[_0x3b02e4(_0x423a6b._0x159b2a)](_0x3b02e4(_0x423a6b._0x4ec5b4),[_0x11e82d]),void 0x0;}async[_0x1594e8(0x8a)](_0x4ceff0,_0x18380f){const _0xb9bad0=_0x1594e8;return this[_0xb9bad0(0x9f)](_0xb9bad0(0x8a),[_0x4ceff0,_0x18380f]),void 0x0;}async[_0x1594e8(0xc2)](_0x1e1369){const _0x4adb31={_0x4ca97c:0xd0,_0x7f3b23:0xe3,_0x3d83f3:0xe6,_0x5db160:0x72},_0x421946=_0x1594e8;this['record']('inspectElement',[_0x1e1369]);if(_0x1e1369['steps'][_0x421946(_0x4adb31._0x4ca97c)]!==0x1||_0x1e1369[_0x421946(0x72)][0x0][_0x421946(_0x4adb31._0x7f3b23)]!==_0x421946(_0x4adb31._0x3d83f3))return null;const _0x5635de=_0x1e1369[_0x421946(_0x4adb31._0x5db160)][0x0][_0x421946(_0x4adb31._0x3d83f3)],_0x5cf3a3=this[_0x421946(0xaf)][_0x421946(0x90)]?.[_0x5635de];return _0x5cf3a3??null;}async[_0x1594e8(0x83)](_0x47c742){const _0x403101={_0x4bcfef:0x9f,_0x2629dd:0x83,_0x54141e:0x75,_0x13a96d:0xdb},_0x1520c8=_0x1594e8;return this[_0x1520c8(_0x403101._0x4bcfef)](_0x1520c8(_0x403101._0x2629dd),[_0x47c742]),Buffer[_0x1520c8(_0x403101._0x54141e)](_0x1520c8(_0x403101._0x13a96d));}async[_0x1594e8(0xae)](_0x223516){const _0x161474={_0x1ef539:0xae,_0xe9f8ad:0xe3,_0x47a01e:0xe6,_0x547959:0xaf,_0x4bf8ec:0x74,_0x3875c9:0xdf},_0x17d6a1=_0x1594e8;this[_0x17d6a1(0x9f)](_0x17d6a1(_0x161474._0x1ef539),[_0x223516]);if(_0x223516[_0x17d6a1(0x72)][_0x17d6a1(0xd0)]===0x1&&_0x223516['steps'][0x0][_0x17d6a1(_0x161474._0xe9f8ad)]===_0x17d6a1(_0x161474._0x47a01e)){const _0x495af9=_0x223516['steps'][0x0][_0x17d6a1(0xe6)];return this[_0x17d6a1(_0x161474._0x547959)]['outerHtmlByRef']?.[_0x495af9]??_0x17d6a1(_0x161474._0x4bf8ec)+_0x495af9+_0x17d6a1(_0x161474._0x3875c9);}return _0x17d6a1(0xa0);}},FakeContext=class{constructor(_0xf09001,_0x36e82d,_0x58d9a2){const _0x39055f={_0x34cee9:0xd6,_0x1dc039:0x8e,_0xf9bf0b:0xbb,_0x11b189:0xd2},_0x4cd90b={_0x4cbbe5:0xbb},_0x45febb=_0x1594e8;this[_0x45febb(0xde)]=_0xf09001,this[_0x45febb(0xaf)]=_0x36e82d,this[_0x45febb(_0x39055f._0x34cee9)]=_0x58d9a2;const _0xd4020d=new FakePage(_0xf09001,_0x36e82d,_0x58d9a2+_0x45febb(_0x39055f._0x1dc039),_0x36e82d[_0x45febb(0xaa)]??'about:blank');_0x36e82d[_0x45febb(_0x39055f._0xf9bf0b)]&&(_0xd4020d[_0x45febb(0xa1)]=()=>{const _0x3fd1c3=_0x45febb;this[_0x3fd1c3(0xa7)](_0x36e82d[_0x3fd1c3(_0x4cd90b._0x4cbbe5)]);}),this['pageList']=[_0xd4020d],this['localStorageState']={..._0x36e82d[_0x45febb(0x7a)]??{}},this[_0x45febb(0x70)]={..._0x36e82d[_0x45febb(_0x39055f._0x11b189)]??{}};}['recorder'];[_0x1594e8(0xaf)];[_0x1594e8(0xd6)];static{__name(this,_0x1594e8(0x84));}['pageList'];['activeIdx']=0x0;[_0x1594e8(0xbf)]=[];[_0x1594e8(0xa2)];[_0x1594e8(0x70)];[_0x1594e8(0x8b)]=new Set();[_0x1594e8(0x9f)](_0x5b0a78,_0x48ec85){const _0x2d0819={_0x3ad1ba:0xde,_0x4c9679:0xdc,_0x91e4fd:0xd6},_0x1ce8d2=_0x1594e8;this[_0x1ce8d2(_0x2d0819._0x3ad1ba)][_0x1ce8d2(_0x2d0819._0x4c9679)]({'scope':this[_0x1ce8d2(_0x2d0819._0x91e4fd)],'method':_0x5b0a78,'args':_0x48ec85});}[_0x1594e8(0x79)](){return this['pageList'];}['activePage'](){const _0x3284d2={_0x359627:0xd5},_0x466f96=_0x1594e8,_0x4f6031=this['pageList'][this[_0x466f96(0x96)]];if(!_0x4f6031)throw new DriverError(_0x466f96(_0x3284d2._0x359627),{'activeIdx':this[_0x466f96(0x96)]});return _0x4f6031;}[_0x1594e8(0xb0)](){const _0x324a7f=_0x1594e8;return this[_0x324a7f(0xaf)][_0x324a7f(0xb0)]??[];}[_0x1594e8(0x80)](){const _0x26725a=_0x1594e8;return this[_0x26725a(0xaf)]['networkEntries']??[];}async[_0x1594e8(0x86)](_0x4a6e9f){const _0x1497ab={_0x339d61:0x96},_0x970824=_0x1594e8;this['record'](_0x970824(0x86),[_0x4a6e9f]);if(_0x4a6e9f<0x0||_0x4a6e9f>=this[_0x970824(0xa5)][_0x970824(0xd0)])throw new DriverError(_0x970824(0xcd),{'index':_0x4a6e9f,'available':this[_0x970824(0xa5)]['length']});this[_0x970824(_0x1497ab._0x339d61)]=_0x4a6e9f,this['frameStack'][_0x970824(0xd0)]=0x0;}[_0x1594e8(0x87)](_0x38c820){return subscribe(this['newPageListeners'],_0x38c820);}[_0x1594e8(0xa7)](_0x11905a){const _0x579ff0={_0x2fe257:0xe5,_0x3ccbf4:0xd0,_0x52b565:0xde,_0x13c99c:0xdc,_0x11871a:0xd0},_0x4ee599=_0x1594e8,_0x2bfbe2=this[_0x4ee599(0xd6)]+_0x4ee599(_0x579ff0._0x2fe257)+this[_0x4ee599(0xa5)][_0x4ee599(_0x579ff0._0x3ccbf4)],_0x5439f7=new FakePage(this[_0x4ee599(_0x579ff0._0x52b565)],this[_0x4ee599(0xaf)],_0x2bfbe2,_0x11905a);this[_0x4ee599(0xa5)][_0x4ee599(_0x579ff0._0x13c99c)](_0x5439f7);const _0x4675c5=this['pageList'][_0x4ee599(_0x579ff0._0x11871a)]-0x1;for(const _0x42e5bf of this[_0x4ee599(0x8b)]){try{_0x42e5bf({'index':_0x4675c5,'url':_0x11905a});}catch{}}return _0x4675c5;}['closeFakePage'](_0x197389){const _0x75daee={_0x3936b1:0xa5,_0x2fc1c2:0xd0,_0x47e5a3:0xa5,_0x1618a8:0xd9},_0x3a41a7=_0x1594e8;if(_0x197389<0x0||_0x197389>=this[_0x3a41a7(0xa5)][_0x3a41a7(0xd0)])throw new DriverError(_0x3a41a7(0xcd),{'index':_0x197389,'available':this[_0x3a41a7(_0x75daee._0x3936b1)][_0x3a41a7(_0x75daee._0x2fc1c2)]});this[_0x3a41a7(_0x75daee._0x47e5a3)][_0x3a41a7(_0x75daee._0x1618a8)](_0x197389,0x1);}async[_0x1594e8(0xe1)](_0x19bf7d){const _0x515368={_0x4c929c:0x9f,_0x3e1bcc:0xe1,_0x2dd4b6:0xd0},_0x451ed4=_0x1594e8;this[_0x451ed4(_0x515368._0x4c929c)](_0x451ed4(_0x515368._0x3e1bcc),[_0x19bf7d]);if(!_0x19bf7d['steps'][_0x451ed4(_0x515368._0x2dd4b6)])throw new LocatorError('enterFrame\x20called\x20with\x20empty\x20locator',{'locator':_0x19bf7d});this['frameStack']['push'](_0x19bf7d);}async[_0x1594e8(0x88)](){const _0x19e789={_0x4e3d09:0x9f,_0x304712:0xbf,_0x25f265:0xd1},_0x29145a=_0x1594e8;this[_0x29145a(_0x19e789._0x4e3d09)](_0x29145a(0x88),[]);if(this[_0x29145a(_0x19e789._0x304712)]['length']===0x0)throw new DriverError(_0x29145a(_0x19e789._0x25f265),{});this[_0x29145a(0xbf)][_0x29145a(0x77)]();}async['setLocalStorage'](_0x376d88,_0x39e1f8){const _0x17d20b={_0x5507ee:0x9f,_0x281177:0xa2},_0x874f1a=_0x1594e8;this[_0x874f1a(_0x17d20b._0x5507ee)](_0x874f1a(0xd7),[_0x376d88,_0x39e1f8]),this[_0x874f1a(_0x17d20b._0x281177)][_0x376d88]=_0x39e1f8;}async[_0x1594e8(0xc0)](_0x50bae0){const _0x1e66bd={_0x1a360e:0xa2},_0x12e470=_0x1594e8;return this[_0x12e470(0x9f)]('getLocalStorage',[_0x50bae0]),this[_0x12e470(_0x1e66bd._0x1a360e)][_0x50bae0]??null;}async[_0x1594e8(0xcb)](_0x4d10d7,_0x1bcf38,_0x42437e){const _0x1906cb={_0x36a054:0x9f,_0x32e7ef:0xcb},_0x22e714=_0x1594e8;this[_0x22e714(_0x1906cb._0x36a054)](_0x22e714(_0x1906cb._0x32e7ef),[_0x4d10d7,_0x1bcf38,_0x42437e]),this[_0x22e714(0x70)][_0x4d10d7]=_0x1bcf38;}async[_0x1594e8(0x82)](_0x13a556){const _0x5bcd2d={_0x63c25e:0x82},_0x2e4c31=_0x1594e8;return this[_0x2e4c31(0x9f)](_0x2e4c31(_0x5bcd2d._0x63c25e),[_0x13a556]),this[_0x2e4c31(0x70)][_0x13a556]??null;}async[_0x1594e8(0xb1)](_0x76a791){const _0xc3bfbf=_0x1594e8;this[_0xc3bfbf(0x9f)](_0xc3bfbf(0xb1),[_0x76a791]);}async[_0x1594e8(0xe2)](_0x58a0dc){const _0x1af225=_0x1594e8;return this[_0x1af225(0x9f)](_0x1af225(0xe2),[_0x58a0dc]),void 0x0;}async['close'](){const _0x3483f9=_0x1594e8;this[_0x3483f9(0x9f)](_0x3483f9(0x7d),[]);}[_0x1594e8(0xab)](){const _0x592821=_0x1594e8;return this[_0x592821(0xbf)][_0x592821(0xd0)];}},FakeWebDriver=class{constructor(_0x3142ab={}){this['behavior']=_0x3142ab,this['recorder']=createRecorder();}['behavior'];static{__name(this,_0x1594e8(0xc3));}[_0x1594e8(0xc4)]=![];[_0x1594e8(0xde)];[_0x1594e8(0x97)]=[];async[_0x1594e8(0xb9)](_0x370837){const _0x3529ef={_0x564512:0xdc,_0x38c31a:0xbd,_0x56aac7:0xc4},_0x3f7204=_0x1594e8;this[_0x3f7204(0xde)][_0x3f7204(_0x3529ef._0x564512)]({'scope':_0x3f7204(_0x3529ef._0x38c31a),'method':_0x3f7204(0xb9),'args':[_0x370837]}),this[_0x3f7204(_0x3529ef._0x56aac7)]=!![];}async['newContext'](_0x542dd8){const _0x425c50={_0x41fd73:0xdc,_0x19784b:0xc4,_0x22265a:0x97},_0x52634a=_0x1594e8;this[_0x52634a(0xde)][_0x52634a(_0x425c50._0x41fd73)]({'scope':_0x52634a(0xbd),'method':_0x52634a(0xce),'args':[_0x542dd8]});if(!this[_0x52634a(_0x425c50._0x19784b)])throw new DriverError(_0x52634a(0x6d),{});const _0x414643=new FakeContext(this[_0x52634a(0xde)],this['behavior'],_0x52634a(0xb3)+this[_0x52634a(_0x425c50._0x22265a)]['length']);return this[_0x52634a(_0x425c50._0x22265a)][_0x52634a(_0x425c50._0x41fd73)](_0x414643),_0x414643;}async[_0x1594e8(0x7d)](){const _0x37df3f={_0x4606f6:0xde,_0x1bca71:0xdc,_0x300271:0x7d},_0x160540=_0x1594e8;this[_0x160540(_0x37df3f._0x4606f6)][_0x160540(_0x37df3f._0x1bca71)]({'scope':'driver','method':_0x160540(_0x37df3f._0x300271),'args':[]}),this['launched']=![];}[_0x1594e8(0xe4)](){return void 0x0;}async[_0x1594e8(0xa9)](){const _0x3a950f=_0x1594e8;throw new DriverError(_0x3a950f(0xb5),{});}[_0x1594e8(0xc7)](_0x3d0556){const _0x537ddb={_0x963da0:0x8d},_0x558d30=_0x1594e8;throw new DriverError(_0x558d30(_0x537ddb._0x963da0),{});}[_0x1594e8(0xcf)](){const _0x46dffe={_0x4be73c:0xde,_0x47e8e9:0xcf},_0x16f540=_0x1594e8;return this[_0x16f540(_0x46dffe._0x4be73c)][_0x16f540(_0x46dffe._0x47e8e9)]();}[_0x1594e8(0x92)](_0x3ce757){const _0xff05b0=_0x1594e8;return this['recorder']['calls']()[_0xff05b0(0x94)](_0x18507b=>_0x18507b[_0xff05b0(0x9b)]===_0x3ce757);}};export{FakeWebDriver};
|
package/dist/dsl/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
1
|
+
import { j as LocatorValue, W as WebDriver, D as DriverContext, e as DriverPage } from '../interfaces-BluheUKs.js';
|
|
2
|
+
export { k as LocatorStep, l as appendStep, m as describeLocator, n as isLocatorValue, r as rootedAt } from '../interfaces-BluheUKs.js';
|
|
3
3
|
import { Matcher, RegexLiteral, JudgeRequest, JudgeVerdict } from '@unotest/protocol';
|
|
4
4
|
import { ExecutionWalker, ExecutionEvent, RunResult, RunOptions } from '@unotest/dsl/executor';
|
|
5
5
|
export { ExecutionError, ExecutionEvent, RunOptions, RunResult } from '@unotest/dsl/executor';
|