@e2edev/e2e 0.11.0 → 0.13.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/README.md +7 -7
- package/dist/agent/act.d.ts +43 -9
- package/dist/agent/act.d.ts.map +1 -1
- package/dist/agent/act.js +126 -734
- package/dist/agent/act.js.map +1 -1
- package/dist/agent/action-dispatcher.d.ts +98 -0
- package/dist/agent/action-dispatcher.d.ts.map +1 -0
- package/dist/agent/action-dispatcher.js +319 -0
- package/dist/agent/action-dispatcher.js.map +1 -0
- package/dist/agent/actions.d.ts +16 -1
- package/dist/agent/actions.d.ts.map +1 -1
- package/dist/agent/actions.js +5 -1
- package/dist/agent/actions.js.map +1 -1
- package/dist/agent/default-agent.d.ts +17 -8
- package/dist/agent/default-agent.d.ts.map +1 -1
- package/dist/agent/default-agent.js +65 -43
- package/dist/agent/default-agent.js.map +1 -1
- package/dist/agent/executor.d.ts +30 -2
- package/dist/agent/executor.d.ts.map +1 -1
- package/dist/agent/executor.js.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/interactive-step.d.ts +38 -0
- package/dist/agent/interactive-step.d.ts.map +1 -0
- package/dist/agent/interactive-step.js +131 -0
- package/dist/agent/interactive-step.js.map +1 -0
- package/dist/agent/invocation.d.ts +4 -9
- package/dist/agent/invocation.d.ts.map +1 -1
- package/dist/agent/invocation.js +1 -6
- package/dist/agent/invocation.js.map +1 -1
- package/dist/agent/model/sdk.d.ts +1 -1
- package/dist/agent/model/sdk.js +1 -1
- package/dist/agent/model/tool-choice.d.ts +21 -0
- package/dist/agent/model/tool-choice.d.ts.map +1 -0
- package/dist/agent/model/tool-choice.js +49 -0
- package/dist/agent/model/tool-choice.js.map +1 -0
- package/dist/agent/observation-feed.d.ts +123 -0
- package/dist/agent/observation-feed.d.ts.map +1 -0
- package/dist/agent/observation-feed.js +281 -0
- package/dist/agent/observation-feed.js.map +1 -0
- package/dist/agent/observation.d.ts +14 -1
- package/dist/agent/observation.d.ts.map +1 -1
- package/dist/agent/observation.js +58 -2
- package/dist/agent/observation.js.map +1 -1
- package/dist/agent/operation-queue.d.ts +21 -0
- package/dist/agent/operation-queue.d.ts.map +1 -0
- package/dist/agent/operation-queue.js +27 -0
- package/dist/agent/operation-queue.js.map +1 -0
- package/dist/agent/pixels.d.ts +21 -0
- package/dist/agent/pixels.d.ts.map +1 -0
- package/dist/agent/pixels.js +85 -0
- package/dist/agent/pixels.js.map +1 -0
- package/dist/agent/point-tap.d.ts +52 -0
- package/dist/agent/point-tap.d.ts.map +1 -0
- package/dist/agent/point-tap.js +88 -0
- package/dist/agent/point-tap.js.map +1 -0
- package/dist/agent/primitives.d.ts +7 -1
- package/dist/agent/primitives.d.ts.map +1 -1
- package/dist/agent/primitives.js +96 -25
- package/dist/agent/primitives.js.map +1 -1
- package/dist/agent/replay.d.ts +8 -3
- package/dist/agent/replay.d.ts.map +1 -1
- package/dist/agent/replay.js +44 -15
- package/dist/agent/replay.js.map +1 -1
- package/dist/agent/screen-update.d.ts +50 -18
- package/dist/agent/screen-update.d.ts.map +1 -1
- package/dist/agent/screen-update.js +76 -94
- package/dist/agent/screen-update.js.map +1 -1
- package/dist/agent/step-accounting.d.ts +95 -0
- package/dist/agent/step-accounting.d.ts.map +1 -0
- package/dist/agent/step-accounting.js +201 -0
- package/dist/agent/step-accounting.js.map +1 -0
- package/dist/agent/step-cache.d.ts.map +1 -1
- package/dist/agent/step-cache.js +2 -2
- package/dist/agent/step-cache.js.map +1 -1
- package/dist/agent/tool-loop.d.ts +4 -4
- package/dist/agent/tool-loop.d.ts.map +1 -1
- package/dist/agent/tool-loop.js +109 -25
- package/dist/agent/tool-loop.js.map +1 -1
- package/dist/agent/transcript-compaction.d.ts +38 -0
- package/dist/agent/transcript-compaction.d.ts.map +1 -0
- package/dist/agent/transcript-compaction.js +165 -0
- package/dist/agent/transcript-compaction.js.map +1 -0
- package/dist/cache/recorder.d.ts.map +1 -1
- package/dist/cache/recorder.js +20 -0
- package/dist/cache/recorder.js.map +1 -1
- package/dist/cache/trace.d.ts +28 -1
- package/dist/cache/trace.d.ts.map +1 -1
- package/dist/cache/trace.js +44 -0
- package/dist/cache/trace.js.map +1 -1
- package/dist/cli/docs-url.d.ts +1 -1
- package/dist/cli/docs-url.d.ts.map +1 -1
- package/dist/cli/docs-url.js +1 -1
- package/dist/cli/docs-url.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +71 -26
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/engine-versions.json +1 -1
- package/dist/cli/init/engines.d.ts +26 -16
- package/dist/cli/init/engines.d.ts.map +1 -1
- package/dist/cli/init/engines.js +33 -24
- package/dist/cli/init/engines.js.map +1 -1
- package/dist/cli/init/gateways.js +3 -3
- package/dist/cli/init/mcp-config.d.ts +31 -0
- package/dist/cli/init/mcp-config.d.ts.map +1 -0
- package/dist/cli/init/mcp-config.js +72 -0
- package/dist/cli/init/mcp-config.js.map +1 -0
- package/dist/cli/init/scaffold.d.ts +1 -1
- package/dist/cli/init/scaffold.js +2 -2
- package/dist/cli/init/scaffold.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +65 -29
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/mcp.d.ts +15 -0
- package/dist/cli/mcp.d.ts.map +1 -0
- package/dist/cli/mcp.js +63 -0
- package/dist/cli/mcp.js.map +1 -0
- package/dist/collect/collect.d.ts +8 -3
- package/dist/collect/collect.d.ts.map +1 -1
- package/dist/collect/collect.js +29 -5
- package/dist/collect/collect.js.map +1 -1
- package/dist/collect/registry.d.ts +20 -5
- package/dist/collect/registry.d.ts.map +1 -1
- package/dist/collect/registry.js +162 -56
- package/dist/collect/registry.js.map +1 -1
- package/dist/collect/select.d.ts +9 -2
- package/dist/collect/select.d.ts.map +1 -1
- package/dist/collect/select.js +60 -12
- package/dist/collect/select.js.map +1 -1
- package/dist/config/agent.d.ts +1 -7
- package/dist/config/agent.d.ts.map +1 -1
- package/dist/config/agent.js +5 -8
- package/dist/config/agent.js.map +1 -1
- package/dist/config/app.d.ts +24 -2
- package/dist/config/app.d.ts.map +1 -1
- package/dist/config/app.js +82 -15
- package/dist/config/app.js.map +1 -1
- package/dist/config/resolve.d.ts +23 -6
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +34 -14
- package/dist/config/resolve.js.map +1 -1
- package/dist/credentials.d.ts +6 -0
- package/dist/credentials.d.ts.map +1 -1
- package/dist/credentials.js +9 -0
- package/dist/credentials.js.map +1 -1
- package/dist/engine/contract.d.ts +9 -2
- package/dist/engine/contract.d.ts.map +1 -1
- package/dist/engine/contract.js.map +1 -1
- package/dist/engine/index.d.ts +18 -4
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +8 -0
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/session.d.ts.map +1 -1
- package/dist/engine/session.js +3 -0
- package/dist/engine/session.js.map +1 -1
- package/dist/engine/surface.d.ts +6 -2
- package/dist/engine/surface.d.ts.map +1 -1
- package/dist/engine/surface.js.map +1 -1
- package/dist/expect/attempt.d.ts +15 -0
- package/dist/expect/attempt.d.ts.map +1 -0
- package/dist/expect/attempt.js +33 -0
- package/dist/expect/attempt.js.map +1 -0
- package/dist/expect/index.d.ts +7 -5
- package/dist/expect/index.d.ts.map +1 -1
- package/dist/expect/index.js +8 -1
- package/dist/expect/index.js.map +1 -1
- package/dist/expect/poll.d.ts +5 -0
- package/dist/expect/poll.d.ts.map +1 -0
- package/dist/expect/poll.js +118 -0
- package/dist/expect/poll.js.map +1 -0
- package/dist/expect/values.d.ts.map +1 -1
- package/dist/expect/values.js +6 -1
- package/dist/expect/values.js.map +1 -1
- package/dist/explore/body.d.ts.map +1 -1
- package/dist/explore/body.js +2 -0
- package/dist/explore/body.js.map +1 -1
- package/dist/explore/executor.js +16 -11
- package/dist/explore/executor.js.map +1 -1
- package/dist/explore/index.d.ts +3 -2
- package/dist/explore/index.d.ts.map +1 -1
- package/dist/explore/index.js +11 -9
- package/dist/explore/index.js.map +1 -1
- package/dist/explore/plan.d.ts.map +1 -1
- package/dist/explore/plan.js +16 -5
- package/dist/explore/plan.js.map +1 -1
- package/dist/explore/progress.d.ts +43 -0
- package/dist/explore/progress.d.ts.map +1 -0
- package/dist/explore/progress.js +9 -0
- package/dist/explore/progress.js.map +1 -0
- package/dist/explore/state.d.ts +13 -12
- package/dist/explore/state.d.ts.map +1 -1
- package/dist/explore/state.js +28 -11
- package/dist/explore/state.js.map +1 -1
- package/dist/internal/ai-trace.d.ts +2 -0
- package/dist/internal/ai-trace.d.ts.map +1 -1
- package/dist/internal/ai-trace.js +3 -0
- package/dist/internal/ai-trace.js.map +1 -1
- package/dist/internal/brands.d.ts +2 -0
- package/dist/internal/brands.d.ts.map +1 -1
- package/dist/internal/brands.js +2 -0
- package/dist/internal/brands.js.map +1 -1
- package/dist/internal/geometry.d.ts +13 -0
- package/dist/internal/geometry.d.ts.map +1 -0
- package/dist/internal/geometry.js +16 -0
- package/dist/internal/geometry.js.map +1 -0
- package/dist/internal/ids.d.ts +2 -2
- package/dist/internal/ids.d.ts.map +1 -1
- package/dist/internal/ids.js +3 -3
- package/dist/internal/ids.js.map +1 -1
- package/dist/internal/package-manager.d.ts +4 -0
- package/dist/internal/package-manager.d.ts.map +1 -1
- package/dist/internal/package-manager.js +26 -0
- package/dist/internal/package-manager.js.map +1 -1
- package/dist/internal/urls.d.ts +6 -0
- package/dist/internal/urls.d.ts.map +1 -1
- package/dist/internal/urls.js +28 -0
- package/dist/internal/urls.js.map +1 -1
- package/dist/mcp/catalog.d.ts +51 -0
- package/dist/mcp/catalog.d.ts.map +1 -0
- package/dist/mcp/catalog.js +141 -0
- package/dist/mcp/catalog.js.map +1 -0
- package/dist/mcp/config.d.ts +11 -0
- package/dist/mcp/config.d.ts.map +1 -0
- package/dist/mcp/config.js +16 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/mcp/server.d.ts +29 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +86 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/session.d.ts +68 -0
- package/dist/mcp/session.d.ts.map +1 -0
- package/dist/mcp/session.js +319 -0
- package/dist/mcp/session.js.map +1 -0
- package/dist/mcp/tools.d.ts +77 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +179 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/report/build.d.ts +8 -0
- package/dist/report/build.d.ts.map +1 -1
- package/dist/report/build.js +3 -1
- package/dist/report/build.js.map +1 -1
- package/dist/report/format.d.ts +19 -0
- package/dist/report/format.d.ts.map +1 -1
- package/dist/report/format.js +42 -0
- package/dist/report/format.js.map +1 -1
- package/dist/report/junit.d.ts.map +1 -1
- package/dist/report/junit.js +4 -1
- package/dist/report/junit.js.map +1 -1
- package/dist/report/list-explore.d.ts +109 -0
- package/dist/report/list-explore.d.ts.map +1 -0
- package/dist/report/list-explore.js +388 -0
- package/dist/report/list-explore.js.map +1 -0
- package/dist/report/list.d.ts +31 -1
- package/dist/report/list.d.ts.map +1 -1
- package/dist/report/list.js +114 -16
- package/dist/report/list.js.map +1 -1
- package/dist/report/running-tree.d.ts +7 -7
- package/dist/report/running-tree.d.ts.map +1 -1
- package/dist/report/running-tree.js +12 -13
- package/dist/report/running-tree.js.map +1 -1
- package/dist/run/app-ports.d.ts +17 -0
- package/dist/run/app-ports.d.ts.map +1 -0
- package/dist/run/app-ports.js +74 -0
- package/dist/run/app-ports.js.map +1 -0
- package/dist/run/events.d.ts +21 -7
- package/dist/run/events.d.ts.map +1 -1
- package/dist/run/events.js.map +1 -1
- package/dist/run/execute.d.ts +2 -2
- package/dist/run/execute.d.ts.map +1 -1
- package/dist/run/execute.js +42 -20
- package/dist/run/execute.js.map +1 -1
- package/dist/run/extended-fixtures.d.ts +33 -0
- package/dist/run/extended-fixtures.d.ts.map +1 -0
- package/dist/run/extended-fixtures.js +91 -0
- package/dist/run/extended-fixtures.js.map +1 -0
- package/dist/run/fixtures.d.ts +10 -4
- package/dist/run/fixtures.d.ts.map +1 -1
- package/dist/run/fixtures.js +40 -27
- package/dist/run/fixtures.js.map +1 -1
- package/dist/run/in-process.d.ts.map +1 -1
- package/dist/run/in-process.js +4 -3
- package/dist/run/in-process.js.map +1 -1
- package/dist/run/managed-process.d.ts +18 -0
- package/dist/run/managed-process.d.ts.map +1 -1
- package/dist/run/managed-process.js +101 -6
- package/dist/run/managed-process.js.map +1 -1
- package/dist/run/provision.d.ts +51 -0
- package/dist/run/provision.d.ts.map +1 -0
- package/dist/run/provision.js +94 -0
- package/dist/run/provision.js.map +1 -0
- package/dist/run/realm.d.ts +5 -4
- package/dist/run/realm.d.ts.map +1 -1
- package/dist/run/realm.js +8 -7
- package/dist/run/realm.js.map +1 -1
- package/dist/run/records.d.ts +4 -0
- package/dist/run/records.d.ts.map +1 -1
- package/dist/run/runner.d.ts +14 -5
- package/dist/run/runner.d.ts.map +1 -1
- package/dist/run/runner.js +28 -71
- package/dist/run/runner.js.map +1 -1
- package/dist/run/scheduler.d.ts +5 -2
- package/dist/run/scheduler.d.ts.map +1 -1
- package/dist/run/scheduler.js +13 -10
- package/dist/run/scheduler.js.map +1 -1
- package/dist/run/serial.d.ts +1 -1
- package/dist/run/serial.d.ts.map +1 -1
- package/dist/run/serial.js +7 -2
- package/dist/run/serial.js.map +1 -1
- package/dist/run/standalone.d.ts +63 -0
- package/dist/run/standalone.d.ts.map +1 -0
- package/dist/run/standalone.js +152 -0
- package/dist/run/standalone.js.map +1 -0
- package/dist/run/units.d.ts +6 -3
- package/dist/run/units.d.ts.map +1 -1
- package/dist/run/units.js +0 -0
- package/dist/run/units.js.map +1 -1
- package/dist/run/worker/entry.js +4 -3
- package/dist/run/worker/entry.js.map +1 -1
- package/dist/run/worker/protocol.d.ts +12 -1
- package/dist/run/worker/protocol.d.ts.map +1 -1
- package/dist/run/worker/protocol.js.map +1 -1
- package/dist/run/worker/session.d.ts +3 -4
- package/dist/run/worker/session.d.ts.map +1 -1
- package/dist/run/worker/session.js +5 -4
- package/dist/run/worker/session.js.map +1 -1
- package/dist/types.d.ts +77 -17
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -7
- package/skills/e2e/SKILL.md +9 -7
- package/skills/e2e/references/agent.md +27 -12
- package/skills/e2e/references/debugging.md +5 -5
- package/skills/e2e/references/explore.md +15 -9
- package/skills/e2e/references/mcp.md +88 -0
- package/skills/e2e/references/running.md +23 -18
- package/skills/e2e/references/setup.md +32 -18
- package/skills/e2e/references/writing-tests.md +12 -5
- package/dist/agent/model/router.d.ts +0 -36
- package/dist/agent/model/router.d.ts.map +0 -1
- package/dist/agent/model/router.js +0 -45
- package/dist/agent/model/router.js.map +0 -1
- package/dist/explore/reporter.d.ts +0 -11
- package/dist/explore/reporter.d.ts.map +0 -1
- package/dist/explore/reporter.js +0 -54
- package/dist/explore/reporter.js.map +0 -1
package/dist/config/agent.js
CHANGED
|
@@ -10,7 +10,6 @@ export function modelLabel(model) {
|
|
|
10
10
|
const AGENT_KEYS = new Set([
|
|
11
11
|
'executor',
|
|
12
12
|
'model',
|
|
13
|
-
'visionModel',
|
|
14
13
|
'maxSteps',
|
|
15
14
|
'maxModelCalls',
|
|
16
15
|
'maxObservationBytes',
|
|
@@ -67,12 +66,11 @@ label = 'agents.default') {
|
|
|
67
66
|
const context = resolveContext(agent?.context, limits.maxAgentContextBytes, label);
|
|
68
67
|
const vision = agent?.vision ?? false;
|
|
69
68
|
if (!isVisionMode(vision)) {
|
|
70
|
-
throw new ConfigurationError('INVALID_CONFIG', `${label}.vision must be true, false,
|
|
69
|
+
throw new ConfigurationError('INVALID_CONFIG', `${label}.vision must be true, false, or 'only'`);
|
|
71
70
|
}
|
|
72
71
|
return {
|
|
73
72
|
executor,
|
|
74
73
|
model: resolveCanonicalModel(agent?.model, executor?.model, label),
|
|
75
|
-
visionModel: resolveModel(agent?.visionModel, `${label}.visionModel`),
|
|
76
74
|
maxSteps,
|
|
77
75
|
maxModelCalls,
|
|
78
76
|
maxObservationBytes,
|
|
@@ -124,7 +122,7 @@ export function resolveLimits(raw) {
|
|
|
124
122
|
}
|
|
125
123
|
/** True for the closed `vision` value set, wherever it is supplied. */
|
|
126
124
|
export function isVisionMode(value) {
|
|
127
|
-
return typeof value === 'boolean' || value === '
|
|
125
|
+
return typeof value === 'boolean' || value === 'only';
|
|
128
126
|
}
|
|
129
127
|
/**
|
|
130
128
|
* Narrows a structurally verified model instance to the SDK model type. The
|
|
@@ -169,9 +167,8 @@ function resolveCanonicalModel(configured, executorModel, label) {
|
|
|
169
167
|
return own;
|
|
170
168
|
}
|
|
171
169
|
/**
|
|
172
|
-
* Resolves
|
|
173
|
-
*
|
|
174
|
-
* the key the author actually wrote. There is no implicit default model and
|
|
170
|
+
* Resolves the model slot; `label` names the key the author wrote, so every
|
|
171
|
+
* diagnostic points at it. There is no implicit default model and
|
|
175
172
|
* no environment fallback; an unconfigured model fails at its first model
|
|
176
173
|
* call, so a custom-executor run needs none.
|
|
177
174
|
*/
|
|
@@ -182,7 +179,7 @@ function resolveModel(model, label) {
|
|
|
182
179
|
throw new ConfigurationError('INVALID_CONFIG', `${label} must be an AI SDK model instance, not the string ${JSON.stringify(model)}: import a provider and construct the model, e.g. gateway(${JSON.stringify(model)}) from 'ai' or openrouter(${JSON.stringify(model)}) from '@openrouter/ai-sdk-provider'`);
|
|
183
180
|
}
|
|
184
181
|
if (!isModelInstance(model)) {
|
|
185
|
-
throw new ConfigurationError('INVALID_CONFIG', `${label} must be an AI SDK model instance, e.g. gateway('openai/gpt-5.
|
|
182
|
+
throw new ConfigurationError('INVALID_CONFIG', `${label} must be an AI SDK model instance, e.g. gateway('openai/gpt-5.6-luna') from 'ai'`);
|
|
186
183
|
}
|
|
187
184
|
return {
|
|
188
185
|
provider: model.provider,
|
package/dist/config/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/config/agent.ts"],"names":[],"mappings":"AAAA,mDAAmD;AAGnD,OAAO,EAAE,cAAc,EAAqB,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA2BpD,+FAA+F;AAC/F,MAAM,UAAU,UAAU,CAAC,KAAoB;IAC7C,OAAO,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;AACzC,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/config/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/config/app.d.ts
CHANGED
|
@@ -26,6 +26,16 @@ export interface ResolvedService extends ResolvedCommand {
|
|
|
26
26
|
readonly readiness: Readiness;
|
|
27
27
|
readonly teardown: ResolvedCommand | undefined;
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* A declared URL with port 0 asks the run for a free port on its loopback
|
|
31
|
+
* host. `port` is the one the run assigned, undefined until it did: a config
|
|
32
|
+
* resolved outside a run (`e2e list`, the cache CLI) keeps the `:0` URL.
|
|
33
|
+
*/
|
|
34
|
+
export interface PortRequest {
|
|
35
|
+
/** The hostname to bind, as the URL spelled it. */
|
|
36
|
+
readonly host: string;
|
|
37
|
+
readonly port: number | undefined;
|
|
38
|
+
}
|
|
29
39
|
/**
|
|
30
40
|
* The app one target drives, as the harness resolved the engine's `app`
|
|
31
41
|
* declaration. Navigation policy, cache and session identity, the report's
|
|
@@ -35,6 +45,8 @@ export interface ResolvedService extends ResolvedCommand {
|
|
|
35
45
|
export interface ResolvedApp {
|
|
36
46
|
/** Normalized base URL; undefined for a surface without addressable locations. */
|
|
37
47
|
readonly base: NormalizedBaseUrl | undefined;
|
|
48
|
+
/** The free-port request the declared URL made; undefined when it names a port or there is no URL. */
|
|
49
|
+
readonly portRequest: PortRequest | undefined;
|
|
38
50
|
readonly allowedOrigins: readonly string[];
|
|
39
51
|
readonly environment: 'test' | 'staging' | 'production';
|
|
40
52
|
/**
|
|
@@ -55,8 +67,16 @@ export interface ResolvedApp {
|
|
|
55
67
|
* origins, a command needs something to poll, services need one readiness
|
|
56
68
|
* contract each, and the identity defaults to where the app is served when
|
|
57
69
|
* the engine gives none. `projectRoot` anchors every command's `log` path.
|
|
70
|
+
* `port` is the free port the run assigned to a URL declared with port 0: it
|
|
71
|
+
* replaces the 0 in the base URL, the default origin and readiness probe, and
|
|
72
|
+
* any explicit origin spelled with the same host and `:0`. The default
|
|
73
|
+
* identity keeps the declared `:0`, so cache and session entries survive the
|
|
74
|
+
* port changing every run. `{port}` in the command, the services, and their
|
|
75
|
+
* readiness URLs expands to the port the app is served on, assigned or fixed.
|
|
58
76
|
*/
|
|
59
|
-
export declare function resolveTargetApp(targetName: string, engine: EngineHandle | undefined, projectRoot: string): ResolvedApp;
|
|
77
|
+
export declare function resolveTargetApp(targetName: string, engine: EngineHandle | undefined, projectRoot: string, port?: number): ResolvedApp;
|
|
78
|
+
/** Substitutes `{port}` in one configured value, given where the value came from for the error. */
|
|
79
|
+
type PortExpander = (value: string, label: string) => string;
|
|
60
80
|
/**
|
|
61
81
|
* Resolves a declaration's `services`: every service is a command with exactly
|
|
62
82
|
* one readiness contract (`readyUrl` or `waitForExit`), and a `teardown` is a
|
|
@@ -65,8 +85,10 @@ export declare function resolveTargetApp(targetName: string, engine: EngineHandl
|
|
|
65
85
|
* command; `reuseExisting` stays on it, and only a `readyUrl` service may set it.
|
|
66
86
|
* `projectRoot` anchors each `log` path; `prefix` names the declaring target
|
|
67
87
|
* in errors, so a failing service is traceable to the engine that declared it.
|
|
88
|
+
* `expand` substitutes `{port}` in each service's args, env, readiness URL,
|
|
89
|
+
* and teardown; the default leaves values as written.
|
|
68
90
|
*/
|
|
69
|
-
export declare function resolveServices(raw: EngineAppDeclaration['services'], projectRoot: string, prefix?: string): readonly ResolvedService[];
|
|
91
|
+
export declare function resolveServices(raw: EngineAppDeclaration['services'], projectRoot: string, prefix?: string, expand?: PortExpander): readonly ResolvedService[];
|
|
70
92
|
/** A command's env as it enters the config digest: values reduced to their names. */
|
|
71
93
|
interface DigestedEnv {
|
|
72
94
|
readonly env?: Readonly<Record<string, {
|
package/dist/config/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/config/app.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAG7E,OAAO,
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/config/app.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAG7E,OAAO,EAML,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,aAAa,CAAC;AAGhE;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAA;CAAE,CAAC;AAEvF,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;CACjC;AAED,wEAAwE;AACxE,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,0FAA0F;IAC1F,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,CAAC;CAChD;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,kFAAkF;IAClF,QAAQ,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC7C,sGAAsG;IACtG,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAAC;IACxD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,CAAC;IAC5C,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,6FAA6F;IAC7F,QAAQ,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;CAC/C;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,YAAY,GAAG,SAAS,EAChC,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,MAAM,GACZ,WAAW,CA8Eb;AAWD,mGAAmG;AACnG,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AAiJ7D;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,oBAAoB,CAAC,UAAU,CAAC,EACrC,WAAW,EAAE,MAAM,EACnB,MAAM,SAAiB,EACvB,MAAM,GAAE,YAA+B,GACtC,SAAS,eAAe,EAAE,CAuC5B;AAED,qFAAqF;AACrF,UAAU,WAAW;IACnB,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CAC9D;AAQD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,oBAAoB;;;;;;;;cAf7C,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;;;;;;;;;;;;;GA+B7D"}
|
package/dist/config/app.js
CHANGED
|
@@ -6,7 +6,7 @@ import fs from 'node:fs';
|
|
|
6
6
|
import path from 'node:path';
|
|
7
7
|
import { ConfigurationError } from '../internal/errors.js';
|
|
8
8
|
import { obj } from '../internal/objects.js';
|
|
9
|
-
import { isImplicitTestHost, normalizeBaseUrl } from '../internal/urls.js';
|
|
9
|
+
import { isImplicitTestHost, normalizeBaseUrl, portOf, requestsFreePort, withPort, } from '../internal/urls.js';
|
|
10
10
|
import { httpUrl, positiveInt } from './validate.js';
|
|
11
11
|
const ENVIRONMENTS = new Set(['test', 'staging', 'production']);
|
|
12
12
|
/**
|
|
@@ -15,21 +15,34 @@ const ENVIRONMENTS = new Set(['test', 'staging', 'production']);
|
|
|
15
15
|
* origins, a command needs something to poll, services need one readiness
|
|
16
16
|
* contract each, and the identity defaults to where the app is served when
|
|
17
17
|
* the engine gives none. `projectRoot` anchors every command's `log` path.
|
|
18
|
+
* `port` is the free port the run assigned to a URL declared with port 0: it
|
|
19
|
+
* replaces the 0 in the base URL, the default origin and readiness probe, and
|
|
20
|
+
* any explicit origin spelled with the same host and `:0`. The default
|
|
21
|
+
* identity keeps the declared `:0`, so cache and session entries survive the
|
|
22
|
+
* port changing every run. `{port}` in the command, the services, and their
|
|
23
|
+
* readiness URLs expands to the port the app is served on, assigned or fixed.
|
|
18
24
|
*/
|
|
19
|
-
export function resolveTargetApp(targetName, engine, projectRoot) {
|
|
25
|
+
export function resolveTargetApp(targetName, engine, projectRoot, port) {
|
|
20
26
|
const declared = engine?.app ?? {};
|
|
21
27
|
const where = `target "${targetName}" engine ${engine?.name ?? 'none'}`;
|
|
22
|
-
const
|
|
28
|
+
const declaredBase = declared.url === undefined ? undefined : normalizeBaseUrl(declared.url);
|
|
29
|
+
const portRequest = declaredBase === undefined ? undefined : freePortRequest(declaredBase, port);
|
|
30
|
+
const base = declaredBase !== undefined && portRequest?.port !== undefined ? withPort(declaredBase, portRequest.port) : declaredBase;
|
|
31
|
+
// What `{port}` expands to. While a requested port is unassigned this is 0,
|
|
32
|
+
// the port the base URL still carries, so the config resolves and validates
|
|
33
|
+
// the same way before and after assignment.
|
|
34
|
+
const appPort = base === undefined ? undefined : portOf(base);
|
|
35
|
+
const expand = (value, label) => expandPort(value, appPort, label);
|
|
23
36
|
const environment = declared.environment ??
|
|
24
37
|
(base !== undefined && !isImplicitTestHost(new URL(base.href).hostname) ? 'production' : 'test');
|
|
25
38
|
if (!ENVIRONMENTS.has(environment)) {
|
|
26
39
|
throw new ConfigurationError('INVALID_CONFIG', `${where} declares invalid app.environment "${String(environment)}"`);
|
|
27
40
|
}
|
|
28
|
-
const
|
|
29
|
-
if (!Array.isArray(
|
|
41
|
+
const declaredOrigins = declared.allowedOrigins ?? (base === undefined ? [] : [base.origin]);
|
|
42
|
+
if (!Array.isArray(declaredOrigins)) {
|
|
30
43
|
throw new ConfigurationError('INVALID_CONFIG', `${where} app.allowedOrigins must be an array`);
|
|
31
44
|
}
|
|
32
|
-
|
|
45
|
+
const allowedOrigins = declaredOrigins.map((origin) => {
|
|
33
46
|
let parsed;
|
|
34
47
|
try {
|
|
35
48
|
parsed = new URL(origin);
|
|
@@ -40,26 +53,76 @@ export function resolveTargetApp(targetName, engine, projectRoot) {
|
|
|
40
53
|
if (parsed.origin !== origin) {
|
|
41
54
|
throw new ConfigurationError('INVALID_CONFIG', `${where} allowed origin must be a serialized origin, got ${origin} (expected ${parsed.origin})`);
|
|
42
55
|
}
|
|
43
|
-
|
|
56
|
+
// An explicit origin spelled like the declared URL follows its port.
|
|
57
|
+
if (portRequest?.port !== undefined && parsed.port === '0' && parsed.hostname === portRequest.host) {
|
|
58
|
+
parsed.port = String(portRequest.port);
|
|
59
|
+
return parsed.origin;
|
|
60
|
+
}
|
|
61
|
+
return origin;
|
|
62
|
+
});
|
|
44
63
|
const identity = declared.identity;
|
|
45
64
|
if (identity !== undefined && (typeof identity !== 'string' || identity.trim() === '')) {
|
|
46
65
|
throw new ConfigurationError('INVALID_CONFIG', `${where} app.identity must be a non-empty string`);
|
|
47
66
|
}
|
|
48
|
-
const command = declared.command;
|
|
67
|
+
const command = declared.command === undefined ? undefined : expandCommandPort(declared.command, `${where} app.command`, expand);
|
|
49
68
|
if (command !== undefined)
|
|
50
69
|
validateCommand(command, `${where} app.command`, projectRoot);
|
|
51
|
-
const readyUrl = httpUrl(declared.readyUrl, `${where} app.readyUrl`) ?? base?.href;
|
|
70
|
+
const readyUrl = httpUrl(declared.readyUrl === undefined ? undefined : expand(declared.readyUrl, `${where} app.readyUrl`), `${where} app.readyUrl`) ?? base?.href;
|
|
52
71
|
if (command !== undefined && readyUrl === undefined) {
|
|
53
72
|
throw new ConfigurationError('APP_URL_REQUIRED', `${where} declares app.command without a URL to poll: declare url or readyUrl beside it`);
|
|
54
73
|
}
|
|
55
74
|
return {
|
|
56
75
|
base,
|
|
76
|
+
portRequest,
|
|
57
77
|
allowedOrigins,
|
|
58
78
|
environment,
|
|
59
|
-
identity: identity ?? (
|
|
79
|
+
identity: identity ?? (declaredBase === undefined ? undefined : `${declaredBase.origin}${declaredBase.basePath}`),
|
|
60
80
|
command,
|
|
61
81
|
readyUrl: command === undefined ? undefined : readyUrl,
|
|
62
|
-
services: resolveServices(declared.services, projectRoot, `${where} app.services
|
|
82
|
+
services: resolveServices(declared.services, projectRoot, `${where} app.services`, expand),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/** The request a URL declared with port 0 makes, carrying the port the run assigned it so far. */
|
|
86
|
+
function freePortRequest(declaredBase, port) {
|
|
87
|
+
if (!requestsFreePort(declaredBase))
|
|
88
|
+
return undefined;
|
|
89
|
+
return { host: new URL(declaredBase.href).hostname, port };
|
|
90
|
+
}
|
|
91
|
+
/** The token a command, a service, or a readiness URL writes where the app's port goes. */
|
|
92
|
+
const PORT_TOKEN = '{port}';
|
|
93
|
+
/**
|
|
94
|
+
* Substitutes `{port}` in one configured string. A target without a URL has
|
|
95
|
+
* no port to offer, so the token there is a config error naming the field.
|
|
96
|
+
*/
|
|
97
|
+
function expandPort(value, port, label) {
|
|
98
|
+
if (!value.includes(PORT_TOKEN))
|
|
99
|
+
return value;
|
|
100
|
+
if (port === undefined) {
|
|
101
|
+
throw new ConfigurationError('INVALID_CONFIG', `${label} uses ${PORT_TOKEN}, but the target declares no url to take the port from`);
|
|
102
|
+
}
|
|
103
|
+
return value.replaceAll(PORT_TOKEN, String(port));
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* The command with `{port}` expanded in every `args` entry and `env` value.
|
|
107
|
+
* Malformed shapes pass through untouched for `validateCommand` to name.
|
|
108
|
+
*/
|
|
109
|
+
function expandCommandPort(command, label, expand) {
|
|
110
|
+
if (typeof command !== 'object' || command === null)
|
|
111
|
+
return command;
|
|
112
|
+
const { args, env } = command;
|
|
113
|
+
return {
|
|
114
|
+
...command,
|
|
115
|
+
...(Array.isArray(args)
|
|
116
|
+
? { args: args.map((arg) => (typeof arg === 'string' ? expand(arg, `${label}.args`) : arg)) }
|
|
117
|
+
: {}),
|
|
118
|
+
...(typeof env === 'object' && env !== null
|
|
119
|
+
? {
|
|
120
|
+
env: Object.fromEntries(Object.entries(env).map(([key, value]) => [
|
|
121
|
+
key,
|
|
122
|
+
typeof value === 'string' ? expand(value, `${label}.env.${key}`) : value,
|
|
123
|
+
])),
|
|
124
|
+
}
|
|
125
|
+
: {}),
|
|
63
126
|
};
|
|
64
127
|
}
|
|
65
128
|
/**
|
|
@@ -159,19 +222,23 @@ function serviceName(service, position, taken) {
|
|
|
159
222
|
* command; `reuseExisting` stays on it, and only a `readyUrl` service may set it.
|
|
160
223
|
* `projectRoot` anchors each `log` path; `prefix` names the declaring target
|
|
161
224
|
* in errors, so a failing service is traceable to the engine that declared it.
|
|
225
|
+
* `expand` substitutes `{port}` in each service's args, env, readiness URL,
|
|
226
|
+
* and teardown; the default leaves values as written.
|
|
162
227
|
*/
|
|
163
|
-
export function resolveServices(raw, projectRoot, prefix = 'app.services') {
|
|
228
|
+
export function resolveServices(raw, projectRoot, prefix = 'app.services', expand = (value) => value) {
|
|
164
229
|
if (raw === undefined)
|
|
165
230
|
return [];
|
|
166
231
|
if (!Array.isArray(raw)) {
|
|
167
232
|
throw new ConfigurationError('INVALID_CONFIG', `${prefix} must be an array`);
|
|
168
233
|
}
|
|
169
234
|
const names = new Set();
|
|
170
|
-
return raw.map((
|
|
235
|
+
return raw.map((declaredService, index) => {
|
|
171
236
|
const position = `${prefix}[${index}]`;
|
|
237
|
+
const service = expandCommandPort(declaredService, position, expand);
|
|
172
238
|
validateCommand(service, position, projectRoot);
|
|
173
|
-
const { name: _name, readyUrl: rawReadyUrl, waitForExit, teardown, ...command } = service;
|
|
174
|
-
const readyUrl = httpUrl(rawReadyUrl, `${position}.readyUrl`);
|
|
239
|
+
const { name: _name, readyUrl: rawReadyUrl, waitForExit, teardown: declaredTeardown, ...command } = service;
|
|
240
|
+
const readyUrl = httpUrl(rawReadyUrl === undefined ? undefined : expand(rawReadyUrl, `${position}.readyUrl`), `${position}.readyUrl`);
|
|
241
|
+
const teardown = declaredTeardown === undefined ? undefined : expandCommandPort(declaredTeardown, `${position}.teardown`, expand);
|
|
175
242
|
if ((readyUrl !== undefined) === (waitForExit === true)) {
|
|
176
243
|
throw new ConfigurationError('INVALID_CONFIG', `${position} needs exactly one readiness contract: set readyUrl or waitForExit: true`);
|
|
177
244
|
}
|
package/dist/config/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/config/app.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/config/app.ts"],"names":[],"mappings":"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"}
|
package/dist/config/resolve.d.ts
CHANGED
|
@@ -56,10 +56,13 @@ export interface ResolvedConfig {
|
|
|
56
56
|
/** The reporter objects the config names; `--reporter` never removes one. */
|
|
57
57
|
readonly customReporters: readonly Reporter[];
|
|
58
58
|
readonly testIdAttribute: string;
|
|
59
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* The agents unpinned tests run as, one result each: `agents.default`, or
|
|
61
|
+
* the names `--agent` gave, in order and deduplicated. Never empty.
|
|
62
|
+
*/
|
|
63
|
+
readonly agentNames: readonly string[];
|
|
64
|
+
/** The first of `agentNames`: the run's agent where exactly one is wanted (`e2e explore`). */
|
|
60
65
|
readonly agent: ResolvedAgentConfig;
|
|
61
|
-
/** Its name in the config. */
|
|
62
|
-
readonly agentName: string;
|
|
63
66
|
/** Every configured agent, `default` included, by name. */
|
|
64
67
|
readonly agents: ReadonlyMap<string, ResolvedAgentConfig>;
|
|
65
68
|
readonly cache: ResolvedCacheConfig;
|
|
@@ -92,16 +95,30 @@ export interface CliOverrides {
|
|
|
92
95
|
cache?: CacheMode;
|
|
93
96
|
/** `--video`: adds the `video` artifact kind to whatever the config asks for. */
|
|
94
97
|
video?: boolean;
|
|
95
|
-
/** `--agent`: the configured
|
|
96
|
-
|
|
98
|
+
/** `--agent`: the configured agents unpinned tests run as, instead of `default` alone. */
|
|
99
|
+
agents?: readonly string[];
|
|
97
100
|
}
|
|
98
101
|
/** True when CI mode is active. */
|
|
99
102
|
export declare function isCiMode(env?: NodeJS.ProcessEnv): boolean;
|
|
100
|
-
/**
|
|
103
|
+
/** The free port the run assigned to each target whose URL asked for one, by target name. */
|
|
104
|
+
export type PortAssignments = Readonly<Record<string, number>>;
|
|
105
|
+
/**
|
|
106
|
+
* Resolves a raw config object plus environment into an immutable resolved
|
|
107
|
+
* config. `ports` are the free ports the runner already assigned, so a worker
|
|
108
|
+
* re-resolving the same file lands on the same app URLs.
|
|
109
|
+
*/
|
|
101
110
|
export declare function resolveConfig(raw: E2EConfig, options: {
|
|
102
111
|
projectRoot: string;
|
|
103
112
|
configPath?: string;
|
|
104
113
|
env?: NodeJS.ProcessEnv;
|
|
105
114
|
cli?: CliOverrides;
|
|
115
|
+
ports?: PortAssignments;
|
|
106
116
|
}): ResolvedConfig;
|
|
117
|
+
/**
|
|
118
|
+
* The config with every target's app re-resolved against the port the run
|
|
119
|
+
* assigned it. Pure, so the runner and each worker reach the same URLs from
|
|
120
|
+
* the same declaration and ports; the digest stands, because the ports never
|
|
121
|
+
* enter it.
|
|
122
|
+
*/
|
|
123
|
+
export declare function assignPorts(config: ResolvedConfig, ports: PortAssignments): ResolvedConfig;
|
|
107
124
|
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"AAAA,mDAAmD;AAWnD,OAAO,KAAK,EACV,aAAa,EAEb,eAAe,EACf,SAAS,EACT,sBAAsB,EACtB,SAAS,EAET,QAAQ,EACR,QAAQ,EACR,cAAc,EAEd,eAAe,EAEhB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAIL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EAEpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAA0C,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAEpF,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACtE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC;IAC1C,kEAAkE;IAClE,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC;IAC3C,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACxD;AAED;;;;;;;GAOG;AACH,KAAK,cAAc,GAAG,aAAa,GAAG,UAAU,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,8FAA8F;IAC9F,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC;IACxE,yFAAyF;IACzF,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IAClD,mFAAmF;IACnF,QAAQ,CAAC,WAAW,EAAE,KAAK,GAAG,YAAY,CAAC;IAC3C,uFAAuF;IACvF,QAAQ,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,CAAC;IAC/C,6EAA6E;IAC7E,QAAQ,CAAC,eAAe,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC9C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"AAAA,mDAAmD;AAWnD,OAAO,KAAK,EACV,aAAa,EAEb,eAAe,EACf,SAAS,EACT,sBAAsB,EACtB,SAAS,EAET,QAAQ,EACR,QAAQ,EACR,cAAc,EAEd,eAAe,EAEhB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAIL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EAEpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAA0C,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAEpF,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACtE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC;IAC1C,kEAAkE;IAClE,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC;IAC3C,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACxD;AAED;;;;;;;GAOG;AACH,KAAK,cAAc,GAAG,aAAa,GAAG,UAAU,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,8FAA8F;IAC9F,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC;IACxE,yFAAyF;IACzF,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IAClD,mFAAmF;IACnF,QAAQ,CAAC,WAAW,EAAE,KAAK,GAAG,YAAY,CAAC;IAC3C,uFAAuF;IACvF,QAAQ,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,CAAC;IAC/C,6EAA6E;IAC7E,QAAQ,CAAC,eAAe,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC9C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,8FAA8F;IAC9F,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC1D,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC9D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,SAAS,CAAC;IAC5C,qCAAqC;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACvC,+DAA+D;IAC/D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,iFAAiF;IACjF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAkED,mCAAmC;AACnC,wBAAgB,QAAQ,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEtE;AAED,6FAA6F;AAC7F,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE/D;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,SAAS,EACd,OAAO,EAAE;IACP,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB,GACA,cAAc,CA4FhB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,GAAG,cAAc,CAQ1F"}
|
package/dist/config/resolve.js
CHANGED
|
@@ -70,7 +70,11 @@ function unknownTopLevelKeyHint(key) {
|
|
|
70
70
|
export function isCiMode(env = process.env) {
|
|
71
71
|
return envFlag(env, 'CI');
|
|
72
72
|
}
|
|
73
|
-
/**
|
|
73
|
+
/**
|
|
74
|
+
* Resolves a raw config object plus environment into an immutable resolved
|
|
75
|
+
* config. `ports` are the free ports the runner already assigned, so a worker
|
|
76
|
+
* re-resolving the same file lands on the same app URLs.
|
|
77
|
+
*/
|
|
74
78
|
export function resolveConfig(raw, options) {
|
|
75
79
|
const env = options.env ?? process.env;
|
|
76
80
|
const cli = options.cli ?? {};
|
|
@@ -86,7 +90,7 @@ export function resolveConfig(raw, options) {
|
|
|
86
90
|
if (raw.specVersion !== undefined && raw.specVersion !== '0.1') {
|
|
87
91
|
throw new ConfigurationError('INVALID_CONFIG', `unsupported specVersion ${JSON.stringify(raw.specVersion)}; this runner implements 0.1`);
|
|
88
92
|
}
|
|
89
|
-
const targets = resolveTargets(raw, options.projectRoot);
|
|
93
|
+
const targets = resolveTargets(raw, options.projectRoot, options.ports ?? {});
|
|
90
94
|
const tests = normalizeTests(raw.tests);
|
|
91
95
|
const timeout = positiveInt(raw.timeout, 'timeout', 'milliseconds') ?? 120_000;
|
|
92
96
|
const launchTimeout = positiveInt(raw.launchTimeout, 'launchTimeout', 'milliseconds') ?? 60_000;
|
|
@@ -109,7 +113,7 @@ export function resolveConfig(raw, options) {
|
|
|
109
113
|
// Limits first: the agent context budget is a limits key, and the resolved
|
|
110
114
|
// observation budget is agent-owned, so the dependency runs one way.
|
|
111
115
|
const baseLimits = resolveLimits(raw);
|
|
112
|
-
const { agents,
|
|
116
|
+
const { agents, agentNames, agent } = resolveAgents(raw.agents, env, ci, baseLimits, cli.agents);
|
|
113
117
|
// The report's ceiling is the largest any configured agent may use: a
|
|
114
118
|
// pinned agent's calls are bounded by its own value, and the run-level
|
|
115
119
|
// number must not read lower than what a step could actually send.
|
|
@@ -139,8 +143,8 @@ export function resolveConfig(raw, options) {
|
|
|
139
143
|
reporters,
|
|
140
144
|
customReporters,
|
|
141
145
|
testIdAttribute,
|
|
146
|
+
agentNames,
|
|
142
147
|
agent,
|
|
143
|
-
agentName,
|
|
144
148
|
agents,
|
|
145
149
|
cache,
|
|
146
150
|
limits,
|
|
@@ -149,6 +153,21 @@ export function resolveConfig(raw, options) {
|
|
|
149
153
|
};
|
|
150
154
|
return resolved;
|
|
151
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* The config with every target's app re-resolved against the port the run
|
|
158
|
+
* assigned it. Pure, so the runner and each worker reach the same URLs from
|
|
159
|
+
* the same declaration and ports; the digest stands, because the ports never
|
|
160
|
+
* enter it.
|
|
161
|
+
*/
|
|
162
|
+
export function assignPorts(config, ports) {
|
|
163
|
+
return {
|
|
164
|
+
...config,
|
|
165
|
+
targets: config.targets.map((target) => ({
|
|
166
|
+
...target,
|
|
167
|
+
app: resolveTargetApp(target.name, target.engine, config.projectRoot, ports[target.name]),
|
|
168
|
+
})),
|
|
169
|
+
};
|
|
170
|
+
}
|
|
152
171
|
/**
|
|
153
172
|
* Resolves the `cache` key. The cache is opt-out: an unset key means
|
|
154
173
|
* `read-write`, so a project earns replay speed without asking for it, and
|
|
@@ -341,7 +360,7 @@ function isTraceCacheStore(value) {
|
|
|
341
360
|
typeof candidate['read'] === 'function' &&
|
|
342
361
|
typeof candidate['write'] === 'function');
|
|
343
362
|
}
|
|
344
|
-
function resolveTargets(raw, projectRoot) {
|
|
363
|
+
function resolveTargets(raw, projectRoot, ports) {
|
|
345
364
|
if (raw.targets === undefined) {
|
|
346
365
|
throw new ConfigurationError('INVALID_CONFIG', 'targets is required: declare at least one target and the engine that drives it, ' +
|
|
347
366
|
'e.g. targets: [{ engine }]');
|
|
@@ -386,7 +405,7 @@ function resolveTargets(raw, projectRoot) {
|
|
|
386
405
|
index,
|
|
387
406
|
platform,
|
|
388
407
|
engine: target.engine,
|
|
389
|
-
app: resolveTargetApp(name, target.engine, projectRoot),
|
|
408
|
+
app: resolveTargetApp(name, target.engine, projectRoot, ports[name]),
|
|
390
409
|
};
|
|
391
410
|
});
|
|
392
411
|
}
|
|
@@ -477,8 +496,8 @@ const DEFAULT_AGENT_NAME = 'default';
|
|
|
477
496
|
const AGENT_NAME_PATTERN = TARGET_NAME_PATTERN;
|
|
478
497
|
/**
|
|
479
498
|
* Resolves `agents`: every named entry, and `default` even when the config
|
|
480
|
-
* names none (the built-in agent, which then needs `createAgent({ model })`). The run's
|
|
481
|
-
* `default` unless `--agent`
|
|
499
|
+
* names none (the built-in agent, which then needs `createAgent({ model })`). The run's agents are
|
|
500
|
+
* `default` alone unless `--agent` named others; an unknown name is a config
|
|
482
501
|
* error before anything starts.
|
|
483
502
|
*/
|
|
484
503
|
function resolveAgents(raw, env, ci, limits, selected) {
|
|
@@ -495,12 +514,14 @@ function resolveAgents(raw, env, ci, limits, selected) {
|
|
|
495
514
|
if (!agents.has(DEFAULT_AGENT_NAME)) {
|
|
496
515
|
agents.set(DEFAULT_AGENT_NAME, resolveAgentConfig(undefined, env, ci, limits));
|
|
497
516
|
}
|
|
498
|
-
|
|
499
|
-
const
|
|
500
|
-
|
|
501
|
-
|
|
517
|
+
// `--agent a --agent a` is one agent, not two results per test.
|
|
518
|
+
const agentNames = selected === undefined || selected.length === 0 ? [DEFAULT_AGENT_NAME] : [...new Set(selected)];
|
|
519
|
+
for (const name of agentNames) {
|
|
520
|
+
if (agents.has(name))
|
|
521
|
+
continue;
|
|
522
|
+
throw new ConfigurationError('INVALID_CONFIG', `unknown agent "${name}"; configured: ${[...agents.keys()].join(', ')}${didYouMean(name, [...agents.keys()])}`);
|
|
502
523
|
}
|
|
503
|
-
return { agents,
|
|
524
|
+
return { agents, agentNames, agent: agents.get(agentNames[0]) };
|
|
504
525
|
}
|
|
505
526
|
/** The artifact kinds as the digest sees them: no store, no video. */
|
|
506
527
|
function digestedArtifactKinds(artifacts) {
|
|
@@ -539,7 +560,6 @@ function computeConfigDigest(raw, projectId) {
|
|
|
539
560
|
: {
|
|
540
561
|
...entry,
|
|
541
562
|
...(isModelInstance(entry.model) ? { model: modelIdentity(entry.model) } : {}),
|
|
542
|
-
...(isModelInstance(entry.visionModel) ? { visionModel: modelIdentity(entry.visionModel) } : {}),
|
|
543
563
|
},
|
|
544
564
|
])),
|
|
545
565
|
}),
|