End-to-end testing · Web, iOS & Android

Ship the Journey.
Not the Bug.

Get your critical journeys tested without writing or repairing a script. Pie walks them on web, iOS and Android and hands your team the bugs, with proof.

Fi
Tilt
Red Points
Dick's Sporting Goods
Lumo
Prado
Focal
Fairway
Teams shipping with Pie
More customers →

The bug between steps

Every Step Worked. The Setting Never Saved.

Catch the bugs that live between steps. Pie walks the whole journey the way your customer does. This one is real, from a demo app we test with.

A real Pie test Verify Persistence of User Notification Preferences Failed
  1. Enter the registered email address in the email field
  2. Enter the password in the password field
  3. Tap the ‘Sign in’ button
  4. Tap ‘My preferences’ from the bottom of the sidebar menu
  5. Tap on ‘Notifications’ within the preferences menu
  6. Tap the checkbox for the first notification preference in the list
  7. Scroll to the bottom of the page
  8. Tap the ‘Save preferences’ button
  9. Refresh the browser page
  10. Check that the preference remains enabled after refreshing

PassedAfter Save, the box is ticked.

Pie’s screenshot after Save: the first notification preference, a booking reminder on WhatsApp, is ticked.

FailedAfter a refresh, it isn’t.

Pie’s screenshot after refreshing the page: the same preference is no longer ticked.
The box ticked, the button pressed and the page came back, so a test of any one part passes. Pie’s failures come back like this, with the steps and a screenshot of each.

When your app changes

Pie Reads the Screen. Not Your Selectors.

Stop repairing tests every time the screen moves. Pie reads the screen on every run, so a renamed button or a surprise pop-up doesn’t have to stop the test.

acme.dev/cart

Your cart

Trail runner, size 9$42.00

BIGSAVE50−$21.00

Total$21.00

Continue to payment

It used to say Checkout.

acme.dev/cart

Your cart

Trail runner, size 9$42.00

BIGSAVE50−$21.00

Total$21.00

Checkout
Get 10% off your next orderNo thanks

acme.dev/cart

Your cart

Trail runner, size 9$42.00

BIGSAVE50−$21.00

It moved to a bar at the bottom.

$21.00Checkout

acme.dev/shipping

CartShippingPayment

Shipping address

12 Trail Way

Continue

A new page before payment.

A Playwright script

await page
  .getByRole('button',
    { name: 'Checkout' })
  .click();

FailedTest timeout of 30000ms exceeded.

Someone edits the script.

Failed<div class="promo"> intercepts pointer events

Someone adds a handler for the pop-up.

Passed

Same name, so it still finds the button. A good script handles a move.

FailedNext line: getByLabel('Card number') timed out.

Then the payment page isn’t there. Someone rewrites the test.

Pie’s test step

Go to payment

Passed

Pie finds the button by its context, position and function.

Passed

Pie reads the screen, works through the pop-up and carries on.

Passed

Pie finds the button in its new place.

Failed

A change this big can fail the step. Tell Pie and it fixes the test.

A sample store and a sample script. If a button’s ID or text changes, Pie can still find the right element. A redesign that changes the journey can need the steps updated.

Scripts or Pie

Playwright Is Free. The Upkeep Isn’t.

Get your upkeep hours back. Every script is code your team writes, reviews and repairs. Hand the journeys to Pie and that time goes into your product.

Playwright or CypressPie
License Free and open source.Their edge Paid. You get a quote after a demo.
Cost to run Your team’s hours to write, review and repair scripts, plus the CI to run them. No scripts to write, no locators to break. Your team makes the calls, and the rest of those hours go into your product.Pie’s edge
Who writes it Your team, in code. Pie explores your app and generates tests, or drafts one from your description. Your team reviews them.Pie’s edge
When the UI moves A locator that stops matching fails the run until someone fixes it. Pie re-reads the screen on every run.Pie’s edge
iOS and Android Built for the browser. A native app means a second framework, usually Appium. Web, iOS and Android, from one place.Pie’s edge
Test code Every test is code in your repository.Their edge Tests live in Pie in plain English, with an API and an MCP server.
“We started some end to end tests, technical tests, and after a few months without maintaining them, they don’t work anymore.”A buyer on a call with us

Stay on scripts if you want every test as code in your repository, or a handful of scripts covers your app. Moving is one journey at a time.

Your tests, your call

You Can Read Every Test. And Change Any of Them.

Always know what’s being checked. Pie drafts your tests in plain English, from your description or by exploring your app, and your team sets when they run.

Pie’s Edit test case dialog with a real test: the title Anonymous Access to Demo Experience, a one-sentence description, and numbered steps in plain English. Beside it, the Edit with AI panel: “Changes stay in your draft until you save”, with Fix this testcase, Make the steps clearer and Strengthen the assertions.
  • Plain English, no code.Anyone on your team can read a test and check it.
  • Wrong? Tell Pie.It fixes the test in your draft. Nothing changes until you save.

The basics

New to End-to-End Testing? Start Here.

Get up to speed in eight short answers, from what it is to which tools to look at. The guides go deeper.

End-to-end testing walks a whole journey the way your customer takes it, from the first screen to the result they came for. Sign in, search, add to cart, pay, find the order.

It checks that the parts work together, which tests of one part at a time can’t see.

Our end-to-end testing guide covers the types and how to set one up.

A customer ticks a notification setting, presses Save and refreshes the page. The box ticks, the button presses and the page comes back, and the setting is gone anyway. That’s the real bug at the top of this page.

For a longer one, see how to test payment and checkout flows end to end.

A unit test checks one piece of code. An integration test checks that two parts talk to each other, like your checkout service and your payment provider. An end-to-end test drives the app through its real screens and checks what the customer ends up with.

Keep your unit and integration tests. They’re fast and they belong in your code. The end-to-end test catches what sits between the parts.

User acceptance testing asks whether the software does what the business asked for, and people usually do it before a release.

End-to-end testing checks that a journey works from start to finish, and it’s usually automated so it can run again on every release.

Those name when a test runs. End-to-end names how far it walks.

Regression testing re-checks what already worked, smoke testing asks whether a new build works at all, and pull request testing asks whether one change broke something. An end-to-end test can sit in any of them.

Pie runs all three.

Start with the journeys that cost you most when they break, usually sign-up, login, checkout and payments.

Then add the ones that are hardest to script, like one-time codes, SSO, roles and permissions, multi-step forms and feature flags.

Keep the small edge cases in faster tests and save these for what your customer actually does.

Timing, stale selectors, shared test data and things nobody planned for, like a pop-up. Long journeys flake the most, so teams split them up and lose the journey.

In a 2024 study of one commercial project, with about 30 developers over five years, flaky tests alone took at least 2.5% of their productive time.

Flaky tests, explained covers the causes, and here’s why mobile end-to-end tests flake.

Playwright and Cypress are free and exact, and your team writes and maintains the code. An agent like Pie runs tests written in plain English, with no locators to break.

Our list of the best end-to-end testing tools compares them, and Pie vs Playwright goes row by row.

Customers

Complex Workflows. Reliable Across Builds.

0 Manual Regression5 apps · 3 markets
“After evaluating multiple vendors, Pie was the only solution that consistently executed our most complex end‑to‑end workflows with reliability across builds.”
Anil Kumar LekkalapudiDirector of QA & Automation, Tilt
More customer stories →
Days → Hoursrelease testing
“As we scale our products and offerings it’s really important to make sure we don’t ship something that breaks the existing experience for our users.”
Jonathan Bensamoun Jonathan BensamounCEO, Fi
Read the Fi case study →

Security

Yes, Security Will Ask. Here’s What to Tell Them.

  • You Pick the Test Account.Pie signs in with the test login you give it. A setup script can call your test API to create the data first.
  • We Never Use Your Source Code to Train AI Models.Source code here means the files and code changes in your repositories.
  • Logins Reach Pie’s Agents Only While a Test Runs.You keep them in Pie’s credential settings.
  • Pie Has a SOC 2 Type 2 Report.Our most recent report is available on request. Data is encrypted in transit.
Security at Pie →

FAQ

Did we miss a question?
Email us directly →

Does Pie Replace Playwright or Cypress?

Yes, unless you want every test as code in your repository, or a handful of scripts covers your app. Pie takes over what your end-to-end scripts do, so your team stops writing and repairing them.

Moving is one journey at a time. Keep your scripts running until Pie covers the same journey, then retire them. Pie replaces the scripts, not the people. Your team still decides what matters and what counts as a bug.

Do We Need to Write Code?

No. Describe a test in plain English and Pie drafts it, or point Pie at a URL and it explores your app and generates tests. Your team reviews them, and there are no scripts or locators to maintain. Areas behind a sign-in screen need a test login.

Is It as Repeatable as a Script?

The test stays the same, with the same steps and the same checks. The path can differ, because Pie decides each action from what’s on screen. That’s how it works through a pop-up or a layout shift.

A test passes only when Pie finishes every step and every check. A test that hits a blocker fails at that step, so a stop never reads as a pass.

Does It Only Test the Happy Path?

No. A test can take the turns your customers take, like an expired promo code, an empty cart or a declined test card. Describe each one as its own test and Pie drafts it.

Does It Test iOS and Android Apps?

Yes. Pie tests iOS apps on the iOS Simulator (a simulator .app build), Android apps on the Android Emulator (an .apk), and web apps in a browser. Each platform gets its own test of the journey, in plain English.

How Does Pie Handle Logins, Email Codes and 2FA?

Through a supported test-login path. Logins live in Pie’s credential settings and reach Pie’s agents only while a test runs. For sign-up and email-code steps, Pie reads the codes sent to its own inboxes.

You can leave 2FA on for a test account by storing a fixed test code. Codes sent by SMS don’t work. Here’s more on testing 2FA and one-time codes end to end.

Can Pie Test Payments?

Yes, on your test environment, with your payment provider’s test cards. Here’s how to test payment and checkout flows end to end.

How Do We Know a Failure Is Real?

Read it. Every failure shows what Pie expected, what it saw and a screenshot of each step. By default, Pie reruns a failed test once to rule out a fluke.

When Pie confirms a failure points to a real product bug, it lands on your Issues page, grouped with matching findings. You make the final call, and you can dismiss what isn’t a real bug.

When Do the Tests Run, and Where Do Results Go?

Saved tests run in suites, on a schedule you set, with Run now, from an API trigger your tools fire, or on a new iOS or Android build once we’ve set that up with you. Results in hours, not weeks.

Results land in your report in Pie. Connect Jira for issues and Slack for run status and alerts.

How Is It Priced?

Book a demo. We’ll walk through your journeys and give you a quote.

Your Customers Walk the Whole Journey.

Your tests should too.