Synthetic testing

A homepage can stay up while checkout is dead

Uptime tells you the server answered. It does not tell you that Pay now threw, that the password reset never arrived, or that the payment script failed in one city and nowhere else. Acumen Logs walks those journeys in a real Chromium browser, on a schedule, and keeps the screenshot, the video, the console, and the request.

No credit card. The free plan includes one browser monitor, video recordings, email alerts, and a status page.

Web Property
Browser, Mobile, App
Authoring
Record, build, or describe
Evidence
Video, console, network, Lighthouse
Alerts
Slack, Teams, email, SMS, webhooks
Synthetic run · Frankfurt
Checkout — production
Failed
Total requests
132
20x response
124
30x response
6
40x response
1
50x response
1
Step 1 · Open /shop
1.0s
Step 2 · Add the wool coat
0.7s
Step 3 · Enter shipping
1.3s
Step 4 · Submit payment
3.2s
Step 5 · Order confirmation
—
POST /api/payments returned 502 after 3.2s. Screenshot, video, and console saved.
Uptime is necessary. It is not the question.

The check that stays green while the sale fails

An uptime monitor asks whether a URL responded. Synthetic testing asks whether a person can finish the job. Acumen Logs runs both. The journey is what catches a broken button, a silent script error, or a gateway that loads and then refuses the charge.

Uptime reports
The journey finds
Up

GET / returns 200 in 180ms from every region you check.

Journey failed

Pay now throws before an order exists. The storefront is healthy. The sale is not.

Up

The login page is reachable and the certificate is valid.

Journey failed

The password reset never lands in the test inbox, so the account cannot be recovered.

Up

Every probe location can open the homepage.

Journey failed

The same checkout fails only from Frankfurt, because a payment script was blocked at the edge.

AI journey builder

Describe the journey. AI builds the test

Write what a customer does in one sentence. The AI opens your site, finds the right links, fields, and buttons, and hands you a finished journey with a screenshot of every step. What used to take 10 to 20 minutes of clicking and selectors now takes seconds.

  • No selectors, no scripts, no HTML knowledge.
  • Review every step and screenshot before you save.
  • Edit the result in the no-code builder like any other journey.
AI journey builder
Ready to save
Prompt
Go to the contact page, fill in the contact form, and submit it.
✓
Click “Contact” in the menu
Step 1
✓
Fill Name with “Alex Morgan”
Step 2
✓
Fill Email with a test inbox address
Step 3
✓
Fill Message with a demo request
Step 4
✓
Click “Send message”
Step 5
✓
See “Thanks for getting in touch”
Step 6

6 steps and 6 screenshots, built in seconds

Save journey
What a run keeps

A full browser session, not a status code

Each execution opens Chromium, follows the steps you defined, and stores enough of the session to debug the failure without asking a customer what they saw.

01

On schedule, or on demand

The journey runs in a real browser on the interval you set, from every minute to once a day depending on the plan. The same test can also be triggered on demand, or from a pipeline, without waiting for the schedule.

02

Desktop, mobile, or tablet

Pick the device when you create the test. Acumen Logs sets the viewport and the user agent, so a layout that only breaks on a phone is a failed step, not a guess.

03

Steps, in order

Login, search, cart, shipping, payment, confirmation. Each step records success or failure. Conditional steps branch on whether an element is visible, so a cookie banner or an optional upsell does not fail a healthy run.

04

Screenshots and video

Every batch keeps stills and a recording. You see the screen the browser saw at the broken step: the empty state, the spinner that never resolved, the error the customer would have met.

05

The console, intact

JavaScript errors stay attached to the run. You can fail the journey when the console reports an error, and read the message in place instead of reproducing it by hand.

06

Every request

Filter by type and status: document, script, stylesheet, image, font, fetch. A single 500 on the payment call is visible even when the HTML around it returned 200.

07

Fail conditions you choose

Mark a run failed on JavaScript errors, on status budgets (one 500, or three 404s, for example), or when an expected string never appears. Ignore third-party hosts when only your domain should page anyone.

08

Lighthouse on the same report

Performance, accessibility, best practices, and SEO are scored beside the functional result. A journey can pass and still show that the checkout got slow.

Three ways in

Record it, assemble it, or describe it

You do not need a browser-automation script to put a monitor on checkout. Teams that want the journey in CI can trigger the same test from GitHub Actions.

01

Record the path

The Chrome extension watches you click through your live site and turns that path into steps. Open the site, press record, and walk the journey the way a customer would.

02

Assemble the steps

The no-code builder is where you add, reorder, and set checks: a startup URL, a device, a string that must appear, a condition on an element that is only sometimes there. A base-domain variable points the same steps at staging, a preview, or production.

03

Describe it in plain language

AI journey generation drafts the steps from a sentence: sign in as a returning customer, add the wool coat, and stop on the order confirmation. Review the draft, then schedule it like any other monitor.

The same journey, from the pipeline

The GitHub Action starts a run from a workflow. Override the startup URL for staging, choose a region, wait for the result, and fail the job when the journey fails — or when warnings should be treated as failures. Keep the run URL in secrets.

Read the GitHub Action guide →
- name: Run checkout journey
uses: deferdie/acumen-github-action/.github/actions/Synthetic@v1
with:
SYNTHETIC_TEST_URL: ${{ secrets.ACUMEN_SYNTHETIC_URL }}
START_URL: https://staging.northline.example
LOCATION: eu-central-1
WAIT_FOR_COMPLETION: true
FAIL_ON_WARNINGS: true

Chrome Extension

Record your user journeys in seconds. No code required.

The Acumen Logs Synthetic Test Recorder connects directly to your active browser tab. Open your web app or store, press record, and click through critical user journeys. The extension automatically maps resilient CSS & semantic selectors as synthetic test steps.

What the recorder captures
Click
Shop Catalog

Tracks navigation through top-level menus and category links.

Click
Select Item

Locates product cards, modals, or variants using semantic text.

Fill
Input Credentials

Records form fields (email, address) with variable test data.

Click
Submit Checkout

Triggers submission and asserts the subsequent confirmation redirect.

https://yourstore.com/checkout
Acumen Recorder
Catalog Cart (1)
Complete your order
Review item details and enter shipping info to finish checkout.
alex@company.com
TARGET: button#order-submit
Acumen Logs
REC 00:34
Live Action Stream
Click ✓ recorded
Nav: Shop
a[href="/shop"]
Fill ✓ recorded
Input: Email
input#customer_email
Clicking detecting...
Button: Place Order
button#order-submit

Zero code or SDKs

The recorder interacts directly with standard DOM elements in any browser tab. Test live web apps, SPAs, and checkouts without installing tracking tags or custom dependencies.

Resilient selectors

Frontends frequently update class names and IDs. The recorder uses smart element hierarchy and semantic identifiers so design updates won't break your test suite.

Clean reporting & safe runs

Run multi-step tests across staging sandboxes or test gateways. Acumen Logs flags automated headers so scheduled test runs never contaminate your production analytics.

Evidence

One checkout, four cities, one broken payment

One checkout, checked from four cities. London, Ohio, and Singapore complete the purchase. Frankfurt fails on the payment request. A homepage uptime check would still be green in all four.

Every 5 minutes
Checkout — production
1 of 4 failed
London · eu-west-2
Pass

All five steps passed. No alert.

Frankfurt · eu-central-1
Fail

Payment returned 502. The other regions passed in the same minute.

Ohio · us-east-2
Pass

All five steps passed. Payment authorized in under a second.

Singapore · ap-southeast-1
Slow

The purchase completed. Payment took 4.8s, over the sample warning line.

A step slower than 3 seconds is marked as a warning. You decide whether a warning sends an alert.

Slack · #incidents
Checkout — production failed in Frankfurt
Step 4
TypeError: Cannot read properties of undefined (reading 'token') at submitPayment (checkout.js:214)
Requests on Submit payment
GET
/checkout
200
260ms
POST
/api/payments
502
3.2s
GET
js.stripe.com/v3
200
150ms
GET
pixel.untrusted.example/p.js
blocked
—

The run saves the screenshot and the video for this step, with the console error and the request log.

Stay on the path

The test should not wander, and the email has to arrive

A journey that clicks through a live site needs limits. A journey that signs someone up is not finished until the message shows up.

Security of the run

  • Allowlist the domains and addresses the browser may call. Fail the run when a request leaves that list.
  • Block ads, analytics, and other noisy scripts so timings stay comparable from one run to the next.
  • Ignore errors from hosts outside your domain when a third-party pixel should not page the on-call.
  • Keep credentials in the project. The GitHub Action takes a run URL from secrets, not a password in the workflow file.

A test inbox on every monitor

  • Signup, password reset, and magic links do not end on the submit button. Each monitor has a dedicated inbox.
  • The journey can wait for the message, open the link, and assert that the account is actually usable.
  • If the mail never arrives, the step fails — even when the form itself returned a success state.
Who runs it

The Test that pays, checked on purpose

Synthetic testing is the layer you add when a green homepage is not the same thing as a working product.

Product engineering

Smoke the release. The GitHub Action runs the journey against the URL you pass in, and the workflow can stop when the run does not pass. Production keeps its own schedule, so a regression that slips past CI is still caught later that night.

Commerce and payments

Cart, shipping, and the gateway are one journey. Run it on a short interval from more than one region. A 502 from the payment host in a single city is a revenue incident. The homepage check will not say so.

Agencies and hosts

One project per client, a browser monitor on the flow that client sells through, and a status page for the people who ask if the site is down. The WHMCS module is there when monitoring is part of what you resell. SSL and domain checks sit beside the journey.

“Really easy setup process for user journey based synthetic monitoring, and all the reporting options we needed.”

Setup

A monitor, a schedule, a definition of failure

There is no agent to install on your servers. Most teams have the first monitor running in about a minute.

01

Name the journey

“Checkout — production” ages better than “Test 4.” Choose the project, the startup URL, and desktop, mobile, or tablet. Add a base domain if the same steps should run against more than one environment.

02

Decide how often

Turn the schedule on when the steps are trustworthy. Revenue paths deserve a short interval; quieter journeys can run less often. Plans cover frequencies from every minute to once a day, and a pipeline can start a run between those ticks.

03

Say what fails, and who hears it

JavaScript errors, HTTP status budgets, a missing confirmation string. Then point the alert at a channel someone reads: Slack, Microsoft Teams, email, desktop, SMS, or a webhook into the pager or the ticket queue. Send a test alert before you trust it. Set a minimum fail count so one stray 404 does not wake anyone.

Pricing

Try journeys free. Schedule them on Essentials

A token is 30 seconds of browser-test time. No credit card to start, and you can cancel any time.

Free

$0
forever
  • 60 synthetic tokens a month
  • Tests run when you start them
  • Screenshots, console, and network logs
  • 10 uptime, SSL, and WHOIS checks
  • Email alerts
Start free

Solo at $5 adds custom schedules and 150 tokens. Pro adds CI/CD and 6,000 tokens. Both are on the pricing page.

See every plan →
FAQ

Frequently Asked Questions

How is synthetic testing different from uptime monitoring?

Uptime checks whether a URL responds. Synthetic testing drives Chromium through a multi-step flow and fails when the flow fails: a form that submits nowhere, a script error, a payment request that returns 500, a confirmation string that never appears. Use uptime for reachability. Use a journey for the work the page is supposed to do.

How does the plugin work with Webflow?

Install the Chrome recorder, open your published site, and click through the journey. The extension turns those actions into steps. It remembers the control by what it is and where it sits, so a class name change on the next publish does not by itself break the test. After a real redesign, open the next run and adjust the step that no longer matches.

Chrome recorder →

Do I have to write code?

No. Record with the Chrome extension, assemble steps in the builder, or describe the journey in plain language and let Acumen Logs draft it. You can still start runs from GitHub Actions and the API when you want them in a pipeline.

What happens when the layout changes?

Steps follow the journey you record or describe, and conditional branches cover elements that are only sometimes on the page. Acumen Logs matches controls by what they are for — Submit order, Add to cart — so a class-name change does not retire the test. After a real redesign, open the next run and adjust the step that no longer matches.

Show all questions Show fewer questions

Which devices and regions can a journey use?

Desktop, mobile, and tablet, each with its viewport and user agent. Run from locations such as London, Frankfurt, Ohio, and Singapore, on their own or together, so a regional CDN or payments failure does not hide inside a single global check.

Can it test flows that depend on email?

Yes. Every monitor includes a test inbox for confirmation mail, password resets, and other messages the journey has to open before it can continue. If the message does not arrive, the step fails.

Can I stop the browser from calling unexpected hosts?

Yes. Allowlist domains and addresses, block noisy third parties, and fail the run when the page requests a host outside the list. You can also ignore non-domain errors so a tracking pixel does not count as your outage.

What does it cost to start?

The free plan needs no credit card: 10 uptime, SSL, and WHOIS checks, 30 synthetic tokens, screenshots, email alerts, and a status page. Paid plans start at $5 a month. You can change or cancel from the account, and the plan you have paid for stays in place until the end of that period.

See pricing →

How does a journey fit in CI?

The GitHub Action triggers a synthetic run from a workflow. You can override the start URL, choose a location, wait for the result, and fail the job when the journey fails or when warnings should be hard failures. The action returns the run id, pass or fail, and response counts for later steps.

Read the action guide →
Synthetic testing

Put a browser on the path that pays you

Start with one monitor. When the step fails, you will have the recording, the console line, and the request — before a customer has to write in.