Repository navigation
Conversation
The On Pull Request E2E workflow builds the Druks image from the pull request and installs it with scripts/install.sh on the docker provider. Only the model is fake: a scripted Anthropic API in the Playwright process serves api.anthropic.com with a certificate from a test CA. The box, the secrets proxy, the sandbox image, and the claude CLI are real. The lane runs on Linux and on macOS with Docker Desktop. The mock listens on every interface, and E2E_MOCK_ADDRESS names the address where a container reaches the host. Three specs cover two turns and a reload, a Stop in the middle of a stream, and a Druks restart in the middle of a turn. Each spec checks that the page shows each saved message once and in order, that each reply is what the mock streamed, that the second turn carries the first, and that every model request carries the real token. The lane found three bugs, and this change fixes them: - druks setup refused the [providers.anthropic] table that docs/configuration.md tells an operator to add, so the next install failed. Setup now keeps a [providers] table, like [apps] and [services]. - The bridge saves the session files as soon as a turn ends, but the claude CLI writes its transcript 60 to 120 ms later. So each saved archive missed the latest turn, and a fast turn failed with "The session files are missing". Chat now runs the CLI with CLAUDE_CODE_EAGER_FLUSH, and the CLI writes the transcript before it reports the result. - Only hosted installs ran the drukbox janitor. On the docker provider nothing deleted an expired sandbox, and a template build that a drukbox restart cut off stayed "building" with no end, so each later build waited on it. Every install shape now runs the janitor.
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
This branch was successfully deployed
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.
Chat now runs end to end in a Playwright lane on every pull request. Only the model is fake: a scripted Anthropic API in the Playwright process serves
api.anthropic.comwith a certificate from a test CA. The box, the secrets proxy, the sandbox image, and theclaudeCLI are real.The lane
scripts/install.shon the docker provider.frontend/e2e/install-stack.shmakes the test CA, installs the stack, and builds the sandbox templates. A Compose override pointsapi.anthropic.comat the mock forweband for the secrets proxy.E2E_MOCK_ADDRESSnames the address where a container reaches the host.npm --prefix frontend run test:e2eruns the lane.docs/development.mddescribes a local run.The specs
Each spec checks that the page shows each saved message once and in order, that each reply is what the mock streamed, that the second turn carries the first, and that every model request carries the real token.
Bugs the lane found
druks setuprefused the[providers.anthropic]table thatdocs/configuration.mdtells an operator to add, so the next install failed. Setup now keeps a[providers]table, like[apps]and[services].claudeCLI writes its transcript 60 to 120 ms later. So each saved archive missed the latest turn, and a fast turn failed with "The session files are missing". Chat now runs the CLI withCLAUDE_CODE_EAGER_FLUSH, and the CLI writes the transcript before it reports the result.