E2E Testing — Explained with Examples
End-to-end (E2E) testing validates the complete application flow from start to finish, simulating real user scenarios across all system layers.
E2E testing tests the application as a whole — from the user interface through the backend services, databases, and external integrations. It answers the question: “Does the entire system work for real users?”
E2E vs Integration vs Unit
Unit tests: calculateTotal([...]) → 110
Integration: UserRepository.create() + DB → saved user
E2E tests: Browser login → navigate → fill form → submit → verify UI updateExample: Cypress E2E Test
describe('User Registration Flow', () => {
beforeEach(() => {
cy.visit('/register');
});
it('registers a new user successfully', () => {
cy.get('[data-cy=name]').type('Alice Johnson');
cy.get('[data-cy=email]').type('alice@example.com');
cy.get('[data-cy=password]').type('SecurePass123!');
cy.get('[data-cy=submit]').click();
// Should redirect to dashboard
cy.url().should('include', '/dashboard');
cy.contains('Welcome, Alice Johnson!').should('be.visible');
});
it('shows validation errors for invalid input', () => {
cy.get('[data-cy=submit]').click();
cy.contains('Email is required').should('be.visible');
});
it('handles duplicate email registration', () => {
// First registration
cy.get('[data-cy=name]').type('Bob');
cy.get('[data-cy=email]').type('existing@example.com');
cy.get('[data-cy=password]').type('Pass123!');
cy.get('[data-cy=submit]').click();
// Second registration with same email
cy.visit('/register');
cy.get('[data-cy=name]').type('Bob2');
cy.get('[data-cy=email]').type('existing@example.com');
cy.get('[data-cy=password]').type('Pass123!');
cy.get('[data-cy=submit]').click();
cy.contains('Email already registered').should('be.visible');
});
});Real-World Analogy
Unit tests check each ingredient tastes right. Integration tests check the recipe steps work together. E2E tests are like a restaurant critic who comes in, orders a full meal, and evaluates the entire experience — from being seated (login), ordering (navigation), food quality (functionality), to paying the bill (checkout). If the kitchen works perfectly but the waiter forgets the order, the E2E test catches it.
Popular E2E Tools
- Cypress — developer-friendly, real-time reloading, excellent debugging
- Playwright — multi-browser, multi-tab, mobile emulation
- Selenium — veteran framework, broad language support
- TestCafe — no WebDriver required
Related Terms
Integration Testing, Unit Testing, Smoke Testing, Regression Testing, Performance Testing
Related Tutorial
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro