e2e 0.15.2 → 0.17.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/dist/.build.json +1 -1
- package/dist/agent/act-validation.d.ts +10 -1
- package/dist/agent/act-validation.js +48 -1
- package/dist/agent/act.d.ts +1 -2
- package/dist/agent/act.js +29 -9
- package/dist/agent/action-dispatcher.d.ts +0 -1
- package/dist/agent/action-dispatcher.js +4 -6
- package/dist/agent/action-names.d.ts +0 -1
- package/dist/agent/action-names.js +0 -1
- package/dist/agent/actions.d.ts +32 -24
- package/dist/agent/actions.js +38 -25
- package/dist/agent/agent-brand.d.ts +0 -1
- package/dist/agent/agent-brand.js +0 -1
- package/dist/agent/ai-sdk.d.ts +7 -1
- package/dist/agent/ai-sdk.js +11 -1
- package/dist/agent/call-options.d.ts +0 -1
- package/dist/agent/call-options.js +0 -1
- package/dist/agent/default-agent.d.ts +0 -1
- package/dist/agent/default-agent.js +0 -1
- package/dist/agent/derived.d.ts +0 -1
- package/dist/agent/derived.js +0 -1
- package/dist/agent/error.d.ts +0 -1
- package/dist/agent/error.js +0 -1
- package/dist/agent/executor.d.ts +0 -1
- package/dist/agent/executor.js +0 -1
- package/dist/agent/index.d.ts +0 -1
- package/dist/agent/index.js +0 -1
- package/dist/agent/interactive-step.d.ts +0 -1
- package/dist/agent/interactive-step.js +0 -1
- package/dist/agent/invocation.d.ts +0 -1
- package/dist/agent/invocation.js +10 -5
- package/dist/agent/ledger.d.ts +0 -1
- package/dist/agent/ledger.js +0 -1
- package/dist/agent/loop-guards.d.ts +0 -1
- package/dist/agent/loop-guards.js +0 -1
- package/dist/agent/model/adapter.d.ts +0 -1
- package/dist/agent/model/adapter.js +0 -1
- package/dist/agent/model/overflow.d.ts +0 -1
- package/dist/agent/model/overflow.js +0 -1
- package/dist/agent/model/provider-hints.d.ts +0 -1
- package/dist/agent/model/provider-hints.js +0 -1
- package/dist/agent/model/schema.d.ts +0 -1
- package/dist/agent/model/schema.js +0 -1
- package/dist/agent/model/sdk.d.ts +0 -1
- package/dist/agent/model/sdk.js +2 -1
- package/dist/agent/model/stall.d.ts +0 -1
- package/dist/agent/model/stall.js +0 -1
- package/dist/agent/model/tool-choice.d.ts +0 -1
- package/dist/agent/model/tool-choice.js +0 -1
- package/dist/agent/observation-budget.d.ts +0 -1
- package/dist/agent/observation-budget.js +0 -1
- package/dist/agent/observation-feed.d.ts +5 -7
- package/dist/agent/observation-feed.js +5 -8
- package/dist/agent/observation.d.ts +40 -12
- package/dist/agent/observation.js +109 -60
- package/dist/agent/operation-queue.d.ts +0 -1
- package/dist/agent/operation-queue.js +0 -1
- package/dist/agent/phases.d.ts +0 -1
- package/dist/agent/phases.js +0 -1
- package/dist/agent/pixels.d.ts +0 -1
- package/dist/agent/pixels.js +0 -1
- package/dist/agent/point-tap.d.ts +8 -9
- package/dist/agent/point-tap.js +1 -2
- package/dist/agent/primitives.d.ts +6 -1
- package/dist/agent/primitives.js +4 -2
- package/dist/agent/prompts.d.ts +0 -1
- package/dist/agent/prompts.js +0 -1
- package/dist/agent/protocol.d.ts +0 -1
- package/dist/agent/protocol.js +0 -1
- package/dist/agent/public.d.ts +0 -1
- package/dist/agent/public.js +0 -1
- package/dist/agent/reading.d.ts +0 -1
- package/dist/agent/reading.js +0 -1
- package/dist/agent/replay.d.ts +19 -9
- package/dist/agent/replay.js +11 -15
- package/dist/agent/screen-update.d.ts +0 -1
- package/dist/agent/screen-update.js +0 -1
- package/dist/agent/scroll-target.d.ts +2 -4
- package/dist/agent/scroll-target.js +0 -1
- package/dist/agent/secrets.d.ts +0 -1
- package/dist/agent/secrets.js +0 -1
- package/dist/agent/settle-policy.d.ts +0 -1
- package/dist/agent/settle-policy.js +0 -1
- package/dist/agent/step-accounting.d.ts +0 -1
- package/dist/agent/step-accounting.js +0 -1
- package/dist/agent/step-cache.d.ts +41 -15
- package/dist/agent/step-cache.js +147 -63
- package/dist/agent/tool-loop.d.ts +0 -1
- package/dist/agent/tool-loop.js +2 -1
- package/dist/agent/tool-output.d.ts +0 -1
- package/dist/agent/tool-output.js +0 -1
- package/dist/agent/tool.d.ts +0 -1
- package/dist/agent/tool.js +0 -1
- package/dist/agent/transcript-compaction.d.ts +0 -1
- package/dist/agent/transcript-compaction.js +0 -1
- package/dist/agent/upload-paths.d.ts +0 -1
- package/dist/agent/upload-paths.js +0 -1
- package/dist/agent/usage.d.ts +0 -1
- package/dist/agent/usage.js +0 -1
- package/dist/cache/anchors.d.ts +72 -24
- package/dist/cache/anchors.js +233 -61
- package/dist/cache/context.d.ts +25 -15
- package/dist/cache/context.js +50 -9
- package/dist/cache/decide.d.ts +2 -3
- package/dist/cache/decide.js +4 -7
- package/dist/cache/identity.d.ts +18 -5
- package/dist/cache/identity.js +9 -5
- package/dist/cache/recorder.d.ts +15 -2
- package/dist/cache/recorder.js +36 -24
- package/dist/cache/rekeyed.d.ts +46 -0
- package/dist/cache/rekeyed.js +89 -0
- package/dist/cache/relocate.d.ts +14 -15
- package/dist/cache/relocate.js +33 -26
- package/dist/cache/route.d.ts +32 -34
- package/dist/cache/route.js +94 -51
- package/dist/cache/store.d.ts +6 -1
- package/dist/cache/store.js +21 -2
- package/dist/cache/template.d.ts +0 -1
- package/dist/cache/template.js +0 -1
- package/dist/cache/trace.d.ts +53 -15
- package/dist/cache/trace.js +70 -29
- package/dist/cli/bin.d.ts +0 -1
- package/dist/cli/bin.js +0 -1
- package/dist/cli/cache.d.ts +0 -1
- package/dist/cli/cache.js +0 -1
- package/dist/cli/docs-url.d.ts +0 -1
- package/dist/cli/docs-url.js +0 -1
- package/dist/cli/feedback.d.ts +0 -1
- package/dist/cli/feedback.js +0 -1
- package/dist/cli/guide.d.ts +0 -1
- package/dist/cli/guide.js +0 -1
- package/dist/cli/index.d.ts +0 -1
- package/dist/cli/index.js +10 -11
- package/dist/cli/init/agent-skill.d.ts +0 -1
- package/dist/cli/init/agent-skill.js +0 -1
- package/dist/cli/init/engines.d.ts +1 -4
- package/dist/cli/init/engines.js +2 -3
- package/dist/cli/init/gateways.d.ts +1 -2
- package/dist/cli/init/gateways.js +11 -2
- package/dist/cli/init/mcp-config.d.ts +0 -1
- package/dist/cli/init/mcp-config.js +0 -1
- package/dist/cli/init/package.d.ts +0 -1
- package/dist/cli/init/package.js +0 -1
- package/dist/cli/init/scaffold.d.ts +0 -1
- package/dist/cli/init/scaffold.js +0 -1
- package/dist/cli/init/sibling-versions.json +1 -1
- package/dist/cli/init/versions.d.ts +0 -9
- package/dist/cli/init/versions.js +1 -11
- package/dist/cli/init.d.ts +0 -1
- package/dist/cli/init.js +0 -1
- package/dist/cli/mcp.d.ts +9 -2
- package/dist/cli/mcp.js +14 -2
- package/dist/cli/signals.d.ts +0 -1
- package/dist/cli/signals.js +0 -1
- package/dist/cli/skill.d.ts +0 -1
- package/dist/cli/skill.js +0 -1
- package/dist/cli/telemetry.d.ts +0 -1
- package/dist/cli/telemetry.js +1 -2
- package/dist/cli/wordmark.d.ts +0 -1
- package/dist/cli/wordmark.js +0 -1
- package/dist/collect/collect.d.ts +0 -1
- package/dist/collect/collect.js +3 -2
- package/dist/collect/registry.d.ts +6 -3
- package/dist/collect/registry.js +31 -14
- package/dist/collect/select.d.ts +0 -1
- package/dist/collect/select.js +0 -1
- package/dist/config/agent.d.ts +0 -1
- package/dist/config/agent.js +0 -1
- package/dist/config/app.d.ts +0 -1
- package/dist/config/app.js +0 -1
- package/dist/config/command.d.ts +0 -1
- package/dist/config/command.js +0 -1
- package/dist/config/diagnose.d.ts +0 -1
- package/dist/config/diagnose.js +0 -1
- package/dist/config/esm-hooks.d.ts +0 -1
- package/dist/config/esm-hooks.js +0 -1
- package/dist/config/load.d.ts +0 -1
- package/dist/config/load.js +0 -1
- package/dist/config/resolve.d.ts +1 -1
- package/dist/config/resolve.js +33 -2
- package/dist/config/secrets.d.ts +0 -1
- package/dist/config/secrets.js +0 -1
- package/dist/config/targets.d.ts +0 -1
- package/dist/config/targets.js +0 -1
- package/dist/config/validate.d.ts +0 -1
- package/dist/config/validate.js +0 -1
- package/dist/engine/contract.d.ts +0 -1
- package/dist/engine/contract.js +0 -1
- package/dist/engine/index.d.ts +3 -4
- package/dist/engine/index.js +4 -4
- package/dist/engine/manifest.d.ts +0 -1
- package/dist/engine/manifest.js +0 -1
- package/dist/engine/recording.d.ts +0 -1
- package/dist/engine/recording.js +0 -1
- package/dist/engine/resolve.d.ts +0 -1
- package/dist/engine/resolve.js +0 -1
- package/dist/engine/session.d.ts +0 -1
- package/dist/engine/session.js +0 -1
- package/dist/engine/surface.d.ts +0 -1
- package/dist/engine/surface.js +0 -1
- package/dist/engine/timing.d.ts +0 -1
- package/dist/engine/timing.js +0 -1
- package/dist/expect/async.d.ts +0 -1
- package/dist/expect/async.js +101 -59
- package/dist/expect/attempt.d.ts +0 -1
- package/dist/expect/attempt.js +0 -1
- package/dist/expect/index.d.ts +0 -1
- package/dist/expect/index.js +0 -1
- package/dist/expect/poll-scope.d.ts +52 -0
- package/dist/expect/poll-scope.js +113 -0
- package/dist/expect/poll.d.ts +0 -1
- package/dist/expect/poll.js +31 -5
- package/dist/expect/soft.d.ts +0 -1
- package/dist/expect/soft.js +0 -1
- package/dist/expect/values.d.ts +0 -1
- package/dist/expect/values.js +11 -5
- package/dist/explore/body.d.ts +0 -1
- package/dist/explore/body.js +0 -1
- package/dist/explore/executor.d.ts +0 -1
- package/dist/explore/executor.js +0 -1
- package/dist/explore/index.d.ts +0 -1
- package/dist/explore/index.js +16 -2
- package/dist/explore/plan.d.ts +0 -1
- package/dist/explore/plan.js +0 -1
- package/dist/explore/progress.d.ts +0 -1
- package/dist/explore/progress.js +0 -1
- package/dist/explore/state.d.ts +0 -1
- package/dist/explore/state.js +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/internal/abandoned.d.ts +11 -0
- package/dist/internal/abandoned.js +23 -0
- package/dist/internal/ai-trace.d.ts +0 -1
- package/dist/internal/ai-trace.js +0 -1
- package/dist/internal/atomic-write.d.ts +0 -1
- package/dist/internal/atomic-write.js +0 -1
- package/dist/internal/brands.d.ts +2 -1
- package/dist/internal/brands.js +2 -1
- package/dist/internal/client-identity.d.ts +9 -0
- package/dist/internal/client-identity.js +14 -0
- package/dist/internal/debug.d.ts +0 -1
- package/dist/internal/debug.js +0 -1
- package/dist/internal/env.d.ts +0 -1
- package/dist/internal/env.js +0 -1
- package/dist/internal/errors.d.ts +0 -1
- package/dist/internal/errors.js +0 -1
- package/dist/internal/geometry.d.ts +0 -1
- package/dist/internal/geometry.js +0 -1
- package/dist/internal/git.d.ts +0 -1
- package/dist/internal/git.js +0 -1
- package/dist/internal/globs.d.ts +0 -1
- package/dist/internal/globs.js +0 -1
- package/dist/internal/ids.d.ts +0 -1
- package/dist/internal/ids.js +0 -1
- package/dist/internal/json-value.d.ts +0 -1
- package/dist/internal/json-value.js +0 -1
- package/dist/internal/keys.d.ts +0 -1
- package/dist/internal/keys.js +0 -1
- package/dist/internal/node-version.d.ts +0 -1
- package/dist/internal/node-version.js +0 -1
- package/dist/internal/objects.d.ts +0 -1
- package/dist/internal/objects.js +0 -1
- package/dist/internal/options.d.ts +0 -1
- package/dist/internal/options.js +0 -1
- package/dist/internal/package-manager.d.ts +0 -1
- package/dist/internal/package-manager.js +0 -1
- package/dist/internal/package-version.d.ts +0 -1
- package/dist/internal/package-version.js +0 -1
- package/dist/internal/paths.d.ts +0 -1
- package/dist/internal/paths.js +0 -1
- package/dist/internal/realm-slot.d.ts +0 -1
- package/dist/internal/realm-slot.js +0 -1
- package/dist/internal/recording-modes.d.ts +0 -1
- package/dist/internal/recording-modes.js +0 -1
- package/dist/internal/redact.d.ts +7 -5
- package/dist/internal/redact.js +116 -24
- package/dist/internal/regexp.d.ts +0 -1
- package/dist/internal/regexp.js +0 -1
- package/dist/internal/roles.d.ts +0 -1
- package/dist/internal/roles.js +0 -1
- package/dist/internal/skip.d.ts +0 -1
- package/dist/internal/skip.js +0 -1
- package/dist/internal/source.d.ts +0 -1
- package/dist/internal/source.js +0 -1
- package/dist/internal/standard-schema.d.ts +0 -1
- package/dist/internal/standard-schema.js +0 -1
- package/dist/internal/suggest.d.ts +0 -1
- package/dist/internal/suggest.js +0 -1
- package/dist/internal/text.d.ts +8 -1
- package/dist/internal/text.js +13 -2
- package/dist/internal/time.d.ts +6 -1
- package/dist/internal/time.js +25 -14
- package/dist/internal/urls.d.ts +9 -6
- package/dist/internal/urls.js +19 -11
- package/dist/internal/vcs.d.ts +0 -1
- package/dist/internal/vcs.js +0 -1
- package/dist/internal/zip.d.ts +0 -1
- package/dist/internal/zip.js +0 -1
- package/dist/locator/engine.d.ts +12 -3
- package/dist/locator/engine.js +8 -4
- package/dist/locator/expression.d.ts +0 -1
- package/dist/locator/expression.js +0 -1
- package/dist/locator/screen.d.ts +0 -1
- package/dist/locator/screen.js +28 -5
- package/dist/mcp/catalog.d.ts +7 -3
- package/dist/mcp/catalog.js +8 -9
- package/dist/mcp/config.d.ts +0 -1
- package/dist/mcp/config.js +0 -1
- package/dist/mcp/recording.d.ts +0 -1
- package/dist/mcp/recording.js +0 -1
- package/dist/mcp/server.d.ts +8 -1
- package/dist/mcp/server.js +8 -5
- package/dist/mcp/session.d.ts +4 -2
- package/dist/mcp/session.js +44 -22
- package/dist/mcp/sessions.d.ts +2 -1
- package/dist/mcp/sessions.js +5 -2
- package/dist/mcp/tools.d.ts +7 -6
- package/dist/mcp/tools.js +36 -11
- package/dist/mcp/usage.d.ts +61 -0
- package/dist/mcp/usage.js +73 -0
- package/dist/oauth/callback-server.d.ts +0 -1
- package/dist/oauth/callback-server.js +0 -1
- package/dist/oauth/chatgpt.d.ts +0 -1
- package/dist/oauth/chatgpt.js +3 -24
- package/dist/oauth/cli.d.ts +0 -1
- package/dist/oauth/cli.js +1 -1
- package/dist/oauth/copilot.d.ts +5 -5
- package/dist/oauth/copilot.js +80 -8
- package/dist/oauth/device-code.d.ts +0 -1
- package/dist/oauth/device-code.js +0 -1
- package/dist/oauth/errors.d.ts +0 -1
- package/dist/oauth/errors.js +0 -1
- package/dist/oauth/fetch.d.ts +0 -1
- package/dist/oauth/fetch.js +0 -1
- package/dist/oauth/grok.d.ts +0 -1
- package/dist/oauth/grok.js +2 -2
- package/dist/oauth/jwt.d.ts +0 -1
- package/dist/oauth/jwt.js +0 -1
- package/dist/oauth/login.d.ts +0 -1
- package/dist/oauth/login.js +0 -1
- package/dist/oauth/models.d.ts +0 -1
- package/dist/oauth/models.js +2 -2
- package/dist/oauth/opencode-console.d.ts +10 -0
- package/dist/oauth/opencode-console.js +133 -0
- package/dist/oauth/pkce.d.ts +0 -1
- package/dist/oauth/pkce.js +0 -1
- package/dist/oauth/providers/github-copilot.d.ts +12 -1
- package/dist/oauth/providers/github-copilot.js +80 -19
- package/dist/oauth/providers/openai.d.ts +0 -1
- package/dist/oauth/providers/openai.js +1 -2
- package/dist/oauth/providers/opencode-console.d.ts +31 -0
- package/dist/oauth/providers/opencode-console.js +148 -0
- package/dist/oauth/providers/xai.d.ts +0 -1
- package/dist/oauth/providers/xai.js +0 -1
- package/dist/oauth/providers.d.ts +2 -7
- package/dist/oauth/providers.js +3 -8
- package/dist/oauth/responses.d.ts +9 -0
- package/dist/oauth/responses.js +23 -0
- package/dist/oauth/sse.d.ts +0 -1
- package/dist/oauth/sse.js +0 -1
- package/dist/oauth/store.d.ts +0 -1
- package/dist/oauth/store.js +0 -1
- package/dist/oauth/token-endpoint.d.ts +0 -1
- package/dist/oauth/token-endpoint.js +0 -1
- package/dist/oauth/types.d.ts +0 -1
- package/dist/oauth/types.js +0 -1
- package/dist/params.d.ts +0 -1
- package/dist/params.js +0 -1
- package/dist/report/build.d.ts +26 -1
- package/dist/report/build.js +16 -9
- package/dist/report/builtin.d.ts +0 -1
- package/dist/report/builtin.js +0 -1
- package/dist/report/code-frame.d.ts +0 -1
- package/dist/report/code-frame.js +0 -1
- package/dist/report/debug-steps.d.ts +0 -1
- package/dist/report/debug-steps.js +0 -1
- package/dist/report/explore-text.d.ts +0 -1
- package/dist/report/explore-text.js +0 -1
- package/dist/report/failure-text.d.ts +6 -2
- package/dist/report/failure-text.js +14 -5
- package/dist/report/format.d.ts +10 -6
- package/dist/report/format.js +12 -6
- package/dist/report/json.d.ts +0 -1
- package/dist/report/json.js +0 -1
- package/dist/report/junit.d.ts +0 -1
- package/dist/report/junit.js +11 -13
- package/dist/report/list-explore.d.ts +0 -1
- package/dist/report/list-explore.js +0 -1
- package/dist/report/list-model.d.ts +0 -1
- package/dist/report/list-model.js +0 -1
- package/dist/report/list-steps.d.ts +0 -1
- package/dist/report/list-steps.js +0 -1
- package/dist/report/list.d.ts +1 -1
- package/dist/report/list.js +38 -19
- package/dist/report/live-window.d.ts +0 -1
- package/dist/report/live-window.js +0 -1
- package/dist/report/markdown-text.d.ts +0 -1
- package/dist/report/markdown-text.js +0 -1
- package/dist/report/markdown.d.ts +1 -2
- package/dist/report/markdown.js +37 -15
- package/dist/report/outcome.d.ts +0 -1
- package/dist/report/outcome.js +0 -1
- package/dist/report/repeats.d.ts +6 -2
- package/dist/report/repeats.js +12 -4
- package/dist/report/running-tree.d.ts +0 -1
- package/dist/report/running-tree.js +0 -1
- package/dist/report/write.d.ts +0 -1
- package/dist/report/write.js +0 -1
- package/dist/run/app-ports.d.ts +0 -1
- package/dist/run/app-ports.js +0 -1
- package/dist/run/artifacts.d.ts +18 -1
- package/dist/run/artifacts.js +68 -2
- package/dist/run/budget.d.ts +0 -1
- package/dist/run/budget.js +0 -1
- package/dist/run/declared-processes.d.ts +0 -1
- package/dist/run/declared-processes.js +0 -1
- package/dist/run/events.d.ts +0 -1
- package/dist/run/events.js +0 -1
- package/dist/run/execute.d.ts +9 -1
- package/dist/run/execute.js +55 -29
- package/dist/run/extended-fixtures.d.ts +0 -1
- package/dist/run/extended-fixtures.js +6 -3
- package/dist/run/failure-evidence.d.ts +0 -1
- package/dist/run/failure-evidence.js +4 -3
- package/dist/run/fixture-recording.d.ts +0 -1
- package/dist/run/fixture-recording.js +0 -1
- package/dist/run/fixtures.d.ts +0 -1
- package/dist/run/fixtures.js +6 -9
- package/dist/run/in-process.d.ts +2 -1
- package/dist/run/in-process.js +1 -1
- package/dist/run/last-run.d.ts +42 -9
- package/dist/run/last-run.js +121 -15
- package/dist/run/managed-process.d.ts +0 -1
- package/dist/run/managed-process.js +0 -1
- package/dist/run/output.d.ts +0 -1
- package/dist/run/output.js +0 -1
- package/dist/run/process-pool.d.ts +0 -1
- package/dist/run/process-pool.js +0 -1
- package/dist/run/provision.d.ts +0 -1
- package/dist/run/provision.js +0 -1
- package/dist/run/realm.d.ts +6 -2
- package/dist/run/realm.js +21 -8
- package/dist/run/records.d.ts +16 -1
- package/dist/run/records.js +26 -1
- package/dist/run/retry.d.ts +3 -2
- package/dist/run/retry.js +4 -3
- package/dist/run/runner.d.ts +3 -2
- package/dist/run/runner.js +70 -32
- package/dist/run/scheduler.d.ts +0 -1
- package/dist/run/scheduler.js +0 -1
- package/dist/run/secrecy.d.ts +15 -1
- package/dist/run/secrecy.js +27 -2
- package/dist/run/serial.d.ts +2 -1
- package/dist/run/serial.js +8 -6
- package/dist/run/sessions.d.ts +0 -1
- package/dist/run/sessions.js +0 -1
- package/dist/run/standalone.d.ts +0 -1
- package/dist/run/standalone.js +3 -3
- package/dist/run/steps.d.ts +2 -9
- package/dist/run/steps.js +7 -22
- package/dist/run/trace-redaction.d.ts +0 -1
- package/dist/run/trace-redaction.js +0 -1
- package/dist/run/unit-runner.d.ts +0 -1
- package/dist/run/unit-runner.js +0 -1
- package/dist/run/units.d.ts +0 -1
- package/dist/run/units.js +0 -1
- package/dist/run/worker/entry.d.ts +0 -1
- package/dist/run/worker/entry.js +7 -7
- package/dist/run/worker/handle.d.ts +0 -1
- package/dist/run/worker/handle.js +0 -1
- package/dist/run/worker/protocol.d.ts +2 -1
- package/dist/run/worker/protocol.js +0 -1
- package/dist/run/worker/session.d.ts +2 -1
- package/dist/run/worker/session.js +1 -1
- package/dist/run/worker-models.d.ts +0 -1
- package/dist/run/worker-models.js +0 -1
- package/dist/secrets.d.ts +0 -1
- package/dist/secrets.js +0 -1
- package/dist/telemetry/checkout.d.ts +0 -1
- package/dist/telemetry/checkout.js +0 -1
- package/dist/telemetry/environment.d.ts +0 -1
- package/dist/telemetry/environment.js +0 -1
- package/dist/telemetry/events.d.ts +26 -10
- package/dist/telemetry/events.js +108 -13
- package/dist/telemetry/failure-kind.d.ts +0 -1
- package/dist/telemetry/failure-kind.js +0 -1
- package/dist/telemetry/posthog.d.ts +0 -1
- package/dist/telemetry/posthog.js +0 -1
- package/dist/telemetry/project.d.ts +0 -1
- package/dist/telemetry/project.js +0 -1
- package/dist/telemetry/store.d.ts +0 -1
- package/dist/telemetry/store.js +0 -1
- package/dist/telemetry/telemetry.d.ts +19 -8
- package/dist/telemetry/telemetry.js +26 -9
- package/dist/telemetry/token.d.ts +0 -1
- package/dist/telemetry/token.js +0 -1
- package/dist/types.d.ts +34 -26
- package/dist/types.js +0 -1
- package/docs/agents.mdx +6 -3
- package/docs/assertions.mdx +94 -0
- package/docs/authentication.mdx +3 -1
- package/docs/browser.mdx +42 -6
- package/docs/cache.mdx +64 -18
- package/docs/ci.mdx +11 -7
- package/docs/debugging.mdx +6 -3
- package/docs/executors.mdx +5 -3
- package/docs/github.mdx +12 -4
- package/docs/{writing-tests.mdx → goals.mdx} +21 -101
- package/docs/index.mdx +4 -4
- package/docs/integrations/kernel.mdx +1 -1
- package/docs/locators.mdx +64 -0
- package/docs/migrate/cypress.mdx +2 -2
- package/docs/migrate/maestro.mdx +2 -2
- package/docs/migrate/playwright.mdx +22 -16
- package/docs/migrate/selenium.mdx +2 -2
- package/docs/mobile.mdx +61 -4
- package/docs/models.mdx +53 -7
- package/docs/physical-devices.mdx +76 -0
- package/docs/quickstart.mdx +4 -3
- package/docs/reference/app.mdx +1 -1
- package/docs/reference/cli.mdx +30 -11
- package/docs/reference/config.mdx +25 -7
- package/docs/reference/engine.mdx +4 -3
- package/docs/reference/environment.mdx +8 -1
- package/docs/reference/errors.mdx +5 -5
- package/docs/reference/expect.mdx +79 -24
- package/docs/reference/mcp.mdx +3 -0
- package/docs/reference/mobile.mdx +23 -13
- package/docs/reference/reporters.mdx +8 -2
- package/docs/reference/screen.mdx +30 -7
- package/docs/reference/test.mdx +11 -4
- package/docs/reference/web.mdx +131 -23
- package/docs/security.mdx +45 -19
- package/docs/subscriptions.mdx +97 -9
- package/docs/telemetry.mdx +48 -6
- package/package.json +18 -4
- package/schema/report-v1.schema.json +14 -1
- package/skills/e2e/SKILL.md +2 -2
- package/skills/e2e/references/agent.md +22 -11
- package/skills/e2e/references/debugging.md +4 -4
- package/skills/e2e/references/mcp.md +3 -0
- package/skills/e2e/references/running.md +13 -8
- package/skills/e2e/references/setup.md +42 -15
- package/skills/e2e/references/writing-tests.md +43 -15
- package/dist/agent/act-validation.d.ts.map +0 -1
- package/dist/agent/act-validation.js.map +0 -1
- package/dist/agent/act.d.ts.map +0 -1
- package/dist/agent/act.js.map +0 -1
- package/dist/agent/action-dispatcher.d.ts.map +0 -1
- package/dist/agent/action-dispatcher.js.map +0 -1
- package/dist/agent/action-names.d.ts.map +0 -1
- package/dist/agent/action-names.js.map +0 -1
- package/dist/agent/actions.d.ts.map +0 -1
- package/dist/agent/actions.js.map +0 -1
- package/dist/agent/agent-brand.d.ts.map +0 -1
- package/dist/agent/agent-brand.js.map +0 -1
- package/dist/agent/ai-sdk.d.ts.map +0 -1
- package/dist/agent/ai-sdk.js.map +0 -1
- package/dist/agent/call-options.d.ts.map +0 -1
- package/dist/agent/call-options.js.map +0 -1
- package/dist/agent/default-agent.d.ts.map +0 -1
- package/dist/agent/default-agent.js.map +0 -1
- package/dist/agent/derived.d.ts.map +0 -1
- package/dist/agent/derived.js.map +0 -1
- package/dist/agent/error.d.ts.map +0 -1
- package/dist/agent/error.js.map +0 -1
- package/dist/agent/executor.d.ts.map +0 -1
- package/dist/agent/executor.js.map +0 -1
- package/dist/agent/index.d.ts.map +0 -1
- package/dist/agent/index.js.map +0 -1
- package/dist/agent/interactive-step.d.ts.map +0 -1
- package/dist/agent/interactive-step.js.map +0 -1
- package/dist/agent/invocation.d.ts.map +0 -1
- package/dist/agent/invocation.js.map +0 -1
- package/dist/agent/ledger.d.ts.map +0 -1
- package/dist/agent/ledger.js.map +0 -1
- package/dist/agent/loop-guards.d.ts.map +0 -1
- package/dist/agent/loop-guards.js.map +0 -1
- package/dist/agent/model/adapter.d.ts.map +0 -1
- package/dist/agent/model/adapter.js.map +0 -1
- package/dist/agent/model/overflow.d.ts.map +0 -1
- package/dist/agent/model/overflow.js.map +0 -1
- package/dist/agent/model/provider-hints.d.ts.map +0 -1
- package/dist/agent/model/provider-hints.js.map +0 -1
- package/dist/agent/model/schema.d.ts.map +0 -1
- package/dist/agent/model/schema.js.map +0 -1
- package/dist/agent/model/sdk.d.ts.map +0 -1
- package/dist/agent/model/sdk.js.map +0 -1
- package/dist/agent/model/stall.d.ts.map +0 -1
- package/dist/agent/model/stall.js.map +0 -1
- package/dist/agent/model/tool-choice.d.ts.map +0 -1
- package/dist/agent/model/tool-choice.js.map +0 -1
- package/dist/agent/observation-budget.d.ts.map +0 -1
- package/dist/agent/observation-budget.js.map +0 -1
- package/dist/agent/observation-feed.d.ts.map +0 -1
- package/dist/agent/observation-feed.js.map +0 -1
- package/dist/agent/observation.d.ts.map +0 -1
- package/dist/agent/observation.js.map +0 -1
- package/dist/agent/operation-queue.d.ts.map +0 -1
- package/dist/agent/operation-queue.js.map +0 -1
- package/dist/agent/phases.d.ts.map +0 -1
- package/dist/agent/phases.js.map +0 -1
- package/dist/agent/pixels.d.ts.map +0 -1
- package/dist/agent/pixels.js.map +0 -1
- package/dist/agent/point-tap.d.ts.map +0 -1
- package/dist/agent/point-tap.js.map +0 -1
- package/dist/agent/primitives.d.ts.map +0 -1
- package/dist/agent/primitives.js.map +0 -1
- package/dist/agent/prompts.d.ts.map +0 -1
- package/dist/agent/prompts.js.map +0 -1
- package/dist/agent/protocol.d.ts.map +0 -1
- package/dist/agent/protocol.js.map +0 -1
- package/dist/agent/public.d.ts.map +0 -1
- package/dist/agent/public.js.map +0 -1
- package/dist/agent/reading.d.ts.map +0 -1
- package/dist/agent/reading.js.map +0 -1
- package/dist/agent/replay.d.ts.map +0 -1
- package/dist/agent/replay.js.map +0 -1
- package/dist/agent/screen-update.d.ts.map +0 -1
- package/dist/agent/screen-update.js.map +0 -1
- package/dist/agent/scroll-target.d.ts.map +0 -1
- package/dist/agent/scroll-target.js.map +0 -1
- package/dist/agent/secrets.d.ts.map +0 -1
- package/dist/agent/secrets.js.map +0 -1
- package/dist/agent/settle-policy.d.ts.map +0 -1
- package/dist/agent/settle-policy.js.map +0 -1
- package/dist/agent/step-accounting.d.ts.map +0 -1
- package/dist/agent/step-accounting.js.map +0 -1
- package/dist/agent/step-cache.d.ts.map +0 -1
- package/dist/agent/step-cache.js.map +0 -1
- package/dist/agent/tool-loop.d.ts.map +0 -1
- package/dist/agent/tool-loop.js.map +0 -1
- package/dist/agent/tool-output.d.ts.map +0 -1
- package/dist/agent/tool-output.js.map +0 -1
- package/dist/agent/tool.d.ts.map +0 -1
- package/dist/agent/tool.js.map +0 -1
- package/dist/agent/transcript-compaction.d.ts.map +0 -1
- package/dist/agent/transcript-compaction.js.map +0 -1
- package/dist/agent/upload-paths.d.ts.map +0 -1
- package/dist/agent/upload-paths.js.map +0 -1
- package/dist/agent/usage.d.ts.map +0 -1
- package/dist/agent/usage.js.map +0 -1
- package/dist/cache/anchors.d.ts.map +0 -1
- package/dist/cache/anchors.js.map +0 -1
- package/dist/cache/context.d.ts.map +0 -1
- package/dist/cache/context.js.map +0 -1
- package/dist/cache/decide.d.ts.map +0 -1
- package/dist/cache/decide.js.map +0 -1
- package/dist/cache/identity.d.ts.map +0 -1
- package/dist/cache/identity.js.map +0 -1
- package/dist/cache/recorder.d.ts.map +0 -1
- package/dist/cache/recorder.js.map +0 -1
- package/dist/cache/relocate.d.ts.map +0 -1
- package/dist/cache/relocate.js.map +0 -1
- package/dist/cache/route.d.ts.map +0 -1
- package/dist/cache/route.js.map +0 -1
- package/dist/cache/store.d.ts.map +0 -1
- package/dist/cache/store.js.map +0 -1
- package/dist/cache/template.d.ts.map +0 -1
- package/dist/cache/template.js.map +0 -1
- package/dist/cache/trace.d.ts.map +0 -1
- package/dist/cache/trace.js.map +0 -1
- package/dist/cli/bin.d.ts.map +0 -1
- package/dist/cli/bin.js.map +0 -1
- package/dist/cli/cache.d.ts.map +0 -1
- package/dist/cli/cache.js.map +0 -1
- package/dist/cli/docs-url.d.ts.map +0 -1
- package/dist/cli/docs-url.js.map +0 -1
- package/dist/cli/feedback.d.ts.map +0 -1
- package/dist/cli/feedback.js.map +0 -1
- package/dist/cli/guide.d.ts.map +0 -1
- package/dist/cli/guide.js.map +0 -1
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/init/agent-skill.d.ts.map +0 -1
- package/dist/cli/init/agent-skill.js.map +0 -1
- package/dist/cli/init/engines.d.ts.map +0 -1
- package/dist/cli/init/engines.js.map +0 -1
- package/dist/cli/init/gateways.d.ts.map +0 -1
- package/dist/cli/init/gateways.js.map +0 -1
- package/dist/cli/init/mcp-config.d.ts.map +0 -1
- package/dist/cli/init/mcp-config.js.map +0 -1
- package/dist/cli/init/package.d.ts.map +0 -1
- package/dist/cli/init/package.js.map +0 -1
- package/dist/cli/init/scaffold.d.ts.map +0 -1
- package/dist/cli/init/scaffold.js.map +0 -1
- package/dist/cli/init/versions.d.ts.map +0 -1
- package/dist/cli/init/versions.js.map +0 -1
- package/dist/cli/init.d.ts.map +0 -1
- package/dist/cli/init.js.map +0 -1
- package/dist/cli/mcp.d.ts.map +0 -1
- package/dist/cli/mcp.js.map +0 -1
- package/dist/cli/signals.d.ts.map +0 -1
- package/dist/cli/signals.js.map +0 -1
- package/dist/cli/skill.d.ts.map +0 -1
- package/dist/cli/skill.js.map +0 -1
- package/dist/cli/telemetry.d.ts.map +0 -1
- package/dist/cli/telemetry.js.map +0 -1
- package/dist/cli/wordmark.d.ts.map +0 -1
- package/dist/cli/wordmark.js.map +0 -1
- package/dist/collect/collect.d.ts.map +0 -1
- package/dist/collect/collect.js.map +0 -1
- package/dist/collect/registry.d.ts.map +0 -1
- package/dist/collect/registry.js.map +0 -1
- package/dist/collect/select.d.ts.map +0 -1
- package/dist/collect/select.js.map +0 -1
- package/dist/config/agent.d.ts.map +0 -1
- package/dist/config/agent.js.map +0 -1
- package/dist/config/app.d.ts.map +0 -1
- package/dist/config/app.js.map +0 -1
- package/dist/config/command.d.ts.map +0 -1
- package/dist/config/command.js.map +0 -1
- package/dist/config/diagnose.d.ts.map +0 -1
- package/dist/config/diagnose.js.map +0 -1
- package/dist/config/esm-hooks.d.ts.map +0 -1
- package/dist/config/esm-hooks.js.map +0 -1
- package/dist/config/load.d.ts.map +0 -1
- package/dist/config/load.js.map +0 -1
- package/dist/config/resolve.d.ts.map +0 -1
- package/dist/config/resolve.js.map +0 -1
- package/dist/config/secrets.d.ts.map +0 -1
- package/dist/config/secrets.js.map +0 -1
- package/dist/config/targets.d.ts.map +0 -1
- package/dist/config/targets.js.map +0 -1
- package/dist/config/validate.d.ts.map +0 -1
- package/dist/config/validate.js.map +0 -1
- package/dist/engine/contract.d.ts.map +0 -1
- package/dist/engine/contract.js.map +0 -1
- package/dist/engine/index.d.ts.map +0 -1
- package/dist/engine/index.js.map +0 -1
- package/dist/engine/manifest.d.ts.map +0 -1
- package/dist/engine/manifest.js.map +0 -1
- package/dist/engine/recording.d.ts.map +0 -1
- package/dist/engine/recording.js.map +0 -1
- package/dist/engine/resolve.d.ts.map +0 -1
- package/dist/engine/resolve.js.map +0 -1
- package/dist/engine/session.d.ts.map +0 -1
- package/dist/engine/session.js.map +0 -1
- package/dist/engine/surface.d.ts.map +0 -1
- package/dist/engine/surface.js.map +0 -1
- package/dist/engine/timing.d.ts.map +0 -1
- package/dist/engine/timing.js.map +0 -1
- package/dist/expect/async.d.ts.map +0 -1
- package/dist/expect/async.js.map +0 -1
- package/dist/expect/attempt.d.ts.map +0 -1
- package/dist/expect/attempt.js.map +0 -1
- package/dist/expect/index.d.ts.map +0 -1
- package/dist/expect/index.js.map +0 -1
- package/dist/expect/poll.d.ts.map +0 -1
- package/dist/expect/poll.js.map +0 -1
- package/dist/expect/soft.d.ts.map +0 -1
- package/dist/expect/soft.js.map +0 -1
- package/dist/expect/values.d.ts.map +0 -1
- package/dist/expect/values.js.map +0 -1
- package/dist/explore/body.d.ts.map +0 -1
- package/dist/explore/body.js.map +0 -1
- package/dist/explore/executor.d.ts.map +0 -1
- package/dist/explore/executor.js.map +0 -1
- package/dist/explore/index.d.ts.map +0 -1
- package/dist/explore/index.js.map +0 -1
- package/dist/explore/plan.d.ts.map +0 -1
- package/dist/explore/plan.js.map +0 -1
- package/dist/explore/progress.d.ts.map +0 -1
- package/dist/explore/progress.js.map +0 -1
- package/dist/explore/state.d.ts.map +0 -1
- package/dist/explore/state.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internal/ai-trace.d.ts.map +0 -1
- package/dist/internal/ai-trace.js.map +0 -1
- package/dist/internal/atomic-write.d.ts.map +0 -1
- package/dist/internal/atomic-write.js.map +0 -1
- package/dist/internal/brands.d.ts.map +0 -1
- package/dist/internal/brands.js.map +0 -1
- package/dist/internal/debug.d.ts.map +0 -1
- package/dist/internal/debug.js.map +0 -1
- package/dist/internal/env.d.ts.map +0 -1
- package/dist/internal/env.js.map +0 -1
- package/dist/internal/errors.d.ts.map +0 -1
- package/dist/internal/errors.js.map +0 -1
- package/dist/internal/geometry.d.ts.map +0 -1
- package/dist/internal/geometry.js.map +0 -1
- package/dist/internal/git.d.ts.map +0 -1
- package/dist/internal/git.js.map +0 -1
- package/dist/internal/globs.d.ts.map +0 -1
- package/dist/internal/globs.js.map +0 -1
- package/dist/internal/ids.d.ts.map +0 -1
- package/dist/internal/ids.js.map +0 -1
- package/dist/internal/json-value.d.ts.map +0 -1
- package/dist/internal/json-value.js.map +0 -1
- package/dist/internal/keys.d.ts.map +0 -1
- package/dist/internal/keys.js.map +0 -1
- package/dist/internal/node-version.d.ts.map +0 -1
- package/dist/internal/node-version.js.map +0 -1
- package/dist/internal/objects.d.ts.map +0 -1
- package/dist/internal/objects.js.map +0 -1
- package/dist/internal/options.d.ts.map +0 -1
- package/dist/internal/options.js.map +0 -1
- package/dist/internal/package-manager.d.ts.map +0 -1
- package/dist/internal/package-manager.js.map +0 -1
- package/dist/internal/package-version.d.ts.map +0 -1
- package/dist/internal/package-version.js.map +0 -1
- package/dist/internal/paths.d.ts.map +0 -1
- package/dist/internal/paths.js.map +0 -1
- package/dist/internal/realm-slot.d.ts.map +0 -1
- package/dist/internal/realm-slot.js.map +0 -1
- package/dist/internal/recording-modes.d.ts.map +0 -1
- package/dist/internal/recording-modes.js.map +0 -1
- package/dist/internal/redact.d.ts.map +0 -1
- package/dist/internal/redact.js.map +0 -1
- package/dist/internal/regexp.d.ts.map +0 -1
- package/dist/internal/regexp.js.map +0 -1
- package/dist/internal/roles.d.ts.map +0 -1
- package/dist/internal/roles.js.map +0 -1
- package/dist/internal/skip.d.ts.map +0 -1
- package/dist/internal/skip.js.map +0 -1
- package/dist/internal/source.d.ts.map +0 -1
- package/dist/internal/source.js.map +0 -1
- package/dist/internal/standard-schema.d.ts.map +0 -1
- package/dist/internal/standard-schema.js.map +0 -1
- package/dist/internal/suggest.d.ts.map +0 -1
- package/dist/internal/suggest.js.map +0 -1
- package/dist/internal/text.d.ts.map +0 -1
- package/dist/internal/text.js.map +0 -1
- package/dist/internal/time.d.ts.map +0 -1
- package/dist/internal/time.js.map +0 -1
- package/dist/internal/urls.d.ts.map +0 -1
- package/dist/internal/urls.js.map +0 -1
- package/dist/internal/vcs.d.ts.map +0 -1
- package/dist/internal/vcs.js.map +0 -1
- package/dist/internal/zip.d.ts.map +0 -1
- package/dist/internal/zip.js.map +0 -1
- package/dist/locator/engine.d.ts.map +0 -1
- package/dist/locator/engine.js.map +0 -1
- package/dist/locator/expression.d.ts.map +0 -1
- package/dist/locator/expression.js.map +0 -1
- package/dist/locator/screen.d.ts.map +0 -1
- package/dist/locator/screen.js.map +0 -1
- package/dist/mcp/catalog.d.ts.map +0 -1
- package/dist/mcp/catalog.js.map +0 -1
- package/dist/mcp/config.d.ts.map +0 -1
- package/dist/mcp/config.js.map +0 -1
- package/dist/mcp/recording.d.ts.map +0 -1
- package/dist/mcp/recording.js.map +0 -1
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/session.d.ts.map +0 -1
- package/dist/mcp/session.js.map +0 -1
- package/dist/mcp/sessions.d.ts.map +0 -1
- package/dist/mcp/sessions.js.map +0 -1
- package/dist/mcp/tools.d.ts.map +0 -1
- package/dist/mcp/tools.js.map +0 -1
- package/dist/oauth/callback-server.d.ts.map +0 -1
- package/dist/oauth/callback-server.js.map +0 -1
- package/dist/oauth/chatgpt.d.ts.map +0 -1
- package/dist/oauth/chatgpt.js.map +0 -1
- package/dist/oauth/cli.d.ts.map +0 -1
- package/dist/oauth/cli.js.map +0 -1
- package/dist/oauth/copilot.d.ts.map +0 -1
- package/dist/oauth/copilot.js.map +0 -1
- package/dist/oauth/device-code.d.ts.map +0 -1
- package/dist/oauth/device-code.js.map +0 -1
- package/dist/oauth/errors.d.ts.map +0 -1
- package/dist/oauth/errors.js.map +0 -1
- package/dist/oauth/fetch.d.ts.map +0 -1
- package/dist/oauth/fetch.js.map +0 -1
- package/dist/oauth/grok.d.ts.map +0 -1
- package/dist/oauth/grok.js.map +0 -1
- package/dist/oauth/jwt.d.ts.map +0 -1
- package/dist/oauth/jwt.js.map +0 -1
- package/dist/oauth/login.d.ts.map +0 -1
- package/dist/oauth/login.js.map +0 -1
- package/dist/oauth/models.d.ts.map +0 -1
- package/dist/oauth/models.js.map +0 -1
- package/dist/oauth/pkce.d.ts.map +0 -1
- package/dist/oauth/pkce.js.map +0 -1
- package/dist/oauth/providers/github-copilot.d.ts.map +0 -1
- package/dist/oauth/providers/github-copilot.js.map +0 -1
- package/dist/oauth/providers/openai.d.ts.map +0 -1
- package/dist/oauth/providers/openai.js.map +0 -1
- package/dist/oauth/providers/xai.d.ts.map +0 -1
- package/dist/oauth/providers/xai.js.map +0 -1
- package/dist/oauth/providers.d.ts.map +0 -1
- package/dist/oauth/providers.js.map +0 -1
- package/dist/oauth/sse.d.ts.map +0 -1
- package/dist/oauth/sse.js.map +0 -1
- package/dist/oauth/store.d.ts.map +0 -1
- package/dist/oauth/store.js.map +0 -1
- package/dist/oauth/token-endpoint.d.ts.map +0 -1
- package/dist/oauth/token-endpoint.js.map +0 -1
- package/dist/oauth/types.d.ts.map +0 -1
- package/dist/oauth/types.js.map +0 -1
- package/dist/params.d.ts.map +0 -1
- package/dist/params.js.map +0 -1
- package/dist/report/build.d.ts.map +0 -1
- package/dist/report/build.js.map +0 -1
- package/dist/report/builtin.d.ts.map +0 -1
- package/dist/report/builtin.js.map +0 -1
- package/dist/report/code-frame.d.ts.map +0 -1
- package/dist/report/code-frame.js.map +0 -1
- package/dist/report/debug-steps.d.ts.map +0 -1
- package/dist/report/debug-steps.js.map +0 -1
- package/dist/report/explore-text.d.ts.map +0 -1
- package/dist/report/explore-text.js.map +0 -1
- package/dist/report/failure-text.d.ts.map +0 -1
- package/dist/report/failure-text.js.map +0 -1
- package/dist/report/format.d.ts.map +0 -1
- package/dist/report/format.js.map +0 -1
- package/dist/report/json.d.ts.map +0 -1
- package/dist/report/json.js.map +0 -1
- package/dist/report/junit.d.ts.map +0 -1
- package/dist/report/junit.js.map +0 -1
- package/dist/report/list-explore.d.ts.map +0 -1
- package/dist/report/list-explore.js.map +0 -1
- package/dist/report/list-model.d.ts.map +0 -1
- package/dist/report/list-model.js.map +0 -1
- package/dist/report/list-steps.d.ts.map +0 -1
- package/dist/report/list-steps.js.map +0 -1
- package/dist/report/list.d.ts.map +0 -1
- package/dist/report/list.js.map +0 -1
- package/dist/report/live-window.d.ts.map +0 -1
- package/dist/report/live-window.js.map +0 -1
- package/dist/report/markdown-text.d.ts.map +0 -1
- package/dist/report/markdown-text.js.map +0 -1
- package/dist/report/markdown.d.ts.map +0 -1
- package/dist/report/markdown.js.map +0 -1
- package/dist/report/outcome.d.ts.map +0 -1
- package/dist/report/outcome.js.map +0 -1
- package/dist/report/repeats.d.ts.map +0 -1
- package/dist/report/repeats.js.map +0 -1
- package/dist/report/running-tree.d.ts.map +0 -1
- package/dist/report/running-tree.js.map +0 -1
- package/dist/report/write.d.ts.map +0 -1
- package/dist/report/write.js.map +0 -1
- package/dist/run/app-ports.d.ts.map +0 -1
- package/dist/run/app-ports.js.map +0 -1
- package/dist/run/artifacts.d.ts.map +0 -1
- package/dist/run/artifacts.js.map +0 -1
- package/dist/run/budget.d.ts.map +0 -1
- package/dist/run/budget.js.map +0 -1
- package/dist/run/declared-processes.d.ts.map +0 -1
- package/dist/run/declared-processes.js.map +0 -1
- package/dist/run/events.d.ts.map +0 -1
- package/dist/run/events.js.map +0 -1
- package/dist/run/execute.d.ts.map +0 -1
- package/dist/run/execute.js.map +0 -1
- package/dist/run/extended-fixtures.d.ts.map +0 -1
- package/dist/run/extended-fixtures.js.map +0 -1
- package/dist/run/failure-evidence.d.ts.map +0 -1
- package/dist/run/failure-evidence.js.map +0 -1
- package/dist/run/fixture-recording.d.ts.map +0 -1
- package/dist/run/fixture-recording.js.map +0 -1
- package/dist/run/fixtures.d.ts.map +0 -1
- package/dist/run/fixtures.js.map +0 -1
- package/dist/run/in-process.d.ts.map +0 -1
- package/dist/run/in-process.js.map +0 -1
- package/dist/run/last-run.d.ts.map +0 -1
- package/dist/run/last-run.js.map +0 -1
- package/dist/run/managed-process.d.ts.map +0 -1
- package/dist/run/managed-process.js.map +0 -1
- package/dist/run/output.d.ts.map +0 -1
- package/dist/run/output.js.map +0 -1
- package/dist/run/process-pool.d.ts.map +0 -1
- package/dist/run/process-pool.js.map +0 -1
- package/dist/run/provision.d.ts.map +0 -1
- package/dist/run/provision.js.map +0 -1
- package/dist/run/realm.d.ts.map +0 -1
- package/dist/run/realm.js.map +0 -1
- package/dist/run/records.d.ts.map +0 -1
- package/dist/run/records.js.map +0 -1
- package/dist/run/retry.d.ts.map +0 -1
- package/dist/run/retry.js.map +0 -1
- package/dist/run/runner.d.ts.map +0 -1
- package/dist/run/runner.js.map +0 -1
- package/dist/run/scheduler.d.ts.map +0 -1
- package/dist/run/scheduler.js.map +0 -1
- package/dist/run/secrecy.d.ts.map +0 -1
- package/dist/run/secrecy.js.map +0 -1
- package/dist/run/serial.d.ts.map +0 -1
- package/dist/run/serial.js.map +0 -1
- package/dist/run/sessions.d.ts.map +0 -1
- package/dist/run/sessions.js.map +0 -1
- package/dist/run/standalone.d.ts.map +0 -1
- package/dist/run/standalone.js.map +0 -1
- package/dist/run/steps.d.ts.map +0 -1
- package/dist/run/steps.js.map +0 -1
- package/dist/run/trace-redaction.d.ts.map +0 -1
- package/dist/run/trace-redaction.js.map +0 -1
- package/dist/run/unit-runner.d.ts.map +0 -1
- package/dist/run/unit-runner.js.map +0 -1
- package/dist/run/units.d.ts.map +0 -1
- package/dist/run/units.js.map +0 -1
- package/dist/run/worker/entry.d.ts.map +0 -1
- package/dist/run/worker/entry.js.map +0 -1
- package/dist/run/worker/handle.d.ts.map +0 -1
- package/dist/run/worker/handle.js.map +0 -1
- package/dist/run/worker/protocol.d.ts.map +0 -1
- package/dist/run/worker/protocol.js.map +0 -1
- package/dist/run/worker/session.d.ts.map +0 -1
- package/dist/run/worker/session.js.map +0 -1
- package/dist/run/worker-models.d.ts.map +0 -1
- package/dist/run/worker-models.js.map +0 -1
- package/dist/secrets.d.ts.map +0 -1
- package/dist/secrets.js.map +0 -1
- package/dist/telemetry/checkout.d.ts.map +0 -1
- package/dist/telemetry/checkout.js.map +0 -1
- package/dist/telemetry/environment.d.ts.map +0 -1
- package/dist/telemetry/environment.js.map +0 -1
- package/dist/telemetry/events.d.ts.map +0 -1
- package/dist/telemetry/events.js.map +0 -1
- package/dist/telemetry/failure-kind.d.ts.map +0 -1
- package/dist/telemetry/failure-kind.js.map +0 -1
- package/dist/telemetry/posthog.d.ts.map +0 -1
- package/dist/telemetry/posthog.js.map +0 -1
- package/dist/telemetry/project.d.ts.map +0 -1
- package/dist/telemetry/project.js.map +0 -1
- package/dist/telemetry/store.d.ts.map +0 -1
- package/dist/telemetry/store.js.map +0 -1
- package/dist/telemetry/telemetry.d.ts.map +0 -1
- package/dist/telemetry/telemetry.js.map +0 -1
- package/dist/telemetry/token.d.ts.map +0 -1
- package/dist/telemetry/token.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
package/dist/config/load.js
CHANGED
package/dist/config/resolve.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ export interface ResolvedConfig {
|
|
|
34
34
|
readonly assertionTimeout: number;
|
|
35
35
|
readonly cleanupTimeout: number;
|
|
36
36
|
readonly retries: number;
|
|
37
|
+
readonly failOnSkippedFailure: boolean;
|
|
37
38
|
readonly workers: number;
|
|
38
39
|
/** Host store every produced artifact is handed to; undefined keeps files local only. */
|
|
39
40
|
readonly artifactStore: ArtifactStore | undefined;
|
|
@@ -130,4 +131,3 @@ export declare function resolveConfig(raw: E2EConfig, options: {
|
|
|
130
131
|
* because the ports never enter them.
|
|
131
132
|
*/
|
|
132
133
|
export declare function assignPorts(config: ResolvedConfig, ports: PortAssignments): ResolvedConfig;
|
|
133
|
-
//# sourceMappingURL=resolve.d.ts.map
|
package/dist/config/resolve.js
CHANGED
|
@@ -25,6 +25,7 @@ const TOP_LEVEL_KEYS = new Set([
|
|
|
25
25
|
'assertionTimeout',
|
|
26
26
|
'cleanupTimeout',
|
|
27
27
|
'retries',
|
|
28
|
+
'failOnSkippedFailure',
|
|
28
29
|
'workers',
|
|
29
30
|
'artifacts',
|
|
30
31
|
'output',
|
|
@@ -111,6 +112,10 @@ export function resolveConfig(raw, options) {
|
|
|
111
112
|
const workers = boundedInt(cli.workers, '--workers', 1, 1024) ??
|
|
112
113
|
boundedInt(raw.workers, 'workers', 1, 1024) ??
|
|
113
114
|
(ci ? 1 : Math.max(1, Math.floor(os.availableParallelism() / 2)));
|
|
115
|
+
const failOnSkippedFailure = raw.failOnSkippedFailure === undefined ? false : raw.failOnSkippedFailure;
|
|
116
|
+
if (typeof failOnSkippedFailure !== 'boolean') {
|
|
117
|
+
throw new ConfigurationError('INVALID_CONFIG', 'failOnSkippedFailure must be a boolean');
|
|
118
|
+
}
|
|
114
119
|
const artifactStore = resolveArtifactStore(raw);
|
|
115
120
|
const { reporters, customReporters } = resolveReporters(raw, cli);
|
|
116
121
|
const projectId = resolveProjectId(raw.projectId, options.projectRoot);
|
|
@@ -134,6 +139,7 @@ export function resolveConfig(raw, options) {
|
|
|
134
139
|
assertionTimeout,
|
|
135
140
|
cleanupTimeout,
|
|
136
141
|
retries,
|
|
142
|
+
failOnSkippedFailure,
|
|
137
143
|
workers,
|
|
138
144
|
artifactStore,
|
|
139
145
|
output,
|
|
@@ -533,6 +539,8 @@ function resolveSecrets(raw, env) {
|
|
|
533
539
|
const credentials = new Map();
|
|
534
540
|
const secrets = new Map();
|
|
535
541
|
const allSecrets = new Map();
|
|
542
|
+
checkEnvNameCollisions('E2E_USER', 'credentials', Object.keys(raw.credentials ?? {}));
|
|
543
|
+
checkEnvNameCollisions('E2E_SECRET', 'secrets', Object.keys(raw.secrets ?? {}));
|
|
536
544
|
for (const [name, credential] of Object.entries(raw.credentials ?? {})) {
|
|
537
545
|
const prefix = envName('E2E_USER', name);
|
|
538
546
|
const username = env[`${prefix}_USERNAME`] ?? credential.username;
|
|
@@ -561,6 +569,29 @@ function resolveSecrets(raw, env) {
|
|
|
561
569
|
}
|
|
562
570
|
return { credentials, secrets, allSecrets };
|
|
563
571
|
}
|
|
572
|
+
/**
|
|
573
|
+
* Two entries of one namespace whose names map to the same override variable
|
|
574
|
+
* (`api-key` and `api_key` both read `E2E_SECRET_API_KEY`) would both take one
|
|
575
|
+
* rotated value, so the config load refuses them, whether or not the variable
|
|
576
|
+
* is set. The message names the entries and the variable, never a value.
|
|
577
|
+
*/
|
|
578
|
+
function checkEnvNameCollisions(prefix, namespace, names) {
|
|
579
|
+
const byEnvName = new Map();
|
|
580
|
+
for (const name of names) {
|
|
581
|
+
const variable = envName(prefix, name);
|
|
582
|
+
byEnvName.set(variable, [...(byEnvName.get(variable) ?? []), name]);
|
|
583
|
+
}
|
|
584
|
+
for (const [variable, group] of byEnvName) {
|
|
585
|
+
if (group.length < 2)
|
|
586
|
+
continue;
|
|
587
|
+
const quoted = group.map((name) => `"${name}"`);
|
|
588
|
+
const entries = `${quoted.slice(0, -1).join(', ')} and ${quoted.at(-1)}`;
|
|
589
|
+
const variables = prefix === 'E2E_USER'
|
|
590
|
+
? `the override variables ${variable}_USERNAME and ${variable}_PASSWORD`
|
|
591
|
+
: `the override variable ${variable}`;
|
|
592
|
+
throw new ConfigurationError('INVALID_CONFIG', `${namespace} ${entries} share ${variables}, so one value set there would replace all of them; rename all but one`);
|
|
593
|
+
}
|
|
594
|
+
}
|
|
564
595
|
/**
|
|
565
596
|
* Every secret an engine's options hold (a `secrets.get()` the config
|
|
566
597
|
* evaluated before any run existed) names a configured secret, so a typo
|
|
@@ -643,9 +674,10 @@ function computeConfigDigest(raw, projectId, targets) {
|
|
|
643
674
|
// reporter object changes nothing about what a run records, so it never
|
|
644
675
|
// enters the digest either; the built-in ids digest as they always have,
|
|
645
676
|
// so adding a reporter to a config leaves its cache valid.
|
|
677
|
+
// `failOnSkippedFailure` decides only the exit code, never what runs.
|
|
646
678
|
// `targets` digest by declaration below and never enter the clone: an
|
|
647
679
|
// engine holds `secrets.get()` handles, which refuse to serialize.
|
|
648
|
-
const { artifacts: _artifacts, output: _output, trace: _trace, video: _video, targets: _targets, credentials: _credentials, secrets: _secrets, agents, cache, reporters, ...plain } = raw;
|
|
680
|
+
const { failOnSkippedFailure: _failOnSkippedFailure, artifacts: _artifacts, output: _output, trace: _trace, video: _video, targets: _targets, credentials: _credentials, secrets: _secrets, agents, cache, reporters, ...plain } = raw;
|
|
649
681
|
const sanitized = {
|
|
650
682
|
...structuredCloneJsonSafe(plain),
|
|
651
683
|
...(reporters === undefined
|
|
@@ -716,4 +748,3 @@ function structuredCloneJsonSafe(value) {
|
|
|
716
748
|
return isModelInstance(item) ? modelIdentity(item) : item;
|
|
717
749
|
}) ?? 'null');
|
|
718
750
|
}
|
|
719
|
-
//# sourceMappingURL=resolve.js.map
|
package/dist/config/secrets.d.ts
CHANGED
|
@@ -94,4 +94,3 @@ export declare function isSecretValue(value: unknown): value is string | SecretP
|
|
|
94
94
|
export declare function secretValueProblem(value: unknown): string;
|
|
95
95
|
/** `E2E_USER_ADMIN`, `E2E_SECRET_STRIPE_KEY`: the name uppercased, everything outside A-Z0-9 as `_`. */
|
|
96
96
|
export declare function envName(prefix: 'E2E_USER' | 'E2E_SECRET', name: string): string;
|
|
97
|
-
//# sourceMappingURL=secrets.d.ts.map
|
package/dist/config/secrets.js
CHANGED
package/dist/config/targets.d.ts
CHANGED
package/dist/config/targets.js
CHANGED
|
@@ -11,4 +11,3 @@ export declare function describeValue(value: unknown): string;
|
|
|
11
11
|
export declare function boundedInt(value: number | undefined, label: string, min: number, max: number): number | undefined;
|
|
12
12
|
/** An absolute http(s) URL, or undefined when the value is absent. */
|
|
13
13
|
export declare function httpUrl(value: string | undefined, label: string): string | undefined;
|
|
14
|
-
//# sourceMappingURL=validate.d.ts.map
|
package/dist/config/validate.js
CHANGED
package/dist/engine/contract.js
CHANGED
package/dist/engine/index.d.ts
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
*/
|
|
23
23
|
import { engineBrand } from '../internal/brands.ts';
|
|
24
24
|
export { ConfigurationError, InfrastructureError, TestError } from '../internal/errors.ts';
|
|
25
|
-
export { rejectUnknownKeys } from '../internal/options.ts';
|
|
25
|
+
export { rejectUnknownKeys, rejectUnknownOptions } from '../internal/options.ts';
|
|
26
26
|
export { validateJsonValue, type JsonValueRules } from '../internal/json-value.ts';
|
|
27
27
|
export { describePattern, matchesText, toTextPattern } from '../internal/text.ts';
|
|
28
28
|
export { resolveExpression, type ResolveExpressionOptions } from './resolve.ts';
|
|
@@ -147,8 +147,8 @@ export interface EngineFixtureContext {
|
|
|
147
147
|
/**
|
|
148
148
|
* Resolves a navigation target against the base URL. Throws
|
|
149
149
|
* `APP_URL_REQUIRED` when the target declares no URL and `POLICY_DENIED`
|
|
150
|
-
* for
|
|
151
|
-
* re-implements the rule the harness owns.
|
|
150
|
+
* for any scheme but `http:` and `https:` (`about:blank` aside), so a
|
|
151
|
+
* fixture never re-implements the rule the harness owns.
|
|
152
152
|
*/
|
|
153
153
|
resolveUrl(url: string): string;
|
|
154
154
|
};
|
|
@@ -711,4 +711,3 @@ export interface EngineHandle extends Engine {
|
|
|
711
711
|
readonly capabilities: ReadonlySet<EngineCapability>;
|
|
712
712
|
}
|
|
713
713
|
export { defineEngine, isEngineHandle } from './manifest.ts';
|
|
714
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/engine/index.js
CHANGED
|
@@ -24,10 +24,11 @@ import { engineBrand } from '../internal/brands.js';
|
|
|
24
24
|
// Semantics the spec requires every engine and contributed fixture to
|
|
25
25
|
// reproduce exactly, exported so an engine never carries its own copy: the
|
|
26
26
|
// runner error taxonomy, text-pattern matching, locator resolution over a
|
|
27
|
-
// semantic tree, URL matching, assertion polling,
|
|
28
|
-
// for data a fixture returns, and the unknown-key check
|
|
27
|
+
// semantic tree, URL matching, assertion polling, option-bag validation, the
|
|
28
|
+
// JSON-value rules for data a fixture returns, and the unknown-key check
|
|
29
|
+
// config options get.
|
|
29
30
|
export { ConfigurationError, InfrastructureError, TestError } from '../internal/errors.js';
|
|
30
|
-
export { rejectUnknownKeys } from '../internal/options.js';
|
|
31
|
+
export { rejectUnknownKeys, rejectUnknownOptions } from '../internal/options.js';
|
|
31
32
|
export { validateJsonValue } from '../internal/json-value.js';
|
|
32
33
|
export { describePattern, matchesText, toTextPattern } from '../internal/text.js';
|
|
33
34
|
export { resolveExpression } from './resolve.js';
|
|
@@ -39,4 +40,3 @@ export { obj } from '../internal/objects.js';
|
|
|
39
40
|
export { ENGINE_ERROR_CODES, ENGINE_SPI_VERSION, EngineError, KEY_MODIFIERS, KEY_NAMES, LOCATOR_ACTION_KINDS, OBSERVED_NAME_LIMIT, OBSERVED_TEXT_LIMIT, POINTER_ACTION_KINDS, RETRYABLE_ENGINE_ERROR_CODES, parseKey, } from './contract.js';
|
|
40
41
|
export { isSecret } from '../secrets.js';
|
|
41
42
|
export { defineEngine, isEngineHandle } from './manifest.js';
|
|
42
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -15,4 +15,3 @@ import type { Engine, EngineHandle } from './index.ts';
|
|
|
15
15
|
export declare function defineEngine(spec: Engine): EngineHandle;
|
|
16
16
|
/** True for a defineEngine-branded handle, across realms. */
|
|
17
17
|
export declare function isEngineHandle(value: unknown): value is EngineHandle;
|
|
18
|
-
//# sourceMappingURL=manifest.d.ts.map
|
package/dist/engine/manifest.js
CHANGED
package/dist/engine/recording.js
CHANGED
package/dist/engine/resolve.d.ts
CHANGED
|
@@ -34,4 +34,3 @@ export interface ResolveExpressionOptions {
|
|
|
34
34
|
* `frame` is `FRAME_NOT_FOUND`: a semantic tree has no nested documents.
|
|
35
35
|
*/
|
|
36
36
|
export declare function resolveExpression(expression: LocatorExpression, nodes: readonly SemanticNode[], options?: ResolveExpressionOptions): SemanticNode[];
|
|
37
|
-
//# sourceMappingURL=resolve.d.ts.map
|
package/dist/engine/resolve.js
CHANGED
package/dist/engine/session.d.ts
CHANGED
package/dist/engine/session.js
CHANGED
package/dist/engine/surface.d.ts
CHANGED
package/dist/engine/surface.js
CHANGED
package/dist/engine/timing.d.ts
CHANGED
package/dist/engine/timing.js
CHANGED
package/dist/expect/async.d.ts
CHANGED
package/dist/expect/async.js
CHANGED
|
@@ -1,14 +1,25 @@
|
|
|
1
1
|
/** Runner-owned polling locator assertions. */
|
|
2
2
|
import { TestError } from '../internal/errors.js';
|
|
3
|
-
import {
|
|
3
|
+
import { rejectUnknownOptions } from '../internal/options.js';
|
|
4
|
+
import { isTextMatch, normalizeText, compareText, toTextPattern, describePattern, withIgnoreCase, } from '../internal/text.js';
|
|
4
5
|
import { isValueControl } from '../internal/roles.js';
|
|
5
6
|
import { Deadline, pollCondition } from '../internal/time.js';
|
|
6
7
|
import { attributeOf, denySecureRead, isNodeVisible } from '../locator/engine.js';
|
|
7
8
|
import { describeExpression } from '../locator/expression.js';
|
|
8
9
|
const STATE_MATCHERS = {
|
|
9
|
-
toBeEnabled: {
|
|
10
|
+
toBeEnabled: {
|
|
11
|
+
key: 'disabled',
|
|
12
|
+
expected: false,
|
|
13
|
+
describeExpected: 'enabled',
|
|
14
|
+
flag: { option: 'enabled', describeExpected: 'disabled' },
|
|
15
|
+
},
|
|
10
16
|
toBeDisabled: { key: 'disabled', expected: true, describeExpected: 'disabled' },
|
|
11
|
-
toBeChecked: {
|
|
17
|
+
toBeChecked: {
|
|
18
|
+
key: 'checked',
|
|
19
|
+
expected: true,
|
|
20
|
+
describeExpected: 'checked',
|
|
21
|
+
flag: { option: 'checked', describeExpected: 'unchecked' },
|
|
22
|
+
},
|
|
12
23
|
toBeSelected: { key: 'selected', expected: true, describeExpected: 'selected' },
|
|
13
24
|
toBeExpanded: { key: 'expanded', expected: true, describeExpected: 'expanded' },
|
|
14
25
|
toBeFocused: { key: 'focused', expected: true, describeExpected: 'focused' },
|
|
@@ -19,24 +30,28 @@ const TEXT_MATCHERS = {
|
|
|
19
30
|
mode: 'equals',
|
|
20
31
|
normalize: true,
|
|
21
32
|
describeExpected: (pattern) => `text ${pattern}`,
|
|
33
|
+
takesIgnoreCase: true,
|
|
22
34
|
},
|
|
23
35
|
toContainText: {
|
|
24
36
|
field: 'text',
|
|
25
37
|
mode: 'contains',
|
|
26
38
|
normalize: true,
|
|
27
39
|
describeExpected: (pattern) => `text containing ${pattern}`,
|
|
40
|
+
takesIgnoreCase: true,
|
|
28
41
|
},
|
|
29
42
|
toHaveValue: {
|
|
30
43
|
field: 'value',
|
|
31
44
|
mode: 'equals',
|
|
32
45
|
normalize: false,
|
|
33
46
|
describeExpected: (pattern) => `value ${pattern}`,
|
|
47
|
+
takesIgnoreCase: false,
|
|
34
48
|
},
|
|
35
49
|
toHaveAccessibleName: {
|
|
36
50
|
field: 'name',
|
|
37
51
|
mode: 'equals',
|
|
38
52
|
normalize: true,
|
|
39
53
|
describeExpected: (pattern) => `accessible name ${pattern}`,
|
|
54
|
+
takesIgnoreCase: true,
|
|
40
55
|
},
|
|
41
56
|
};
|
|
42
57
|
class AsyncExpectationImpl {
|
|
@@ -52,9 +67,28 @@ class AsyncExpectationImpl {
|
|
|
52
67
|
get label() {
|
|
53
68
|
return describeExpression(this.internals.expression);
|
|
54
69
|
}
|
|
70
|
+
/** The matcher's name as its step and its errors print it: `expect.not.toBeChecked`. */
|
|
71
|
+
api(name) {
|
|
72
|
+
return `expect.${this.negated ? 'not.' : ''}${name}`;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Refuses an option `name` does not take before anything is read: a
|
|
76
|
+
* JavaScript caller's Playwright option must fail, not run as if absent.
|
|
77
|
+
* Returns the boolean `flag` option, `undefined` when absent.
|
|
78
|
+
*/
|
|
79
|
+
readOptions(name, options, flag) {
|
|
80
|
+
const api = this.api(name);
|
|
81
|
+
rejectUnknownOptions(api, options, flag === undefined ? ['timeout'] : [flag, 'timeout']);
|
|
82
|
+
if (flag === undefined || options === undefined)
|
|
83
|
+
return undefined;
|
|
84
|
+
const value = Reflect.get(options, flag);
|
|
85
|
+
if (value === undefined || typeof value === 'boolean')
|
|
86
|
+
return value;
|
|
87
|
+
throw new TestError('INVALID_ARGUMENT', `${api} option ${flag} must be a boolean`);
|
|
88
|
+
}
|
|
55
89
|
async poll(spec, timeout) {
|
|
56
90
|
const { engine } = this.internals.context;
|
|
57
|
-
const api =
|
|
91
|
+
const api = this.api(spec.name);
|
|
58
92
|
await this.internals.context.steps.run('assertion', api, this.label, async () => {
|
|
59
93
|
const deadline = engine.deadline(timeout ?? engine.assertionTimeout);
|
|
60
94
|
let lastSample = { count: 0, node: null, nodes: [] };
|
|
@@ -110,32 +144,48 @@ class AsyncExpectationImpl {
|
|
|
110
144
|
const refs = await engine.resolveAll(this.internals.expression, deadline);
|
|
111
145
|
return { count: refs.length, node: null, nodes: [] };
|
|
112
146
|
}
|
|
113
|
-
const
|
|
147
|
+
const missingFrame = spec.evaluableWithoutNode === true ? 'empty' : 'wait';
|
|
148
|
+
const { node, count } = await engine.tryRead(this.internals.expression, deadline, missingFrame);
|
|
114
149
|
return { count, node, nodes: [] };
|
|
115
150
|
}
|
|
116
|
-
|
|
151
|
+
/** A state matcher; its Playwright flag set to `false` expects the opposite state. */
|
|
152
|
+
stateMatcher(name, options) {
|
|
117
153
|
const def = STATE_MATCHERS[name];
|
|
154
|
+
const holds = this.readOptions(name, options, def.flag?.option) ?? true;
|
|
155
|
+
const expected = holds ? def.expected : !def.expected;
|
|
118
156
|
return this.poll({
|
|
119
157
|
name,
|
|
120
|
-
predicate: (sample) => sample.node !== null && (sample.node.states?.[def.key] === true) ===
|
|
121
|
-
describeExpected: def.describeExpected,
|
|
158
|
+
predicate: (sample) => sample.node !== null && (sample.node.states?.[def.key] === true) === expected,
|
|
159
|
+
describeExpected: holds || def.flag === undefined ? def.describeExpected : def.flag.describeExpected,
|
|
122
160
|
observed: observedState,
|
|
161
|
+
}, options?.timeout);
|
|
162
|
+
}
|
|
163
|
+
/** `toBeVisible` and `toBeHidden`: not visible means hidden or absent. */
|
|
164
|
+
visibilityMatcher(name, visible, timeout) {
|
|
165
|
+
return this.poll({
|
|
166
|
+
name,
|
|
167
|
+
evaluableWithoutNode: true,
|
|
168
|
+
predicate: (sample) => isNodeVisible(sample.node) === visible,
|
|
169
|
+
describeExpected: visible ? 'visible' : 'hidden or absent',
|
|
170
|
+
observed: visible ? observedState : (sample) => (isNodeVisible(sample.node) ? 'visible' : 'hidden'),
|
|
123
171
|
}, timeout);
|
|
124
172
|
}
|
|
125
|
-
textMatcher(name, expected,
|
|
126
|
-
if (isTextMatchList(expected))
|
|
127
|
-
return this.textListMatcher(name, expected, timeout);
|
|
173
|
+
textMatcher(name, expected, options) {
|
|
128
174
|
const def = TEXT_MATCHERS[name];
|
|
129
|
-
const
|
|
175
|
+
const ignoreCase = this.readOptions(name, options, def.takesIgnoreCase ? 'ignoreCase' : undefined);
|
|
176
|
+
const comparison = { mode: def.mode, normalize: def.normalize, ignoreCase };
|
|
177
|
+
if (isTextMatchList(expected))
|
|
178
|
+
return this.textListMatcher(name, expected, comparison, options?.timeout);
|
|
179
|
+
const pattern = withIgnoreCase(toTextPattern(expected, { exact: true }), ignoreCase);
|
|
130
180
|
return this.poll({
|
|
131
181
|
name,
|
|
132
182
|
readsWithheld: def.field !== 'name',
|
|
133
183
|
evaluableNode: (node) => readField(def, node) !== undefined,
|
|
134
184
|
predicate: (sample) => {
|
|
135
185
|
const actual = sample.node === null ? undefined : readField(def, sample.node);
|
|
136
|
-
return actual !== undefined && compareText(actual, pattern,
|
|
186
|
+
return actual !== undefined && compareText(actual, pattern, comparison);
|
|
137
187
|
},
|
|
138
|
-
describeExpected: def.describeExpected(
|
|
188
|
+
describeExpected: def.describeExpected(describeText(pattern, ignoreCase)),
|
|
139
189
|
observed: (sample) => {
|
|
140
190
|
if (sample.node === null)
|
|
141
191
|
return 'no node';
|
|
@@ -144,23 +194,23 @@ class AsyncExpectationImpl {
|
|
|
144
194
|
return `no ${def.field} (not a form control)`;
|
|
145
195
|
return `${def.field} ${printField(def, actual)}`;
|
|
146
196
|
},
|
|
147
|
-
}, timeout);
|
|
197
|
+
}, options?.timeout);
|
|
148
198
|
}
|
|
149
199
|
/**
|
|
150
200
|
* The list form. `toHaveText` needs exactly as many matches as entries,
|
|
151
201
|
* each match satisfying the entry at its position; `toContainText` needs
|
|
152
202
|
* each entry contained by a distinct match, in order, as Playwright's does.
|
|
153
203
|
*/
|
|
154
|
-
textListMatcher(name, expected, timeout) {
|
|
204
|
+
textListMatcher(name, expected, comparison, timeout) {
|
|
155
205
|
const def = TEXT_MATCHERS[name];
|
|
156
|
-
const patterns = expected.map((entry) => toTextPattern(entry, { exact: true }));
|
|
206
|
+
const patterns = expected.map((entry) => withIgnoreCase(toTextPattern(entry, { exact: true }), comparison.ignoreCase));
|
|
157
207
|
const printed = (node) => {
|
|
158
208
|
const actual = readField(def, node);
|
|
159
209
|
return actual === undefined ? `no ${def.field}` : printField(def, actual);
|
|
160
210
|
};
|
|
161
211
|
const satisfies = (node, pattern) => {
|
|
162
212
|
const actual = readField(def, node);
|
|
163
|
-
return actual !== undefined && compareText(actual, pattern,
|
|
213
|
+
return actual !== undefined && compareText(actual, pattern, comparison);
|
|
164
214
|
};
|
|
165
215
|
const matchesList = def.mode === 'contains' ? matchesSubsequence : matchesPositionally;
|
|
166
216
|
return this.poll({
|
|
@@ -168,75 +218,62 @@ class AsyncExpectationImpl {
|
|
|
168
218
|
readsWithheld: def.field !== 'name',
|
|
169
219
|
wholeSet: 'read',
|
|
170
220
|
predicate: (sample) => matchesList(sample.nodes, patterns, satisfies),
|
|
171
|
-
describeExpected: def.describeExpected(`[${patterns.map(
|
|
221
|
+
describeExpected: def.describeExpected(`[${patterns.map((pattern) => describeText(pattern, comparison.ignoreCase)).join(', ')}]`),
|
|
172
222
|
observed: (sample) => `${def.field} [${sample.nodes.map(printed).join(', ')}]`,
|
|
173
223
|
}, timeout);
|
|
174
224
|
}
|
|
175
225
|
toBeVisible(options) {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
evaluableWithoutNode: true,
|
|
179
|
-
predicate: (sample) => isNodeVisible(sample.node),
|
|
180
|
-
describeExpected: 'visible',
|
|
181
|
-
observed: observedState,
|
|
182
|
-
}, options?.timeout);
|
|
226
|
+
const visible = this.readOptions('toBeVisible', options, 'visible') ?? true;
|
|
227
|
+
return this.visibilityMatcher('toBeVisible', visible, options?.timeout);
|
|
183
228
|
}
|
|
184
229
|
toBeHidden(options) {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
evaluableWithoutNode: true,
|
|
188
|
-
predicate: (sample) => !isNodeVisible(sample.node),
|
|
189
|
-
describeExpected: 'hidden or absent',
|
|
190
|
-
observed: (sample) => (isNodeVisible(sample.node) ? 'visible' : 'hidden'),
|
|
191
|
-
}, options?.timeout);
|
|
230
|
+
this.readOptions('toBeHidden', options);
|
|
231
|
+
return this.visibilityMatcher('toBeHidden', false, options?.timeout);
|
|
192
232
|
}
|
|
193
233
|
toBeAttached(options) {
|
|
234
|
+
const attached = this.readOptions('toBeAttached', options, 'attached') ?? true;
|
|
194
235
|
return this.poll({
|
|
195
236
|
name: 'toBeAttached',
|
|
196
237
|
evaluableWithoutNode: true,
|
|
197
|
-
predicate: (sample) => sample.node !== null,
|
|
198
|
-
describeExpected: 'attached',
|
|
238
|
+
predicate: (sample) => (sample.node !== null) === attached,
|
|
239
|
+
describeExpected: attached ? 'attached' : 'detached',
|
|
199
240
|
observed: (sample) => (sample.node === null ? 'no node' : 'attached'),
|
|
200
241
|
}, options?.timeout);
|
|
201
242
|
}
|
|
202
243
|
toBeEnabled(options) {
|
|
203
|
-
return this.stateMatcher('toBeEnabled', options
|
|
244
|
+
return this.stateMatcher('toBeEnabled', options);
|
|
204
245
|
}
|
|
205
246
|
toBeDisabled(options) {
|
|
206
|
-
return this.stateMatcher('toBeDisabled', options
|
|
247
|
+
return this.stateMatcher('toBeDisabled', options);
|
|
207
248
|
}
|
|
208
249
|
toBeChecked(options) {
|
|
209
|
-
return this.stateMatcher('toBeChecked', options
|
|
250
|
+
return this.stateMatcher('toBeChecked', options);
|
|
210
251
|
}
|
|
211
252
|
toBeSelected(options) {
|
|
212
|
-
return this.stateMatcher('toBeSelected', options
|
|
253
|
+
return this.stateMatcher('toBeSelected', options);
|
|
213
254
|
}
|
|
214
255
|
toBeExpanded(options) {
|
|
215
|
-
return this.stateMatcher('toBeExpanded', options
|
|
256
|
+
return this.stateMatcher('toBeExpanded', options);
|
|
216
257
|
}
|
|
217
258
|
toBeFocused(options) {
|
|
218
|
-
return this.stateMatcher('toBeFocused', options
|
|
259
|
+
return this.stateMatcher('toBeFocused', options);
|
|
219
260
|
}
|
|
220
261
|
toHaveText(expected, options) {
|
|
221
|
-
return this.textMatcher('toHaveText', expected, options
|
|
262
|
+
return this.textMatcher('toHaveText', expected, options);
|
|
222
263
|
}
|
|
223
264
|
toContainText(expected, options) {
|
|
224
|
-
return this.textMatcher('toContainText', expected, options
|
|
265
|
+
return this.textMatcher('toContainText', expected, options);
|
|
225
266
|
}
|
|
226
267
|
toHaveValue(expected, options) {
|
|
227
|
-
return this.textMatcher('toHaveValue', expected, options
|
|
268
|
+
return this.textMatcher('toHaveValue', expected, options);
|
|
228
269
|
}
|
|
229
270
|
toHaveAttribute(name, valueOrOptions, options) {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
}
|
|
236
|
-
else {
|
|
237
|
-
timeout = valueOrOptions?.timeout;
|
|
238
|
-
}
|
|
239
|
-
const pattern = value === undefined ? undefined : toTextPattern(value, { exact: true });
|
|
271
|
+
const hasValue = isTextMatch(valueOrOptions);
|
|
272
|
+
// Presence reads the third argument too when the value is `undefined`, as Playwright does.
|
|
273
|
+
const bag = hasValue ? options : valueOrOptions === undefined ? options : valueOrOptions;
|
|
274
|
+
const ignoreCase = this.readOptions('toHaveAttribute', bag, hasValue ? 'ignoreCase' : undefined);
|
|
275
|
+
const pattern = hasValue ? withIgnoreCase(toTextPattern(valueOrOptions, { exact: true }), ignoreCase) : undefined;
|
|
276
|
+
const comparison = { mode: 'equals', normalize: true, ignoreCase };
|
|
240
277
|
return this.poll({
|
|
241
278
|
name: 'toHaveAttribute',
|
|
242
279
|
readsWithheld: true,
|
|
@@ -244,11 +281,11 @@ class AsyncExpectationImpl {
|
|
|
244
281
|
if (sample.node === null)
|
|
245
282
|
return false;
|
|
246
283
|
const attribute = attributeOf(sample.node, name);
|
|
247
|
-
return attribute !== null && (pattern === undefined ||
|
|
284
|
+
return attribute !== null && (pattern === undefined || compareText(attribute, pattern, comparison));
|
|
248
285
|
},
|
|
249
286
|
describeExpected: pattern === undefined
|
|
250
287
|
? `attribute "${name}"`
|
|
251
|
-
: `attribute "${name}" ${
|
|
288
|
+
: `attribute "${name}" ${describeText(pattern, ignoreCase)}`,
|
|
252
289
|
observed: (sample) => {
|
|
253
290
|
if (sample.node === null)
|
|
254
291
|
return 'no node';
|
|
@@ -257,12 +294,13 @@ class AsyncExpectationImpl {
|
|
|
257
294
|
? `attribute "${name}" absent`
|
|
258
295
|
: `attribute "${name}" ${JSON.stringify(attribute)}`;
|
|
259
296
|
},
|
|
260
|
-
}, timeout);
|
|
297
|
+
}, bag?.timeout);
|
|
261
298
|
}
|
|
262
299
|
toHaveAccessibleName(expected, options) {
|
|
263
|
-
return this.textMatcher('toHaveAccessibleName', expected, options
|
|
300
|
+
return this.textMatcher('toHaveAccessibleName', expected, options);
|
|
264
301
|
}
|
|
265
302
|
toHaveCount(expected, options) {
|
|
303
|
+
this.readOptions('toHaveCount', options);
|
|
266
304
|
return this.poll({
|
|
267
305
|
name: 'toHaveCount',
|
|
268
306
|
wholeSet: true,
|
|
@@ -310,6 +348,11 @@ function readField(def, node) {
|
|
|
310
348
|
return '';
|
|
311
349
|
return isValueControl(node) ? '' : undefined;
|
|
312
350
|
}
|
|
351
|
+
/** A pattern as a failure message prints it, marking a string compared ignoring case. */
|
|
352
|
+
function describeText(pattern, ignoreCase) {
|
|
353
|
+
const described = describePattern(pattern);
|
|
354
|
+
return pattern.kind === 'string' && ignoreCase === true ? `${described} (ignoring case)` : described;
|
|
355
|
+
}
|
|
313
356
|
/** The field as the failure message prints it: normalized when the comparison was, so the message shows what got compared. */
|
|
314
357
|
function printField(def, actual) {
|
|
315
358
|
return JSON.stringify(def.normalize ? normalizeText(actual) : actual);
|
|
@@ -326,4 +369,3 @@ function observedState(sample) {
|
|
|
326
369
|
export function createAsyncExpectation(internals) {
|
|
327
370
|
return new AsyncExpectationImpl(internals, false);
|
|
328
371
|
}
|
|
329
|
-
//# sourceMappingURL=async.js.map
|
package/dist/expect/attempt.d.ts
CHANGED
|
@@ -16,4 +16,3 @@ export interface PublishedAttempt {
|
|
|
16
16
|
export declare function publishAttempt(context: PublishedAttempt, until: AbortSignal): void;
|
|
17
17
|
/** The attempt a poll runs inside, or undefined in a standalone script. */
|
|
18
18
|
export declare function currentAttempt(): PublishedAttempt | undefined;
|
|
19
|
-
//# sourceMappingURL=attempt.d.ts.map
|
package/dist/expect/attempt.js
CHANGED
package/dist/expect/index.d.ts
CHANGED
package/dist/expect/index.js
CHANGED