為什麼用 Playwright 測 API?
雖然我們常用 Postman、curl 或 Jest 來測 API,但若你的專案已經使用 Playwright 做 E2E 測試,那麼善用同一套框架處理 API 測試,不僅可減少工具切換,還能將 UI 流程與 API 驗證整合在一起,提升測試維運的一致性。
Playwright 提供的 request
模組,讓我們可以像在用 fetch
一樣操作 HTTP 請求,非常方便。
開始寫第一個 API 測試
安裝 Playwright
如果你尚未安裝 Playwright,可以透過下列指令快速安裝:
npm init playwright@latest
選擇 TypeScript 或 JavaScript 都可以,本篇範例以 TypeScript 為例。
撰寫 API 測試
假設我們有一個簡單的 API:https://jsonplaceholder.typicode.com/posts/1
我們來撰寫一個測試,驗證它回傳的內容正確:
import { test, expect, request } from '@playwright/test';
test('GET /posts/1 should return a valid post', async () => {
const apiContext = await request.newContext();
const response = await apiContext.get('https://jsonplaceholder.typicode.com/posts/1');
expect(response.ok()).toBeTruthy();
expect(response.status()).toBe(200);
const body = await response.json();
expect(body).toHaveProperty('id', 1);
expect(body).toHaveProperty('userId');
expect(body).toHaveProperty('title');
});
這段測試會:
- 建立一個新的 API context(不會受到 UI session 影響)
- 發送 GET 請求
- 驗證 HTTP 狀態碼與回傳資料欄位
常見應用場景
你可以用 Playwright 來做以下這些 API 測試場景:
- 使用者登入流程(POST login,取 token,存到測試 session)
- CRUD 測試(創建、讀取、更新、刪除資源)
- 驗證後端錯誤處理(如 400, 401, 500 的回傳)
- 測試前後端串接是否正確(UI 操作後檢查對應 API 結果)
這也意味著,我們可以混合使用 Playwright 的 UI 操作 + API 驗證,打造更全面的 E2E 測試!