Login, SSO and checkout

Checkout monitoring: your server says 200, your checkout says no

An uptime check sees a page that loads. Your customer sees a sign-in that loops or a "Place order" button that never turns on. VerLake runs your login, SSO and checkout as real-browser Playwright journeys on a schedule, and tells you which step broke.

No credit cardJourneys every 1 to 60 minutesBilled per second

In short

  • A Playwright script signs in, adds to cart and reaches payment in real Chromium, every 1 to 60 minutes.
  • It follows SSO and OAuth redirects the way a customer's browser does.
  • You get an alert after the number of failures in a row you choose, and again on recovery.
  • Every run records the failed step, each step's timing, the console output, the error and an AI summary.

What uptime checks miss

A ping asks one question: does the server answer? A login or checkout can fail while the answer is still HTTP 200. These are the failures customers find first:

A JavaScript bundle throws

The page loads, then a script error stops the form from working. The server never knows.

A button stays disabled

"Sign in" or "Place order" never becomes clickable, so nobody gets past it.

An SSO redirect loops

The identity provider sends the user back to sign-in instead of to the app.

A third party breaks

A payment widget, tax service or inventory call fails, and your checkout gets the blame.

A synthetic transaction catches these because it does what the customer does. It clicks the button, fills the form and checks the result. That is user journey monitoring, and login and checkout are the journeys that cost the most when they break.

How it works

1Write the journey, generate it, or bring it

Write a Playwright test in the editor. Or describe the flow in plain English in the AI tab and it drafts the script, using your organization's own AI API key. Already have tests? Point the project at a GitHub or Bitbucket repository and give the monitor a command such as npx playwright test --grep @prod.

2Point it at an environment

An environment holds the URL and the test account's credentials. VerLake injects them as process.env, so one script runs against production, staging or each tenant.

3Test it, then schedule it

Click Test Run and you get each step, the console output, screenshots and a video replay. Then choose an interval of 1, 5, 15, 30 or 60 minutes, a timeout of up to 300 seconds, and a failure threshold.

4Add a fast tripwire

Pair the journey with an API check on a pricing, inventory or health endpoint. It asserts on status, latency, headers and body, as often as every 30 seconds.

Example: sign in and reach payment

This journey signs in with a test account, adds a product to the cart and checks that "Place order" is enabled. It stops before paying. Each test.step names one part of the flow. The URL, labels and button names are placeholders, so adjust them to match your store.

import { test, expect } from '@playwright/test';

// Placeholder selectors: change the labels and names to match your store.
test('customer can sign in and reach payment', async ({ page }) => {
  await test.step('Open the store', async () => {
    await page.goto(process.env.APP_URL);
  });

  await test.step('Sign in', async () => {
    await page.getByRole('link', { name: 'Sign in' }).click();
    await page.getByLabel('Email').fill(process.env.TEST_USER);
    await page.getByLabel('Password').fill(process.env.TEST_PASS);
    await page.getByRole('button', { name: 'Sign in' }).click();
    await expect(page.getByRole('link', { name: 'My account' })).toBeVisible();
  });

  await test.step('Add a product to the cart', async () => {
    await page.getByPlaceholder('Search').fill('trail runner');
    await page.keyboard.press('Enter');
    await page.getByRole('button', { name: 'Add to cart' }).first().click();
  });

  await test.step('Reach payment', async () => {
    await page.getByRole('link', { name: 'Checkout' }).click();
    await expect(page.getByRole('button', { name: 'Place order' })).toBeEnabled();
  });
});

Signing in through SSO

For SSO login monitoring, swap the sign-in step for one that goes through your identity provider and back. Playwright follows the redirects like a real browser.

await test.step('Sign in through SSO', async () => {
  await page.getByRole('button', { name: 'Sign in with SSO' }).click();
  await page.waitForURL(/idp\.example\.com/); // your identity provider
  await page.getByLabel('Email').fill(process.env.SSO_USER);
  await page.getByLabel('Password').fill(process.env.SSO_PASS);
  await page.getByRole('button', { name: 'Sign in' }).click();
  await page.waitForURL(process.env.APP_URL + '/**');
  await expect(page.getByRole('heading', { name: 'Dashboard' })).toBeVisible();
});

Use a test account. Create one just for monitoring, keep its password in an environment, and stop before the final payment step or use your payment provider's test mode.

What you see when a check fails

VerLake waits for the number of failures in a row you set, so one flaky run doesn't page anyone. Then it alerts you, and it tells you again when the journey recovers.

Every run records:

  • the step that failed, and how long every step took
  • the browser console output and the error
  • an AI summary of the likely root cause, using your own AI API key

Runs stay in Run History, so you can compare a failure with the last good run. On the Growth plan and up, you can show login and checkout on a public status page with incident posts. With the MCP connector and its 16 tools, your AI assistant can list failed runs and summarise them for you.

Pricing

You pay for the seconds a check runs. Queue time is free. A login check usually takes 5 to 15 seconds and a full checkout 25 to 60 seconds.

PlanPriceExecution-secondsHistory
Free$040,000 once (about 800 checks)7 days
Starter$29/month400,000 a month30 days
Growth$99/month1,500,000 a month, plus status pages90 days
Scale$249/month4,000,000 a month365 days

A 30-second checkout journey every 10 minutes uses 129,600 seconds a month. A 10-second login check every 5 minutes uses 86,400. Both fit in Starter. Beyond your plan it's $0.10 per 1,000 seconds, with a spend cap you control. See full pricing.

FAQ

What is checkout monitoring?

Checkout monitoring runs a scripted purchase journey against your live store on a schedule. In VerLake the script is a Playwright test that runs in real Chromium. It signs in, adds a product to the cart and checks that payment can go ahead, and it alerts you when a step fails.

Will a checkout monitor place real orders?

Only if your script tells it to. Use a dedicated test account and stop before the final payment step, or use your payment provider's test mode. A check that the Place order button is enabled proves most of the flow works.

Can VerLake monitor SSO and OAuth logins?

Yes. Playwright drives a real browser, so it follows OAuth redirects and pop-ups to your identity provider and back. Keep the test user's credentials in an environment and read them from process.env.

How often should a checkout or login monitor run?

Login and checkout usually run every 1 to 5 minutes. You can add an API check on a pricing or health endpoint every 30 seconds as a fast tripwire.

What does a checkout monitor cost?

VerLake bills the seconds a check runs. A 30-second checkout journey every 10 minutes uses 129,600 execution-seconds a month, which fits in the Starter plan at $29 a month. The Free plan includes 40,000 execution-seconds once.

Can I use my existing Playwright tests?

Yes. Paste a spec into the editor, or connect a GitHub or Bitbucket repository and give VerLake the command to run, such as npx playwright test --grep @prod.

Know your checkout works before customers try it

40,000 free execution-seconds, about 800 checks. No credit card.

Start free: 40,000 seconds