メインコンテンツへスキップ

TestConfig

Playwright Testは、`timeout`や`testDir`など、テストの収集方法と実行方法を設定するための多くのオプションを提供します。これらのオプションは、設定ファイル内のTestConfigオブジェクトで説明されています。この型は設定ファイルの形式を記述しており、実行時に解決された設定パラメータにアクセスするには、FullConfigを使用します。

Playwright Testは、複数のテストプロジェクトを同時に実行することをサポートしています。プロジェクト固有のオプションはtestConfig.projectsに記述する必要がありますが、トップレベルのTestConfigはすべてのプロジェクトで共有される基本オプションを定義することもできます。

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
timeout: 30000,
globalTimeout: 600000,
reporter: 'list',
testDir: './tests',
});

プロパティ

build

追加されたバージョン: v1.35 testConfig.build

Playwrightのトランスパイラ設定です。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
build: {
external: ['**/*bundle.js'],
},
});

  • Object
    • external Array<string> (オプション)

      トランスパイルから除外するパスをグロブパターンとしてリストで表現します。通常、テストが使用する重いJSバンドルがここにリストされます。


captureGitInfo

追加されたバージョン: v1.51 testConfig.captureGitInfo

これらの設定は、git情報がキャプチャされ、設定testConfig.metadataに保存されるかどうかを制御します。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
captureGitInfo: { commit: true, diff: true }
});

  • Object
    • commit boolean (オプション)

      ハッシュ、作者、タイムスタンプなどのコミットおよびプルリクエスト情報をキャプチャするかどうか。

    • diff boolean (オプション)

      コミットの差分をキャプチャするかどうか。

詳細

  • commit情報をキャプチャすることは、HTML(またはサードパーティ)レポートで表示したい場合に役立ちます。
  • diff情報をキャプチャすることは、実際のソース差分でレポートを充実させるのに役立ちます。この情報は、テストを修正する方法についてインテリジェントなアドバイスを提供するために使用できます。

これらの設定のデフォルト値は環境によって異なります。CIの一部としてテストが実行され、git情報を安全に取得できる場合、デフォルト値はtrueであり、それ以外の場合はfalseです。

gitコミットメタデータの構造は変更される可能性があります。


expect

追加されたバージョン: v1.10 testConfig.expect

expectアサーションライブラリの設定です。さまざまなタイムアウトについて詳しくはこちらをご覧ください。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
expect: {
timeout: 10000,
toMatchSnapshot: {
maxDiffPixels: 10,
},
},
});

  • Object
    • timeout number (オプション)

      非同期のexpectマッチャーのデフォルトタイムアウト(ミリ秒単位)。デフォルトは5000msです。

    • toHaveScreenshot Object (オプション)

      • animations "allow" | "disabled" (オプション)

        page.screenshot()animationsを参照してください。デフォルトは"disabled"です。

      • caret "hide" | "initial" (オプション)

        page.screenshot()caretを参照してください。デフォルトは"hide"です。

      • maxDiffPixels number (オプション)

        許容される異なるピクセル数。デフォルトでは設定されていません。

      • maxDiffPixelRatio number (オプション)

        異なるピクセルの総ピクセル数に対する許容される比率(0から1の間)。デフォルトでは設定されていません。

      • scale "css" | "device" (オプション)

        page.screenshot()scaleを参照してください。デフォルトは"css"です。

      • stylePath string | Array<string> (オプション)

        page.screenshot()styleを参照してください。

      • threshold number (オプション)

        比較画像で同じピクセル間の許容される知覚色差。0(厳密)から1(緩い)の範囲です。"pixelmatch"コンパレータはYIQ色空間で色差を計算し、threshold値のデフォルトは0.2です。

      • pathTemplate string (オプション)

        スクリーンショットの場所を制御するテンプレートです。詳細はtestConfig.snapshotPathTemplateを参照してください。

      expect(page).toHaveScreenshot()メソッドの設定です。

    • toMatchAriaSnapshot Object (オプション)

      • pathTemplate string (オプション)

        ariaスナップショットの場所を制御するテンプレートです。詳細はtestConfig.snapshotPathTemplateを参照してください。

      expect(locator).toMatchAriaSnapshot()メソッドの設定です。

    • toMatchSnapshot Object (オプション)

      • maxDiffPixels number (オプション)

        許容される異なるピクセル数。デフォルトでは設定されていません。

      • maxDiffPixelRatio number (オプション)

        異なるピクセルの総ピクセル数に対する許容される比率(0から1の間)。デフォルトでは設定されていません。

      • threshold number (オプション)

        比較画像で同じピクセル間の許容される知覚色差。0(厳密)から1(緩い)の範囲です。"pixelmatch"コンパレータはYIQ色空間で色差を計算し、threshold値のデフォルトは0.2です。

      expect(value).toMatchSnapshot()メソッドの設定です。

    • toPass Object (オプション)

      • intervals Array<number> (オプション)

        toPassメソッドのプローブ間隔(ミリ秒単位)。

      • timeout number (オプション)

        toPassメソッドのタイムアウト(ミリ秒単位)。

      expect(value).toPass()メソッドの設定です。


failOnFlakyTests

追加されたバージョン: v1.52 testConfig.failOnFlakyTests

不安定なテストがマークされた場合にエラーで終了するかどうか。CIで役立ちます。

--fail-on-flaky-testsオプションを使用してコマンドラインでも利用できます。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
failOnFlakyTests: !!process.env.CI,
});


forbidOnly

追加されたバージョン: v1.10 testConfig.forbidOnly

いずれかのテストまたはグループがtest.only()またはtest.describe.only()としてマークされている場合にエラーで終了するかどうか。CIで役立ちます。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
forbidOnly: !!process.env.CI,
});


fullyParallel

追加されたバージョン: v1.20 testConfig.fullyParallel

Playwright Testはテストを並行して実行します。これを実現するために、同時に実行される複数のワーカープロセスを使用します。デフォルトでは、テストファイルは並行して実行されます。単一ファイルのテストは、同じワーカープロセス内で順番に実行されます。

このオプションを使用して、すべてのファイルのすべてのテストを同時に実行するようにテスト実行全体を設定できます。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
fullyParallel: true,
});


globalSetup

追加されたバージョン: v1.10 testConfig.globalSetup

グローバルセットアップファイルへのパス。このファイルはすべてのテストの前に読み込まれて実行されます。FullConfig引数を取る単一の関数をエクスポートする必要があります。複数のグローバルセットアップファイルを指定するには、パスの配列を渡します。

グローバルセットアップとティアダウンについて詳しくはこちらをご覧ください。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
globalSetup: './global-setup',
});


globalTeardown

追加されたバージョン: v1.10 testConfig.globalTeardown

グローバルティアダウンファイルへのパス。このファイルはすべてのテストの後に読み込まれて実行されます。単一の関数をエクスポートする必要があります。testConfig.globalSetupも参照してください。複数のグローバルティアダウンファイルを指定するには、パスの配列を渡します。

グローバルセットアップとティアダウンについて詳しくはこちらをご覧ください。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
globalTeardown: './global-teardown',
});


globalTimeout

追加されたバージョン: v1.10 testConfig.globalTimeout

テストスイート全体の最大実行時間(ミリ秒単位)。タイムアウトをゼロ(デフォルト)にすると、この動作は無効になります。CIで、壊れたセットアップが長すぎたりリソースを浪費したりするのを防ぐのに役立ちます。さまざまなタイムアウトについて詳しくはこちらをご覧ください。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
globalTimeout: process.env.CI ? 60 * 60 * 1000 : undefined,
});


grep

追加されたバージョン: v1.10 testConfig.grep

いずれかのパターンに一致するタイトルを持つテストのみを実行するようにフィルタリングします。たとえば、grep: /cart/を渡すと、タイトルに「cart」を含むテストのみが実行されます。-gオプションを使用してコマンドラインでも利用できます。正規表現は、プロジェクト名、テストファイル名、test.describe名(もしあれば)、テスト名、テストタグをスペースで区切った文字列(例: chromium my-test.spec.ts my-suite my-test)に対してテストされます。

grepオプションは、テストのタグ付けにも役立ちます。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
grep: /smoke/,
});


grepInvert

追加されたバージョン: v1.10 testConfig.grepInvert

いずれかのパターンに一致しないタイトルを持つテストのみを実行するようにフィルタリングします。これはtestConfig.grepの反対です。--grep-invertオプションを使用してコマンドラインでも利用できます。

grepInvertオプションは、テストのタグ付けにも役立ちます。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
grepInvert: /manual/,
});


ignoreSnapshots

追加されたバージョン: v1.26 testConfig.ignoreSnapshots

expect(value).toMatchSnapshot()await expect(page).toHaveScreenshot()などのスナップショットの期待値をスキップするかどうか。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
ignoreSnapshots: !process.env.CI,
});


maxFailures

追加されたバージョン: v1.10 testConfig.maxFailures

テストスイート全体の最大テスト失敗数。この数に達すると、テストは停止し、エラーで終了します。ゼロ(デフォルト)に設定すると、この動作は無効になります。

--max-failuresおよび-xオプションを使用してコマンドラインでも利用できます。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
maxFailures: process.env.CI ? 1 : 0,
});


metadata

追加されたバージョン: v1.10 testConfig.metadata

メタデータには、レポートに含めるキーと値のペアが含まれます。例えば、HTMLレポートではキーと値のペアとして表示され、JSONレポートではメタデータがjsonとしてシリアライズされて含まれます。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
metadata: { title: 'acceptance tests' },
});


name

追加されたバージョン: v1.10 testConfig.name

設定名はレポートとテスト実行中に表示されますが、testProject.nameによってオーバーライドされない限りです。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
name: 'acceptance tests',
});


outputDir

追加されたバージョン: v1.10 testConfig.outputDir

テスト実行中に作成されるファイルの出力ディレクトリ。デフォルトは<package.json-directory>/test-resultsです。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
outputDir: './test-results',
});

詳細

このディレクトリは開始時にクリーンアップされます。テストを実行する際、testConfig.outputDir内に一意のサブディレクトリが作成され、並行して実行されるテストが競合しないことが保証されます。このディレクトリには、testInfo.outputDirおよびtestInfo.outputPath()でアクセスできます。

testInfo.outputPath()を使用して一時ファイルを作成する例を次に示します。

import { test, expect } from '@playwright/test';
import fs from 'fs';

test('example test', async ({}, testInfo) => {
const file = testInfo.outputPath('temporary-file.txt');
await fs.promises.writeFile(file, 'Put some data to the file', 'utf8');
});

preserveOutput

追加されたバージョン: v1.10 testConfig.preserveOutput

testConfig.outputDirにテスト出力を保持するかどうか。デフォルトは'always'です。

  • 'always' - すべてのテストの出力を保持します。
  • 'never' - いかなるテストの出力も保持しません。
  • 'failures-only' - 失敗したテストの出力のみを保持します。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
preserveOutput: 'always',
});

  • "always" | "never" | "failures-only"

projects

追加されたバージョン: v1.10 testConfig.projects

Playwright Testは、複数のテストプロジェクトを同時に実行することをサポートしています。詳細については、TestProjectを参照してください。

使用法

playwright.config.ts
import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
projects: [
{ name: 'chromium', use: devices['Desktop Chrome'] }
]
});


quiet

追加されたバージョン: v1.10 testConfig.quiet

テストからの標準入出力と標準エラー出力を抑制するかどうか。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
quiet: !!process.env.CI,
});


repeatEach

追加されたバージョン: v1.10 testConfig.repeatEach

各テストを繰り返す回数。不安定なテストのデバッグに役立ちます。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
repeatEach: 3,
});


reportSlowTests

追加されたバージョン: v1.10 testConfig.reportSlowTests

遅いテストファイルを報告するかどうか。この機能を無効にするにはnullを渡します。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
reportSlowTests: null,
});

  • null | Object
    • max number

      報告する遅いテストファイルの最大数。デフォルトは5です。

    • threshold number

      遅いと見なされるテストファイルの実行時間(ミリ秒単位)。デフォルトは5分です。

詳細

thresholdミリ秒を超えたテストファイルは遅いと見なされ、その中で最も遅いものが報告されます。報告される数はmax以下です。maxにゼロを渡すと、しきい値を超えたすべてのテストファイルが報告されます。


reporter

追加されたバージョン: v1.10 testConfig.reporter

使用するレポーターのリスト。各レポーターは次のいずれかです。

  • 'list''json'のような組み込みレポーター名。
  • 'my-awesome-reporter'のようなモジュール名。
  • './reporters/my-awesome-reporter.js'のようなレポーターへの相対パス。

['json', { outputFile: './report.json' }]のようなタプルでレポーターにオプションを渡すことができます。

レポーターガイドで詳しくはこちらをご覧ください。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
reporter: 'line',
});

  • string | Array<Object> | "list" | "dot" | "line" | "github" | "json" | "junit" | "null" | "html"
    • 0 string

      レポーター名、モジュール、またはファイルパス

    • 1 Object

      レポーターオプションを持つオブジェクト(もしあれば)


respectGitIgnore

追加されたバージョン: v1.45 testConfig.respectGitIgnore

テストファイル検索時に.gitignoreのエントリをスキップするかどうか。デフォルトでは、testConfig.testDirtestProject.testDirも明示的に指定されていない場合、Playwrightは.gitignoreエントリに一致するテストファイルをすべて無視します。

使用法

testConfig.respectGitIgnore


retries

追加されたバージョン: v1.10 testConfig.retries

失敗したテストに与えられる最大再試行回数。デフォルトでは、失敗したテストは再試行されません。テストの再試行について詳しくはこちらをご覧ください。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
retries: 2,
});


shard

追加されたバージョン: v1.10 testConfig.shard

テストをシャード化し、選択されたシャードのみを実行します。{ total: 5, current: 2 }のような1ベースの形式で指定します。

Playwright Testでの並列実行とシャーディングについて詳しくはこちらをご覧ください。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
shard: { total: 10, current: 3 },
});

  • null | Object
    • current number

      実行するシャードのインデックス(1ベース)。

    • total number

      シャードの総数。


snapshotPathTemplate

追加されたバージョン: v1.28 testConfig.snapshotPathTemplate

このオプションは、expect(page).toHaveScreenshot()expect(locator).toMatchAriaSnapshot()、およびexpect(value).toMatchSnapshot()によって生成されるスナップショットの場所を制御するテンプレートを設定します。

各アサーションのテンプレートは、testConfig.expectで個別に設定できます。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
testDir: './tests',

// Single template for all assertions
snapshotPathTemplate: '{testDir}/__screenshots__/{testFilePath}/{arg}{ext}',

// Assertion-specific templates
expect: {
toHaveScreenshot: {
pathTemplate: '{testDir}/__screenshots__{/projectName}/{testFilePath}/{arg}{ext}',
},
toMatchAriaSnapshot: {
pathTemplate: '{testDir}/__snapshots__/{testFilePath}/{arg}{ext}',
},
},
});

詳細

この値には、テスト実行中に実際の値に置き換えられる「トークン」が含まれる場合があります。

以下のファイル構造を考慮してください

playwright.config.ts
tests/
└── page/
└── page-click.spec.ts

そして、toHaveScreenshot()呼び出しを使用する以下のpage-click.spec.ts

page-click.spec.ts
import { test, expect } from '@playwright/test';

test.describe('suite', () => {
test('test should work', async ({ page }) => {
await expect(page).toHaveScreenshot(['foo', 'bar', 'baz.png']);
});
});

サポートされているトークンの一覧

  • {arg} - 拡張子なしの相対スナップショットパス。これはtoHaveScreenshot()toMatchAriaSnapshot()、またはtoMatchSnapshot()に渡された引数から来ます。引数なしで呼び出された場合、これは自動生成されたスナップショット名になります。
    • 値: foo/bar/baz
  • {ext} - スナップショットの拡張子(先頭のドットを含む)。
    • 値: .png
  • {platform} - process.platformの値。
  • {projectName} - プロジェクトのファイルシステムでサニタイズされた名前(もしあれば)。
    • 値: '' (空文字列)。
  • {snapshotDir} - プロジェクトのtestProject.snapshotDir
    • 値: /home/playwright/tests (設定にsnapshotDirが提供されていないため、testDirがデフォルトとなります)
  • {testDir} - プロジェクトのtestProject.testDir
    • 値: /home/playwright/tests (testDirは設定ファイルのあるディレクトリからの相対パスとして解決されるため、絶対パスとなります)
  • {testFileDir} - testDirからテストファイルへの相対パスのディレクトリ。
    • 値: page
  • {testFileName} - 拡張子付きのテストファイル名。
    • 値: page-click.spec.ts
  • {testFilePath} - testDirからテストファイルへの相対パス。
    • 値: page/page-click.spec.ts
  • {testName} - 親のdescribeを含むがファイル名を除く、ファイルシステムでサニタイズされたテストタイトル。
    • 値: suite-test-should-work

各トークンには、そのトークンが空でない値を持つ場合にのみ使用される単一の文字を前に付けることができます。

以下の設定を考慮してください

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
snapshotPathTemplate: '__screenshots__{/projectName}/{testFilePath}/{arg}{ext}',
testMatch: 'example.spec.ts',
projects: [
{ use: { browserName: 'firefox' } },
{ name: 'chromium', use: { browserName: 'chromium' } },
],
});

この設定では

  1. 最初のプロジェクトには名前がありません。そのため、スナップショットは<configDir>/__screenshots__/example.spec.ts/...に保存されます。
  2. 2番目のプロジェクトには名前があります。そのため、スナップショットは<configDir>/__screenshots__/chromium/example.spec.ts/..に保存されます。
  3. snapshotPathTemplateは相対パスに解決されるため、configDirからの相対パスとして解決されます。
  4. 順方向スラッシュ"/"は、どのプラットフォームでもパスセパレータとして使用できます。

testDir

追加されたバージョン: v1.10 testConfig.testDir

テストファイルが再帰的にスキャンされるディレクトリ。デフォルトは設定ファイルのあるディレクトリです。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
testDir: './tests/playwright',
});


testIgnore

追加されたバージョン: v1.10 testConfig.testIgnore

これらのパターンのいずれかに一致するファイルは、テストファイルとして実行されません。マッチングは絶対ファイルパスに対して実行されます。文字列はグロブパターンとして扱われます。

例えば、'**/test-assets/**'test-assetsディレクトリ内のすべてのファイルを無視します。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
testIgnore: '**/test-assets/**',
});


testMatch

追加されたバージョン: v1.10 testConfig.testMatch

これらのパターンのいずれかに一致するファイルのみがテストファイルとして実行されます。マッチングは絶対ファイルパスに対して実行されます。文字列はグロブパターンとして扱われます。

デフォルトでは、Playwrightは以下のグロブパターンに一致するファイルを検索します: **/*.@(spec|test).?(c|m)[jt]s?(x)。これは、".test"または".spec"の接尾辞を持つJavaScriptまたはTypeScriptファイルを意味します(例: login-screen.wrong-credentials.spec.ts)。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
testMatch: /.*\.e2e\.js/,
});


timeout

追加されたバージョン: v1.10 testConfig.timeout

各テストのタイムアウト(ミリ秒単位)。デフォルトは30秒です。

これはすべてのテストの基本タイムアウトです。さらに、各テストはtest.setTimeout()で独自のタイムアウトを設定できます。さまざまなタイムアウトについて詳しくはこちらをご覧ください。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
timeout: 5 * 60 * 1000,
});


tsconfig

追加されたバージョン: v1.49 testConfig.tsconfig

すべてのインポートファイルに適用される単一のtsconfigへのパス。デフォルトでは、各インポートファイルのtsconfigは個別に検索されます。設定ファイルまたはその依存関係がロードされている間は、tsconfigプロパティは効果がないことに注意してください。--tsconfigコマンドラインオプションが指定されている場合は無視されます。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
tsconfig: './tsconfig.test.json',
});


updateSnapshots

追加されたバージョン: v1.10 testConfig.updateSnapshots

期待されるスナップショットをテスト実行によって生成された実際の結果で更新するかどうか。デフォルトは'missing'です。

  • 'all' - 実行されたすべてのテストがスナップショットを更新します。
  • 'changed' - 実行されたすべてのテストは、一致しなかったスナップショットを更新します。一致するスナップショットは更新されません。
  • 'missing' - 不足しているスナップショットが作成されます。例えば、新しいテストを作成して初めて実行する場合などです。これがデフォルトです。
  • 'none' - スナップショットは更新されません。

スナップショットについて詳しくはこちらをご覧ください。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
updateSnapshots: 'missing',
});

  • "all" | "changed" | "missing" | "none"

updateSourceMethod

追加されたバージョン: v1.50 testConfig.updateSourceMethod

ソースコード内のスナップショットを更新する方法を定義します。

  • 'patch' - 後でソースコードを更新するために使用できる統合差分ファイルを作成します。これがデフォルトです。
  • '3way' - ソースコードにマージ競合マーカーを生成します。これにより、ユーザーはIDEでマージ競合を解決しているかのように、関連する変更を手動で選択できます。
  • 'overwrite' - ソースコードを新しいスナップショット値で上書きします。

使用法

testConfig.updateSourceMethod

  • "overwrite" | "3way" | "patch"

use

追加されたバージョン: v1.10 testConfig.use

すべてのテストに対するグローバルオプション。例えばtestOptions.browserName設定について詳しくはこちらをご覧ください。利用可能なオプションはこちら

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
use: {
browserName: 'chromium',
},
});


webServer

追加されたバージョン: v1.10 testConfig.webServer

テスト中に開発用ウェブサーバー(または複数)を起動します。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';
export default defineConfig({
webServer: {
command: 'npm run start',
url: 'https://:3000',
timeout: 120 * 1000,
reuseExistingServer: !process.env.CI,
},
use: {
baseURL: 'https://:3000/',
},
});

これで、ページをナビゲートする際に相対パスを使用できます。

test.spec.ts
import { test } from '@playwright/test';

test('test', async ({ page }) => {
// This will result in https://:3000/foo
await page.goto('/foo');
});

複数のウェブサーバー(またはバックグラウンドプロセス)を起動できます

playwright.config.ts
import { defineConfig } from '@playwright/test';
export default defineConfig({
webServer: [
{
command: 'npm run start',
url: 'https://:3000',
name: 'Frontend',
timeout: 120 * 1000,
reuseExistingServer: !process.env.CI,
},
{
command: 'npm run backend',
url: 'https://:3333',
name: 'Backend',
timeout: 120 * 1000,
reuseExistingServer: !process.env.CI,
}
],
use: {
baseURL: 'https://:3000',
},
});

  • Object | Array<Object>
    • command string

      開始するシェルコマンド。例えばnpm run start

    • cwd string (オプション)

      生成されたプロセスの現在の作業ディレクトリ。デフォルトは設定ファイルのあるディレクトリです。

    • env Object<string, string> (オプション)

      コマンドに設定する環境変数。デフォルトはprocess.envです。

    • gracefulShutdown Object (オプション)

      • signal "SIGINT" | "SIGTERM"

      • timeout number

      プロセスをシャットダウンする方法。指定されていない場合、プロセスグループは強制的にSIGKILLされます。{ signal: 'SIGTERM', timeout: 500 }に設定されている場合、プロセスグループにSIGTERMシグナルが送信され、500ms以内に終了しない場合はSIGKILLが続きます。代わりにSIGINTをシグナルとして使用することもできます。0タイムアウトはSIGKILLが送信されないことを意味します。WindowsはSIGTERMおよびSIGINTシグナルをサポートしていないため、このオプションはWindowsでは無視されます。DockerコンテナをシャットダウンするにはSIGTERMが必要であることに注意してください。

    • ignoreHTTPSErrors boolean (オプション)

      urlフェッチ時にHTTPSエラーを無視するかどうか。デフォルトはfalseです。

    • name string (オプション)

      ウェブサーバーのカスタム名を指定します。この名前はログメッセージのプレフィックスとして使用されます。デフォルトは[WebServer]です。

    • port number (オプション)

      HTTPサーバーが使用するポート。接続を受け入れるまで待機します。portまたはurlのいずれかを指定する必要があります。

    • reuseExistingServer boolean (オプション)

      trueの場合、portまたはurlで既存のサーバーが利用可能な場合に再利用します。そのportまたはurlでサーバーが実行されていない場合、新しいサーバーを起動するコマンドを実行します。falseの場合、既存のプロセスがportまたはurlでリッスンしているとエラーをスローします。これは、ローカルでテストを実行する際にローカル開発サーバーを許可するために、通常!process.env.CIに設定する必要があります。

    • stderr "pipe" | "ignore" (オプション)

      コマンドの標準エラー出力をプロセスの標準エラー出力にパイプするか、無視するか。デフォルトは"pipe"です。

    • stdout "pipe" | "ignore" (オプション)

      "pipe"の場合、コマンドの標準出力をプロセスの標準出力にパイプします。"ignore"の場合、コマンドの標準出力を無視します。デフォルトは"ignore"です。

    • timeout number (オプション)

      プロセスが起動して利用可能になるまでの待機時間(ミリ秒単位)。デフォルトは60000です。

    • url string (オプション)

      サーバーが接続を受け入れる準備ができたときに、2xx、3xx、400、401、402、または403のステータスコードを返すことが期待されるHTTPサーバー上のURL。リダイレクト(3xxステータスコード)は追跡され、新しい場所がチェックされます。portまたはurlのいずれかを指定する必要があります。

詳細

ポートが指定されている場合、Playwright Testはテストを実行する前に、それが127.0.0.1または::1で利用可能になるまで待機します。URLが指定されている場合、Playwright Testはテストを実行する前に、そのURLが2xx、3xx、400、401、402、または403のステータスコードを返すまで待機します。

継続的インテグレーションの場合、CIで既存のサーバーを使用しないreuseExistingServer: !process.env.CIオプションを使用することをお勧めします。標準出力を表示するには、DEBUG=pw:webserver環境変数を設定できます。

porturlではない)はtestOptions.baseURLとしてPlaywrightに渡されます。例えば、ポート8080baseURLhttps://:8080とします。webServerが配列として指定されている場合、baseURLを明示的に設定する必要があります(たとえエントリーが1つだけであっても)。

テストが相対URLを使用できるように、設定でtestOptions.baseURLを指定することも推奨されます。


workers

追加されたバージョン: v1.10 testConfig.workers

テストを並列化するために使用する同時ワーカープロセスの最大数。論理CPUコアの割合(例: '50%')として設定することもできます。

Playwright Testはワーカープロセスを使用してテストを実行します。常に少なくとも1つのワーカープロセスがありますが、テスト実行を高速化するためにさらに多くのワーカーを使用できます。

論理CPUコア数の半分がデフォルトです。Playwright Testでの並列実行とシャーディングについて詳しくはこちらをご覧ください。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
workers: 3,
});


非推奨

snapshotDir

追加されたバージョン: v1.10 testConfig.snapshotDir
非推奨

スナップショットパスを設定するには、testConfig.snapshotPathTemplateを使用してください。

toMatchSnapshotで作成されたスナップショットファイルの、設定ファイルからの相対的なベースディレクトリ。デフォルトはtestConfig.testDirです。

使用法

playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
snapshotDir: './snapshots',
});

詳細

各テストのディレクトリは、testInfo.snapshotDirおよびtestInfo.snapshotPath()でアクセスできます。

このパスは、各テストファイルのスナップショットディレクトリのベースディレクトリとして機能します。snapshotDir'snapshots'に設定すると、testInfo.snapshotDirsnapshots/a.spec.js-snapshotsに解決されます。