The open-source, self-hosted alternative to fragile E2E test suites.
Write tests in plain language. Get screenshot evidence for every run.
Cypress and Playwright make you code against DOM selectors that break when the UI changes. SkyTest Agent works differently: describe what a user would do in plain language, and a browser agent runs those steps, capturing screenshots as evidence.
It is self-hosted, open source, and uses your own API key.
Welcome.mp4
- Plain-language tests - Write test cases the way you'd explain them to a colleague. No CSS selectors or XPaths.
- Visual evidence - Every run captures screenshots and logs so you see what happened, not just pass/fail.
- Multi-session flows - Coordinate across browser roles (e.g., "Browser A" sends a message, "Browser B" receives it) for multi-user scenarios.
- Custom Playwright code - Mix AI-driven steps with your own Playwright scripts when you need precise control.
- Android Support — Run cross-platform tests on web and Android apps with a single test suite.
- MCP & Agent SKill — Use MCP to let AI coding agents generate test cases from your specs.
- Bring Your Own Key - Use your own OpenRouter API key. You pay only your LLM costs.
Example test case:
1. Open the app
2. Sign in as a user
3. Add an item to the cart
4. Verify checkout succeeds
Start Docker, then run:
npm install
cp .env.example .env.local
# Edit .env.local with your credentials
make devOpen http://localhost:3000 and sign in.
Enter your OpenRouter API key in settings and start testing!
Don't want to self-host? We're building a managed version of SkyTest.
- Environment Variables: See
.env.examplefor required configs like database and storage. Users provide their own OpenRouter keys in the app settings. - Local Development: Check the Local Dev Guide for running the CLI runner or resetting state.
- Android Testing: See the macOS Android Emulator Guide to configure cross-platform testing.
- Kubernetes: Reference Helm charts are available in
deploy/helm.
- Browsers not found: Run
npm run playwright:install - Database errors: Verify
DATABASE_URL, then runnpx prisma db push - Object storage errors: Verify
S3_*variables and your bucket in MinIO/S3
Bug reports, feature requests, and pull requests are all welcome.
- Report a bug - Open an issue
- Request a feature - Start a discussion
- Contribute code - Fork the repo, create a branch, and open a pull request