28
Re:Nuxt 100 天練習曲
Day 28

整車上路實測 (端到端測試)

Day 28·E2E 測試·用戶體驗

1. 什麼是 E2E 測試?— 模擬真實使用者

E2E 測試就像是聘請一位「機器人測試員」。

機器人測試員的工作流程

1

真的在背景啟動一個您的 Nuxt 網站

2

打開一個真實的瀏覽器(例如 Chrome)

3

依照我們寫好的劇本,去點擊連結、輸入文字、送出表單

4

最後回報整個流程是否順暢,結果是否如我們預期

它從使用者的角度,對整個應用程式的關鍵流程進行全面的驗證。

2. E2E 測試的關鍵工具

@nuxt/test-utils 再次為我們準備好了所有需要的工具:

setup()

在 E2E 測試開始前,這個函式會幫我們在背景啟動一個測試用的 Nuxt 伺服器。

createPage()

伺服器啟動後,這個函式會幫我們打開一個由 Playwright(一個強大的瀏覽器自動化工具)控制的瀏覽器分頁,並準備好讓我們下指令。

Playwright 的強大功能
  • • 支援多種瀏覽器(Chrome、Firefox、Safari)
  • • 能模擬各種使用者互動(點擊、輸入、滾動等)
  • • 提供豐富的斷言方法
  • • 自動等待元素加載完成

3. 第一次上路實測

讓我們來寫一個簡單的測試劇本。

測試劇本

機器人要先訪問首頁,然後點擊「關於我們」的連結,最後確認頁面成功跳轉,並看到了「關於我們」的標題。

1

第一步:建立測試檔案

tests/ 資料夾中建立 e2e/navigation.e2e.spec.ts

2

第二步:撰寫測試劇本

tests/e2e/navigation.e2e.spec.ts
// tests/e2e/navigation.e2e.spec.ts
import { describe, test, expect } from 'vitest';
import { setup, createPage } from '@nuxt/test-utils/e2e';

describe('網站導航 E2E 測試', async () => {
  // 在所有測試開始前,啟動 Nuxt 伺服器
  // 這可能需要一點時間,因為它真的在背景建置並運行您的專案
  await setup();

  test('從首頁導航到關於我們頁面', async () => {
    // 1. 開啟一個新的瀏覽器分頁,並前往首頁 ('/')
    const page = await createPage('/');

    // 2. 找到畫面上 role 為 'link' 且名稱為 'About' 的元素,並點擊它
    //    這是 Playwright 的語法,非常接近真人的語意
    await page.getByRole('link', { name: 'About' }).click();

    // 3. 斷言:期望跳轉後的頁面上,role 為 'heading' 且名稱為 'About Page' 的元素是「可見的」
    await expect(page.getByRole('heading', { name: 'About Page' })).toBeVisible();
  });
});

執行測試:現在,當您執行 npm run test 時,您會看到 Vitest 啟動了您的 Nuxt 伺服器,並模擬了上述的瀏覽器操作來完成測試。

E2E 測試的優勢與挑戰

優勢

最接近真實使用者體驗

測試整個應用流程

能發現整合問題

提供高信心度

測試跨瀏覽器相容性

挑戰

執行時間較長

維護成本較高

測試環境複雜

可能出現不穩定性

錯誤定位較困難

今日總結與回顧

今天我們學會了 E2E 測試,它能從使用者的角度,確保我們整個應用程式的關鍵流程是通暢無誤的。

讓我們回顧一下這三天的測試之旅:

26

Day 26 (基礎):我們認識了單元測試(測零件)和端到端測試(測全車)的區別。

建立測試基礎觀念,安裝必要工具

27

Day 27 (單元測試):我們學會用 mountSuspended 來檢查單一元件的品質。

隔離測試元件功能,確保每個零件正常運作

28

Day 28 (E2E 測試):我們學會用 setup 和 createPage 來模擬真人,對整台車進行上路實測。

模擬真實使用者行為,驗證完整應用流程

完整的測試防護網

兩者相輔相成,共同構成了您專案的堅實防護網。單元測試確保每個元件的可靠性,E2E 測試確保整體用戶體驗的完整性。

單元測試特色

  • • 執行速度快
  • • 易於維護
  • • 精確定位問題
  • • 適合大量執行

E2E 測試特色

  • • 接近真實場景
  • • 測試完整流程
  • • 高信心度驗證
  • • 發現整合問題

🎉 恭喜您完成了「測試」這個重要但充滿挑戰的篇章!您的《人類補完計劃》又向前邁進了一大步!