@e2edev/e2e 0.4.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -15
- package/dist/agent/act.d.ts +1 -1
- package/dist/agent/act.js +12 -36
- package/dist/agent/act.js.map +1 -1
- package/dist/agent/actions.d.ts +2 -2
- package/dist/agent/actions.d.ts.map +1 -1
- package/dist/agent/actions.js +1 -1
- package/dist/agent/default-agent.d.ts +3 -29
- package/dist/agent/default-agent.d.ts.map +1 -1
- package/dist/agent/default-agent.js +4 -11
- package/dist/agent/default-agent.js.map +1 -1
- package/dist/agent/error.d.ts +0 -2
- package/dist/agent/error.d.ts.map +1 -1
- package/dist/agent/error.js +1 -3
- package/dist/agent/error.js.map +1 -1
- package/dist/agent/executor.d.ts +15 -49
- package/dist/agent/executor.d.ts.map +1 -1
- package/dist/agent/executor.js +0 -1
- package/dist/agent/executor.js.map +1 -1
- package/dist/agent/index.js +2 -2
- package/dist/agent/invocation.d.ts +6 -4
- package/dist/agent/invocation.d.ts.map +1 -1
- package/dist/agent/invocation.js +2 -2
- package/dist/agent/invocation.js.map +1 -1
- package/dist/agent/ledger.d.ts +16 -11
- package/dist/agent/ledger.d.ts.map +1 -1
- package/dist/agent/ledger.js +5 -8
- package/dist/agent/ledger.js.map +1 -1
- package/dist/agent/observation.d.ts +6 -6
- package/dist/agent/observation.d.ts.map +1 -1
- package/dist/agent/observation.js +5 -5
- package/dist/agent/observation.js.map +1 -1
- package/dist/agent/phases.d.ts +3 -3
- package/dist/agent/phases.d.ts.map +1 -1
- package/dist/agent/phases.js +4 -4
- package/dist/agent/phases.js.map +1 -1
- package/dist/agent/primitives.d.ts +4 -25
- package/dist/agent/primitives.d.ts.map +1 -1
- package/dist/agent/primitives.js +3 -36
- package/dist/agent/primitives.js.map +1 -1
- package/dist/agent/protocol.d.ts +1 -1
- package/dist/agent/protocol.js +1 -1
- package/dist/agent/public.d.ts +7 -9
- package/dist/agent/public.d.ts.map +1 -1
- package/dist/agent/public.js +6 -7
- package/dist/agent/public.js.map +1 -1
- package/dist/agent/replay.d.ts +1 -1
- package/dist/agent/replay.d.ts.map +1 -1
- package/dist/agent/secrets.d.ts +2 -2
- package/dist/agent/secrets.d.ts.map +1 -1
- package/dist/agent/secrets.js +3 -3
- package/dist/agent/secrets.js.map +1 -1
- package/dist/agent/tool-loop.d.ts +2 -30
- package/dist/agent/tool-loop.d.ts.map +1 -1
- package/dist/agent/tool-loop.js +9 -33
- package/dist/agent/tool-loop.js.map +1 -1
- package/dist/agent/tool.d.ts +4 -5
- package/dist/agent/tool.d.ts.map +1 -1
- package/dist/agent/tool.js +2 -7
- package/dist/agent/tool.js.map +1 -1
- package/dist/cache/anchors.d.ts +1 -1
- package/dist/cache/anchors.d.ts.map +1 -1
- package/dist/cache/identity.d.ts +8 -8
- package/dist/cache/identity.d.ts.map +1 -1
- package/dist/cache/identity.js +5 -5
- package/dist/cache/identity.js.map +1 -1
- package/dist/cache/relocate.d.ts +1 -1
- package/dist/cache/relocate.d.ts.map +1 -1
- package/dist/cli/index.js +3 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/{backends.d.ts → engines.d.ts} +12 -13
- package/dist/cli/init/engines.d.ts.map +1 -0
- package/dist/cli/init/{backends.js → engines.js} +13 -14
- package/dist/cli/init/engines.js.map +1 -0
- package/dist/cli/init/scaffold.d.ts +3 -3
- package/dist/cli/init/scaffold.d.ts.map +1 -1
- package/dist/cli/init/scaffold.js +9 -9
- package/dist/cli/init/scaffold.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +11 -10
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/signals.d.ts +1 -1
- package/dist/cli/signals.d.ts.map +1 -1
- package/dist/cli/signals.js +1 -1
- package/dist/cli/signals.js.map +1 -1
- package/dist/collect/collect.d.ts +32 -3
- package/dist/collect/collect.d.ts.map +1 -1
- package/dist/collect/collect.js +95 -17
- package/dist/collect/collect.js.map +1 -1
- package/dist/collect/registry.js +1 -1
- package/dist/collect/registry.js.map +1 -1
- package/dist/collect/select.d.ts.map +1 -1
- package/dist/collect/select.js +9 -5
- package/dist/collect/select.js.map +1 -1
- package/dist/config/app.d.ts +76 -19
- package/dist/config/app.d.ts.map +1 -1
- package/dist/config/app.js +157 -102
- package/dist/config/app.js.map +1 -1
- package/dist/config/resolve.d.ts +6 -5
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +35 -32
- package/dist/config/resolve.js.map +1 -1
- package/dist/{backend → engine}/contract.d.ts +26 -18
- package/dist/engine/contract.d.ts.map +1 -0
- package/dist/{backend → engine}/contract.js +18 -18
- package/dist/engine/contract.js.map +1 -0
- package/dist/{backend → engine}/index.d.ts +141 -79
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/{backend → engine}/index.js +60 -35
- package/dist/engine/index.js.map +1 -0
- package/dist/engine/session.d.ts +23 -0
- package/dist/engine/session.d.ts.map +1 -0
- package/dist/{backend → engine}/session.js +55 -51
- package/dist/engine/session.js.map +1 -0
- package/dist/{backend → engine}/surface.d.ts +11 -11
- package/dist/engine/surface.d.ts.map +1 -0
- package/dist/{backend → engine}/surface.js +2 -2
- package/dist/engine/surface.js.map +1 -0
- package/dist/engine/timing.d.ts.map +1 -0
- package/dist/engine/timing.js +8 -0
- package/dist/engine/timing.js.map +1 -0
- package/dist/expect/index.js +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/brands.d.ts +1 -1
- package/dist/internal/brands.d.ts.map +1 -1
- package/dist/internal/brands.js +1 -1
- package/dist/internal/brands.js.map +1 -1
- package/dist/internal/errors.d.ts +16 -16
- package/dist/internal/errors.d.ts.map +1 -1
- package/dist/internal/errors.js +39 -39
- package/dist/internal/errors.js.map +1 -1
- package/dist/internal/objects.d.ts +21 -0
- package/dist/internal/objects.d.ts.map +1 -0
- package/dist/internal/objects.js +14 -0
- package/dist/internal/objects.js.map +1 -0
- package/dist/internal/urls.d.ts +1 -1
- package/dist/internal/urls.d.ts.map +1 -1
- package/dist/internal/urls.js +6 -1
- package/dist/internal/urls.js.map +1 -1
- package/dist/locator/engine.d.ts +6 -6
- package/dist/locator/engine.d.ts.map +1 -1
- package/dist/locator/engine.js +13 -13
- package/dist/locator/engine.js.map +1 -1
- package/dist/locator/expression.d.ts +4 -2
- package/dist/locator/expression.d.ts.map +1 -1
- package/dist/locator/expression.js +24 -4
- package/dist/locator/expression.js.map +1 -1
- package/dist/locator/screen.d.ts +1 -1
- package/dist/locator/screen.d.ts.map +1 -1
- package/dist/locator/screen.js +2 -2
- package/dist/locator/screen.js.map +1 -1
- package/dist/report/build.d.ts +9 -8
- package/dist/report/build.d.ts.map +1 -1
- package/dist/report/build.js +21 -18
- package/dist/report/build.js.map +1 -1
- package/dist/report/code-frame.d.ts +8 -4
- package/dist/report/code-frame.d.ts.map +1 -1
- package/dist/report/code-frame.js +23 -18
- package/dist/report/code-frame.js.map +1 -1
- package/dist/report/debug-steps.js +1 -1
- package/dist/report/debug-steps.js.map +1 -1
- package/dist/report/format.d.ts +73 -0
- package/dist/report/format.d.ts.map +1 -0
- package/dist/report/format.js +147 -0
- package/dist/report/format.js.map +1 -0
- package/dist/report/list.d.ts +96 -47
- package/dist/report/list.d.ts.map +1 -1
- package/dist/report/list.js +485 -244
- package/dist/report/list.js.map +1 -1
- package/dist/report/live-window.d.ts +28 -0
- package/dist/report/live-window.d.ts.map +1 -0
- package/dist/report/live-window.js +102 -0
- package/dist/report/live-window.js.map +1 -0
- package/dist/run/declared-processes.d.ts +30 -0
- package/dist/run/declared-processes.d.ts.map +1 -0
- package/dist/run/declared-processes.js +61 -0
- package/dist/run/declared-processes.js.map +1 -0
- package/dist/run/events.d.ts +30 -2
- package/dist/run/events.d.ts.map +1 -1
- package/dist/run/events.js.map +1 -1
- package/dist/run/execute.d.ts +17 -13
- package/dist/run/execute.d.ts.map +1 -1
- package/dist/run/execute.js +61 -62
- package/dist/run/execute.js.map +1 -1
- package/dist/run/fixture-recording.d.ts +10 -4
- package/dist/run/fixture-recording.d.ts.map +1 -1
- package/dist/run/fixture-recording.js +19 -6
- package/dist/run/fixture-recording.js.map +1 -1
- package/dist/run/fixtures.d.ts +1 -1
- package/dist/run/fixtures.d.ts.map +1 -1
- package/dist/run/fixtures.js +33 -41
- package/dist/run/fixtures.js.map +1 -1
- package/dist/run/in-process.d.ts +1 -1
- package/dist/run/in-process.js +1 -1
- package/dist/run/managed-process.d.ts +39 -9
- package/dist/run/managed-process.d.ts.map +1 -1
- package/dist/run/managed-process.js +102 -34
- package/dist/run/managed-process.js.map +1 -1
- package/dist/run/runner.d.ts +1 -1
- package/dist/run/runner.d.ts.map +1 -1
- package/dist/run/runner.js +67 -31
- package/dist/run/runner.js.map +1 -1
- package/dist/run/scheduler.d.ts +4 -3
- package/dist/run/scheduler.d.ts.map +1 -1
- package/dist/run/scheduler.js +5 -4
- package/dist/run/scheduler.js.map +1 -1
- package/dist/run/serial.d.ts +9 -1
- package/dist/run/serial.d.ts.map +1 -1
- package/dist/run/serial.js +2 -0
- package/dist/run/serial.js.map +1 -1
- package/dist/run/sessions.d.ts +9 -9
- package/dist/run/sessions.d.ts.map +1 -1
- package/dist/run/sessions.js +10 -10
- package/dist/run/sessions.js.map +1 -1
- package/dist/run/steps.d.ts +1 -1
- package/dist/run/steps.d.ts.map +1 -1
- package/dist/run/worker/entry.d.ts +1 -1
- package/dist/run/worker/entry.js +2 -2
- package/dist/run/worker/entry.js.map +1 -1
- package/dist/run/worker/protocol.d.ts +18 -6
- package/dist/run/worker/protocol.d.ts.map +1 -1
- package/dist/run/worker/protocol.js +1 -1
- package/dist/run/worker/protocol.js.map +1 -1
- package/dist/run/worker/session.d.ts +2 -2
- package/dist/run/worker/session.d.ts.map +1 -1
- package/dist/run/worker/session.js +5 -3
- package/dist/run/worker/session.js.map +1 -1
- package/dist/types.d.ts +36 -37
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -5
- package/dist/backend/contract.d.ts.map +0 -1
- package/dist/backend/contract.js.map +0 -1
- package/dist/backend/index.d.ts.map +0 -1
- package/dist/backend/index.js.map +0 -1
- package/dist/backend/session.d.ts +0 -23
- package/dist/backend/session.d.ts.map +0 -1
- package/dist/backend/session.js.map +0 -1
- package/dist/backend/surface.d.ts.map +0 -1
- package/dist/backend/surface.js.map +0 -1
- package/dist/backend/timing.d.ts.map +0 -1
- package/dist/backend/timing.js +0 -8
- package/dist/backend/timing.js.map +0 -1
- package/dist/cli/init/backends.d.ts.map +0 -1
- package/dist/cli/init/backends.js.map +0 -1
- package/dist/report/live-status.d.ts +0 -51
- package/dist/report/live-status.d.ts.map +0 -1
- package/dist/report/live-status.js +0 -163
- package/dist/report/live-status.js.map +0 -1
- package/dist/run/fixture-legacy.d.ts +0 -36
- package/dist/run/fixture-legacy.d.ts.map +0 -1
- package/dist/run/fixture-legacy.js +0 -143
- package/dist/run/fixture-legacy.js.map +0 -1
- /package/dist/{backend → engine}/timing.d.ts +0 -0
package/dist/internal/errors.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Runner-owned error taxonomy and exit-code mapping (spec 06-cli.md). */
|
|
2
|
-
import {
|
|
2
|
+
import { ENGINE_ERROR_CODES, EngineError, RETRYABLE_ENGINE_ERROR_CODES, } from '../engine/contract.js';
|
|
3
3
|
/** Message of an arbitrary thrown value, for diagnostics that must not throw. */
|
|
4
4
|
export function errorMessage(cause) {
|
|
5
5
|
return cause instanceof Error ? cause.message : String(cause);
|
|
@@ -7,32 +7,32 @@ export function errorMessage(cause) {
|
|
|
7
7
|
/** Marks classified errors so instances survive isolated module realms. */
|
|
8
8
|
const E2E_ERROR_MARKER = Symbol.for('e2e.error.v1');
|
|
9
9
|
/**
|
|
10
|
-
* Normalizes
|
|
11
|
-
*
|
|
10
|
+
* Normalizes an engine failure, including one thrown by another copy of the
|
|
11
|
+
* engine module.
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
* registry than the runner, so its `
|
|
13
|
+
* An engine imported by a config file is loaded through a different module
|
|
14
|
+
* registry than the runner, so its `EngineError` is a different class and
|
|
15
15
|
* `instanceof` misses it. Detection is therefore structural, keyed on the
|
|
16
|
-
* closed code set: without this, every out-of-tree
|
|
16
|
+
* closed code set: without this, every out-of-tree engine's typed failures
|
|
17
17
|
* silently degrade to a generic error and lose their taxonomy. A foreign
|
|
18
18
|
* instance is held to the same retryability rule as the local class.
|
|
19
19
|
*/
|
|
20
|
-
export function
|
|
21
|
-
if (value instanceof
|
|
20
|
+
export function asEngineError(value) {
|
|
21
|
+
if (value instanceof EngineError)
|
|
22
22
|
return value;
|
|
23
|
-
if (!(value instanceof Error) || value.name !== '
|
|
23
|
+
if (!(value instanceof Error) || value.name !== 'EngineError')
|
|
24
24
|
return undefined;
|
|
25
25
|
const code = value.code;
|
|
26
|
-
if (!
|
|
26
|
+
if (!isEngineErrorCode(code))
|
|
27
27
|
return undefined;
|
|
28
28
|
const retryable = value.retryable === true;
|
|
29
|
-
if (retryable && !
|
|
30
|
-
return { code: '
|
|
29
|
+
if (retryable && !RETRYABLE_ENGINE_ERROR_CODES.has(code)) {
|
|
30
|
+
return { code: 'ENGINE_FAILURE', message: value.message, retryable: false };
|
|
31
31
|
}
|
|
32
32
|
return { code, message: value.message, retryable };
|
|
33
33
|
}
|
|
34
|
-
function
|
|
35
|
-
return typeof value === 'string' &&
|
|
34
|
+
function isEngineErrorCode(value) {
|
|
35
|
+
return typeof value === 'string' && ENGINE_ERROR_CODES.includes(value);
|
|
36
36
|
}
|
|
37
37
|
/** Base class for every runner-classified error. */
|
|
38
38
|
export class E2EError extends Error {
|
|
@@ -117,55 +117,55 @@ export function combineExitCodes(codes) {
|
|
|
117
117
|
return 0;
|
|
118
118
|
}
|
|
119
119
|
/**
|
|
120
|
-
* Canonical
|
|
121
|
-
* Applies to every
|
|
122
|
-
* state capture/restore, and observation. Non-
|
|
123
|
-
* non-retryable infrastructure
|
|
120
|
+
* Canonical EngineError -> runner taxonomy mapping.
|
|
121
|
+
* Applies to every engine surface: lifecycle, app, screen, artifacts,
|
|
122
|
+
* state capture/restore, and observation. Non-EngineError causes become
|
|
123
|
+
* non-retryable infrastructure ENGINE_FAILURE.
|
|
124
124
|
*/
|
|
125
|
-
export function
|
|
125
|
+
export function translateEngineError(cause, suffix = '') {
|
|
126
126
|
if (cause instanceof E2EError)
|
|
127
127
|
return cause;
|
|
128
|
-
const
|
|
129
|
-
if (
|
|
130
|
-
switch (
|
|
128
|
+
const engineError = asEngineError(cause);
|
|
129
|
+
if (engineError !== undefined) {
|
|
130
|
+
switch (engineError.code) {
|
|
131
131
|
case 'NODE_STALE':
|
|
132
132
|
return new TestError('LOCATOR_NOT_FOUND', `node became stale${suffix}`, { cause });
|
|
133
133
|
case 'FRAME_NOT_FOUND':
|
|
134
|
-
return new TestError('LOCATOR_NOT_FOUND', `${
|
|
134
|
+
return new TestError('LOCATOR_NOT_FOUND', `${engineError.message}${suffix}`, { cause });
|
|
135
135
|
case 'FRAME_AMBIGUOUS':
|
|
136
|
-
return new TestError('LOCATOR_AMBIGUOUS', `${
|
|
136
|
+
return new TestError('LOCATOR_AMBIGUOUS', `${engineError.message}${suffix}`, { cause });
|
|
137
137
|
case 'NOT_ACTIONABLE':
|
|
138
|
-
return new TestError('ACTION_FAILED', `${
|
|
138
|
+
return new TestError('ACTION_FAILED', `${engineError.message}${suffix}`, { cause });
|
|
139
139
|
case 'ACTION_MAY_HAVE_COMMITTED':
|
|
140
|
-
return new TestError('ACTION_FAILED', `${
|
|
140
|
+
return new TestError('ACTION_FAILED', `${engineError.message}${suffix}`, { cause });
|
|
141
141
|
case 'OPERATION_TIMEOUT':
|
|
142
142
|
return new TestError('ACTION_FAILED', `operation timed out${suffix}`, { cause });
|
|
143
143
|
case 'CANCELLED':
|
|
144
144
|
return new E2EError('infrastructure', 'CANCELLED', 'operation cancelled', { cause });
|
|
145
145
|
case 'UNSUPPORTED_CAPABILITY':
|
|
146
|
-
return new E2EError('configuration', 'UNSUPPORTED_CAPABILITY',
|
|
146
|
+
return new E2EError('configuration', 'UNSUPPORTED_CAPABILITY', engineError.message, { cause });
|
|
147
147
|
case 'INVALID_STATE':
|
|
148
|
-
return new TestError('APP_NOT_OPEN',
|
|
149
|
-
case '
|
|
150
|
-
return new E2EError('infrastructure', '
|
|
148
|
+
return new TestError('APP_NOT_OPEN', engineError.message, { cause });
|
|
149
|
+
case 'ENGINE_FAILURE':
|
|
150
|
+
return new E2EError('infrastructure', 'ENGINE_FAILURE', engineError.message, { cause });
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
|
-
return new E2EError('infrastructure', '
|
|
153
|
+
return new E2EError('infrastructure', 'ENGINE_FAILURE', errorMessage(cause), { cause });
|
|
154
154
|
}
|
|
155
155
|
/**
|
|
156
|
-
* Classifies a failure of
|
|
156
|
+
* Classifies a failure of an engine's `prepare` hook. Provisioning runs before
|
|
157
157
|
* any test exists, so nothing thrown there can be a test failure: a harness-
|
|
158
158
|
* classified error keeps the category its author chose (a `ConfigurationError`
|
|
159
|
-
* for an option the
|
|
160
|
-
* cancellation, and everything else -
|
|
159
|
+
* for an option the engine cannot honour), an engine cancellation stays a
|
|
160
|
+
* cancellation, and everything else - an `EngineError` of any code, a plain
|
|
161
161
|
* `Error` from an installer - is infrastructure.
|
|
162
162
|
*/
|
|
163
163
|
export function translateProvisioningError(cause, suffix = '') {
|
|
164
164
|
if (cause instanceof E2EError || isForeignE2EError(cause))
|
|
165
165
|
return classifyError(cause);
|
|
166
|
-
if (
|
|
167
|
-
return
|
|
168
|
-
return new InfrastructureError('
|
|
166
|
+
if (asEngineError(cause)?.code === 'CANCELLED')
|
|
167
|
+
return translateEngineError(cause);
|
|
168
|
+
return new InfrastructureError('ENGINE_FAILURE', `${errorMessage(cause)}${suffix}`, { cause });
|
|
169
169
|
}
|
|
170
170
|
/** Classifies an arbitrary thrown value into an E2EError; unknown values become test failures. */
|
|
171
171
|
export function classifyError(value) {
|
|
@@ -177,8 +177,8 @@ export function classifyError(value) {
|
|
|
177
177
|
cause: value,
|
|
178
178
|
});
|
|
179
179
|
}
|
|
180
|
-
if (
|
|
181
|
-
return
|
|
180
|
+
if (asEngineError(value) !== undefined) {
|
|
181
|
+
return translateEngineError(value);
|
|
182
182
|
}
|
|
183
183
|
if (value instanceof Error) {
|
|
184
184
|
return new TestError('ERROR', value.message, { cause: value });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/internal/errors.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAE1E,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/internal/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Object helpers shared by the runner and, through `@e2edev/e2e/engine`, by engines. */
|
|
2
|
+
/** Keys that may be `undefined` become optional with `undefined` removed from their type. */
|
|
3
|
+
export type WithoutUndefined<T> = {
|
|
4
|
+
[K in keyof T as undefined extends T[K] ? never : K]: T[K];
|
|
5
|
+
} & {
|
|
6
|
+
[K in keyof T as undefined extends T[K] ? K : never]?: Exclude<T[K], undefined>;
|
|
7
|
+
};
|
|
8
|
+
/** Rejects arrays at the type level: the copy is a plain object, so an array-typed result would lie. */
|
|
9
|
+
type PlainObject<T> = T extends readonly unknown[] ? never : T;
|
|
10
|
+
/**
|
|
11
|
+
* Shallow copy of `value` with every `undefined`-valued key removed, typed so
|
|
12
|
+
* the result satisfies `exactOptionalPropertyTypes`: an optional property is
|
|
13
|
+
* absent, never present as `undefined`. Replaces the conditional-spread idiom
|
|
14
|
+
* (`...(x === undefined ? {} : { x })`) with one readable literal. For plain
|
|
15
|
+
* data objects only: own enumerable string keys are copied, nothing else.
|
|
16
|
+
*
|
|
17
|
+
* @example obj({ a: 1, b: undefined, c: 3 }) // { a: 1, c: 3 }
|
|
18
|
+
*/
|
|
19
|
+
export declare function obj<T extends object>(value: PlainObject<T>): WithoutUndefined<T>;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=objects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../../src/internal/objects.ts"],"names":[],"mappings":"AAAA,yFAAyF;AAEzF,6FAA6F;AAC7F,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;KAC/B,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC3D,GAAG;KACD,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;CAChF,CAAC;AAEF,wGAAwG;AACxG,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,OAAO,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;AAE/D;;;;;;;;GAQG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAIhF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Object helpers shared by the runner and, through `@e2edev/e2e/engine`, by engines. */
|
|
2
|
+
/**
|
|
3
|
+
* Shallow copy of `value` with every `undefined`-valued key removed, typed so
|
|
4
|
+
* the result satisfies `exactOptionalPropertyTypes`: an optional property is
|
|
5
|
+
* absent, never present as `undefined`. Replaces the conditional-spread idiom
|
|
6
|
+
* (`...(x === undefined ? {} : { x })`) with one readable literal. For plain
|
|
7
|
+
* data objects only: own enumerable string keys are copied, nothing else.
|
|
8
|
+
*
|
|
9
|
+
* @example obj({ a: 1, b: undefined, c: 3 }) // { a: 1, c: 3 }
|
|
10
|
+
*/
|
|
11
|
+
export function obj(value) {
|
|
12
|
+
return Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== undefined));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=objects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objects.js","sourceRoot":"","sources":["../../src/internal/objects.ts"],"names":[],"mappings":"AAAA,yFAAyF;AAYzF;;;;;;;;GAQG;AACH,MAAM,UAAU,GAAG,CAAmB,KAAqB;IACzD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAC1C,CAAC;AAC3B,CAAC"}
|
package/dist/internal/urls.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export declare function isImplicitTestHost(hostname: string): boolean;
|
|
|
20
20
|
* Resolves a navigation URL against the base and enforces the allowed-origin
|
|
21
21
|
* policy. Returns the absolute URL string.
|
|
22
22
|
*/
|
|
23
|
-
export declare function resolveNavigationUrl(input: string, base: NormalizedBaseUrl, allowedOrigins: readonly string[]): {
|
|
23
|
+
export declare function resolveNavigationUrl(input: string, base: NormalizedBaseUrl | undefined, allowedOrigins: readonly string[]): {
|
|
24
24
|
url: string;
|
|
25
25
|
};
|
|
26
26
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../../src/internal/urls.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAKvE,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CA0B/D;AAoBD,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKxD;AAED,uFAAuF;AACvF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE5D;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../../src/internal/urls.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAKvE,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CA0B/D;AAoBD,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKxD;AAED,uFAAuF;AACvF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE5D;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,iBAAiB,GAAG,SAAS,EACnC,cAAc,EAAE,SAAS,MAAM,EAAE,GAChC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAyBjB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAWhG"}
|
package/dist/internal/urls.js
CHANGED
|
@@ -73,9 +73,14 @@ const FORBIDDEN_PROTOCOLS = new Set(['file:', 'data:', 'javascript:']);
|
|
|
73
73
|
export function resolveNavigationUrl(input, base, allowedOrigins) {
|
|
74
74
|
let url;
|
|
75
75
|
try {
|
|
76
|
-
url = new URL(input, base
|
|
76
|
+
url = new URL(input, base?.href);
|
|
77
77
|
}
|
|
78
78
|
catch {
|
|
79
|
+
// A relative reference has nothing to resolve against on a target whose
|
|
80
|
+
// engine declares no URL; that is a missing URL, not a malformed one.
|
|
81
|
+
if (base === undefined && !URL.canParse(input)) {
|
|
82
|
+
throw new ConfigurationError('APP_URL_REQUIRED', `navigation to "${input}" needs an app URL; the target's engine declares none`);
|
|
83
|
+
}
|
|
79
84
|
throw new ConfigurationError('POLICY_DENIED', `malformed URL: ${input}`);
|
|
80
85
|
}
|
|
81
86
|
if (FORBIDDEN_PROTOCOLS.has(url.protocol)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urls.js","sourceRoot":"","sources":["../../src/internal/urls.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"urls.js","sourceRoot":"","sources":["../../src/internal/urls.ts"],"names":[],"mappings":"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"}
|
package/dist/locator/engine.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/** Runner-owned query polling, strictness, and action retry (spec 08-platforms.md). */
|
|
2
|
-
import { type TargetSession, type LocatorAction, type LocatorExpression, type NodeRef, type OperationContext, type SemanticNode } from '../
|
|
2
|
+
import { type TargetSession, type LocatorAction, type LocatorExpression, type NodeRef, type OperationContext, type SemanticNode } from '../engine/surface.ts';
|
|
3
3
|
import { E2EError } from '../internal/errors.ts';
|
|
4
4
|
import { Deadline } from '../internal/time.ts';
|
|
5
5
|
import type { AttemptBudget } from '../run/budget.ts';
|
|
6
6
|
/** Canonical visibility predicate over a semantic node snapshot. */
|
|
7
7
|
export declare function isNodeVisible(node: SemanticNode | null): boolean;
|
|
8
|
-
interface
|
|
8
|
+
interface LocatorEngineOptions {
|
|
9
9
|
readonly session: TargetSession;
|
|
10
10
|
/** The running phase's signal and deadline, read per operation. */
|
|
11
11
|
readonly budget: AttemptBudget;
|
|
@@ -17,7 +17,7 @@ interface EngineOptions {
|
|
|
17
17
|
/** Per-attempt locator execution engine. */
|
|
18
18
|
export declare class LocatorEngine {
|
|
19
19
|
private readonly options;
|
|
20
|
-
constructor(options:
|
|
20
|
+
constructor(options: LocatorEngineOptions);
|
|
21
21
|
get session(): TargetSession;
|
|
22
22
|
/** The running phase's signal: the attempt's through the body, a hook's own in teardown. */
|
|
23
23
|
get signal(): AbortSignal;
|
|
@@ -27,7 +27,7 @@ export declare class LocatorEngine {
|
|
|
27
27
|
/** Deadline for one action-family operation, capped by the running phase's deadline. */
|
|
28
28
|
deadline(timeoutMs?: number): Deadline;
|
|
29
29
|
private operationWithin;
|
|
30
|
-
/** One immediate
|
|
30
|
+
/** One immediate engine resolve, retrying retryable frame misses within the deadline. */
|
|
31
31
|
private resolveOnce;
|
|
32
32
|
/**
|
|
33
33
|
* Resolves exactly one match. Zero matches poll until the deadline;
|
|
@@ -38,7 +38,7 @@ export declare class LocatorEngine {
|
|
|
38
38
|
resolveForRead(expression: LocatorExpression): Promise<NodeRef>;
|
|
39
39
|
/**
|
|
40
40
|
* Resolves all current matches once without waiting. The caller's deadline,
|
|
41
|
-
* when given, bounds internal retries of retryable
|
|
41
|
+
* when given, bounds internal retries of retryable engine errors; it
|
|
42
42
|
* defaults to the action timeout.
|
|
43
43
|
*/
|
|
44
44
|
resolveAll(expression: LocatorExpression, deadline?: Deadline): Promise<readonly NodeRef[]>;
|
|
@@ -61,7 +61,7 @@ export declare class LocatorEngine {
|
|
|
61
61
|
*/
|
|
62
62
|
perform(expression: LocatorExpression, action: LocatorAction | ((deadline: Deadline) => Promise<LocatorAction>), timeoutMs?: number): Promise<void>;
|
|
63
63
|
}
|
|
64
|
-
/** Translates
|
|
64
|
+
/** Translates an engine error into the runner-owned public taxonomy. */
|
|
65
65
|
export declare function translateLocatorError(cause: unknown, expression?: LocatorExpression): E2EError;
|
|
66
66
|
export {};
|
|
67
67
|
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/locator/engine.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAEvF,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/locator/engine.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAEvF,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,QAAQ,EAGT,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAA2B,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,oEAAoE;AACpE,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,GAAG,OAAO,CAEhE;AAED,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,4CAA4C;AAC5C,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,OAAO;IAApC,YAA6B,OAAO,EAAE,oBAAoB,EAAI;IAE9D,IAAI,OAAO,IAAI,aAAa,CAE3B;IAED,4FAA4F;IAC5F,IAAI,MAAM,IAAI,WAAW,CAExB;IAED,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED,wEAAwE;IACxE,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAE9C;IAED,wFAAwF;IACxF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAKrC;IAED,OAAO,CAAC,eAAe;IASvB,yFAAyF;YAC3E,WAAW;IAiBzB;;;OAGG;IACG,iBAAiB,CAAC,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAY3F;IAED,4FAA4F;IACtF,cAAc,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAUpE;IAED;;;;OAIG;IACG,UAAU,CACd,UAAU,EAAE,iBAAiB,EAC7B,QAAQ,GAAE,QAAoD,GAC7D,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAE7B;IAED;;;;OAIG;IACG,IAAI,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAc/D;IAED,4EAA4E;IACtE,OAAO,CACX,UAAU,EAAE,iBAAiB,EAC7B,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC;QAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAYvD;IAED;;;;;OAKG;IACG,OAAO,CACX,UAAU,EAAE,iBAAiB,EAC7B,MAAM,EAAE,aAAa,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,EACxE,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAoBf;CACF;AAaD,wEAAwE;AACxE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,iBAAiB,GAAG,QAAQ,CAG9F"}
|
package/dist/locator/engine.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Runner-owned query polling, strictness, and action retry (spec 08-platforms.md). */
|
|
2
|
-
import {} from '../
|
|
3
|
-
import {
|
|
2
|
+
import {} from '../engine/surface.js';
|
|
3
|
+
import { asEngineError, E2EError, TestError, translateEngineError, } from '../internal/errors.js';
|
|
4
4
|
import { describeExpression } from './expression.js';
|
|
5
5
|
import { Deadline, POLL_INTERVAL_MS, sleep } from '../internal/time.js';
|
|
6
6
|
/** Canonical visibility predicate over a semantic node snapshot. */
|
|
@@ -39,14 +39,14 @@ export class LocatorEngine {
|
|
|
39
39
|
attemptId: this.options.attemptId,
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
|
-
/** One immediate
|
|
42
|
+
/** One immediate engine resolve, retrying retryable frame misses within the deadline. */
|
|
43
43
|
async resolveOnce(expression, deadline) {
|
|
44
44
|
for (;;) {
|
|
45
45
|
try {
|
|
46
46
|
return await this.session.locate(expression, this.operationWithin(deadline));
|
|
47
47
|
}
|
|
48
48
|
catch (cause) {
|
|
49
|
-
if (
|
|
49
|
+
if (asEngineError(cause)?.retryable === true && !deadline.expired()) {
|
|
50
50
|
await sleep(POLL_INTERVAL_MS, this.signal);
|
|
51
51
|
continue;
|
|
52
52
|
}
|
|
@@ -80,7 +80,7 @@ export class LocatorEngine {
|
|
|
80
80
|
}
|
|
81
81
|
/**
|
|
82
82
|
* Resolves all current matches once without waiting. The caller's deadline,
|
|
83
|
-
* when given, bounds internal retries of retryable
|
|
83
|
+
* when given, bounds internal retries of retryable engine errors; it
|
|
84
84
|
* defaults to the action timeout.
|
|
85
85
|
*/
|
|
86
86
|
async resolveAll(expression, deadline = this.deadline(this.options.actionTimeout)) {
|
|
@@ -99,8 +99,8 @@ export class LocatorEngine {
|
|
|
99
99
|
return await this.session.read(ref, this.operationWithin(deadline));
|
|
100
100
|
}
|
|
101
101
|
catch (cause) {
|
|
102
|
-
const
|
|
103
|
-
if (
|
|
102
|
+
const engineError = asEngineError(cause);
|
|
103
|
+
if (engineError?.code === 'NODE_STALE' && engineError.retryable && !deadline.expired()) {
|
|
104
104
|
continue;
|
|
105
105
|
}
|
|
106
106
|
throw translateLocatorError(cause, expression);
|
|
@@ -117,7 +117,7 @@ export class LocatorEngine {
|
|
|
117
117
|
return { node, count: 1 };
|
|
118
118
|
}
|
|
119
119
|
catch (cause) {
|
|
120
|
-
if (
|
|
120
|
+
if (asEngineError(cause)?.code === 'NODE_STALE') {
|
|
121
121
|
return { node: null, count: 0 };
|
|
122
122
|
}
|
|
123
123
|
throw translateLocatorError(cause, expression);
|
|
@@ -139,9 +139,9 @@ export class LocatorEngine {
|
|
|
139
139
|
return;
|
|
140
140
|
}
|
|
141
141
|
catch (cause) {
|
|
142
|
-
const
|
|
143
|
-
if (
|
|
144
|
-
|
|
142
|
+
const engineError = asEngineError(cause);
|
|
143
|
+
if (engineError?.code === 'NODE_STALE' &&
|
|
144
|
+
engineError.retryable &&
|
|
145
145
|
!deadline.expired()) {
|
|
146
146
|
continue;
|
|
147
147
|
}
|
|
@@ -157,9 +157,9 @@ function assertSingle(refs, expression) {
|
|
|
157
157
|
}
|
|
158
158
|
return refs[0] ?? null;
|
|
159
159
|
}
|
|
160
|
-
/** Translates
|
|
160
|
+
/** Translates an engine error into the runner-owned public taxonomy. */
|
|
161
161
|
export function translateLocatorError(cause, expression) {
|
|
162
162
|
const suffix = expression === undefined ? '' : `: ${describeExpression(expression)}`;
|
|
163
|
-
return
|
|
163
|
+
return translateEngineError(cause, suffix);
|
|
164
164
|
}
|
|
165
165
|
//# sourceMappingURL=engine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/locator/engine.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAEvF,OAAO,EAON,MAAM,
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/locator/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
/** Immutable locator expression construction (spec 08-platforms.md). */
|
|
2
|
-
import type { LocatorExpression } from '../
|
|
2
|
+
import type { LocatorExpression } from '../engine/surface.ts';
|
|
3
3
|
import type { Role, RoleOptions, TextMatch, TextMatchOptions } from '../types.ts';
|
|
4
4
|
/** Builds a role query expression. */
|
|
5
5
|
export declare function roleQuery(role: Role, options: RoleOptions | undefined, scope: LocatorExpression | undefined): LocatorExpression;
|
|
6
6
|
/** Builds a text-family query expression (label, placeholder, text, displayValue). */
|
|
7
7
|
export declare function textQuery(kind: 'label' | 'placeholder' | 'text' | 'displayValue', text: TextMatch, options: TextMatchOptions | undefined, scope: LocatorExpression | undefined): LocatorExpression;
|
|
8
8
|
/** Builds a test-id query expression. */
|
|
9
|
-
export declare function testIdQuery(id: string,
|
|
9
|
+
export declare function testIdQuery(id: string, options: {
|
|
10
|
+
visible?: boolean;
|
|
11
|
+
} | undefined, scope: LocatorExpression | undefined): LocatorExpression;
|
|
10
12
|
/** Builds a filter expression; an empty filter object is an immediate error. */
|
|
11
13
|
export declare function filterExpression(source: LocatorExpression, options: {
|
|
12
14
|
hasText?: TextMatch;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../src/locator/expression.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAExE,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,
|
|
1
|
+
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../src/locator/expression.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAExE,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,sBAAsB,CAAC;AAG7E,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAElF,sCAAsC;AACtC,wBAAgB,SAAS,CACvB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,KAAK,EAAE,iBAAiB,GAAG,SAAS,GACnC,iBAAiB,CAgBnB;AAOD,sFAAsF;AACtF,wBAAgB,SAAS,CACvB,IAAI,EAAE,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,cAAc,EACvD,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,gBAAgB,GAAG,SAAS,EACrC,KAAK,EAAE,iBAAiB,GAAG,SAAS,GACnC,iBAAiB,CAYnB;AAED,yCAAyC;AACzC,wBAAgB,WAAW,CACzB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,EAC1C,KAAK,EAAE,iBAAiB,GAAG,SAAS,GACnC,iBAAiB,CAYnB;AAUD,gFAAgF;AAChF,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,GAAG,CAAC,EAAE,iBAAiB,CAAA;CAAE,GACxD,iBAAiB,CAUnB;AAED,+DAA+D;AAC/D,wBAAgB,eAAe,CAC7B,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAC/B,iBAAiB,CAKnB;AAED,6CAA6C;AAC7C,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,GAAG,MAAM,CAiCxE"}
|
|
@@ -16,16 +16,35 @@ export function roleQuery(role, options, scope) {
|
|
|
16
16
|
? { name: toTextPattern(options.name, { exact: options.exact ?? true }) }
|
|
17
17
|
: {}),
|
|
18
18
|
...(Object.keys(states).length > 0 ? { states } : {}),
|
|
19
|
+
...visibility(options),
|
|
19
20
|
};
|
|
20
21
|
return scoped({ kind: 'query', query }, scope);
|
|
21
22
|
}
|
|
23
|
+
/** The `visible` predicate is only meaningful when set; false is the default and is dropped. */
|
|
24
|
+
function visibility(options) {
|
|
25
|
+
return options?.visible === true ? { visible: true } : {};
|
|
26
|
+
}
|
|
22
27
|
/** Builds a text-family query expression (label, placeholder, text, displayValue). */
|
|
23
28
|
export function textQuery(kind, text, options, scope) {
|
|
24
|
-
return scoped({
|
|
29
|
+
return scoped({
|
|
30
|
+
kind: 'query',
|
|
31
|
+
query: {
|
|
32
|
+
kind,
|
|
33
|
+
value: toTextPattern(text, { exact: options?.exact ?? true }),
|
|
34
|
+
...visibility(options),
|
|
35
|
+
},
|
|
36
|
+
}, scope);
|
|
25
37
|
}
|
|
26
38
|
/** Builds a test-id query expression. */
|
|
27
|
-
export function testIdQuery(id, scope) {
|
|
28
|
-
return scoped({
|
|
39
|
+
export function testIdQuery(id, options, scope) {
|
|
40
|
+
return scoped({
|
|
41
|
+
kind: 'query',
|
|
42
|
+
query: {
|
|
43
|
+
kind: 'testId',
|
|
44
|
+
value: { kind: 'string', value: id, exact: true },
|
|
45
|
+
...visibility(options),
|
|
46
|
+
},
|
|
47
|
+
}, scope);
|
|
29
48
|
}
|
|
30
49
|
function scoped(expression, scope) {
|
|
31
50
|
if (scope === undefined)
|
|
@@ -60,8 +79,9 @@ export function describeExpression(expression) {
|
|
|
60
79
|
const name = query.name === undefined
|
|
61
80
|
? ''
|
|
62
81
|
: `, name: ${query.name.kind === 'string' ? JSON.stringify(query.name.value) : `/${query.name.source}/${query.name.flags}`}`;
|
|
82
|
+
const visible = query.visible === true ? ', visible: true' : '';
|
|
63
83
|
const scope = expression.scope === undefined ? '' : `${describeExpression(expression.scope)} >> `;
|
|
64
|
-
return `${scope}getBy${query.kind[0].toUpperCase()}${query.kind.slice(1)}(${value}${name})`;
|
|
84
|
+
return `${scope}getBy${query.kind[0].toUpperCase()}${query.kind.slice(1)}(${value}${name}${visible})`;
|
|
65
85
|
}
|
|
66
86
|
case 'filter': {
|
|
67
87
|
const parts = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../src/locator/expression.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAGxE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,sCAAsC;AACtC,MAAM,UAAU,SAAS,CACvB,IAAU,EACV,OAAgC,EAChC,KAAoC;IAEpC,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAU,EAAE,CAAC;QACrF,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC/C,CAAC;IACD,MAAM,KAAK,GAAkB;QAC3B,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;QACnD,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK,SAAS;YAC7B,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC,EAAE;YACzE,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../src/locator/expression.ts"],"names":[],"mappings":"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"}
|
package/dist/locator/screen.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Public Screen and Locator surfaces bound to one attempt. */
|
|
2
|
-
import type { LocatorExpression } from '../
|
|
2
|
+
import type { LocatorExpression } from '../engine/surface.ts';
|
|
3
3
|
import type { Locator, Screen, Secret } from '../types.ts';
|
|
4
4
|
import type { StepRecorder } from '../run/steps.ts';
|
|
5
5
|
import { type LocatorEngine } from './engine.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../../src/locator/screen.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAG/D,OAAO,KAAK,EAAE,iBAAiB,EAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../../src/locator/screen.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAG/D,OAAO,KAAK,EAAE,iBAAiB,EAAgB,MAAM,sBAAsB,CAAC;AAK5E,OAAO,KAAK,EAEV,OAAO,EAGP,MAAM,EACN,MAAM,EAKP,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAWhE,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,sEAAsE;IACtE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAMxD;AAED,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;CACjC;AAQD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS,CAI/E;AAED,kDAAkD;AAClD,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,CAAC,UAAU,EAAE,iBAAiB,KAAK,iBAAiB,GACzD,MAAM,CAER;AAED,kGAAkG;AAClG,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAE5F"}
|
package/dist/locator/screen.js
CHANGED
|
@@ -68,8 +68,8 @@ class ScreenImpl {
|
|
|
68
68
|
getByDisplayValue(value, options) {
|
|
69
69
|
return new LocatorImpl(this.context, this.build(textQuery('displayValue', value, options, this.scope)));
|
|
70
70
|
}
|
|
71
|
-
getByTestId(id) {
|
|
72
|
-
return new LocatorImpl(this.context, this.build(testIdQuery(id, this.scope)));
|
|
71
|
+
getByTestId(id, options) {
|
|
72
|
+
return new LocatorImpl(this.context, this.build(testIdQuery(id, options, this.scope)));
|
|
73
73
|
}
|
|
74
74
|
async swipe(options) {
|
|
75
75
|
await this.context.steps.run('screen', 'screen.swipe', options.direction, async () => {
|