Qovr Documentation
Learn how to use Qovr to create, run, and monitor end-to-end tests with visual evidence.
Quick Start
Create a Project
Go to Dashboard → Projects → Create Project. Give it a name and description.
Add an Environment
Configure the base URL and authentication settings for your test environment.
Create a Journey
Define the steps of your test: navigate, click, type, and assertions.
Run Your Test
Click "Run Now" and watch the results with screenshots for each step.
Core Concepts
Projects
Projects are containers for your tests. Each project can have multiple team members with different roles: Owner, Admin, Member, or Viewer.
Environments
Environments define where your tests run. Configure base URLs and authentication (none, basic auth, bearer token, or cookies) for each environment.
Journeys
Journeys are test scenarios composed of steps. Each step is an action like navigating to a URL, clicking an element, or asserting content.
Runs
A run is a single execution of a journey. It captures screenshots, console logs, and network requests for debugging.
Step Types
| Type | Description | Required Fields |
|---|---|---|
| navigate | Go to a URL | value (URL) |
| click | Click an element | selector |
| type | Type text into an input | selector, value |
| wait | Wait for a duration | value (milliseconds) |
| assert_visible | Check element is visible | selector |
| assert_text | Check element contains text | selector, value |
| assert_url_contains | Check URL contains string | value |
Scheduled Runs
Set up automated test runs on a schedule using cron expressions:
*/15 * * * * - Every 15 minutes0 9 * * 1-5 - Weekdays at 9 AM0 0 * * * - Daily at midnight0 9 1 * * - Monthly on the 1st at 9 AMAI Failure Analysis
When a test fails, our AI analyzes the failure and suggests fixes. Access it via:
POST /api/ai/explain-failure
{
"runId": "RUN_ID"
}CI/CD Integration
Trigger test runs from your CI/CD pipeline using the API:
# Trigger a run
curl -X POST https://qovr.dev/api/journeys/{journeyId}/run \
-H "Authorization: Bearer {your-api-token}" \
-H "Content-Type: application/json"
# Check run status
curl https://qovr.dev/api/runs/{runId} \
-H "Authorization: Bearer {your-api-token}"Slack Integration
Get notified in Slack when tests fail:
- Go to Dashboard → Integrations → Slack
- Create an Incoming Webhook in your Slack workspace
- Paste the webhook URL in Qovr
- Choose when to notify (failures, all runs, etc.)
Email Notifications
Configure email notifications to receive alerts when tests complete:
- Go to Dashboard → Integrations → Email
- Add recipient email addresses
- Choose notification triggers (failures, all runs)
Webhooks
Receive test results via webhook to your own endpoint:
{
"event": "run.completed",
"timestamp": "2026-01-03T10:30:00Z",
"data": {
"runId": "run_123",
"status": "fail",
"durationMs": 5432,
"projectName": "My App",
"journeyName": "Login Flow",
"errorText": "Element not found",
"url": "https://qovr.dev/dashboard/runs/run_123"
}
}Optionally configure a secret for HMAC-SHA256 signature verification via the X-Qovr-Signature header.
GitHub Actions
Run tests in your CI/CD pipeline:
name: E2E Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run E2E Tests
run: |
curl -X POST https://qovr.dev/api/journeys/${{ secrets.JOURNEY_ID }}/run \
-H "Authorization: Bearer ${{ secrets.QOVR_API_KEY }}" \
-H "Content-Type: application/json"
- name: Check Results
run: |
# Poll for results
sleep 30
curl https://qovr.dev/api/runs/latest?journeyId=${{ secrets.JOURNEY_ID }} \
-H "Authorization: Bearer ${{ secrets.QOVR_API_KEY }}"API Authentication
All API requests require authentication via Bearer token:
curl https://qovr.dev/api/projects \
-H "Authorization: Bearer YOUR_API_KEY"Get your API key from Settings → API Keys
Projects API
List Projects
GET /api/projectsCreate Project
POST /api/projects
{
"name": "My Project",
"description": "Optional description"
}Get Project
GET /api/projects/:idUpdate Project
PATCH /api/projects/:id
{
"name": "Updated Name",
"description": "Updated description"
}Delete Project
DELETE /api/projects/:idNeed Help?
Can't find what you're looking for? We're here to help!