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

テストランナー

はじめに

Playwright for .NETは特定のテストランナーやテストフレームワークに縛られていませんが、私たちの経験上、MSTest、NUnit、またはxUnit用に提供されている基本クラスを使用するのが最も簡単な始め方です。これらのクラスは、複数のブラウザエンジンでのテスト実行、起動/コンテキストオプションの調整、そしてテストごとにPage/BrowserContextインスタンスをすぐに取得することをサポートしています。

PlaywrightとBrowserインスタンスは、パフォーマンス向上のためテスト間で再利用されます。各テストケースを新しいBrowserContextで実行することをお勧めします。これにより、ブラウザの状態がテスト間で分離されます。

Playwrightは、Microsoft.Playwright.MSTestパッケージを介してMSTestでテストを記述するための基本クラスを提供しています。

始めるには、インストールガイドを確認してください。

並行してテストを実行する

デフォルトでは、MSTestはすべてのクラスを並行して実行しますが、各クラス内のテストは順番に実行します(ExecutionScope.ClassLevel)。ホストシステムのコア数と同じ数のプロセスが作成されます。この動作は、以下のCLIパラメーターを使用するか、以下の.runsettingsファイルを使用して調整できます。メソッドレベルでの並行テスト実行(ExecutionScope.MethodLevel)はサポートされていません。

dotnet test --settings:.runsettings -- MSTest.Parallelize.Workers=4

BrowserContextオプションのカスタマイズ

コンテキストオプションをカスタマイズするには、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",
};
}
}

ブラウザ/起動オプションのカスタマイズ

ブラウザ/起動オプションは、実行設定ファイルを使用するか、CLI経由で直接実行設定オプションを設定することでオーバーライドできます。以下の例を参照してください。

<?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ログの使用

DEBUG環境変数を使用して詳細APIログを有効にすると、標準エラー出力ストリームにメッセージが表示されます。Visual Studio内では、これは出力ウィンドウのテストペインになります。また、各テストのテストログにも表示されます。

.runsettingsファイルの使用

Visual Studioからテストを実行する場合、.runsettingsファイルを活用できます。以下にサポートされている値の参照を示します。

たとえば、ワーカーの数を指定するにはMSTest.Parallelize.Workersを使用できます。また、RunConfiguration.EnvironmentVariablesを使用してDEBUGログを有効にすることもできます。

<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>

Playwrightの基本クラス

Microsoft.Playwright.MSTest名前空間にはいくつかの基本クラスがあります。

テスト説明
PageTest各テストは、独自のBrowserContextで作成されたWebPageの新しいコピーを取得します。このクラスを拡張することが、完全に機能するPlaywrightテストを記述する最も簡単な方法です。

注: 各テストファイルでContextOptionsメソッドをオーバーライドして、コンテキストオプション(通常はBrowser.NewContextAsync()メソッドに渡されるもの)を制御できます。これにより、テストファイルごとにあらゆる種類のエミュレーションオプションを指定できます。
ContextTest各テストは、BrowserContextの新しいコピーを取得します。このコンテキストでは、好きなだけページを作成できます。このテストを使用すると、複数のタブが必要な複数ページシナリオを最も簡単にテストできます。

注: 各テストファイルでContextOptionsメソッドをオーバーライドして、コンテキストオプション(通常はBrowser.NewContextAsync()メソッドに渡されるもの)を制御できます。これにより、テストファイルごとにあらゆる種類のエミュレーションオプションを指定できます。
BrowserTest各テストはブラウザを取得し、好きなだけコンテキストを作成できます。各テストは、作成したすべてのコンテキストをクリーンアップする責任があります。
PlaywrightTestこれにより、各テストはPlaywrightオブジェクトを取得し、テストは好きなだけブラウザを起動および停止できます。