A simple example
Picture an online shop. One end-to-end test might open the site, log in as a test customer, add a product to the cart, pay with a test
card, and then check that the order confirmation page and email both appear. Each step checks something along the way: the cart shows
the right item, the total is correct, the payment goes through.
It is called end-to-end because it tests from one end of the journey (the customer’s screen) all the way through to the other
(the server, the database, the payment provider, the email) and back. Nothing is faked or skipped in between.
A person could do the same check by hand, and many teams do before every release. The difference is that an automated test takes
seconds, never gets bored or skips a step, and runs on every change, not only before big releases.
End-to-end testing vs unit testing vs manual testing
Most software teams use a mix of three kinds of checks. They do different jobs:
You want both kinds of automated test. Unit tests are fast and cheap, so developers write lots of them. End-to-end tests are slower, so
you keep them for the journeys that matter most: the ones where a bug costs you money, customers or trust.
What end-to-end tests catch
- A change in one place breaks something somewhere else. A developer tweaks the account page and, without anyone noticing, the sign-up button stops working.
- Parts that work alone but not together. The website and the server each pass their own checks, but the website sends the phone number in a format the server rejects.
- Checkout and payment problems. A promo code no longer applies, or the payment page hangs after the customer taps “Pay”.
- People seeing things they shouldn’t. A normal customer can open the admin page by typing its address.
- Bugs in one browser only. Everything works in Chrome, but the “Next” button does nothing on an iPhone.
What they don’t do
End-to-end tests are one important part of quality assurance, not all of it:
- They don’t replace unit tests. Developers still need fast checks for the small pieces of code.
- They check that things work, not how many users your servers can handle (that is load testing) or whether someone can break in (that is a security test).
- They need a little upkeep. When a journey really changes, for example a new step in sign-up, the test has to be updated to match.
Does my product need end-to-end tests?
It probably does if any of these sound familiar:
- Someone clicks through the whole app by hand before every release.
- Customers have reported a broken sign-up, login or checkout before you found it.
- You release often (weekly or more), or several developers work on the same product.
- You take payments, or have different user roles such as admin and customer.
- Developers are nervous to change older parts of the code.
A good first step is to cover the three to five journeys where a bug would hurt most. For most products that is sign-up, login and
whatever makes you money, such as checkout, booking or subscribing.
Common terms, explained
- E2E
- Short for end-to-end.
- Test automation / automated testing
- Tests that a computer runs by itself, instead of a person doing the checks by hand.
- QA (quality assurance)
- The work of making sure software does what it should before customers use it. E2E testing is one part of QA.
- Regression testing
- Checking that things which used to work still work after a change. A suite of E2E tests is one of the best regression checks.
- CI (continuous integration)
- The system that automatically builds and checks your code every time a developer proposes a change. Your E2E tests run here.
- Flaky test
- A test that sometimes passes and sometimes fails without anything changing. Good E2E suites are built to avoid this.
- Playwright and Cypress
- Popular free tools for writing E2E tests. Playwright can test Chrome, Firefox and Safari.
How Greenlight E2E can help
We build automated end-to-end tests for software teams across South Africa. We write the tests for your most important journeys using
Playwright, put them in your own code repository, and set them to run on every change. Your developers get a video and screenshot of
anything that breaks. Fixed prices start at R18 500.
See pricing, what we need to get started, or book a free 30-minute call and
we’ll tell you which journeys to test first.