テストランナー
はじめに
Playwright for .NET は特定のテストランナーやテストフレームワークに限定されていませんが、私たちの経験では、最も簡単な始め方は、MSTest、NUnit、または xUnit 用に提供されている基本クラスを使用することです。これらのクラスは、複数のブラウザーエンジンでのテスト実行、起動/コンテキストオプションの調整、およびテストごとに Page/BrowserContext インスタンスを取得することをサポートしています。
Playwright と Browser インスタンスは、パフォーマンス向上のためにテスト間で再利用されます。各テストケースを新しい BrowserContext で実行することを推奨します。これにより、ブラウザーの状態がテスト間で隔離されます。
- MSTest
- NUnit
- xUnit
Playwright は、Microsoft.Playwright.NUnit
パッケージを介して NUnit でテストを作成するための基本クラスを提供します。
Playwright は、Microsoft.Playwright.MSTest
パッケージを介して MSTest でテストを作成するための基本クラスを提供します。
Playwright は、Microsoft.Playwright.Xunit
パッケージを介して xUnit でテストを作成するための基本クラスを提供します。
開始するには、インストールガイドを確認してください。
並列でのテスト実行
- MSTest
- NUnit
- xUnit
デフォルトでは、NUnit はすべてのテストファイルを並列で実行し、各ファイル内のテストを順番に実行します (ParallelScope.Self
)。ホストシステム上のコア数と同じ数のプロセスが作成されます。この動作は、NUnit.NumberOfTestWorkers パラメーターを使用して調整できます。ParallelScope.Self
のみがサポートされています。
CPU バウンドのテストの場合、システム上のコア数の半分をワーカー数として使用することを推奨します。IO バウンドのテストの場合、コア数と同じ数のワーカーを使用できます。
dotnet test -- NUnit.NumberOfTestWorkers=5
デフォルトでは、MSTest はすべてのクラスを並列で実行し、各クラス内のテストを順番に実行します (ExecutionScope.ClassLevel
)。ホストシステム上のコア数と同じ数のプロセスが作成されます。この動作は、以下の CLI パラメーターを使用するか、.runsettings
ファイルを使用して調整できます。メソッドレベル (ExecutionScope.MethodLevel
) でのテストの並列実行はサポートされていません。
dotnet test --settings:.runsettings -- MSTest.Parallelize.Workers=4
デフォルトでは、xUnit はすべてのクラスを並列で実行し、各クラス内のテストを順番に実行します。デフォルトでは、システム上のコア数と同じ数のプロセスが作成されます。この動作は、以下の CLI パラメーターを使用するか、.runsettings
ファイルを使用して調整できます。
dotnet test -- xUnit.MaxParallelThreads=5
デフォルトで conservative
並列処理アルゴリズム を使用する xUnit 2.8 以降を推奨します。
BrowserContext オプションのカスタマイズ
- MSTest
- NUnit
- xUnit
コンテキストオプションをカスタマイズするには、Microsoft.Playwright.MSTest.PageTest
または Microsoft.Playwright.MSTest.ContextTest
から派生したテストクラスの ContextOptions
メソッドをオーバーライドできます。次の例を参照してください。
using Microsoft.Playwright.NUnit;
namespace PlaywrightTests;
[Parallelizable(ParallelScope.Self)]
[TestFixture]
public class MyTest : PageTest
{
[Test]
public async Task TestWithCustomContextOptions()
{
// The following Page (and BrowserContext) instance has the custom colorScheme, viewport and baseURL set:
await Page.GotoAsync("/login");
}
public override BrowserNewContextOptions ContextOptions()
{
return new BrowserNewContextOptions()
{
ColorScheme = ColorScheme.Light,
ViewportSize = new()
{
Width = 1920,
Height = 1080
},
BaseURL = "https://github.com",
};
}
}
コンテキストオプションをカスタマイズするには、Microsoft.Playwright.MSTest.PageTest
または Microsoft.Playwright.MSTest.ContextTest
から派生したテストクラスの ContextOptions
メソッドをオーバーライドできます。次の例を参照してください。
using System.Threading.Tasks;
using Microsoft.Playwright;
using Microsoft.Playwright.MSTest;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace PlaywrightTests;
[TestClass]
public class ExampleTest : PageTest
{
[TestMethod]
public async Task TestWithCustomContextOptions()
{
// The following Page (and BrowserContext) instance has the custom colorScheme, viewport and baseURL set:
await Page.GotoAsync("/login");
}
public override BrowserNewContextOptions ContextOptions()
{
return new BrowserNewContextOptions()
{
ColorScheme = ColorScheme.Light,
ViewportSize = new()
{
Width = 1920,
Height = 1080
},
BaseURL = "https://github.com",
};
}
}
コンテキストオプションをカスタマイズするには、Microsoft.Playwright.Xunit.PageTest
または Microsoft.Playwright.Xunit.ContextTest
から派生したテストクラスの ContextOptions
メソッドをオーバーライドできます。次の例を参照してください。
using Microsoft.Playwright;
using Microsoft.Playwright.Xunit;
namespace PlaywrightTests;
public class UnitTest1 : PageTest
{
[Fact]
public async Task TestWithCustomContextOptions()
{
// The following Page (and BrowserContext) instance has the custom colorScheme, viewport and baseURL set:
await Page.GotoAsync("/login");
}
public override BrowserNewContextOptions ContextOptions()
{
return new BrowserNewContextOptions()
{
ColorScheme = ColorScheme.Light,
ViewportSize = new()
{
Width = 1920,
Height = 1080
},
BaseURL = "https://github.com",
};
}
}
Browser/起動オプションのカスタマイズ
Browser/起動オプションは、runsettings ファイルを使用するか、CLI を介して runsettings オプションを直接設定することでオーバーライドできます。次の例を参照してください。
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<Playwright>
<BrowserName>chromium</BrowserName>
<LaunchOptions>
<Headless>false</Headless>
<Channel>msedge</Channel>
</LaunchOptions>
</Playwright>
</RunSettings>
dotnet test -- Playwright.BrowserName=chromium Playwright.LaunchOptions.Headless=false Playwright.LaunchOptions.Channel=msedge
詳細な API ログの使用
詳細な API ログ を DEBUG
環境変数を介して有効にすると、標準エラーストリームにメッセージが表示されます。Visual Studio 内では、これは 出力
ウィンドウの テスト
ペインになります。また、各テストの テストログ
にも表示されます。
.runsettings ファイルの使用
Visual Studio からテストを実行する場合、.runsettings
ファイルを利用できます。以下に、サポートされている値のリファレンスを示します。
- MSTest
- NUnit
- xUnit
たとえば、ワーカー数を指定するには NUnit.NumberOfTestWorkers
を使用し、DEBUG
ログを有効にするには RunConfiguration.EnvironmentVariables
を使用できます。
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- NUnit adapter -->
<NUnit>
<NumberOfTestWorkers>24</NumberOfTestWorkers>
</NUnit>
<!-- General run configuration -->
<RunConfiguration>
<EnvironmentVariables>
<!-- For debugging selectors, it's recommend to set the following environment variable -->
<DEBUG>pw:api</DEBUG>
</EnvironmentVariables>
</RunConfiguration>
<!-- Playwright -->
<Playwright>
<BrowserName>chromium</BrowserName>
<ExpectTimeout>5000</ExpectTimeout>
<LaunchOptions>
<Headless>false</Headless>
<Channel>msedge</Channel>
</LaunchOptions>
</Playwright>
</RunSettings>
たとえば、ワーカー数を指定するには MSTest.Parallelize.Workers
を使用できます。DEBUG
ログを有効にするには、RunConfiguration.EnvironmentVariables
を使用することもできます。
<RunSettings>
<!-- MSTest adapter -->
<MSTest>
<Parallelize>
<Workers>4</Workers>
<Scope>ClassLevel</Scope>
</Parallelize>
</MSTest>
<!-- General run configuration -->
<RunConfiguration>
<EnvironmentVariables>
<!-- For debugging selectors, it's recommend to set the following environment variable -->
<DEBUG>pw:api</DEBUG>
</EnvironmentVariables>
</RunConfiguration>
<!-- Playwright -->
<Playwright>
<BrowserName>chromium</BrowserName>
<ExpectTimeout>5000</ExpectTimeout>
<LaunchOptions>
<Headless>false</Headless>
<Channel>msedge</Channel>
</LaunchOptions>
</Playwright>
</RunSettings>
たとえば、ワーカー数を指定するには xUnit.MaxParallelThreads
を使用できます。DEBUG
ログを有効にするには、RunConfiguration.EnvironmentVariables
を使用することもできます。
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- See https://xunit.net/docs/runsettings -->
<xUnit>
<MaxParallelThreads>1</MaxParallelThreads>
</xUnit>
<!-- General run configuration -->
<RunConfiguration>
<EnvironmentVariables>
<!-- For debugging selectors, it's recommend to set the following environment variable -->
<DEBUG>pw:api</DEBUG>
</EnvironmentVariables>
</RunConfiguration>
<!-- Playwright -->
<Playwright>
<BrowserName>chromium</BrowserName>
<ExpectTimeout>5000</ExpectTimeout>
<LaunchOptions>
<Headless>false</Headless>
<Channel>msedge</Channel>
</LaunchOptions>
</Playwright>
</RunSettings>
Playwright 用の基本クラス
- MSTest
- NUnit
- xUnit
Microsoft.Playwright.NUnit
名前空間には、いくつかの基本クラスが用意されています。
Microsoft.Playwright.MSTest
名前空間には、いくつかの基本クラスが用意されています。
Microsoft.Playwright.Xunit
名前空間には、いくつかの基本クラスが用意されています。
テスト | 説明 |
---|---|
PageTest | 各テストは、独自のユニークな BrowserContext で作成されたウェブ Page の新しいコピーを取得します。このクラスを拡張することは、完全に機能する Playwright テストを作成する最も簡単な方法です。 注: 各テストファイルで ContextOptions メソッドをオーバーライドして、通常 Browser.NewContextAsync() メソッドに渡されるコンテキストオプションを制御できます。これにより、テストファイルごとにあらゆる種類のエミュレーションオプションを指定できます。 |
ContextTest | 各テストは、BrowserContext の新しいコピーを取得します。このコンテキストでは、必要な数のページを作成できます。このテストを使用することは、複数のタブが必要なマルチページシナリオをテストする最も簡単な方法です。 注: 各テストファイルで ContextOptions メソッドをオーバーライドして、通常 Browser.NewContextAsync() メソッドに渡されるコンテキストオプションを制御できます。これにより、テストファイルごとにあらゆる種類のエミュレーションオプションを指定できます。 |
BrowserTest | 各テストはブラウザーを取得し、必要な数のコンテキストを作成できます。各テストは、作成したすべてのコンテキストをクリーンアップする責任があります。 |
PlaywrightTest | これにより、各テストに Playwright オブジェクトが提供され、テストは必要な数のブラウザーを起動および停止できます。 |