@unotest/web 0.30.0 → 0.32.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 +12 -0
- package/.claude/skills/write-e2e-test-ground/SKILL.md +12 -0
- package/CHANGELOG.md +383 -0
- package/README.md +66 -2
- package/bin/unotest-web.js +3 -1
- package/dist/config/schema.d.ts +15 -15
- package/dist/config/schema.js +1 -1
- package/dist/driver/index.d.ts +11 -3
- package/dist/driver/index.js +1 -1
- package/dist/dsl/index.d.ts +54 -4
- package/dist/dsl/index.js +1 -1
- package/dist/dsl/web-dsl-language-service.d.ts +22 -2
- package/dist/dsl/web-dsl-language-service.js +1 -1
- package/dist/inspection/page-inject.d.ts +1 -1
- package/dist/{interfaces-BluheUKs.d.ts → interfaces-B34N4rfI.d.ts} +8 -0
- package/dist/legacy-layout-By62PkbP.d.ts +8 -0
- package/dist/linter-Yf4gPe5J.d.ts +36 -0
- package/dist/mcp/server.js +1 -1
- package/dist/runner/cli.d.ts +14 -8
- 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/guides/agent-integration.md +190 -14
- package/guides/dsl-reference.md +156 -9
- package/package.json +8 -8
- package/src/mcp/prompts/agent-test-author.md +11 -1
- package/types/unotest-dsl.d.ts +29 -5
- package/dist/linter-CM2CpIyW.d.ts +0 -21
package/dist/config/schema.d.ts
CHANGED
|
@@ -30,10 +30,10 @@ declare const RetryConfigSchema: z.ZodObject<{
|
|
|
30
30
|
on: z.ZodArray<z.ZodEnum<["transient", "network", "crash"]>, "many">;
|
|
31
31
|
}, "strip", z.ZodTypeAny, {
|
|
32
32
|
count: number;
|
|
33
|
-
on: ("
|
|
33
|
+
on: ("network" | "transient" | "crash")[];
|
|
34
34
|
}, {
|
|
35
35
|
count: number;
|
|
36
|
-
on: ("
|
|
36
|
+
on: ("network" | "transient" | "crash")[];
|
|
37
37
|
}>;
|
|
38
38
|
type RetryConfig = z.infer<typeof RetryConfigSchema>;
|
|
39
39
|
declare const FailureBundleConfigSchema: z.ZodObject<{
|
|
@@ -90,19 +90,19 @@ declare const FailureBundleConfigSchema: z.ZodObject<{
|
|
|
90
90
|
type FailureBundleConfig = z.infer<typeof FailureBundleConfigSchema>;
|
|
91
91
|
declare const DialogPolicySchema: z.ZodEnum<["accept", "dismiss", "manual"]>;
|
|
92
92
|
type DialogPolicy = z.infer<typeof DialogPolicySchema>;
|
|
93
|
-
declare const LinterRuleIdSchema: z.ZodEnum<["lint:deep-css", "lint:xpath", "lint:obfuscated-class", "lint:pause-explicit", "lint:disambig-by-index", "lint:evaluate-discouraged", "lint:scenario-in-root", "lint:mustache-in-dsl", "lint:goto-concat", "lint:regex-invalid", "lint:echo-assert", "lint:api-call-file-body", "lint:lint-ok-missing-reason", "lint:flow-returns-value", "validator:unknown-function", "validator:arity", "validator:arg-kind", "validator:step-coverage", "validator:step-shape", "validator:meta-shape", "validator:function-shape", "validator:for-shape", "validator:if-shape", "validator:var-shape", "validator:unsupported-statement", "validator:unsupported-expression", "validator:string-concat", "validator:semantic-loss", "validator:list-arg", "validator:wrapped-format"]>;
|
|
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", "lint:goto-concat", "lint:regex-invalid", "lint:echo-assert", "lint:api-call-file-body", "lint:lint-ok-missing-reason", "lint:flow-returns-value", "lint:legacy-layout", "lint:external-variable-undeclared", "lint:one-test-per-file", "validator:unknown-function", "validator:arity", "validator:arg-kind", "validator:step-coverage", "validator:step-shape", "validator:meta-shape", "validator:function-shape", "validator:for-shape", "validator:if-shape", "validator:var-shape", "validator:unsupported-statement", "validator:unsupported-expression", "validator:string-concat", "validator:semantic-loss", "validator:list-arg", "validator:wrapped-format"]>;
|
|
94
94
|
type LinterRuleId = z.infer<typeof LinterRuleIdSchema>;
|
|
95
95
|
declare const LinterSeveritySchema: z.ZodEnum<["off", "warn", "error"]>;
|
|
96
96
|
type LinterSeverity = z.infer<typeof LinterSeveritySchema>;
|
|
97
97
|
declare const LinterConfigSchema: z.ZodObject<{
|
|
98
98
|
enabled: z.ZodBoolean;
|
|
99
|
-
rules: z.ZodRecord<z.ZodEnum<["lint:deep-css", "lint:xpath", "lint:obfuscated-class", "lint:pause-explicit", "lint:disambig-by-index", "lint:evaluate-discouraged", "lint:scenario-in-root", "lint:mustache-in-dsl", "lint:goto-concat", "lint:regex-invalid", "lint:echo-assert", "lint:api-call-file-body", "lint:lint-ok-missing-reason", "lint:flow-returns-value", "validator:unknown-function", "validator:arity", "validator:arg-kind", "validator:step-coverage", "validator:step-shape", "validator:meta-shape", "validator:function-shape", "validator:for-shape", "validator:if-shape", "validator:var-shape", "validator:unsupported-statement", "validator:unsupported-expression", "validator:string-concat", "validator:semantic-loss", "validator:list-arg", "validator:wrapped-format"]>, z.ZodEnum<["off", "warn", "error"]>>;
|
|
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", "lint:goto-concat", "lint:regex-invalid", "lint:echo-assert", "lint:api-call-file-body", "lint:lint-ok-missing-reason", "lint:flow-returns-value", "lint:legacy-layout", "lint:external-variable-undeclared", "lint:one-test-per-file", "validator:unknown-function", "validator:arity", "validator:arg-kind", "validator:step-coverage", "validator:step-shape", "validator:meta-shape", "validator:function-shape", "validator:for-shape", "validator:if-shape", "validator:var-shape", "validator:unsupported-statement", "validator:unsupported-expression", "validator:string-concat", "validator:semantic-loss", "validator:list-arg", "validator:wrapped-format"]>, z.ZodEnum<["off", "warn", "error"]>>;
|
|
100
100
|
}, "strip", z.ZodTypeAny, {
|
|
101
101
|
enabled: boolean;
|
|
102
|
-
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
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" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:one-test-per-file" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
103
103
|
}, {
|
|
104
104
|
enabled: boolean;
|
|
105
|
-
rules: Partial<Record<"lint:deep-css" | "lint:xpath" | "lint:obfuscated-class" | "lint:pause-explicit" | "lint:disambig-by-index" | "lint:evaluate-discouraged" | "lint:scenario-in-root" | "lint:mustache-in-dsl" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
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" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:one-test-per-file" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
106
106
|
}>;
|
|
107
107
|
type LinterConfig = z.infer<typeof LinterConfigSchema>;
|
|
108
108
|
declare const QueueConfigSchema: z.ZodObject<{
|
|
@@ -276,10 +276,10 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
276
276
|
on: z.ZodArray<z.ZodEnum<["transient", "network", "crash"]>, "many">;
|
|
277
277
|
}, "strip", z.ZodTypeAny, {
|
|
278
278
|
count: number;
|
|
279
|
-
on: ("
|
|
279
|
+
on: ("network" | "transient" | "crash")[];
|
|
280
280
|
}, {
|
|
281
281
|
count: number;
|
|
282
|
-
on: ("
|
|
282
|
+
on: ("network" | "transient" | "crash")[];
|
|
283
283
|
}>;
|
|
284
284
|
failureBundle: z.ZodObject<{
|
|
285
285
|
/** Tier 1 is always on by D-16. Schema lock — not user-toggleable. */
|
|
@@ -355,13 +355,13 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
355
355
|
defaultNavigationTimeoutMs: z.ZodNumber;
|
|
356
356
|
linter: z.ZodObject<{
|
|
357
357
|
enabled: z.ZodBoolean;
|
|
358
|
-
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", "lint:goto-concat", "lint:regex-invalid", "lint:echo-assert", "lint:api-call-file-body", "lint:lint-ok-missing-reason", "lint:flow-returns-value", "validator:unknown-function", "validator:arity", "validator:arg-kind", "validator:step-coverage", "validator:step-shape", "validator:meta-shape", "validator:function-shape", "validator:for-shape", "validator:if-shape", "validator:var-shape", "validator:unsupported-statement", "validator:unsupported-expression", "validator:string-concat", "validator:semantic-loss", "validator:list-arg", "validator:wrapped-format"]>, z.ZodEnum<["off", "warn", "error"]>>;
|
|
358
|
+
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", "lint:goto-concat", "lint:regex-invalid", "lint:echo-assert", "lint:api-call-file-body", "lint:lint-ok-missing-reason", "lint:flow-returns-value", "lint:legacy-layout", "lint:external-variable-undeclared", "lint:one-test-per-file", "validator:unknown-function", "validator:arity", "validator:arg-kind", "validator:step-coverage", "validator:step-shape", "validator:meta-shape", "validator:function-shape", "validator:for-shape", "validator:if-shape", "validator:var-shape", "validator:unsupported-statement", "validator:unsupported-expression", "validator:string-concat", "validator:semantic-loss", "validator:list-arg", "validator:wrapped-format"]>, z.ZodEnum<["off", "warn", "error"]>>;
|
|
359
359
|
}, "strip", z.ZodTypeAny, {
|
|
360
360
|
enabled: boolean;
|
|
361
|
-
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" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
361
|
+
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" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:one-test-per-file" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
362
362
|
}, {
|
|
363
363
|
enabled: boolean;
|
|
364
|
-
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" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
364
|
+
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" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:one-test-per-file" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
365
365
|
}>;
|
|
366
366
|
mcp: z.ZodObject<{
|
|
367
367
|
transport: z.ZodLiteral<"stdio">;
|
|
@@ -461,7 +461,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
461
461
|
};
|
|
462
462
|
retry: {
|
|
463
463
|
count: number;
|
|
464
|
-
on: ("
|
|
464
|
+
on: ("network" | "transient" | "crash")[];
|
|
465
465
|
};
|
|
466
466
|
failureBundle: {
|
|
467
467
|
tier1: true;
|
|
@@ -483,7 +483,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
483
483
|
defaultNavigationTimeoutMs: number;
|
|
484
484
|
linter: {
|
|
485
485
|
enabled: boolean;
|
|
486
|
-
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" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
486
|
+
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" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:one-test-per-file" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
487
487
|
};
|
|
488
488
|
mcp: {
|
|
489
489
|
transport: "stdio";
|
|
@@ -523,7 +523,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
523
523
|
};
|
|
524
524
|
retry: {
|
|
525
525
|
count: number;
|
|
526
|
-
on: ("
|
|
526
|
+
on: ("network" | "transient" | "crash")[];
|
|
527
527
|
};
|
|
528
528
|
failureBundle: {
|
|
529
529
|
tier2: boolean;
|
|
@@ -545,7 +545,7 @@ declare const UnotestConfigSchema: z.ZodObject<{
|
|
|
545
545
|
defaultNavigationTimeoutMs: number;
|
|
546
546
|
linter: {
|
|
547
547
|
enabled: boolean;
|
|
548
|
-
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" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
548
|
+
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" | "lint:goto-concat" | "lint:regex-invalid" | "lint:echo-assert" | "lint:api-call-file-body" | "lint:lint-ok-missing-reason" | "lint:flow-returns-value" | "lint:legacy-layout" | "lint:external-variable-undeclared" | "lint:one-test-per-file" | "validator:unknown-function" | "validator:arity" | "validator:arg-kind" | "validator:step-coverage" | "validator:step-shape" | "validator:meta-shape" | "validator:function-shape" | "validator:for-shape" | "validator:if-shape" | "validator:var-shape" | "validator:unsupported-statement" | "validator:unsupported-expression" | "validator:string-concat" | "validator:semantic-loss" | "validator:list-arg" | "validator:wrapped-format", "off" | "warn" | "error">>;
|
|
549
549
|
};
|
|
550
550
|
mcp: {
|
|
551
551
|
transport: "stdio";
|
package/dist/config/schema.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var _0x5c7c04=_0x4207;function _0x4207(_0x454c75,_0x3095d){_0x454c75=_0x454c75-0x1c8;var _0x209034=_0x2090();var _0x4207cc=_0x209034[_0x454c75];if(_0x4207['jGFbYf']===undefined){var _0x285a29=function(_0x107f7c){var _0x41d0e6='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x31c002='',_0x1a95c4='';for(var _0xcd9d04=0x0,_0x2d772f,_0x174409,_0x55caf9=0x0;_0x174409=_0x107f7c['charAt'](_0x55caf9++);~_0x174409&&(_0x2d772f=_0xcd9d04%0x4?_0x2d772f*0x40+_0x174409:_0x174409,_0xcd9d04++%0x4)?_0x31c002+=String['fromCharCode'](0xff&_0x2d772f>>(-0x2*_0xcd9d04&0x6)):0x0){_0x174409=_0x41d0e6['indexOf'](_0x174409);}for(var _0x33f5ed=0x0,_0x242f97=_0x31c002['length'];_0x33f5ed<_0x242f97;_0x33f5ed++){_0x1a95c4+='%'+('00'+_0x31c002['charCodeAt'](_0x33f5ed)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1a95c4);};_0x4207['hnsyHs']=_0x285a29,_0x4207['QiBXrc']={},_0x4207['jGFbYf']=!![];}var _0x1f2f13=_0x209034[0x0],_0x3909aa=_0x454c75+_0x1f2f13,_0x377df3=_0x4207['QiBXrc'][_0x3909aa];return!_0x377df3?(_0x4207cc=_0x4207['hnsyHs'](_0x4207cc),_0x4207['QiBXrc'][_0x3909aa]=_0x4207cc):_0x4207cc=_0x377df3,_0x4207cc;}(function(_0x1338cc,_0x57a561){var _0x56fe2a={_0x5f1e29:0x200,_0x39d1d6:0x201,_0x39bc8a:0x1fe,_0x4f4f9f:0x1cf,_0xf3ea23:0x204},_0x47e60e=_0x4207,_0x56db90=_0x1338cc();while(!![]){try{var _0x4fed80=-parseInt(_0x47e60e(_0x56fe2a._0x5f1e29))/0x1+-parseInt(_0x47e60e(0x1e1))/0x2+-parseInt(_0x47e60e(0x1c8))/0x3+-parseInt(_0x47e60e(_0x56fe2a._0x39d1d6))/0x4*(parseInt(_0x47e60e(0x1d3))/0x5)+-parseInt(_0x47e60e(_0x56fe2a._0x39bc8a))/0x6+parseInt(_0x47e60e(0x1fa))/0x7+parseInt(_0x47e60e(_0x56fe2a._0x4f4f9f))/0x8*(parseInt(_0x47e60e(_0x56fe2a._0xf3ea23))/0x9);if(_0x4fed80===_0x57a561)break;else _0x56db90['push'](_0x56db90['shift']());}catch(_0x1e953f){_0x56db90['push'](_0x56db90['shift']());}}}(_0x2090,0x8b071));import{z}from'zod';function _0x2090(){var _0x306270=['Dw5PB24','zw51Bq','zxjYB3i','D2vIA2L0','mtu5mJK3ugnsq1PN','Dw5VDgvZDc9LmMu','y2HYB21PDw0','DMfSAwrHDg9YoMLMlxnOyxbL','DhjHBNnPzw50','Cg9ZAxrPDMu','BgLUDdPYzwDLEc1PBNzHBgLK','mJC2mdK4mdHVsgLksuO','y3jHC2G','B3b0Aw9UywW','BMv0D29YAW','mZq4nxDKB25vCa','BgLUDdPKAxnHBwjPzY1IEs1PBMrLEa','BgLUDdPSAw50lw9Rlw1PC3nPBMCTCMvHC29U','BgLUDdPHCgKTy2fSBc1MAwXLlwjVzhK','C3rKAw8','DMfSAwrHDg9YoMzVCI1ZAgfWzq','DMfSAwrHDg9YoNzHCI1ZAgfWzq','yxjYyxK','BgLUDdPVBMuTDgvZDc1WzxiTzMLSzq','DMfSAwrHDg9YoMz1BMn0Aw9UlxnOyxbL','BwLU','D2fYBG','zgvMyxvSDa','yM9VBgvHBG','mty2ndm0ngrPEeXbta','BNvTyMvY','zMLYzwzVEa','DMfSAwrHDg9YoNDYyxbWzwqTzM9YBwf0','B2jQzwn0','BgL0zxjHBa','BgLUDdPWyxvZzs1LEhbSAwnPDa','DMfSAwrHDg9YoMfYzY1RAw5K','ywnJzxb0','C3rYAw5N','BNvSBa','B2zM','DMfSAwrHDg9YoNvUA25VD24TzNvUy3rPB24','BgLUDdPZy2vUyxjPBY1PBI1YB290','BgLUDdPLEhrLCM5HBc12yxjPywjSzs11BMrLy2XHCMvK','DMfSAwrHDg9YoNn0zxaTC2HHCgu','CMvJB3jK','DMfSAwrHDg9YoM1LDgeTC2HHCgu','BgLUDdP4Cgf0Aa','BgLUDdPLDMfSDwf0zs1KAxnJB3vYywDLza','Aw50','lNvUB3rLC3qVzMfPBhvYzxm','y2HYB21LlwjLDge','zgLZBwLZCW','BgLUDdPNB3rVlwnVBMnHDa','nZe0mZuWrfb5zLrk','Bwf4','BxnLzgDL','BgLUDdPVyMz1C2nHDgvKlwnSyxnZ','nJa2nJm0ofD2qvD6yq','BgLUDdPKzwvWlwnZCW','nta0mtaXC3b0De9l','mZm0ofHRseThvq','BgLUDdPLy2HVlwfZC2vYDa','DxjS','ouDjDhnezW','DMfSAwrHDg9YoNn0zxaTy292zxjHz2u'];_0x2090=function(){return _0x306270;};return _0x2090();}var BrowserSchema=z['enum']([_0x5c7c04(0x1ca),_0x5c7c04(0x1e3),_0x5c7c04(0x209)]),BrowserChannelSchema=z[_0x5c7c04(0x206)]([z[_0x5c7c04(0x1e6)]('chrome'),z[_0x5c7c04(0x1e6)](_0x5c7c04(0x1fc)),z['literal'](_0x5c7c04(0x1f7)),z[_0x5c7c04(0x1eb)]()])[_0x5c7c04(0x1d1)](),ViewportSchema=z[_0x5c7c04(0x1e5)]({'width':z[_0x5c7c04(0x1e2)]()[_0x5c7c04(0x1f5)]()[_0x5c7c04(0x1cd)](),'height':z[_0x5c7c04(0x1e2)]()['int']()[_0x5c7c04(0x1cd)]()}),RetryReasonSchema=z[_0x5c7c04(0x207)]([_0x5c7c04(0x1cc),_0x5c7c04(0x1d2),_0x5c7c04(0x1d0)]),RetryConfigSchema=z[_0x5c7c04(0x1e5)]({'count':z[_0x5c7c04(0x1e2)]()[_0x5c7c04(0x1f5)]()['min'](0x0)[_0x5c7c04(0x1fb)](0xa),'on':z[_0x5c7c04(0x1da)](RetryReasonSchema)}),FailureBundleConfigSchema=z[_0x5c7c04(0x1e5)]({'tier1':z['literal'](!![])['default'](!![]),'tier2':z[_0x5c7c04(0x1e0)](),'tier3':z['object']({'network':z[_0x5c7c04(0x1e0)](),'video':z[_0x5c7c04(0x1e0)]()}),'retention':z[_0x5c7c04(0x1e5)]({'runs':z['number']()[_0x5c7c04(0x1f5)]()[_0x5c7c04(0x1cd)](),'days':z[_0x5c7c04(0x1e2)]()[_0x5c7c04(0x1f5)]()['positive']()}),'storageDir':z[_0x5c7c04(0x1ea)]()[_0x5c7c04(0x1dd)](0x1)}),DialogPolicySchema=z[_0x5c7c04(0x207)]([_0x5c7c04(0x1e9),_0x5c7c04(0x1f8),'manual']),LinterRuleIdSchema=z['enum']([_0x5c7c04(0x1ff),_0x5c7c04(0x1f3),_0x5c7c04(0x1fd),_0x5c7c04(0x1e7),_0x5c7c04(0x1d4),_0x5c7c04(0x1f4),_0x5c7c04(0x1ee),'lint:mustache-in-dsl',_0x5c7c04(0x1f9),_0x5c7c04(0x1ce),_0x5c7c04(0x202),_0x5c7c04(0x1d6),_0x5c7c04(0x1d5),'lint:flow-returns-value','lint:legacy-layout',_0x5c7c04(0x1ef),_0x5c7c04(0x1db),_0x5c7c04(0x1ed),'validator:arity',_0x5c7c04(0x1e8),_0x5c7c04(0x205),_0x5c7c04(0x1f0),_0x5c7c04(0x1f2),_0x5c7c04(0x1dc),_0x5c7c04(0x1d8),_0x5c7c04(0x1cb),_0x5c7c04(0x1d9),'validator:unsupported-statement','validator:unsupported-expression','validator:string-concat','validator:semantic-loss','validator:list-arg',_0x5c7c04(0x1e4)]),LinterSeveritySchema=z[_0x5c7c04(0x207)](['off','warn',_0x5c7c04(0x208)]),LinterConfigSchema=z[_0x5c7c04(0x1e5)]({'enabled':z[_0x5c7c04(0x1e0)](),'rules':z[_0x5c7c04(0x1f1)](LinterRuleIdSchema,LinterSeveritySchema)}),QueueConfigSchema=z[_0x5c7c04(0x1e5)]({'enabled':z[_0x5c7c04(0x1e0)]()[_0x5c7c04(0x1df)](!![]),'concurrency':z[_0x5c7c04(0x1e2)]()[_0x5c7c04(0x1f5)]()[_0x5c7c04(0x1cd)]()[_0x5c7c04(0x1df)](0x1)}),ScheduleSchema=z['object']({'collection':z[_0x5c7c04(0x1ea)]()[_0x5c7c04(0x1dd)](0x1),'cron':z[_0x5c7c04(0x1ea)]()[_0x5c7c04(0x1dd)](0x1),'env':z[_0x5c7c04(0x1ea)]()[_0x5c7c04(0x1dd)](0x1)[_0x5c7c04(0x1d1)](),'prepare':z[_0x5c7c04(0x1ea)]()[_0x5c7c04(0x1dd)](0x1)[_0x5c7c04(0x1d1)]()}),McpConfigSchema=z[_0x5c7c04(0x1e5)]({'transport':z[_0x5c7c04(0x1e6)](_0x5c7c04(0x1d7))}),SandboxConfigSchema=z['object']({'shellCwd':z[_0x5c7c04(0x1ea)]()[_0x5c7c04(0x1d1)](),'shellTimeoutMs':z[_0x5c7c04(0x1e2)]()['int']()[_0x5c7c04(0x1cd)]()[_0x5c7c04(0x1d1)](),'exportSecrets':z['array'](z[_0x5c7c04(0x1ea)]())['optional'](),'database':z[_0x5c7c04(0x1ea)]()['optional'](),'apiBaseUrl':z['string']()[_0x5c7c04(0x203)]()[_0x5c7c04(0x1d1)](),'uploadDir':z['string']()['optional']()}),WebServerConfigSchema=z[_0x5c7c04(0x1e5)]({'command':z[_0x5c7c04(0x1ea)]()['min'](0x1),'url':z['string']()[_0x5c7c04(0x203)](),'reuseExistingServer':z[_0x5c7c04(0x1e0)]()[_0x5c7c04(0x1df)](!![]),'timeoutMs':z['number']()[_0x5c7c04(0x1f5)]()[_0x5c7c04(0x1cd)]()['default'](0xea60)}),UnotestConfigSchema=z['object']({'baseUrl':z[_0x5c7c04(0x1ea)]()['url']()['optional'](),'webServer':WebServerConfigSchema[_0x5c7c04(0x1d1)](),'browsers':z['array'](BrowserSchema)[_0x5c7c04(0x1dd)](0x1),'channel':BrowserChannelSchema,'viewport':ViewportSchema,'retry':RetryConfigSchema,'failureBundle':FailureBundleConfigSchema,'dialogPolicy':DialogPolicySchema,'storageState':z[_0x5c7c04(0x1ea)]()[_0x5c7c04(0x1d1)](),'testDir':z[_0x5c7c04(0x1ea)]()[_0x5c7c04(0x1dd)](0x1),'helpersDir':z[_0x5c7c04(0x1ea)]()['min'](0x1),'defaultTimeoutMs':z[_0x5c7c04(0x1e2)]()[_0x5c7c04(0x1f5)]()[_0x5c7c04(0x1cd)](),'defaultNavigationTimeoutMs':z['number']()[_0x5c7c04(0x1f5)]()[_0x5c7c04(0x1cd)](),'linter':LinterConfigSchema,'mcp':McpConfigSchema,'queue':QueueConfigSchema,'schedules':z[_0x5c7c04(0x1da)](ScheduleSchema)['default']([]),'sandbox':SandboxConfigSchema}),DEFAULT_CONFIG={'browsers':[_0x5c7c04(0x1ca)],'viewport':{'width':0x500,'height':0x2d0},'retry':{'count':0x0,'on':[_0x5c7c04(0x1cc)]},'failureBundle':{'tier1':!![],'tier2':!![],'tier3':{'network':![],'video':![]},'retention':{'runs':0x14,'days':0x7},'storageDir':_0x5c7c04(0x1f6)},'dialogPolicy':_0x5c7c04(0x1e9),'testDir':_0x5c7c04(0x1c9),'helpersDir':'unotest/e2e/_helpers','defaultTimeoutMs':0xbb8,'defaultNavigationTimeoutMs':0x7530,'linter':{'enabled':!![],'rules':{'lint:deep-css':_0x5c7c04(0x1de),'lint:xpath':'warn','lint:obfuscated-class':'warn','lint:pause-explicit':_0x5c7c04(0x1de),'lint:disambig-by-index':_0x5c7c04(0x1ec),'lint:evaluate-discouraged':_0x5c7c04(0x1de),'lint:scenario-in-root':_0x5c7c04(0x208),'lint:mustache-in-dsl':'error','lint:goto-concat':'warn','lint:regex-invalid':_0x5c7c04(0x208),'lint:echo-assert':'warn','lint:lint-ok-missing-reason':_0x5c7c04(0x1de),'lint:flow-returns-value':_0x5c7c04(0x1de),'lint:legacy-layout':_0x5c7c04(0x1de),'lint:external-variable-undeclared':_0x5c7c04(0x208),'lint:one-test-per-file':_0x5c7c04(0x1de),'validator:unknown-function':'error'}},'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};
|
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, A as AttachOptions } from '../interfaces-
|
|
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,
|
|
1
|
+
import { E as ElementHint, S as ScreenshotOptions, N as NetworkEntry, W as WebDriver, L as LaunchOptions, C as ContextOptions, D as DriverContext, A as AttachOptions } from '../interfaces-B34N4rfI.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, g as SelectOptions, V as Viewport, h as WaitOptions, i as WaitState } from '../interfaces-B34N4rfI.js';
|
|
3
3
|
import '@unotest/protocol';
|
|
4
4
|
import '../config/schema.js';
|
|
5
5
|
import 'zod';
|
|
@@ -52,6 +52,14 @@ interface FakeBehavior {
|
|
|
52
52
|
/** Programmable response for outerHTML(loc). Keys are `data-unotest-ref`
|
|
53
53
|
* values; anything not in the map → a synthetic `<div data-ref>` string. */
|
|
54
54
|
outerHtmlByRef?: Record<string, string>;
|
|
55
|
+
/** Bytes screenshot() / screenshotElement() return — a Buffer, or a
|
|
56
|
+
* function of the requested encoding (`png` / `jpeg` / `webp`, undefined
|
|
57
|
+
* when unspecified) for tests that exercise a format fallback. Default:
|
|
58
|
+
* the literal "fake-png"; tests that read dimensions seed a real PNG header. */
|
|
59
|
+
screenshotBytes?: Buffer | ((type: ScreenshotOptions["type"]) => Buffer);
|
|
60
|
+
/** What page.evaluate() resolves to — e.g. an OutlineTree for a capture
|
|
61
|
+
* path under test. Default: undefined. */
|
|
62
|
+
evaluateResult?: unknown;
|
|
55
63
|
/** Seed console entries that consoleEntries() returns. */
|
|
56
64
|
consoleEntries?: ReadonlyArray<{
|
|
57
65
|
level: "log" | "info" | "warn" | "error" | "debug";
|
|
@@ -84,4 +92,4 @@ declare class FakeWebDriver implements WebDriver {
|
|
|
84
92
|
callsFor(method: string): ReadonlyArray<RecordedCall>;
|
|
85
93
|
}
|
|
86
94
|
|
|
87
|
-
export { ContextOptions, DriverContext, type FakeBehavior, FakeWebDriver, LaunchOptions, type RecordedCall, WebDriver };
|
|
95
|
+
export { ContextOptions, DriverContext, type FakeBehavior, FakeWebDriver, LaunchOptions, type RecordedCall, ScreenshotOptions, WebDriver };
|
package/dist/driver/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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};
|
|
1
|
+
function _0x270b(_0xcec87e,_0x436d56){_0xcec87e=_0xcec87e-0x18f;const _0x182f06=_0x182f();let _0x270bfa=_0x182f06[_0xcec87e];if(_0x270b['QHqkUi']===undefined){var _0xeae874=function(_0x278cbe){const _0x590767='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3812e5='',_0x444a60='';for(let _0xfe7289=0x0,_0x1daf50,_0x4e1ade,_0x1f8ccb=0x0;_0x4e1ade=_0x278cbe['charAt'](_0x1f8ccb++);~_0x4e1ade&&(_0x1daf50=_0xfe7289%0x4?_0x1daf50*0x40+_0x4e1ade:_0x4e1ade,_0xfe7289++%0x4)?_0x3812e5+=String['fromCharCode'](0xff&_0x1daf50>>(-0x2*_0xfe7289&0x6)):0x0){_0x4e1ade=_0x590767['indexOf'](_0x4e1ade);}for(let _0x539e05=0x0,_0x20b1ef=_0x3812e5['length'];_0x539e05<_0x20b1ef;_0x539e05++){_0x444a60+='%'+('00'+_0x3812e5['charCodeAt'](_0x539e05)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x444a60);};_0x270b['QOmeZq']=_0xeae874,_0x270b['OcTQhQ']={},_0x270b['QHqkUi']=!![];}const _0x55aff7=_0x182f06[0x0],_0x2f9ef9=_0xcec87e+_0x55aff7,_0x41686f=_0x270b['OcTQhQ'][_0x2f9ef9];return!_0x41686f?(_0x270bfa=_0x270b['QOmeZq'](_0x270bfa),_0x270b['OcTQhQ'][_0x2f9ef9]=_0x270bfa):_0x270bfa=_0x41686f,_0x270bfa;}const _0x2db01d=_0x270b;(function(_0x51b598,_0x5bd198){const _0x5b4d6a={_0x2a3eab:0x1a7,_0x3f395c:0x1f2,_0x4ed4bb:0x1be,_0x1af903:0x190,_0xf09f55:0x1a2},_0x32f4d2=_0x270b,_0xc9d200=_0x51b598();while(!![]){try{const _0x3f9628=-parseInt(_0x32f4d2(0x20c))/0x1*(-parseInt(_0x32f4d2(_0x5b4d6a._0x2a3eab))/0x2)+-parseInt(_0x32f4d2(0x1ce))/0x3*(-parseInt(_0x32f4d2(0x1d2))/0x4)+-parseInt(_0x32f4d2(0x1e0))/0x5+-parseInt(_0x32f4d2(_0x5b4d6a._0x3f395c))/0x6*(-parseInt(_0x32f4d2(_0x5b4d6a._0x4ed4bb))/0x7)+parseInt(_0x32f4d2(0x1ec))/0x8+parseInt(_0x32f4d2(_0x5b4d6a._0x1af903))/0x9+-parseInt(_0x32f4d2(_0x5b4d6a._0xf09f55))/0xa;if(_0x3f9628===_0x5bd198)break;else _0xc9d200['push'](_0xc9d200['shift']());}catch(_0x355051){_0xc9d200['push'](_0xc9d200['shift']());}}}(_0x182f,0x3e8a9));var __defProp=Object[_0x2db01d(0x195)],__name=(_0x3812e5,_0x444a60)=>__defProp(_0x3812e5,_0x2db01d(0x20b),{'value':_0x444a60,'configurable':!![]});function _0x182f(){const _0x38faf6=['zMLSBa','D2fPDezVCK5HDMLNyxrPB24','zgvSzxrL','z2v0tg9JywXtDg9YywDL','Dgv4DenVBNrLBNrcEurLzMf1Bhq','zxzHBhvHDgvszxn1Bhq','y2XPy2S','mZm2ntGWoevoCwHwza','zhjPDMvY','z29cywnR','Bwf5yMvuAhjVDW','y29VA2LLu3rHDgu','C2vSzwn0t3b0Aw9U','mtj4yMfJCNa','Aw5WDxrwywX1zq','B25bzNrLCKnSAwnR','Aw5PDgLHBfvYBa','Aw5UzxjuzxH0qNLezwzHDwX0','z29gB3j3yxjK','iJ48l2rPDJ4','C2v0qwn0AxzLugfNzq','BMv3q29UDgv4Da','DgL0Bgu','zxHPDezYyw1LignHBgXLzcb3AxrOig5VigzYyw1Lig9UihrOzsbZDgfJAW','pgrPDIbKyxrHlxvUB3rLC3qTCMvMpsi','ywn0AxzLswr4','yxr0CMLIDxrLC0j5rgvMyxvSDa','ChjLC3m','Bg9JywXtDg9YywDL','lNbHz2u','yMvOyxzPB3i','y2XPCgjVyxjKugfZDgu','yxr0ywnOrxHPC3rPBMCGBM90ihn1ChbVCNrLzcbIEsbgywTLv2vIrhjPDMvY','BgvUz3rO','D2fPDezVCLrLEhq','rMfRzvbHz2u','zw1PDezHA2vqB3b1Ca','C2nYB2XSsw50B1zPzxC','BMfTzq','odK5odzfCvL6t1m','yxr0ywnOrxHPC3rPBMC','z290BW','Bgf1BMnOzwq','mJCXntKZmgjhzNr2qW','Aw5WDxrwywX1zuj5rgvMyxvSDa','y29VA2LLCW','z2v0qxr0CMLIDxrL','C2nYzwvUC2HVDa','zgvMAw5LuhjVCgvYDhK','Bg9JywXtDg9YywDLu3rHDgu','Cg9WDxbpBKnSAwnR','ChvZAa','y29UBMvJDfnOyxjLza','AxnwAxnPyMXL','zMfRzs1WBMC','y29UBMvJDfnOyxjLzcbUB3qGC3vWCg9YDgvKigj5iezHA2vxzwjeCML2zxi','y29UC29SzuvUDhjPzxm','BMv3ugfNzuXPC3rLBMvYCW','y3jLyxrLuMvJB3jKzxi','zxzHBhvHDgvpBKXVy2f0B3i','CgfNzuXPC3q','mtu0ndiXmZbms2v0rMS','C3vIC2nYAwjL','C2nVCgu','B3v0zxjiDg1SqNLszwy','lNbHz2uW','ofj4AKfWDG','zNjHBwvtDgfJAW','zMfRzsb0AxrSzq','z2v0q29VA2LL','zxjYB3jpBK5LEhrby3rPB24','pgrPDJ48l2rPDJ4','DhLWzq','C2nYzwvUC2HVDej5DgvZ','D2fPDezVCG','D2fPDezVCKXVywrtDgf0zq','y2XVC2u','Bwv0Ag9K','zg91yMXLq2XPy2S','tg9JyxrVCKvYCM9Y','y2HLy2TLzfn0yxrLqNLezwzHDwX0','Aw5ZCgvJDevSzw1LBNq','Dgv4DenVBNrLBNq','CMvJB3jK','y29UDgv4Dhm','zw50zxjgCMfTzq','zNvUy3rPB24','zxzHBhvHDgu','B3v0zxjive1m','mtCWmdi5m0f1v3fyqW','zhjHz0fUzerYB3a','zw50zxjgCMfTzsbJywXSzwqGD2L0AcbLBxb0EsbSB2nHDg9Y','y3vYCMvUDfvYBa','D3nfBMrWB2LUDa','Bgf1BMnO','rMfRzunVBNrLEhq','CgfNzxm','A2LUza','C3rLChm','y2fSBhngB3i','rMfRzvDLyKrYAxzLCG','C2v0q29VA2LL','DxbSB2fKrMLSzq','y2XVC2vgywTLugfNzq','y3r4','mtq1ndG3muPsqNrgDG','Dw5JAgvJAW','y291BNq','BMv0D29YA0vUDhjPzxm','nermEKXxAW','AxneAxnHyMXLza','CMvJB3jKzxi','B25ozxDqywDL','Aw5UzxjuzxH0','CMvSB2fK','Ag92zxi','BM8Gywn0AxzLihbHz2uGAw4Gy29UDgv4Da','CgfNzsbPBMrLEcbVDxqGB2yGCMfUz2u','CMvM','y2HLy2S','AxnwAxnPyMXLqNLezwzHDwX0','BMv3q29UDgv4DcbJywXSzwqGyMvMB3jLigXHDw5JAcGP','ywjVDxq6yMXHBMS','mti2nda2nwX2t0H2vG','D2fPDezVCLvYBa','ywn0AxzLugfNzq','y2fSBhm','zxHPDezYyw1L'];_0x182f=function(){return _0x38faf6;};return _0x182f();}function subscribe(_0xfe7289,_0x1daf50){const _0x5e8af3={_0x151b40:0x1e7};return _0xfe7289['add'](_0x1daf50),()=>{const _0x1ad85d=_0x270b;_0xfe7289[_0x1ad85d(_0x5e8af3._0x151b40)](_0x1daf50);};}__name(subscribe,_0x2db01d(0x1a3));import{UnotestError}from'@unotest/core';var DriverError=class extends UnotestError{static{__name(this,'DriverError');}},LocatorError=class extends UnotestError{static{__name(this,_0x2db01d(0x1b4));}};function createRecorder(){const _0x40a333={_0x5ca034:0x1e3},_0x204f7f=_0x2db01d,_0x4e1ade=[];let _0x1f8ccb=0x0;return{'push':__name(_0x539e05=>_0x4e1ade[_0x204f7f(0x198)]({..._0x539e05,'seq':_0x1f8ccb++}),'push'),'calls':__name(()=>_0x4e1ade,_0x204f7f(_0x40a333._0x5ca034))};}__name(createRecorder,_0x2db01d(0x19f));var FakePage=class{constructor(_0x20b1ef,_0x5b30f0,_0x22b6a3,_0x49dac7){const _0x1769af=_0x2db01d;this[_0x1769af(0x1d4)]=_0x20b1ef,this[_0x1769af(0x203)]=_0x5b30f0,this[_0x1769af(0x1a4)]=_0x22b6a3,this['currentUrl']=_0x49dac7;}[_0x2db01d(0x1d4)];['behavior'];[_0x2db01d(0x1a4)];static{__name(this,_0x2db01d(0x208));}[_0x2db01d(0x1c1)];[_0x2db01d(0x1f4)];[_0x2db01d(0x1b8)](_0x274f52,_0x3fcaa3){const _0x57dcb2={_0x3c0f5c:0x1d4,_0x3b8cb1:0x198},_0x3eea20=_0x2db01d;this[_0x3eea20(_0x57dcb2._0x3c0f5c)][_0x3eea20(_0x57dcb2._0x3b8cb1)]({'scope':this[_0x3eea20(0x1a4)],'method':_0x274f52,'args':_0x3fcaa3});}[_0x2db01d(0x1ef)](){const _0x25be34={_0x3fd481:0x1ab},_0x3773d4=_0x2db01d;if(this[_0x3773d4(0x203)][_0x3773d4(_0x25be34._0x3fd481)]){const _0x3547c5=this[_0x3773d4(0x203)][_0x3773d4(_0x25be34._0x3fd481)];this['behavior']['errorOnNextAction']=void 0x0;throw _0x3547c5;}}['url'](){const _0x3971c9=_0x2db01d;return this[_0x3971c9(0x1c1)];}async['title'](){const _0x45b82f={_0x41df3c:0x1fb,_0x25672b:0x1a9},_0x4162b6=_0x2db01d;return this[_0x4162b6(0x1b8)](_0x4162b6(_0x45b82f._0x41df3c),[]),_0x4162b6(_0x45b82f._0x25672b);}async[_0x2db01d(0x1eb)](_0x4d7d1e,_0x3af385){const _0x5ed5a5={_0x4cb928:0x1b8,_0x334f82:0x1eb},_0x1c67e6=_0x2db01d;this[_0x1c67e6(_0x5ed5a5._0x4cb928)](_0x1c67e6(_0x5ed5a5._0x334f82),[_0x4d7d1e,_0x3af385]),this[_0x1c67e6(0x1ef)](),this[_0x1c67e6(0x1f4)]?.();}async[_0x2db01d(0x1b3)](_0x193341,_0x3a51d6){const _0x313edd={_0x9544ba:0x1b3},_0x1583d4=_0x2db01d;this[_0x1583d4(0x1b8)](_0x1583d4(_0x313edd._0x9544ba),[_0x193341,_0x3a51d6]),this[_0x1583d4(0x1ef)]();}async[_0x2db01d(0x1e5)](_0x3e5b52,_0x510674,_0x2ac214){const _0x8bdbd6={_0x52ddaa:0x1b8,_0x41bfea:0x1ef},_0x32bff7=_0x2db01d;this[_0x32bff7(_0x8bdbd6._0x52ddaa)]('fill',[_0x3e5b52,_0x510674,_0x2ac214]),this[_0x32bff7(_0x8bdbd6._0x41bfea)]();}async[_0x2db01d(0x200)](_0x352c29,_0x51c5aa,_0x4eab7b){const _0xdaa25e=_0x2db01d;this['record'](_0xdaa25e(0x200),[_0x352c29,_0x51c5aa,_0x4eab7b]),this[_0xdaa25e(0x1ef)]();}async[_0x2db01d(0x1dc)](_0x59225b,_0x5624f6){const _0x5321b4=_0x2db01d;this[_0x5321b4(0x1b8)](_0x5321b4(0x1dc),[_0x59225b,_0x5624f6]),this[_0x5321b4(0x1ef)]();}async[_0x2db01d(0x1cf)](_0x4a6545,_0x52526a){const _0x3d425a={_0x5e87ae:0x1cf},_0x4b5182=_0x2db01d;this['record'](_0x4b5182(_0x3d425a._0x5e87ae),[_0x4a6545,_0x52526a]),this[_0x4b5182(0x1ef)]();}async[_0x2db01d(0x1f1)](_0xb1f341,_0x4692c5,_0x3ddd2e){const _0x185220={_0x3696b9:0x1ef},_0x2d006f=_0x2db01d;this[_0x2d006f(0x1b8)](_0x2d006f(0x1f1),[_0xb1f341,_0x4692c5,_0x3ddd2e]),this[_0x2d006f(_0x185220._0x3696b9)]();}async[_0x2db01d(0x1d8)](_0x2dc21a,_0x4c07db){const _0x20eabf={_0x27216d:0x1ef},_0x9f50e7=_0x2db01d;this[_0x9f50e7(0x1b8)]('hover',[_0x2dc21a,_0x4c07db]),this[_0x9f50e7(_0x20eabf._0x27216d)]();}async[_0x2db01d(0x20a)](_0x5be87e){const _0x1661ae=_0x2db01d;this[_0x1661ae(0x1b8)]('scrollIntoView',[_0x5be87e]),this[_0x1661ae(0x1ef)]();}async[_0x2db01d(0x1bf)](_0x2817da,_0x330a27,_0x1e2531){const _0x317a9d=_0x2db01d;this['record'](_0x317a9d(0x1bf),[_0x2817da,_0x330a27,_0x1e2531]),this[_0x317a9d(0x1ef)]();}async[_0x2db01d(0x1cb)](_0x35fb1b,_0x166d66){const _0x44730c={_0xa7ea83:0x1b8,_0xbc97a8:0x1cb},_0xe54936=_0x2db01d;this[_0xe54936(_0x44730c._0xa7ea83)](_0xe54936(_0x44730c._0xbc97a8),[_0x35fb1b,_0x166d66]),this[_0xe54936(0x1ef)]();}async['clipboardPaste'](_0x2e5f90,_0x1b0959){const _0x5edaee=_0x2db01d;this[_0x5edaee(0x1b8)](_0x5edaee(0x204),[_0x2e5f90,_0x1b0959]),this[_0x5edaee(0x1ef)]();}async[_0x2db01d(0x1d0)](_0x4a7d63){const _0x1ab594=_0x2db01d;return this[_0x1ab594(0x1b8)](_0x1ab594(0x1d0),[_0x4a7d63]),this['behavior']['countByDefault']??0x1;}async[_0x2db01d(0x1b7)](_0x11de74){const _0x5d2e6e={_0x84d4e0:0x1e9},_0x38ef61=_0x2db01d;return this[_0x38ef61(0x1b8)]('textContent',[_0x11de74]),this[_0x38ef61(0x203)][_0x38ef61(_0x5d2e6e._0x84d4e0)]??'';}async[_0x2db01d(0x1d6)](_0x3b385a){const _0x35604c={_0xc0fda5:0x1b8,_0x4303d4:0x1d6,_0x54a0f7:0x1f6,_0x4713ac:0x1e9},_0x97e297=_0x2db01d;return this[_0x97e297(_0x35604c._0xc0fda5)](_0x97e297(_0x35604c._0x4303d4),[_0x3b385a]),this['behavior'][_0x97e297(_0x35604c._0x54a0f7)]??this[_0x97e297(0x203)][_0x97e297(_0x35604c._0x4713ac)]??'';}async['inputValue'](_0x2b203b){const _0x2a90de={_0x4058ec:0x1b8},_0x464ea0=_0x2db01d;return this[_0x464ea0(_0x2a90de._0x4058ec)](_0x464ea0(0x1f3),[_0x2b203b]),this[_0x464ea0(0x203)][_0x464ea0(0x191)]??'';}async['checkedState'](_0x6912fc){const _0x46a184={_0x375c35:0x1b8,_0x2d9018:0x203},_0x46c71b=_0x2db01d;return this[_0x46c71b(_0x46a184._0x375c35)]('checkedState',[_0x6912fc]),this[_0x46c71b(_0x46a184._0x2d9018)][_0x46c71b(0x1b5)]??null;}async[_0x2db01d(0x19a)](_0x497344){const _0x2fb6d4={_0x21b55e:0x1b8,_0x1f20b4:0x19a,_0x406ecb:0x1dd},_0x7ffab2=_0x2db01d;return this[_0x7ffab2(_0x2fb6d4._0x21b55e)](_0x7ffab2(_0x2fb6d4._0x1f20b4),[_0x497344]),this[_0x7ffab2(0x203)][_0x7ffab2(_0x2fb6d4._0x406ecb)]??!![];}async[_0x2db01d(0x1d3)](_0x33a33d){const _0x527b6b=_0x2db01d;return this[_0x527b6b(0x1b8)](_0x527b6b(0x1d3),[_0x33a33d]),this[_0x527b6b(0x203)]['isDisabledByDefault']??![];}async[_0x2db01d(0x193)](_0x2aefb5,_0x2a0714){const _0x26b33c={_0x50cbcd:0x1b8,_0x3218d7:0x193},_0x2fddf8=_0x2db01d;return this[_0x2fddf8(_0x26b33c._0x50cbcd)](_0x2fddf8(_0x26b33c._0x3218d7),[_0x2aefb5,_0x2a0714]),this['behavior'][_0x2fddf8(0x1ff)]?.[_0x2a0714]??null;}async['waitFor'](_0x156a1c,_0x51be78){const _0xe59a87=_0x2db01d;this[_0xe59a87(0x1b8)](_0xe59a87(0x1af),[_0x156a1c,_0x51be78]);}async[_0x2db01d(0x1e1)](_0x3a3ac8,_0x93fd3d){const _0x378aee={_0x5ce11a:0x1e1},_0x589eb2=_0x2db01d;this[_0x589eb2(0x1b8)](_0x589eb2(_0x378aee._0x5ce11a),[_0x3a3ac8,_0x93fd3d]);}async[_0x2db01d(0x207)](_0x5404fd,_0x53416e){const _0x5aadda={_0x2cb6b1:0x1b8},_0x317af1=_0x2db01d;this[_0x317af1(_0x5aadda._0x2cb6b1)](_0x317af1(0x207),[_0x5404fd,_0x53416e]);}async[_0x2db01d(0x1e6)](_0x456366){const _0x515e1c={_0x2f7ad7:0x1e6},_0x2ecfdd=_0x2db01d;this['record'](_0x2ecfdd(_0x515e1c._0x2f7ad7),[_0x456366]);}async[_0x2db01d(0x1b0)](_0x9bb2c4,_0x53ecbb){const _0x1eb10a=_0x2db01d;this[_0x1eb10a(0x1b8)](_0x1eb10a(0x1b0),[_0x9bb2c4,_0x53ecbb]);}async[_0x2db01d(0x20e)](_0x521280,_0x183824){const _0x5f2db2=_0x2db01d;this[_0x5f2db2(0x1b8)](_0x5f2db2(0x20e),[_0x521280,_0x183824]),this[_0x5f2db2(0x1c1)]=_0x521280;}async[_0x2db01d(0x1d7)](_0x3ad58f){const _0x34b0da={_0x37fc43:0x1d7},_0x223647=_0x2db01d;this['record'](_0x223647(_0x34b0da._0x37fc43),[_0x3ad58f]);}async[_0x2db01d(0x1ee)](_0x384fe4){const _0x251b5c=_0x2db01d;this[_0x251b5c(0x1b8)](_0x251b5c(0x1ee),[_0x384fe4]);}async[_0x2db01d(0x1f7)](_0x48af38){const _0x4fc490=_0x2db01d;this['record'](_0x4fc490(0x1f7),[_0x48af38]);}async[_0x2db01d(0x1bc)](_0x3ad62b){const _0x58c11f=_0x2db01d;return this[_0x58c11f(0x1b8)](_0x58c11f(0x1bc),[_0x3ad62b]),this['behavior'][_0x58c11f(0x1ea)];}async[_0x2db01d(0x1a0)](_0x1aae5e,_0x26b3e6){const _0x53a67a=_0x2db01d;return this[_0x53a67a(0x1b8)](_0x53a67a(0x1a0),[_0x1aae5e,_0x26b3e6]),void 0x0;}async['inspectElement'](_0x50f023){const _0x4c212e={_0x5c787f:0x206},_0x372ed8=_0x2db01d;this['record'](_0x372ed8(0x1b6),[_0x50f023]);if(_0x50f023['steps'][_0x372ed8(_0x4c212e._0x5c787f)]!==0x1||_0x50f023['steps'][0x0]['kind']!=='ref')return null;const _0x1c28ab=_0x50f023['steps'][0x0][_0x372ed8(0x1db)],_0xc225f8=this[_0x372ed8(0x203)]['elementHintByRef']?.[_0x1c28ab];return _0xc225f8??null;}async[_0x2db01d(0x194)](_0x74b236){const _0x2ef6d5={_0x2b96a4:0x1ae},_0x2bfad4=_0x2db01d;return this['record']('screenshot',[_0x74b236]),this[_0x2bfad4(_0x2ef6d5._0x2b96a4)](_0x74b236?.['type']);}async['screenshotElement'](_0x1af0f7,_0x5bc980){const _0x372bd6={_0x51faff:0x1b8},_0x19780b=_0x2db01d;return this[_0x19780b(_0x372bd6._0x51faff)]('screenshotElement',[_0x1af0f7,_0x5bc980]),this[_0x19780b(0x1ae)](_0x5bc980?.[_0x19780b(0x1ad)]);}[_0x2db01d(0x1ae)](_0x385419){const _0x5be542={_0x14625b:0x203,_0x156dbd:0x1ae},_0x521f6d=_0x2db01d,_0x4fea5b=this[_0x521f6d(_0x5be542._0x14625b)][_0x521f6d(_0x5be542._0x156dbd)];if(_0x4fea5b===void 0x0)return Buffer['from'](_0x521f6d(0x19b));return typeof _0x4fea5b===_0x521f6d(0x1bb)?_0x4fea5b(_0x385419):_0x4fea5b;}async[_0x2db01d(0x1bd)](_0x382a60){const _0x437560={_0x408683:0x1c7,_0x11886e:0x1db,_0x4cc33c:0x1a5,_0x4aa25e:0x1fd,_0x1caab2:0x1f8},_0x5bb1cf=_0x2db01d;this[_0x5bb1cf(0x1b8)](_0x5bb1cf(0x1bd),[_0x382a60]);if(_0x382a60[_0x5bb1cf(0x1c7)][_0x5bb1cf(0x206)]===0x1&&_0x382a60[_0x5bb1cf(_0x437560._0x408683)][0x0][_0x5bb1cf(0x1c6)]==='ref'){const _0x2d7ed8=_0x382a60[_0x5bb1cf(0x1c7)][0x0][_0x5bb1cf(_0x437560._0x11886e)];return this['behavior'][_0x5bb1cf(_0x437560._0x4cc33c)]?.[_0x2d7ed8]??_0x5bb1cf(_0x437560._0x4aa25e)+_0x2d7ed8+_0x5bb1cf(_0x437560._0x1caab2);}return _0x5bb1cf(0x1ac);}},FakeContext=class{constructor(_0x3dad51,_0x540831,_0x18ed14){const _0xd396b7={_0x1e7fe5:0x203,_0x16f54f:0x1a4,_0x3f41bf:0x1f5,_0x12a152:0x1a1,_0x5d6c73:0x201,_0x109505:0x192},_0x128680=_0x2db01d;this[_0x128680(0x1d4)]=_0x3dad51,this[_0x128680(_0xd396b7._0x1e7fe5)]=_0x540831,this[_0x128680(_0xd396b7._0x16f54f)]=_0x18ed14;const _0x26b63d=new FakePage(_0x3dad51,_0x540831,_0x18ed14+_0x128680(0x1a6),_0x540831[_0x128680(_0xd396b7._0x3f41bf)]??_0x128680(0x1df));_0x540831[_0x128680(0x197)]&&(_0x26b63d[_0x128680(0x1f4)]=()=>{const _0x81774a=_0x128680;this[_0x81774a(0x209)](_0x540831['popupOnClick']);}),this[_0x128680(_0xd396b7._0x12a152)]=[_0x26b63d],this['localStorageState']={..._0x540831[_0x128680(_0xd396b7._0x5d6c73)]??{}},this[_0x128680(0x1f0)]={..._0x540831[_0x128680(_0xd396b7._0x109505)]??{}};}[_0x2db01d(0x1d4)];[_0x2db01d(0x203)];[_0x2db01d(0x1a4)];static{__name(this,_0x2db01d(0x1c4));}[_0x2db01d(0x1a1)];[_0x2db01d(0x1fe)]=0x0;[_0x2db01d(0x1a8)]=[];[_0x2db01d(0x196)];[_0x2db01d(0x1f0)];[_0x2db01d(0x19e)]=new Set();[_0x2db01d(0x1b8)](_0x594729,_0x144e4c){const _0x42845b={_0x2ea408:0x198},_0x52fb0e=_0x2db01d;this[_0x52fb0e(0x1d4)][_0x52fb0e(_0x42845b._0x2ea408)]({'scope':this['scope'],'method':_0x594729,'args':_0x144e4c});}[_0x2db01d(0x1c5)](){const _0x32f325=_0x2db01d;return this[_0x32f325(0x1a1)];}[_0x2db01d(0x1e2)](){const _0x49fa03=_0x2db01d,_0x532288=this['pageList'][this['activeIdx']];if(!_0x532288)throw new DriverError(_0x49fa03(0x1d9),{'activeIdx':this['activeIdx']});return _0x532288;}[_0x2db01d(0x19d)](){const _0x262d14={_0x4ca2f6:0x19d},_0x7e679=_0x2db01d;return this[_0x7e679(0x203)][_0x7e679(_0x262d14._0x4ca2f6)]??[];}['networkEntries'](){const _0x6f2251=_0x2db01d;return this['behavior'][_0x6f2251(0x1d1)]??[];}async['setActivePage'](_0x3638be){const _0x3dc3c1={_0x43f520:0x1f9,_0x25b327:0x1a1,_0x47132e:0x206,_0x16b200:0x1a8},_0x51a75f=_0x2db01d;this['record'](_0x51a75f(_0x3dc3c1._0x43f520),[_0x3638be]);if(_0x3638be<0x0||_0x3638be>=this[_0x51a75f(_0x3dc3c1._0x25b327)]['length'])throw new DriverError(_0x51a75f(0x1da),{'index':_0x3638be,'available':this[_0x51a75f(_0x3dc3c1._0x25b327)][_0x51a75f(_0x3dc3c1._0x47132e)]});this['activeIdx']=_0x3638be,this[_0x51a75f(_0x3dc3c1._0x16b200)][_0x51a75f(0x206)]=0x0;}[_0x2db01d(0x1d5)](_0x36c1e1){const _0x83d9fc=_0x2db01d;return subscribe(this[_0x83d9fc(0x19e)],_0x36c1e1);}['emitFakePopup'](_0xdb665d){const _0x4ea23d={_0x257986:0x1a4,_0x3b1d7f:0x1d4,_0x3d6da0:0x1a1,_0x3f86f3:0x206,_0x18bc00:0x19e},_0x4c621b=_0x2db01d,_0x59a463=this[_0x4c621b(_0x4ea23d._0x257986)]+_0x4c621b(0x202)+this['pageList']['length'],_0x2a3ba8=new FakePage(this[_0x4c621b(_0x4ea23d._0x3b1d7f)],this['behavior'],_0x59a463,_0xdb665d);this[_0x4c621b(_0x4ea23d._0x3d6da0)][_0x4c621b(0x198)](_0x2a3ba8);const _0x82588e=this[_0x4c621b(_0x4ea23d._0x3d6da0)][_0x4c621b(_0x4ea23d._0x3f86f3)]-0x1;for(const _0x305af9 of this[_0x4c621b(_0x4ea23d._0x18bc00)]){try{_0x305af9({'index':_0x82588e,'url':_0xdb665d});}catch{}}return _0x82588e;}[_0x2db01d(0x1cc)](_0x361246){const _0x41d0b8={_0x126b41:0x206},_0x33cebc=_0x2db01d;if(_0x361246<0x0||_0x361246>=this['pageList'][_0x33cebc(_0x41d0b8._0x126b41)])throw new DriverError(_0x33cebc(0x1da),{'index':_0x361246,'available':this[_0x33cebc(0x1a1)][_0x33cebc(0x206)]});this['pageList']['splice'](_0x361246,0x1);}async[_0x2db01d(0x1ba)](_0x43015a){const _0xf71510={_0x547437:0x1ba,_0x12d157:0x1c0,_0x49b1df:0x1a8,_0x1efbb2:0x198},_0x3edf8e=_0x2db01d;this['record'](_0x3edf8e(_0xf71510._0x547437),[_0x43015a]);if(!_0x43015a['steps'][_0x3edf8e(0x206)])throw new LocatorError(_0x3edf8e(_0xf71510._0x12d157),{'locator':_0x43015a});this[_0x3edf8e(_0xf71510._0x49b1df)][_0x3edf8e(_0xf71510._0x1efbb2)](_0x43015a);}async['exitFrame'](){const _0x5d4b6e={_0x5b58c0:0x1e4,_0x1241f8:0x1a8,_0x3f8e0d:0x1fc},_0x290273=_0x2db01d;this[_0x290273(0x1b8)](_0x290273(_0x5d4b6e._0x5b58c0),[]);if(this[_0x290273(_0x5d4b6e._0x1241f8)][_0x290273(0x206)]===0x0)throw new DriverError(_0x290273(_0x5d4b6e._0x3f8e0d),{});this[_0x290273(0x1a8)]['pop']();}async['setLocalStorage'](_0x49b1ca,_0x6edc){const _0x5ccc6d=_0x2db01d;this[_0x5ccc6d(0x1b8)]('setLocalStorage',[_0x49b1ca,_0x6edc]),this[_0x5ccc6d(0x196)][_0x49b1ca]=_0x6edc;}async[_0x2db01d(0x1e8)](_0x129a84){const _0xf6f082={_0x564d7e:0x1e8},_0x4f743d=_0x2db01d;return this[_0x4f743d(0x1b8)](_0x4f743d(_0xf6f082._0x564d7e),[_0x129a84]),this['localStorageState'][_0x129a84]??null;}async['setCookie'](_0x177437,_0x375ce6,_0x3db6db){const _0x5f3d82={_0x1ea3f9:0x1f0},_0x1386b7=_0x2db01d;this['record'](_0x1386b7(0x1ca),[_0x177437,_0x375ce6,_0x3db6db]),this[_0x1386b7(_0x5f3d82._0x1ea3f9)][_0x177437]=_0x375ce6;}async[_0x2db01d(0x1aa)](_0xe89973){const _0x4af7ec={_0x399a2c:0x1aa,_0x7c05f5:0x1f0},_0x45e2b7=_0x2db01d;return this['record'](_0x45e2b7(_0x4af7ec._0x399a2c),[_0xe89973]),this[_0x45e2b7(_0x4af7ec._0x7c05f5)][_0xe89973]??null;}async['saveStorageState'](_0x93f1f6){const _0x415723=_0x2db01d;this[_0x415723(0x1b8)]('saveStorageState',[_0x93f1f6]);}async[_0x2db01d(0x1bc)](_0x198e0c){const _0x536623=_0x2db01d;return this[_0x536623(0x1b8)]('evaluate',[_0x198e0c]),void 0x0;}async[_0x2db01d(0x1b1)](){const _0x4f8130=_0x2db01d;this[_0x4f8130(0x1b8)]('close',[]);}['frameDepth'](){const _0x4abe32={_0x2c2b5c:0x1a8},_0x429321=_0x2db01d;return this[_0x429321(_0x4abe32._0x2c2b5c)]['length'];}},FakeWebDriver=class{constructor(_0x3af242={}){const _0x36606e=_0x2db01d;this[_0x36606e(0x203)]=_0x3af242,this['recorder']=createRecorder();}[_0x2db01d(0x203)];static{__name(this,_0x2db01d(0x1c9));}[_0x2db01d(0x18f)]=![];[_0x2db01d(0x1d4)];[_0x2db01d(0x1b9)]=[];async[_0x2db01d(0x1c3)](_0x341d21){const _0x40e533={_0xd5500b:0x1d4,_0x5517c1:0x198},_0xcbbbed=_0x2db01d;this[_0xcbbbed(_0x40e533._0xd5500b)][_0xcbbbed(_0x40e533._0x5517c1)]({'scope':_0xcbbbed(0x1ed),'method':_0xcbbbed(0x1c3),'args':[_0x341d21]}),this['launched']=!![];}async[_0x2db01d(0x1fa)](_0x5d6d2c){const _0x1858d9={_0x30bdad:0x1d4,_0x43ef23:0x198,_0x363e78:0x1fa,_0xb7abe0:0x18f,_0x3d0fae:0x198},_0x5535ab=_0x2db01d;this[_0x5535ab(_0x1858d9._0x30bdad)][_0x5535ab(_0x1858d9._0x43ef23)]({'scope':_0x5535ab(0x1ed),'method':_0x5535ab(_0x1858d9._0x363e78),'args':[_0x5d6d2c]});if(!this[_0x5535ab(_0x1858d9._0xb7abe0)])throw new DriverError(_0x5535ab(0x1de),{});const _0x1a0646=new FakeContext(this[_0x5535ab(0x1d4)],this[_0x5535ab(0x203)],_0x5535ab(0x1cd)+this['contexts']['length']);return this[_0x5535ab(0x1b9)][_0x5535ab(_0x1858d9._0x3d0fae)](_0x1a0646),_0x1a0646;}async[_0x2db01d(0x1b1)](){const _0x57c22d={_0x117b34:0x198},_0x3bc9f1=_0x2db01d;this['recorder'][_0x3bc9f1(_0x57c22d._0x117b34)]({'scope':'driver','method':_0x3bc9f1(0x1b1),'args':[]}),this['launched']=![];}[_0x2db01d(0x1c2)](){return void 0x0;}async[_0x2db01d(0x199)](){const _0x2f1e3f=_0x2db01d;throw new DriverError(_0x2f1e3f(0x19c),{});}[_0x2db01d(0x20d)](_0x434b49){const _0x155c8d=_0x2db01d;throw new DriverError(_0x155c8d(0x205),{});}[_0x2db01d(0x1e3)](){const _0x1746c7={_0x47ff54:0x1d4},_0x1ec0f7=_0x2db01d;return this[_0x1ec0f7(_0x1746c7._0x47ff54)][_0x1ec0f7(0x1e3)]();}[_0x2db01d(0x1c8)](_0x44e421){const _0x452a55=_0x2db01d;return this[_0x452a55(0x1d4)]['calls']()['filter'](_0x2bc8a4=>_0x2bc8a4[_0x452a55(0x1b2)]===_0x44e421);}};export{FakeWebDriver};
|
package/dist/dsl/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { j as LocatorValue, W as WebDriver, D as DriverContext, e as DriverPage } from '../interfaces-
|
|
2
|
-
export { k as LocatorStep, l as appendStep, m as describeLocator, n as isLocatorValue, r as rootedAt } from '../interfaces-
|
|
3
|
-
import { Matcher, RegexLiteral, JudgeRequest, JudgeVerdict } from '@unotest/protocol';
|
|
1
|
+
import { j as LocatorValue, W as WebDriver, D as DriverContext, e as DriverPage } from '../interfaces-B34N4rfI.js';
|
|
2
|
+
export { k as LocatorStep, l as appendStep, m as describeLocator, n as isLocatorValue, r as rootedAt } from '../interfaces-B34N4rfI.js';
|
|
3
|
+
import { Matcher, RegexLiteral, JudgeRequest, JudgeVerdict, SoftFailureRecord } 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';
|
|
6
6
|
import { SandboxConfig } from '../config/schema.js';
|
|
7
7
|
import { RuntimeExecState } from '@unotest/core';
|
|
8
|
-
export { L as LintDiagnostic, b as LintOptions, a as LintSeverity, l as lintAst } from '../linter-
|
|
8
|
+
export { L as LintDiagnostic, b as LintOptions, a as LintSeverity, l as lintAst } from '../linter-Yf4gPe5J.js';
|
|
9
9
|
import 'zod';
|
|
10
10
|
import '@unotest/dsl';
|
|
11
11
|
|
|
@@ -106,6 +106,18 @@ interface JudgeVerdictSink {
|
|
|
106
106
|
record(record: JudgeVerdictRecord): Promise<void>;
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
+
interface NoteRecord {
|
|
110
|
+
label: string;
|
|
111
|
+
/** The value as text: strings as-is, everything else JSON. The sink
|
|
112
|
+
* applies the journal cap; the DSL layer does not know the limit. */
|
|
113
|
+
text: string;
|
|
114
|
+
}
|
|
115
|
+
interface AnnotationSink {
|
|
116
|
+
/** Must not throw on sink faults — a note must never fail the step. */
|
|
117
|
+
note(record: NoteRecord): Promise<void>;
|
|
118
|
+
log(text: string): Promise<void>;
|
|
119
|
+
}
|
|
120
|
+
|
|
109
121
|
type FrameFormat = "png" | "webp";
|
|
110
122
|
|
|
111
123
|
interface ScreenshotSink {
|
|
@@ -152,6 +164,10 @@ interface TestRuntimeDeps {
|
|
|
152
164
|
* wires it to the run's steps.jsonl; absent in ad-hoc / explore
|
|
153
165
|
* runtimes (the verdict then lives only in the assertion error). */
|
|
154
166
|
readonly judgeVerdicts?: JudgeVerdictSink;
|
|
167
|
+
/** Sink for `note(label, value)` and `log(...)` — the CLI runner wires
|
|
168
|
+
* it to the run's steps.jsonl; absent in ad-hoc / explore runtimes
|
|
169
|
+
* (`log` still reaches the logger, `note` is logged in its place). */
|
|
170
|
+
readonly annotations?: AnnotationSink;
|
|
155
171
|
}
|
|
156
172
|
declare class TestRuntime {
|
|
157
173
|
readonly runId: string;
|
|
@@ -163,6 +179,7 @@ declare class TestRuntime {
|
|
|
163
179
|
readonly screenshots?: ScreenshotSink;
|
|
164
180
|
readonly judge?: Judge;
|
|
165
181
|
readonly judgeVerdicts?: JudgeVerdictSink;
|
|
182
|
+
readonly annotations?: AnnotationSink;
|
|
166
183
|
private readonly variables;
|
|
167
184
|
private readonly nowFn;
|
|
168
185
|
private readonly scope;
|
|
@@ -240,12 +257,34 @@ interface ActiveRuntime {
|
|
|
240
257
|
/** Label of the enclosing `step("…")` block, when the failing
|
|
241
258
|
* statement ran inside one — the human-readable intent for reports. */
|
|
242
259
|
stepLabel?: string;
|
|
260
|
+
/** Evaluated `{tag}` of that block — the case a data-driven step was on. */
|
|
261
|
+
stepTag?: string;
|
|
262
|
+
/** Set once the enclosing `step.soft(...)` closed over this failure:
|
|
263
|
+
* the run went on, this is not where it stopped. */
|
|
264
|
+
soft?: boolean;
|
|
243
265
|
error: {
|
|
244
266
|
message: string;
|
|
245
267
|
stack?: string;
|
|
246
268
|
details?: unknown;
|
|
247
269
|
};
|
|
248
270
|
} | null;
|
|
271
|
+
/** Every `step.soft(...)` block that failed so far, in run order. The
|
|
272
|
+
* first one is the moment the failure bundle shows. */
|
|
273
|
+
softFailures: SoftFailureRecord[];
|
|
274
|
+
/** True between the innermost step-end failure and the next step-start:
|
|
275
|
+
* the same error is closing enclosing statements, `lastFailure` stays
|
|
276
|
+
* on the statement that raised it. */
|
|
277
|
+
unwinding: boolean;
|
|
278
|
+
/** The failure this run stopped at, kept from the moment the executor
|
|
279
|
+
* paused on it.
|
|
280
|
+
*
|
|
281
|
+
* It exists because continuing is how a failure gets INSPECTED: with
|
|
282
|
+
* `pauseOnFailure`, the walker holds at the error and, once resumed,
|
|
283
|
+
* carries on with the next statement — so a run that broke can still
|
|
284
|
+
* reach the end and report `completed`. It did not stop being broken
|
|
285
|
+
* because somebody looked at it, and the verdict must not depend on
|
|
286
|
+
* whether anyone did. */
|
|
287
|
+
pausedOnFailure: ActiveRuntime['lastFailure'];
|
|
249
288
|
lastResult: RunResult | null;
|
|
250
289
|
createdAt: number;
|
|
251
290
|
/** Active TTL timer (only when state is paused-failure). */
|
|
@@ -268,6 +307,7 @@ interface RuntimeSnapshot {
|
|
|
268
307
|
activePageIndex: number | null;
|
|
269
308
|
lastEvent: ExecutionEvent | null;
|
|
270
309
|
lastFailure: ActiveRuntime['lastFailure'];
|
|
310
|
+
softFailures: readonly SoftFailureRecord[];
|
|
271
311
|
lastResult: RunResult | null;
|
|
272
312
|
}
|
|
273
313
|
interface TestRuntimeManagerDeps {
|
|
@@ -298,6 +338,16 @@ declare class TestRuntimeManager {
|
|
|
298
338
|
runOptions: RunOptions;
|
|
299
339
|
}): string;
|
|
300
340
|
pump(id: string): Promise<ExecutionEvent | RunResult>;
|
|
341
|
+
/** The run's verdict — the executor's own, corrected for the one thing
|
|
342
|
+
* it cannot see: that a failure it paused on was resumed rather than
|
|
343
|
+
* fixed.
|
|
344
|
+
*
|
|
345
|
+
* Only that case. A run the executor already calls failed keeps its own
|
|
346
|
+
* error and its soft failures; a clean run stays clean. (Mobile's
|
|
347
|
+
* `resumeRetriesFailedStep` re-runs the failed statement instead of
|
|
348
|
+
* going past it — web never sets it, and if it ever does, the retry's
|
|
349
|
+
* own `step-end` decides and this correction has to be revisited.) */
|
|
350
|
+
private verdict;
|
|
301
351
|
step(id: string): Promise<ExecutionEvent | RunResult>;
|
|
302
352
|
resume(id: string): Promise<ExecutionEvent | RunResult>;
|
|
303
353
|
abort(id: string): Promise<void>;
|