E2E Testing
The E2E Testing service runs end-to-end tests against ShellApps services using Docker and Playwright. It supports visual regression testing and integrates with CI pipelines.
Overview
- Playwright-based — Tests run in real browsers (Chromium, Firefox, WebKit)
- Dockerised — Consistent test environments via Docker containers
- Visual regression — Screenshot comparison to catch UI regressions
- CI integration — Trigger test runs from GitHub Actions, GitLab CI, or via API
- Orchestrated — RapidStack can trigger test suites as workflow steps
Architecture
┌──────────┐ ┌──────────────┐ ┌──────────────────┐
│ CI / API │ ──▶ │ E2E Service │ ──▶ │ Docker Container │
│ │ │ │ │ ┌────────────┐ │
│ │ │ Test Runner │ │ │ Playwright │ │
│ │ │ Result Store │ │ │ + Browsers │ │
│ │ └──────────────┘ │ └────────────┘ │
│ │ └──────────────────┘
│ │ ◄── Results + Screenshots
└──────────┘Running Tests
Via API
const response = await fetch('https://e2e.shellapps.com/api/v1/runs', {
method: 'POST',
headers: {
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
suite: 'smoke',
target: 'https://experience.shellapps.com',
browsers: ['chromium'],
}),
});
const { runId } = await response.json();Via CLI
npx @shellapps/e2e-cli run --suite smoke --target https://experience.shellapps.comVia RapidStack
await rapid.createTask({
type: 'e2e-test',
tools: ['e2e.run-suite'],
input: { suite: 'smoke', target: 'https://experience.shellapps.com' },
});Test Suites
| Suite | Description | Duration |
|---|---|---|
smoke | Critical path tests — login, navigation, basic CRUD | ~2 min |
regression | Full regression suite | ~15 min |
visual | Screenshot comparison tests | ~5 min |
auth | Authentication flow tests | ~3 min |
Visual Regression
Screenshots are captured and compared against baselines:
await expect(page).toHaveScreenshot('dashboard.png', {
maxDiffPixelRatio: 0.01,
});Failed comparisons generate diff images highlighting changes.
Related
- API Reference — Trigger runs and get results
- Writing Tests — How to write E2E tests
- RapidStack — Orchestrate test runs in workflows