Week 10 · Day 06 — E2E 測試:完整流程
學習目標
- 串接多步操作的 E2E 場景
- 使用 Cypress 的斷言與狀態檢查
- 養成「使用者視角」測流程
重點
多步場景
describe('Todo App', () => {
it('should add a todo', () => {
cy.visit('/');
cy.get('input[data-testid="todo-input"]').type('New Todo');
cy.get('button[data-testid="add-button"]').click();
cy.get('.todo-item').should('contain', 'New Todo');
});
it('should complete a todo', () => {
cy.visit('/');
cy.get('.todo-item').first().find('input[type="checkbox"]').check();
cy.get('.todo-item').first().should('have.class', 'completed');
});
});
更多 Cypress 技巧
- 等待與重試:cy.get 預設會自動重試至元素出現
- 連結動作:
cy.get('[data-testid="add-button"]')
.should('be.visible')
.click();
cy.get('.todo-item').should('have.length', 1);
cy.get('[data-testid="email"]').clear().type('bad email');
cy.get('[data-testid="submit"]').should('be.disabled');
測試原則
- 從使用者真實操作寫(點、輸入、勾選)
- 用 data-testid 定位,別依賴脆弱 CSS
- 一個測試 complete 走一個使用情境
實作
- 擴充「新增待辦」與「完成待辦」兩條測試
- 加一條「輸入不合法時送出鈕 disabled」的表單測試
- 跑完整 Cypress 測試套件
作業
- 撰寫包含多步操作的 E2E 場景
- 用斷言驗證狀態(disabled、class、count)
- 跑通整組 E2E 測試