Synthetic monitoring with real Playwright

A 200 says the server answered. It doesn't say checkout worked.

Run real Playwright flows through login, search, and checkout, and assert on the APIs behind them, every minute from 22+ locations. When a step fails you get the trace, the screenshot, and the root cause, not a red dot.

Standard Playwright, latest version · Free plan · No credit card

ChecklyCart Checkout
Started at Mar 4 09:14:22 (UTC-5) 🇺🇸
🇺🇸
N. Virginia🇺🇸
Started at Mar 4 09:14:28 (UTC-5)
🔍Search by test title/
☰ Status ▾🏷 Labels ▾
↕ Expand all↕ Collapse all
⊙⊙7 passed14.82 s
setup
__checks__/authenticate.spec-setup.ts
Authenticate412 ms
desktop-light
tests/checkout.spec-suite.ts
Checkout
should add product to cartcheckout3.21 s
should apply discount codecheckout2.68 s
should complete paymentcheckout5.51 s
⊙⊙7 passed
Test command ?
npx playwright test --config
"playwright.config.ts" --grep "@checkout" --
reporter json
▾ Project summary
setup
Passed: 1 | Failed: 0
Skipped: 0 | Flaky: 0
Started at: 3/4/2026, 9:14:28 AM
desktop-light
Passed: 6 | Failed: 0
Skipped: 0 | Flaky: 0
Started at: 3/4/2026, 9:14:31 AM
▾ Execution configuration
Playwright version1.55.0
Number of workers2
Fully parallelYes

Teams that monitor checkout, login, and critical APIs with Checkly

Vercel
Carhartt
CrowdStrike
Airbus
Fanatics
Mistral
ServiceNow
GoFundMe
Hopper
1Password
Fastly
Total Wine
Checkly has helped us save engineering resources and expenses. The number of our customer support tickets are then reduced because the customer is already proactively informed about problems without having to report the issues themselves.
Aliasger KiranawalaLead SDET, Locus

Synthetic monitoring that runs the tests you'd write anyway

Most synthetic tools hand you a recorder or a scripting language of their own. Checkly runs standard Playwright and standard HTTP assertions, keeps them in your repo, and adds the global schedule, retries, and evidence that turn a test into a monitor.

@playwright/test

Real Playwright, not a recorder

Checks are standard Playwright specs at the latest version, with your fixtures, page objects, and config. No proprietary DSL that drifts behind the framework, and nothing to rebuild when the UI changes.

browser + api

The UI and the APIs behind it, together

Run the checkout flow in a real browser and assert on the payments API it calls, from the same platform with the same alerting. One dashboard shows which layer actually broke.

traces · screenshots · rocky

Failures arrive with the why

Every failed run keeps the Playwright trace, screenshots, video, network calls, and console logs. Rocky AI reads them and returns a root cause before on-call opens a laptop.

Click, fill, pay, and assert, in a real browser

A browser check is a Playwright spec that runs on a schedule against production. It clicks the same buttons your users click in Chromium, Firefox, or WebKit, and fails the moment the order confirmation does not appear. Bring your existing suite; nothing needs rewriting.

  • Standard @playwright/test with your fixtures, page objects, and storage state
  • Chromium, Firefox, WebKit, and mobile viewports
  • Every run keeps the trace, screenshots, video, and console
checkout.spec.tsts
1import { test, expect } from '@playwright/test'
2
3test('user can complete checkout', async ({ page }) => {
4 await page.goto('https://app.acme.com')
5
6 await page.getByRole('button', { name: 'Add to cart' }).click()
7 await page.getByRole('link', { name: 'Checkout' }).click()
8
9 await page.getByLabel('Email').fill('user@acme.com')
10 await page.getByRole('button', { name: 'Pay now' }).click()
11
12 await expect(page.getByText('Order confirmed')).toBeVisible()
13})
orders.check.tsts
1import { ApiCheck, AssertionBuilder, Frequency }
2 from 'checkly/constructs'
3
4new ApiCheck('create-order', {
5 name: 'Orders API · create',
6 frequency: Frequency.EVERY_1M,
7 locations: ['us-east-1', 'eu-west-1', 'ap-south-1'],
8 request: {
9 url: 'https://api.acme.com/v1/orders',
10 method: 'POST',
11 body: JSON.stringify({ items: ['sku-001'] }),
12 assertions: [
13 // a 200 is not enough: assert on what came back
14 AssertionBuilder.statusCode().equals(201),
15 AssertionBuilder.jsonBody('$.orderId').isNotNull(),
16 AssertionBuilder.responseTime().lessThan(1500),
17 ],
18 },
19})

Assert on the payload, not just the status code

API checks assert on status, headers, response time, and JSON fields. Multistep checks chain requests into a full workflow, authenticate, create, verify, clean up, with tokens carried across steps. A 200 that returns an empty order is a failure here.

  • JSONPath assertions on nested fields and arrays
  • Multistep workflows with setup and teardown scripts and encrypted secrets
  • As often as every 10 seconds from 22+ locations

When it fails, on‑call gets the why

A failed check keeps the full Playwright trace, screenshots, network calls, and console logs. Rocky AI reads that evidence and writes the root cause and user impact in plain language, so the responder starts with an answer instead of a reproduction.

  • Root cause and user impact on every failed run
  • Retries from another region before anyone is paged
  • Alerts to Slack, PagerDuty, Opsgenie, Teams, SMS, phone, and webhooks
How Rocky AI analysis works
User impact

Users cannot load the OTEL test app homepage; the server responds with an internal error instead of displaying the B2B portal. This prevents access to any functionality that depends on the homepage loading successfully.

Steps2
Root Cause

The application server for https://otel-test-app.vercel.app/ is returning HTTP 500 Internal Server Error for the homepage request, indicating a backend or infrastructure failure in the AWS-hosted Prismic CSM-backed service rather than a test code issue.

  • HTTP 500 Internal Server Error Explanation
  • Playwright page.goto() Documentation
Evidence3
We've been using Checkly for the past months. It's been phenomenal. Super easy to get setup, works flawlessly and intuitively. The team are super receptive & quick to help.
Jake CooperFounder / Engineer, Railway

Monitor checkout like your business depends on it

Point Checkly at a Playwright spec or an API endpoint, pick your locations, connect Slack. The next broken flow pages you with the trace attached.

Free plan includes browser and API checks. No credit card.