Test all the things!
Break the whole app
Test the whole path
Locally, in CI, and in production.
The alternative to testing the whole path is discovering failures by breaking the whole app.
This hackathon project makes the same core scenarios runnable locally, in CI, and in production.
The Idea: Confidence on all levels
01
Local runtime
Real or mocked integrations
β
02
CI
Deterministic UI E2E
β
03
Production
Continuous synthetic checks
The goal is not one giant test. It is one reusable flow at three confidence levels: fast
local feedback, deterministic CI coverage, and continuous confirmation against production.
Synthetic Monitoring
Section divider for the Synthetic Monitoring work.
We DO have Synthetics for the Agent?
π€
First page of the grep meme.
Second page of the grep meme.
How we set it up.
01GitChecks colocated with code
02Local & CIVerifies & Deploys whenever the check changes
05Env-AwareConfiguration across environments via doppler
03Browser POCHistory β We'll never break it again
β¦or we will know when we do
The check is versioned in Git and gcx deploys it only when it changes. History is the first
browser-based proof of concept because it is valuable and easy to forget. The same setup can
run locally, while Doppler supplies environment-specific configuration.
Section divider for end-to-end testing with selectable integration depth.
Let's test the core of our App
Contentful UI
β
WebSocket
β
Analytics Agent
β
Cube
Cubemockreal
LLMmockreal
Contentfulmockreal
The improved local runtime gives us a real application, transport, worker, and session path.
Expensive or unstable dependencies can be swapped between mocks and real services. The Cube
mock server is useful now and can also protect the migration away from Cube later.
Different Depths for different Purposes
Local
Full stack
Real worker + transport
PR
Fast
Mock Cube + model
Pre-Merge
Pre-merge & On-deploy checks
Prevent the incident
Scheduled
Production
Real UI + agent + data
The Playwright scaffold lets us choose the integration depth for the purpose: full local
exploration, fast PR feedback, pre-merge incident prevention, and scheduled production
verification can all share the same UI flow.
Meme transition before the UI E2E and Cube Mock-Server demo.
Demo: UI E2E Tests & Cube Mock-Server
Placeholder for the UI E2E Tests and Cube Mock-Server demo.
Blue/Green Deployment
Section divider for Blue/Green deployment findings.
Blue / Green Deployments
Kubernetes / ArgoCD
Rollouts already installed
cf-argocd enables Argo Rollouts in ninetailed-staging and ninetailed-production.
Cloudflare Workers
Gradual rollout supported
Deploy v2 promotes services when smoke-tests/run.ts exists.
Probe candidates
Coverage gap remains
- Synthetic Monitoring depends on deployed services
- Bruno covers ~40%; the rest need another strategy
ConclusionThe building blocks are there. Scope a promotion gate β ideally within one sprint.
Both Kubernetes clusters already have Argo Rollouts through the central cf-argocd. Cloudflare
Deploy v2 can perform a gradual rollout when a service supplies smoke-tests/run.ts. The open
problem is probe coverage: Synthetic Monitoring depends on other deployed services, and Bruno
covers only around forty percent of applications. Scope whether the remaining work fits into
one sprint.
Next Steps
Section divider for the remaining work.
Next Steps
Synthetic Monitoring
- Proper token setup
- Verify stability
E2E
- Define integration-depth profiles
- Establish coverage guidelines
- Make the DX delightful
- Verify stability
Blue / Green Deploys
- POC with a meaningful service
- Plan implementation
β Tasks will be added to the backlog
Close with the work that remains. Each stream needs a small amount of hardening or design
before it becomes routine. Convert these next steps into backlog tasks after the hackathon.