e2e: full flow with simulated externals (sign in → create project → editor)#99
Merged
manuelkiessling merged 9 commits intomainfrom Feb 17, 2026
Merged
e2e: full flow with simulated externals (sign in → create project → editor)#99manuelkiessling merged 9 commits intomainfrom
manuelkiessling merged 9 commits intomainfrom
Conversation
…ditor) - Add test doubles for APP_ENV=test: SimulatedRemoteManifestValidator, SimulatedS3AssetUploader, SimulatedGitAdapter (clone from fixture, no-op push), SimulatedGitHubAdapter (fake PR URL), E2eNoOpProjectSetupStepsProvider - Wire doubles in config/services.yaml when@test; e2e fixture path parameter - E2E fixture: tests/fixtures/e2e-workspace-template (minimal package.json + index.html) - Set APP_ENV=test for messenger in docker-compose.e2e.yml so async setup uses doubles - Add data-test-id / data-test-class to project list, project form, editor, workspace setup - New e2e spec: full-flow.spec.ts (sign in, create project, open editor, send message) - No external calls in e2e: LLM, manifest URL, S3, git clone, GitHub API all simulated
…est overrides in test)
…t, 120s editor wait)
f2fcb01 to
3419814
Compare
The e2e script mutates running containers in-place with test env config but never restores them. This leaves nginx on port 8080 with APP_ENV=test after tests complete. Add an EXIT trap that runs `docker compose up -d` (without the e2e override) to recreate containers with dev defaults.
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.
Summary
Adds a full end-to-end test that covers the core flow (sign in → create project → use editor) with all external dependencies simulated. The test is deterministic and requires no real APIs, git remotes, or GitHub access.
What’s in scope
LLM_CONTENT_EDITOR_SIMULATE), manifest URL, and S3 credentials are validated by test doubles that accept valid-looking input without calling external services.tests/fixtures/e2e-workspace-template) and does a no-op on push.truestep) so setup finishes quickly without npm/mise.Changes
Test doubles (active only when
APP_ENV=test):SimulatedRemoteManifestValidator– accepts any non-empty http(s) manifest URL.SimulatedS3AssetUploader–verifyCredentials()returns true;upload()returns a deterministic fake URL.SimulatedGitAdapter– clone copies fixture +git init+ one commit; push is no-op; other operations delegate to real git.SimulatedGitHubAdapter–findPullRequestForBranch()returns null;createPullRequest()returns a constant fake PR URL.E2eNoOpProjectSetupStepsProvider– single no-op setup step so workspace setup completes without running npm/mise.Config:
when@testinconfig/services.yamlwires the above;e2e.workspace_fixture_pathpoints at the fixture. docker-compose.e2e.yml setsAPP_ENV: testfor the messenger service so async workspace setup uses the same doubles.E2E fixture:
tests/fixtures/e2e-workspace-template/with minimalpackage.jsonandindex.htmlfor the simulated “clone”.E2E selectors:
data-test-id/data-test-classadded to project list, project form, editor, and workspace setup templates for stable selectors.New spec:
tests/End2End/tests/full-flow.spec.ts– one test that signs in, creates a project (with fake data), opens the editor, waits for setup when needed, and sends one message.How to run
Runs the full Playwright suite (including the new full-flow test) against the stack started with
docker-compose -f docker-compose.yml -f docker-compose.e2e.yml.Notes
APP_ENV=test.