Playwright基礎篇(六):基本配置選項

testing

瀏覽器選擇與配置


在 Playwright 中,選擇瀏覽器是測試自動化的第一步。Playwright 支援三種主要瀏覽器引擎:

Chromium(Google Chrome/Microsoft Edge)、Firefox 和 WebKit(Safari)。

// playwright.config.js 基本配置
const { defineConfig } = require('@playwright/test');

module.exports = defineConfig({
  // 設定預設使用的瀏覽器
  use: {
    browserName: 'chromium', // 可選值: 'chromium', 'firefox', 'webkit'
    headless: false, // 設為 false 可看到瀏覽器運行過程
    channel: 'chrome', // 可選用已安裝的 chrome,不用預設的 chromium
  },
});

新手提示:初次使用時,建議從 Chromium 開始,它是最穩定且功能最完整的選項。


超時設置

超時設置對於避免測試卡住或執行太久非常重要,特別是當網頁載入緩慢時:

// 超時設置範例
module.exports = defineConfig({
  timeout: 30000, // 整個測試的超時時間(毫秒)
  use: {
    actionTimeout: 10000, // 單一操作的超時時間(如點擊、填寫表單)
    navigationTimeout: 15000, // 頁面導航的超時時間
  },
});

小型企業提示:根據您的網站實際加載速度和測試環境調整這些值。從較寬鬆的超時開始,然後逐步調整。


視窗大小設定

網頁在不同屏幕尺寸下表現不同,設定視窗大小確保測試在固定環境下運行:

module.exports = defineConfig({
  use: {
    viewport: { width: 1280, height: 720 }, // 設定瀏覽器視窗大小
  },
});

提示:可以測試常見的尺寸,如桌面(1280x720)、平板(768x1024)和手機(375x667)。


多瀏覽器測試設置


同時支援 Chromium、Firefox 和 WebKit

確保您的網站在所有瀏覽器上都能正常運行:

// 多瀏覽器測試配置
module.exports = defineConfig({
  projects: [
    {
      name: 'Chrome',
      use: { browserName: 'chromium', channel: 'chrome' },
    },
    {
      name: 'Firefox',
      use: { browserName: 'firefox' },
    },
    {
      name: 'Safari',
      use: { browserName: 'webkit' },
    },
  ],
});

執行多瀏覽器測試:

npx playwright test

小企業建議:先確保單一瀏覽器的測試穩定可靠,再擴展到多瀏覽器測試。


瀏覽器特定配置

有時不同瀏覽器需要不同的配置:

module.exports = defineConfig({
  projects: [
    {
      name: 'Chrome',
      use: {
        browserName: 'chromium',
        // Chrome 特定配置
        launchOptions: {
          args: ['--disable-gpu', '--no-sandbox'],
        },
      },
    },
    {
      name: 'Firefox',
      use: {
        browserName: 'firefox',
        // Firefox 特定配置
        firefoxUserPrefs: {
          'media.autoplay.default': 0,
        },
      },
    },
  ],
});

提示:只在確實需要時使用瀏覽器特定配置,這樣可以保持測試代碼的簡潔性。


環境變數與參數化測試


管理測試環境

使用環境變數區分不同的測試環境(開發、測試、生產):

// playwright.config.js
const config = {
  use: {
    // 根據環境變數選擇不同的基礎 URL
    baseURL: process.env.BASE_URL || 'http://localhost:3000',
  },
};

module.exports = defineConfig(config);

執行時可以指定環境:

// 使用測試環境
BASE_URL=https://test.example.com npx playwright test

// 使用生產環境
BASE_URL=https://example.com npx playwright test

使用 dotenv 管理配置


dotenv 是一個流行的 Node.js 模組,它可以將環境變數從 .env 文件加載到 process.env 中。這對於管理不同環境(如開發、測試、生產)的配置非常有用,使開發者能夠安全地存儲和訪問敏感信息,而不必將這些信息硬編碼在應用程序中。


對於更複雜的配置,使用 .env 文件會更方便:

  1. 首先安裝 dotenv:
npm install dotenv --save-dev
  1. 創建 .env 文件:
# .env.test
BASE_URL=https://test.example.com
API_KEY=test_api_key
  1. 在配置文件中使用:
// playwright.config.js
require('dotenv').config({ path: `.env.${process.env.NODE_ENV}` });

module.exports = defineConfig({
  use: {
    baseURL: process.env.BASE_URL,
    extraHTTPHeaders: {
      'Api-Key': process.env.API_KEY,
    },
  },
});
  1. 執行時指定環境:
NODE_ENV=test npx playwright test

小企業提示:.env 文件應該加入 .gitignore 中,避免敏感信息被提交到代碼庫。


全局配置 vs. 測試特定配置


何時使用全局配置



全局配置適用於大多數測試共用的設置:

// playwright.config.js 全局配置
module.exports = defineConfig({
  timeout: 30000,
  use: {
    baseURL: 'http://example.com',
    screenshot: 'only-on-failure',
    video: 'retain-on-failure',
  },
});

適合全局配置的項目:

  • 基礎 URL
  • 截圖與視頻設置
  • 基本的超時設置
  • 身份驗證處理

何時覆寫特定測試的配置

在測試文件或測試用例中覆寫全局配置:

// 在測試文件中覆寫配置
import { test } from '@playwright/test';

// 為整個文件覆寫配置
test.use({
  viewport: { width: 375, height: 667 }, // 手機視圖測試
  actionTimeout: 5000, // 特定測試使用更短的超時
});

// 也可以為單個測試覆寫
test('在手機視圖測試導航', async ({ page }) => {
  test.slow(); // 增加這個測試的超時時間
  // 測試代碼...
});

適合覆寫的場景:

  • 響應式設計測試(不同屏幕尺寸)
  • 特定模塊需要較長執行時間
  • 需要特殊權限的測試
  • 特定瀏覽器的行為測試



結論

良好的 Playwright 配置管理可以使測試更加穩定和可維護。對於小型企業和新手程式員:

  1. 從基本配置開始,逐步擴展
  2. 使用環境變數分離測試環境
  3. 為常見問題設置合理的超時值
  4. 先確保單一瀏覽器測試穩定,再進行多瀏覽器測試
  5. 將敏感信息保存在 .env 文件中,不要提交到代碼庫

通過這些配置管理策略,即使是小團隊也能建立可靠的自動化測試系統,減少手動測試負擔,提高產品質量。

分享這篇文章: