End-to-end (E2E) тестирование проверяет работу приложения целиком, включая взаимодействие компонентов, маршрутизации и сервисов. В Angular стандартным инструментом для E2E является Cypress или Protractor (хотя Protractor устарел и часто заменяется на Cypress).
E2E тесты находятся в отдельной папке e2e и обычно
включают:
Пример базового Cypress теста:
describe('Главная страница', () => {
beforeEach(() => {
cy.visit('/');
});
it('отображает заголовок приложения', () => {
cy.get('h1').should('contain.text', 'Добро пожаловать');
});
it('переход к странице о нас', () => {
cy.get('a[href="/about"]').click();
cy.url().should('include', '/about');
cy.get('h2').should('contain.text', 'О нас');
});
});
Для Angular важно учитывать асинхронные операции, например загрузку
данных через HTTP. Cypress поддерживает ожидание элементов с
использованием cy.wait() или cy.intercept()
для подмены API-ответов:
cy.intercept('GET', '/api/users', { fixture: 'users.json' }).as('getUsers');
cy.visit('/users');
cy.wait('@getUsers');
cy.get('.user-item').should('have.length', 3);
E2E тесты интегрируются в pipeline для автоматического запуска на каждом коммите. Cypress поддерживает Headless режим, позволяющий запускать тесты без GUI, что ускоряет проверку и экономит ресурсы:
npx cypress run --headless --browser chrome
Такой подход обеспечивает постоянный контроль качества интерфейса и предотвращает регрессии в функционале приложения.