Playwright は、開発者が最新の Web アプリケーション向けに堅牢で信頼性の高いテストを作成できるようにする強力なエンドツーエンド (E2E) テスト フレームワークです。 Playwright を Vue.js と併用すると、アプリケーションがさまざまなブラウザーやデバイス間でシームレスに実行できるようになります。 Playwright と Vue.js を効果的に統合するためのベスト プラクティスをいくつか紹介します。
Playwright をインストールします
テストを作成する前に、Playwright をプロジェクトにインストールします。
npm install -D @playwright/test
次のコマンドを使用して特定のブラウザ依存関係をインストールすることもできます。
npx playwright install
playwright.config.ts または .js ファイルを作成して、ブラウザーの種類、タイムアウト、ベース URL などの設定をカスタマイズします。
import { defineConfig } from '@playwright/test'; export default defineConfig({ testDir: './tests/e2e', use: { baseURL: 'http://localhost:3000', headless: true, screenshot: 'only-on-failure', trace: 'on-first-retry', }, });
開発サーバーを起動および停止するコマンドを追加することで、Vue アプリの準備が完了したことをテスト フレームワークが認識できるようにします。
読みやすさと保守性を向上させるために、テスト ファイルの明確な構造を維持します。一般的な構造は次のとおりです:
project/ ├── src/ ├── tests/ │ ├── e2e/ │ │ ├── example.spec.ts │ │ ├── login.spec.ts │ ├── fixtures/ │ ├── helpers/
Vue Test Utils や Cypress Component Testing などのツールを活用して、コンポーネントを個別にテストします。これは、Playwright でより複雑な E2E テストを実行する前に、個々の Vue コンポーネントが正しく機能していることを確認するのに役立ちます。
E2E テスト中は実際のバックエンド システムに依存しないようにします。 Playwright のルート API を使用して、ネットワーク リクエストをインターセプトし、応答を模擬します:
test('loads mock data', async ({ page }) => { await page.route('**/api/data', route => route.fulfill({ status: 200, body: JSON.stringify({ key: 'value' }), }) ); await page.goto('/'); await expect(page.locator('#data-key')).toHaveText('value'); });
これにより、テスト結果の一貫性が確保され、実行が高速化されます。
Playwright は、次のような堅牢なセレクター戦略をサポートしています。
<button data-testid="submit-button">Submit</button>
const button = page.locator('button[data-testid="submit-button"]');
page.waitForTimeout(1000) のような固定タイムアウトに依存することは避けてください。代わりに、Playwright の waitFor ユーティリティを使用して、特定の条件を待ちます:
npm install -D @playwright/test
Playwright はテスト時間を大幅に短縮できる並列テスト実行をサポートしています:
npx playwright install
import { defineConfig } from '@playwright/test'; export default defineConfig({ testDir: './tests/e2e', use: { baseURL: 'http://localhost:3000', headless: true, screenshot: 'only-on-failure', trace: 'on-first-retry', }, });
project/ ├── src/ ├── tests/ │ ├── e2e/ │ │ ├── example.spec.ts │ │ ├── login.spec.ts │ ├── fixtures/ │ ├── helpers/
Playwright を CI/CD パイプラインと統合して、問題を早期に発見します。パイプラインを確認します:
GitHub アクションの場合、サンプル構成は次のようになります。
test('loads mock data', async ({ page }) => { await page.route('**/api/data', route => route.fulfill({ status: 200, body: JSON.stringify({ key: 'value' }), }) ); await page.goto('/'); await expect(page.locator('#data-key')).toHaveText('value'); });
Vue Router と対話するときは、ナビゲーションが完了するまで必ず待機してください:
<button data-testid="submit-button">Submit</button>
Vue の反応性システムによる DOM の変更を確認します:
const button = page.locator('button[data-testid="submit-button"]');
以上がPlaywright による Vue.js のテスト: 完璧な Web アプリへの面白い旅の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。