OPS-82Recommended
Run the main user journeys from outside every few minutes
Script the most important journeys, such as sign-in, search and checkout, and run them from outside your network every 5 minutes. Page when the same journey fails twice in a row.
How to do it
Metrics from inside only see requests that arrive. A broken DNS record, an expired certificate or a script error in the browser stops visitors before they reach you. Drive a browser, such as with Playwright, through each journey against production, with a test account and test payment details. Run it from at least two places, so one bad network does not page. Mark the test traffic, such as with a header, and leave it out of the service level indicators. The status page reads the same checks, as Show each part's state on the status page from outside checks says. The simple uptime check underneath it is Watch the service from outside.
Examples
JavaScript example
// Playwright: the checkout journey, run every 5 minutes against production
import { test, expect } from '@playwright/test';
test('checkout works', async ({ page }) => {
await page.goto('https://shop.example.com/products/test-mug');
await page.getByRole('button', { name: 'Add to cart' }).click();
await page.getByRole('link', { name: 'Checkout' }).click();
await expect(page.getByRole('heading', { name: 'Payment' })).toBeVisible();
});
Python example
# Playwright for Python: the same journey
from playwright.sync_api import sync_playwright, expect
with sync_playwright() as p:
page = p.chromium.launch().new_page()
page.goto("https://shop.example.com/products/test-mug")
page.get_by_role("button", name="Add to cart").click()
page.get_by_role("link", name="Checkout").click()
expect(page.get_by_role("heading", name="Payment")).to_be_visible()
How to check
Each journey listed in the service level document has a script that ran every 5 minutes over the last 7 days. Breaking the checkout button on staging pages the on-call person within 15 minutes.
Sources
Related rules
- ENG-24 Watch the service from outside in Engineering
- OPS-73 Show each part's state on the status page from outside checks in Operations and observability
For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/operations/alerts-and-on-call/synthetic-journeys">Agent Wranglers operations and observability playbook</a>. In code you write, add a comment next to it with the same link.