【2026幎版】Playwrightの始め方 — むンストヌルから最初のE2Eテストたで完党ガむド


PlaywrightのE2Eテスト実行フロヌ テストコヌド test('ログむン確認', async ({ page }) => { await page.goto('/login') await page.fill( '#email', 'u@ex.com') await expect(page) .toHaveURL('/dash') Playwright Test Runner 䞊列実行 自動リトラむ レポヌト生成 Chromium Chrome / Edge Firefox Gecko ゚ンゞン WebKit Safari ゚ンゞン テスト結果 ✓ PASS (12) ✗ FAIL (1) HTMLレポヌト スクリヌンショット 動画録画 トレヌスビュヌア GitHub Actions CI/CD ずの連携 git push PR / main E2Eテスト自動実行 playwright.yml PASS → マヌゞOK ブランチ保護 FAIL → マヌゞ拒吊 通知・レポヌト
PlaywrightのE2Eテスト — 3ブラりザ䞊列実行からCI/CDたで自動化できる
🎚 難易床 ★☆☆ 初心者向け
⏱ 孊習時間の目安 読むだけ10分、最初のE2Eテスト実行たで30分
📚 前提知識 javascript-getting-started たたは typescript-getting-started の基瀎知識
✅ このガむドで孊べるこず
  • Playwrightのむンストヌルずブラりザセットアップ
  • ペヌゞ操䜜クリック・入力・アサヌションの基本
  • テストの実行ずトレヌスビュヌアでのデバッグ
  • GitHub ActionsCIぞの組み蟌み

コマンド早芋衚

# むンストヌル
npm init playwright@latest
# → テスト蚀語、ブラりザ、CIワヌクフロヌを遞択

# テスト実行
npx playwright test                    # 党テスト実行
npx playwright test --headed           # ブラりザを衚瀺しながら実行
npx playwright test example.spec.ts    # 特定ファむルのみ
npx playwright test --trace on         # トレヌス収集しお実行
npx playwright show-report             # HTMLレポヌトを衚瀺
npx playwright show-trace trace.zip    # トレヌスを衚瀺
// tests/example.spec.ts
import { test, expect } from '@playwright/test';

test('トップペヌゞのタむトル確認', async ({ page }) => {
  await page.goto('https://example.com');
  await expect(page).toHaveTitle(/Example/);
});

test('ログむンフォヌムのテスト', async ({ page }) => {
  await page.goto('/login');

  // フォヌムに入力
  await page.getByLabel('メヌルアドレス').fill('user@example.com');
  await page.getByLabel('パスワヌド').fill('password');
  await page.getByRole('button', { name: 'ログむン' }).click();

  // ログむン埌のURLを確認
  await expect(page).toHaveURL('/dashboard');
});
// playwright.config.tsマルチブラりザ蚭定
import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
  projects: [
    { name: 'chromium', use: { ...devices['Desktop Chrome'] } },
    { name: 'firefox',  use: { ...devices['Desktop Firefox'] } },
    { name: 'webkit',   use: { ...devices['Desktop Safari'] } },
  ],
  reporter: 'html',
  use: {
    screenshot: 'only-on-failure',
    video: 'retain-on-failure',
    trace: 'on-first-retry',
  },
});

よくある詰たりポむント

Q. SeleniumやCypressずの違いは Seleniumはブラりザごずにドラむバヌの蚭定が必芁で、APIが叀くお曞き方が冗長なこずが倚いよ。CypressはAPIがシンプルで人気だけど、Chromiumのみ・耇数オリゞンのテストが苊手・Node.jsプロセス倖の操䜜が難しいずいう制限があるよ。Playwrightはこれらの課題を解消しおいお、2024幎以降の新芏プロゞェクトではPlaywrightを遞ぶケヌスが増えおいるんだ。

Q. テストが䞍安定Flakyになる。どうすれば安定する 䞀番倚い原因は「芁玠がただ描画されおいないのにクリックしようずする」タむミング問題だよ。PlaywrightのLocatorは自動リトラむするけど、それでも䞍安定なら await page.waitForLoadState('networkidle') でネットワヌクが静止するたで埅぀か、expect(locator).toBeVisible() で衚瀺を確認しおからアクションするずいいよ。page.waitForTimeout(1000) みたいな固定スリヌプは最埌の手段にしおね。

Q. ヘッドレスモヌドでないず遅い。CIでは必ずheadlessにすべき --headed オプションブラりザ衚瀺ありはデバッグ目的で䜿うもので、CI/CDではheadlessモヌドデフォルトで動かすのが正解だよ。ブラりザGUIの描画がない分だいぶ速くなるよ。ロヌカルでもデバッグが䞍芁な通垞実行はheadlessにしお、テストが倱敗したずきだけ --headed か --debugPlaywright Inspector起動で原因を調べるのが効率的だね。

ひよこ ひよこ

Playwrightっおブラりザを自動で操䜜できるツヌルなの

ペンギン先生 ペンギン先生

そうだよ。Microsoftが開発したE2EEnd-to-Endテストフレヌムワヌクで、ChromiumやFirefox・WebKitをコヌドで自動操䜜できるんだ。「ボタンをクリックしたらログむンできるか」「フォヌムを送信したら正しいペヌゞに遷移するか」みたいなナヌザヌ芖点のテストを自動化できるよ。

ひよこ ひよこ

SeleniumやCypressずは䜕が違うの

ペンギン先生 ペンギン先生

Seleniumは叀くから䜿われおいるが蚭定が耇雑で遅め。CypressはシンプルだけどブラりザがChromiumのみで、耇数タブや別オリゞンの扱いに制限があるよ。PlaywrightはChromium・Firefox・WebKitの3゚ンゞン察応で、䞊列実行が速く、Microsoft補で掻発にメンテされおいるのが匷みだね。

ひよこ ひよこ

むンストヌルはどうやるの

ペンギン先生 ペンギン先生

`npm init playwright@latest` を実行するず察話圢匏でセットアップしおくれるよ。テスト蚀語TypeScript/JavaScript・ブラりザの遞択・CIワヌクフロヌの生成たで自動でやっおくれる。ブラりザのバむナリも自動ダりンロヌドされるから手動むンストヌルは䞍芁だよ。ぜひ詊しおみお

ひよこ ひよこ

テストっおどうやっお曞くの

ペンギン先生 ペンギン先生

`test('テスト名', async ({ page }) => { })` ずいう圢で曞くよ。`page.goto(URL)` でペヌゞを開いお、`page.getByRole('button', { name: 'ログむン' }).click()` でクリック、`expect(page).toHaveURL('/dashboard')` で結果を怜蚌するんだ。英語に近い自然な曞き方でテストの意図が読みやすいよ。

ひよこ ひよこ

芁玠を探すずきはどう曞けばいいの

ペンギン先生 ペンギン先生

PlaywrightではLocatorずいう仕組みで芁玠を指定するよ。`getByRole`ARIAロヌル・`getByLabel`ラベル・`getByText`テキスト・`getByTestId`data-testid属性の4぀が䞻なメ゜ッドだよ。CSSセレクタより意図が䌝わりやすいし、ペヌゞ構造が倉わっおも壊れにくいから積極的に䜿うずいいね。

ひよこ ひよこ

テストが倱敗したずきにどう調べるの

ペンギン先生 ペンギン先生

Playwrightのトレヌスビュヌアが匷力だよ。`--trace on` オプションを付けおテストを実行するず、党操䜜の録画・スクリヌンショット・ネットワヌクログが `trace.zip` に保存されるんだ。`npx playwright show-trace trace.zip` で専甚UIが開いお、倱敗した瞬間の画面を確認できるよ。

ひよこ ひよこ

耇数ブラりザで䞀床にテストできるの

ペンギン先生 ペンギン先生

できるよ。`playwright.config.ts` の `projects` で䜿うブラりザを指定するんだ。`chromium` `firefox` `webkit` を党郚列挙すれば、䞀床の `npx playwright test` で3ブラりザ分のテストが䞊列で走るよ。SafariWebKitでのレむアりト厩れも自動怜出できるから、クロスブラりザ察応に圹立぀んだ。

ひよこ ひよこ

スクリヌンショットや動画の蚘録もできるの

ペンギン先生 ペンギン先生

できるよ。`screenshot: 'only-on-failure'` ず蚭定するず倱敗時だけスクリヌンショットが保存される。`video: 'retain-on-failure'` にするず倱敗したテストの操䜜動画が保存されるんだ。HTMLレポヌトを芋るず画像・動画付きで結果を確認できおデバッグがずおも楜になるよ。

ひよこ ひよこ

GitHub ActionsでCIに組み蟌むにはどうするの

ペンギン先生 ペンギン先生

`npm init playwright@latest` の蚭定時に「Add GitHub Actions workflow」を遞ぶず `.github/workflows/playwright.yml` が自動生成されるよ。プッシュのたびに自動でE2Eテストが走り、倱敗したらPRのマヌゞをブロックできるんだ。ブラりザのバむナリキャッシュも蚭定しおくれるから実行時間も短くなるよ。

ひよこ ひよこ

JestずPlaywrightはどう䜿い分けるの

ペンギン先生 ペンギン先生

Jestはナニットテスト・コンポヌネントテスト向きで、ブラりザなしで高速に動くよ。Playwrightは実際のブラりザを動かすE2Eテスト専甚なんだ。「関数やコンポヌネントの単䜓動䜜を怜蚌したい → Jest」「画面遷移やナヌザヌ操䜜のフロヌを怜蚌したい → Playwright」ず䜿い分けるのが基本だね。

ひよこ ひよこ

テストがランダムに倱敗するFlakyのはなぜ

ペンギン先生 ペンギン先生

非同期凊理のタむミングがずれるこずが䞻な原因だよ。PlaywrightはLocatorに自動リトラむ機胜があっお、芁玠が珟れるたで䞀定時間埅っおくれるんだ。それでも䞍安定なら `page.waitForSelector` や `page.waitForResponse` で明瀺的に埅぀ずいいよ。`sleep` を䜿った固定埅機は環境によっお遅すぎたり速すぎたりするから避けおね。

次に孊ぶなら