e2e scenarios declare dependencies via Effect DI - #942
Merged
Conversation
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
executor-marketing | 6beb87b | Commit Preview URL Branch Preview URL |
Jun 11 2026, 10:42 PM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
executor-cloud | 6beb87b | Jun 11 2026, 10:42 PM |
@executor-js/cli
@executor-js/config
@executor-js/execution
@executor-js/sdk
@executor-js/codemode-core
@executor-js/runtime-quickjs
@executor-js/plugin-file-secrets
@executor-js/plugin-graphql
@executor-js/plugin-keychain
@executor-js/plugin-mcp
@executor-js/plugin-onepassword
@executor-js/plugin-openapi
executor
commit: |
RhysSullivan
force-pushed
the
workos-autumn-emulators
branch
from
June 10, 2026 13:17
838b539 to
792f664
Compare
RhysSullivan
changed the base branch from
workos-autumn-emulators
to
opencode-reauth-repro
June 10, 2026 13:18
This was referenced Jun 10, 2026
RhysSullivan
force-pushed
the
e2e-scenarios-effect-di
branch
from
June 10, 2026 14:33
25f2e6f to
945a5a0
Compare
RhysSullivan
force-pushed
the
opencode-reauth-repro
branch
from
June 11, 2026 19:25
c9e1bdc to
118795e
Compare
RhysSullivan
force-pushed
the
e2e-scenarios-effect-di
branch
from
June 11, 2026 19:25
945a5a0 to
628084f
Compare
RhysSullivan
force-pushed
the
opencode-reauth-repro
branch
from
June 11, 2026 21:00
118795e to
55d73fe
Compare
RhysSullivan
force-pushed
the
e2e-scenarios-effect-di
branch
from
June 11, 2026 21:00
dc3d39e to
11932d0
Compare
RhysSullivan
force-pushed
the
opencode-reauth-repro
branch
from
June 11, 2026 22:05
55d73fe to
2be27ef
Compare
RhysSullivan
force-pushed
the
e2e-scenarios-effect-di
branch
from
June 11, 2026 22:05
39eb65f to
b38bff6
Compare
RhysSullivan
force-pushed
the
opencode-reauth-repro
branch
from
June 11, 2026 22:21
2be27ef to
ef06485
Compare
RhysSullivan
force-pushed
the
e2e-scenarios-effect-di
branch
from
June 11, 2026 22:21
b38bff6 to
2ab58a9
Compare
RhysSullivan
force-pushed
the
opencode-reauth-repro
branch
from
June 11, 2026 22:27
ef06485 to
0d7e554
Compare
RhysSullivan
force-pushed
the
e2e-scenarios-effect-di
branch
from
June 11, 2026 22:27
2ab58a9 to
f218d77
Compare
This was referenced Jun 11, 2026
RhysSullivan
marked this pull request as ready for review
June 11, 2026 22:28
RhysSullivan
force-pushed
the
opencode-reauth-repro
branch
from
June 11, 2026 22:33
0d7e554 to
2c57062
Compare
RhysSullivan
force-pushed
the
e2e-scenarios-effect-di
branch
from
June 11, 2026 22:33
f218d77 to
f16f2ea
Compare
The scenario environment is now Effect services (src/services.ts): Target, RunDir, and Cli are always provided; Api, Browser, Mcp, Billing, OpenCode, and TtlControl are added to the per-run Context only when the target (or host) actually provides them. A scenario body is a plain Effect that yields what it uses — the string needs array, the hand-rolled ctx record, and the setAccessTokenTtl nullish dance are all gone. Skipping needs no declaration either: the runner provides the partial context, and yielding a service the target lacks surfaces as Effect's own missing-service defect, which the runner classifies into a vitest runtime skip (testCtx.skip) with the missing services named in skipped.json — the matrix reads exactly as before. Scenarios that depend on a deployment trait without calling its surface gate with a bare yield (Billing in org-limit, TtlControl in the wire lifecycle); the real-OpenCode scenario now takes its MCP endpoint from the Mcp service, making that dependency real. The package also gains its first tsconfig + typecheck script (it was never typechecked), which surfaced latent type errors now fixed: the api surface's HttpApiClient generics, mcpConsent's request shape (mcporter passes redirectUrl), and viewer module declarations. Capability on Target shrinks to deployment traits (api/browser/mcp-oauth/ billing); host-environment services (the opencode binary) and optional-method services (setAccessTokenTtl → TtlControl) are derived in the harness.
The auth-methods, auth-methods-ui, oauth-callback-url, mcp-multi-auth, and oauth-app-modal scenarios (added on trunk after this branch forked) still used the old needs:-array + ctx surface. Migrate them to yield Target/Api/Mcp/Browser services so they declare dependencies the same way as the rest of the suite, and fix two latent type slips the new typecheck surfaces: tools.list now takes a query argument, and the OpenAPI oauth template uses kind:"oauth2".
RhysSullivan
force-pushed
the
e2e-scenarios-effect-di
branch
from
June 11, 2026 22:36
f16f2ea to
6beb87b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #945 (review only the commits unique to this branch). Stack: #931 → #944 → #945 → #942.
The scenario environment becomes Effect services:
Target/RunDir/Clialways provided;Api/Browser/Mcp/Billing/OpenCode/TtlControladded to the per-runContextonly when the target (or host) provides them. A scenario body is a plain Effect that yields what it uses — the stringneedsarray and the hand-rolledctxrecord are gone.Skipping needs no declaration: yielding a service the target lacks surfaces as Effect's missing-service defect, which the runner classifies into a vitest runtime skip with the missing services named in the matrix record. Scenarios that depend on a deployment trait without calling its surface gate with a bare yield.
Also adds the package's first tsconfig + typecheck script (surfacing latent type errors, now fixed).
Verified: cloud 67/69 (the 2 intended repro reds), selfhost 8 passed + 3 skipped via the new mechanism, typecheck/lint/format green.
🤖 Generated with Claude Code
Stack