5.3 テスト戦略

Testing Strategies

テストの種類

種類対象ツール
ユニットテスト関数単体Jest, Vitest
統合テストコンポーネント連携Puppeteer
E2Eテスト実際のブラウザPlaywright

ユニットテスト

// utils.test.js
import { formatDate } from './utils.js';

test('formatDate formats correctly', () => {
  expect(formatDate(new Date('2025-01-01'))).toBe('2025/01/01');
});

// Chrome APIのモック
global.chrome = {
  storage: {
    local: {
      get: jest.fn().mockResolvedValue({ key: 'value' }),
      set: jest.fn().mockResolvedValue(undefined)
    }
  }
};

E2Eテスト(Puppeteer)

const puppeteer = require('puppeteer');

const browser = await puppeteer.launch({
  headless: false,
  args: [
    `--disable-extensions-except=${extensionPath}`,
    `--load-extension=${extensionPath}`
  ]
});

const page = await browser.newPage();
await page.goto('https://example.com');

// Content Scriptの動作確認
const element = await page.$('#my-extension-element');
expect(element).not.toBeNull();

手動テストチェックリスト

  • インストール後の初期動作
  • 各種ページでの動作確認
  • オフライン時の動作
  • 更新後のデータ引き継ぎ
  • 権限ダイアログの表示
参考文献
[1] Puppeteer - Testing Chrome Extensions