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
[1] Puppeteer - Testing Chrome Extensions