e2e-testinglisted
Install: claude install-skill gpambrozio/Gallager
# E2E Test Scenario Development
Guide for creating and updating end-to-end test scenarios for the ClaudeSpy distributed system (macOS app, iOS simulator app, in-process Vapor relay server, optional second macOS instance for two-Mac pairing).
## Architecture Overview
The E2E test framework lives in `ClaudeSpyPackage/Sources/`:
- **ClaudeSpyE2ELib/** - Test framework library (DSL, drivers, orchestrator, scenarios, bundled scripts)
- **ClaudeSpyE2E/** - CLI entry point (`ClaudeSpyE2ECommand.swift` — scenario registration)
Scenarios are defined declaratively using a `@resultBuilder` DSL and executed sequentially by the `TestOrchestrator`.
## Running E2E scenarios
Always use `./scripts/e2e-test.sh` to run scenarios. It builds the apps, launches the orchestrator, and runs the scenario in a clean environment.
Common invocations:
```bash
# Build everything and run all scenarios
./scripts/e2e-test.sh
# Skip build, just run with previously built artifacts
./scripts/e2e-test.sh --skip-build
# Run a specific scenario by exact human-readable name
./scripts/e2e-test.sh --scenario "Fresh Pairing"
# List available scenarios
./scripts/e2e-test.sh --skip-build --list-scenarios
# Take screenshots but skip baseline comparison (one-off)
./scripts/e2e-test.sh --skip-build --no-compare --scenario "My Scenario"
# Interactive mode — runs scenario then waits for Enter so you can poke at the apps
./scripts/e2e-test.sh --skip-build --interactive --scenario "My Scenario"
```
Baselines are n