# End-to-End Test

URL: https://softwaredictionary.org/terms/end-to-end-test
Category: Testing & Quality
Last updated: 2026-09-30
In Turkish: Uçtan Uca Test

In short: An end-to-end test is an automated test that runs a complete user journey through the whole application, from the user interface to the database and back.

## What is an end-to-end test?

An end-to-end test, often shortened to E2E test, checks that a whole application works from a user's point of view. It performs a realistic task, such as signing up, adding an item to a cart, and checking out, and verifies that each step produces the right result across the frontend, backend, and database.

E2E tests for web apps usually rely on a browser automation tool that opens a real or headless browser (one that runs without a visible window), clicks buttons, fills in forms, and reads what appears on the page. The application runs in an environment close to production with real services connected, so the test exercises the same paths a customer would.

An analogy is a test drive: instead of inspecting each part of a car, you drive it around the block and confirm it gets you where you want to go. Because E2E tests are slow, need a full environment, and can fail for reasons unrelated to your change, teams usually keep a small number of them for the most critical flows, like login and payment.

E2E tests are often confused with integration tests. An integration test checks a few components working together behind the scenes, while an E2E test drives the entire system through its real interface. E2E tests give the most confidence per test, but they are also the slowest and the most likely to become flaky.

## Key takeaways

- E2E tests simulate real user journeys through the full application.
- Web E2E tests typically automate a real or headless browser.
- They are the slowest and most expensive tests, so keep them for critical flows.
- They sit at the top of the testing pyramid, above unit and integration tests.

## Example: A browser-based E2E test for a login flow

```javascript
test("user can log in and see the dashboard", async ({ page }) => {
  // Drive a real browser exactly like a user would
  await page.goto("https://app.example.com/login");
  await page.fill("#email", "ada@example.com");
  await page.fill("#password", "correct-horse");
  await page.click("button[type=submit]");

  // The user should land on the dashboard
  await expect(page.locator("h1")).toHaveText("Dashboard");
});
```

## Frequently asked questions

**What does E2E stand for?**

E2E stands for end-to-end. An E2E test checks an application from one end, the user interface, to the other, the database and external services, in a single realistic scenario.

**Why are end-to-end tests slow and flaky?**

They start a full application, drive a real browser, and depend on networks, timing, and test data. Any of these can cause delays or random failures, which is why E2E suites are kept small and wait for specific elements instead of using fixed delays.

---

Software Dictionary: https://softwaredictionary.org/ · https://softwaredictionary.org/llms.txt
