Cypress là E2E testing framework chạy trong cùng event loop với app (không qua WebDriver protocol như Selenium) — điểm mạnh là time-travel debugging, auto-retry và cy.intercept().
- Kiến trúc — chạy trong browser cùng app nên truy cập được application state, intercept network request, control timer trực tiếp; Selenium điều khiển browser từ bên ngoài qua WebDriver.
- Time-travel debugging — mỗi command được snapshot; hover command list để xem DOM state tại từng bước.
- Automatic waiting — tự retry assertion đến khi pass hoặc timeout — không cần sleep/waitForElement thủ công như Selenium.
- cy.intercept() — mock API response, giả lập lỗi network, chờ request cụ thể hoàn thành.
- Tính năng khác — Component Testing mount từng component cô lập trong browser thật;
cy.session()cache trạng thái đăng nhập giữa các test; Cypress Cloud cho parallel execution, phát hiện flaky test, ghi video. - Hạn chế — browser support: Chromium-based, Firefox, Electron (mặc định) và WebKit (experimental từ v10.8); không hỗ trợ nhiều tab trong cùng test; test code theo command queue riêng của Cypress, không dùng async/await thông thường.
Phù hợp: app tương tác phức tạp, khi cần time-travel debugging, test suite một browser.