LoginSignup
11
8

C#で自動テスト(Playwright) 環境構築~テスト実行手順

Last updated at Posted at 2024-05-14

はじめに

本記事は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

テストコードサンプル

Case1_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ファイル提供
が良さそう。

11
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
8