Tests
Create and manage test scriptsEdit
Tests are reusable scripts that validate your application. Create browser, API, database, custom, or performance tests.

Test Types
Browser Test
Playwright-based UI testing for user flows
API Test
HTTP and GraphQL endpoint validation
Database Test
SQL queries and data validation
Custom Test
Node.js scripts for any scenario
Performance Test
k6 load testing from multiple regions
Create Test
- Open Create and select a test type.
- Write a script in the Playground, choose a Template, or use AI Create for a starting point.
- Review the script, replace example URLs and data, then click Run.
- Review the result and Save the test.
After a run completes, review its result and available logs, screenshots, and traces. If it fails, update the script and run it again. You can save a draft before it passes; validate it before adding it to a job or synthetic monitor.
Scroll horizontally to view the full diagram.
AI Features
- AI Create — Generate tests from plain English descriptions (beta for browser tests)
- AI Fix — Review suggested changes for a failing test before applying them
- Templates — Pre-built scripts for common scenarios
For browser tests, consider recording with the Supercheck Recorder Extension or Playwright Codegen first, then use AI to enhance.
See Playground for details.
Test Examples
import { expect, test } from '@playwright/test';
const APP_URL = 'https://demo.playwright.dev/todomvc';
test.describe('UI smoke test', () => {
test('home page renders primary UI', async ({ page }) => {
// Navigate to the application
await page.goto(APP_URL);
// Verify page title and input visibility
await expect(page).toHaveTitle(/TodoMVC/);
await expect(page.getByPlaceholder('What needs to be done?')).toBeVisible();
// Perform interaction: Add a new task
await page.getByPlaceholder('What needs to be done?').fill('Smoke task');
await page.keyboard.press('Enter');
// Verify the task was added to the list
await expect(page.getByRole('listitem').first()).toContainText('Smoke task');
});
});import { expect, test } from '@playwright/test';
const API_URL = 'https://jsonplaceholder.typicode.com';
test.describe('API health check', () => {
test('health endpoint responds with expected payload', async ({ request }) => {
// Send GET request
const response = await request.get(API_URL + '/posts/1');
// Basic status checks
expect(response.ok()).toBeTruthy();
expect(response.status()).toBe(200);
expect(response.headers()['content-type']).toContain('application/json');
// Validate JSON structure
const body = await response.json();
expect(body).toMatchObject({ id: 1 });
expect(typeof body.title).toBe('string');
});
});import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
vus: 3, // 3 concurrent users
duration: '30s', // Run for 30 seconds
thresholds: {
http_req_failed: ['rate<0.01'], // Error rate < 1%
http_req_duration: ['p(95)<800'], // 95% of requests < 800ms
},
};
export default function () {
const baseUrl = 'https://test-api.k6.io';
const response = http.get(baseUrl + '/public/crocodiles/1/');
// Validate response
check(response, {
'status is 200': (res) => res.status === 200,
'body is not empty': (res) => res.body && res.body.length > 0,
});
sleep(1); // Pause between requests
}Tags
Organize tests with color-coded tags for easy filtering and categorization.
- Create tags — Add custom tags with any of 15 available colors
- Filter by tags — Quickly find tests by tag in the list view
- Bulk operations — Apply or remove tags from multiple tests
Tags are project-scoped, so each project can have its own tagging system.
Features
- Playground — Interactive editor with AI assistance
- Variables — Project-scoped config, secrets, and file-backed test data (learn more)
- Reports — Screenshots, traces, and logs
- Tags — Color-coded organization and filtering
- Execution locations — Run performance tests from the locations available to your project
Execution Limits
Playwright Tests: Individual test executions have a maximum runtime of 5 minutes. Tests exceeding this limit are automatically terminated.
K6 Performance Tests: Individual test executions have a maximum runtime of 60 minutes to accommodate load testing scenarios.
Running Multiple Tests
For running multiple tests together in a sequence, use Jobs. Jobs allow you to:
- Group related tests into automated workflows
- Schedule regular execution (hourly, daily, or custom cron)
- Trigger from CI/CD pipelines
- Get aggregated reports and notifications
- Set up alerts for the entire test suite
Jobs are ideal for regression testing, smoke tests, and comprehensive validation of your application.
Learn More
- Playwright Documentation — Browser automation framework
- k6 Documentation — Load testing tool