はじめに
本記事はPlaywright for .NETのやってみた系記事である。
細かい内容は省略しつつ、読者も同様に実施できる事を目指す。
参考
・https://playwright.dev/dotnet/docs/intro
・https://playwright.dev/dotnet/docs/api/class-playwright
Playwright for .NETって何?
WEBアプリケーションの自動操作・自動検証を支援するライブラリ(OSS)である
Playwrightの.NET向け言語サポート版 (言語サポート: Node.js, Python, Java)で、
単体テストフレームワークNUnit上で動作する。
・複数ブラウザに対応
・画面キャプチャの取得
・テスト実行コードの生成
・ヘッドレス実行(ブラウザを表示なし)
・EXCELファイル操作(Apach POI → NPOI)
Seleniumと比較すると更に
自動待機が充実: テスト実行コード生成直後にほぼそのまま実行できる
ビデオ録画
画像の差分比較: ※.NET向けは現状非対応
参考: https://github.com/microsoft/playwright/issues/29582
使用してみる
事前準備
■ビルドにPowershellを使用するので許可
例 >Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
環境構築
コマンドライン上でコマンド入力。
1)ドットネットプロジェクトを作成
dotnet new nunit -n [任意のフォルダ名]
2)依存関係のインストール
dotnet add package Microsoft.Playwright.NUnit
dotnet build
pwsh bin/Debug/net8.0/playwright.ps1 install
最後のパワーシェルコマンドは、初回(環境内で初めてPlaywright for .NETを使用する場合)のみ実行する。
対象スクリプトはビルドする事で生成される。(階層は.NET 8.0の場合)
実行手順
dotnet test //すべてのテストを実行する場合
dotnet test --filter "AAA" //クラス名, メソッド名に「AAA」を含むテストを実行する場合
dotnet test -- Playwright.LaunchOptions.Headless=false //ブラウザを表示させてテストを実行する場合
※ テストコード内で注釈[Test]や[TestCase]をつけたメソッドをテストと呼称する
実用性Tips
フォルダ構成
\testCase
\testCase\case_1
\testCase\case_1\case_1_1.cs
テストコードサンプル
using System.Threading.Tasks;
using Microsoft.Playwright;
using Microsoft.Playwright.NUnit;
using NUnit.Framework;
namespace PlaywrightTests;
[Parallelizable(ParallelScope.Self)]
[TestFixture]
public class Case1_1 : PageTest
{
public override BrowserNewContextOptions ContextOptions()
{
return new BrowserNewContextOptions()
{
// 出力先: デフォルトはbin\Debug\net8.0\
RecordVideoDir = "../../../output/videos/",
};
}
// 各Test注釈に対し毎回事前処理
[SetUp]
public async Task Init()
{
// ログイン処理
}
// 各Test注釈に対し毎回事後処理
[TearDown]
public async Task Clean()
{
// ログアウト処理
}
[Test]
public async Task Case_1_1_1()
{
// ケース
}
[Test]
public async Task Case_1_1_2()
{
// ケース
}
}
普段はVScodeからコマンド実行
デバッグ時はVS2022のテストエクスプローラーからデバッグ実行
非エンジニア提供時は起動コマンド入れたbatファイル提供
が良さそう。