Blog

Playwrightを使ってテスト自動化してみた!

はじめに

こんにちは、ニフティ株式会社 基幹システムグループの多田 圭佑です。
今回はE2Eテストフレームワークである「Playwright」を使ってテスト自動化をしてみた記事になります。

Playwrightとは

Webブラウザのテスト自動化を実行するためのライブラリ

  • 対応ブラウザ:Chromium、WebKit、Firefox、Edgeなど
  • プラットフォーム:Windows、Linux、macOS
  • 言語:TypeScript、JavaScript、Python、.Net、Java

ざっくりできること

  • Webブラウザを操作して自動でテストコードを生成してくれる
  • 作成したテストファイルでテスト実行、デバッグ

事前準備

  • node.js の公式サイトからインストーラーをダウンロードしインストールする
    • 18.17.0LTS(掲載時点のもの)
  • Playwrightを開発プロジェクトのディレクトリ内にインストールする
    • インストール中の確認項目
      • TypescriptかJavaScriptどちらで使用するか
        • 本記事ではTypeScriptを使用
      • E2Eテストに使用するディレクトリ名
        • デフォルトでは「tests」ディレクトリが作成される
      • GitHub Actionsワークフローの追加
        • デフォルトではfalse
      • ブラウザインストールの有無
        • デフォルトではtrue

使ってみた

実施環境

windows 10

自動コード作成編

テスト記録

ブラウザ操作ですぐにテストを生成できるツール。
以下のコマンドを実行後にWebサイトを操作するためのブラウザとテストコードをする記録のウィンドウが立ち上がります。

  • ブラウザ
    • この画面で操作した内容がテストコード記録に自動入力される
    • 最初はテストを実施したいURLにアクセスするところから始める
  • テストコード記録
    • ブラウザで操作した内容が自動でコードとして記録される
    • テストのコピー、クリア、および言語の変更を行うこともできる
  • nifty.comから「nifty engineering」を検索して「nifty engineering」にアクセスする

1.nifty.comにアクセスする

2.「nifty engineering」と入力して検索する

3.検索結果から「NIFTY engineering」を選択する

4.「NIFTY engineering」が表示される

出来上がったコードがこちらとなります。

  • page:ブラウザのタブ
  • Locator:ページ上の要素(id, nameなど)を取得
  • getByTestId:テストID(data-testid)で要素を取得
  • getByRole:要素を役割別に取得
  • waitForEvent:イベントハンドラーの待機(ex.ポップアップウィンドウなど)

テストファイル作成編

生成されたテストコードを元にtestsディレクトリ配下にテストファイルを作成します。
(search-test.spec.ts というファイルを作成)

テスト実行編

以下の単位でテストを実行することができます。ブラウザは1つから複数で実行できますが、実行中はウィンドウが開かれず、結果のみがターミナルに表示されます。

  • 全てのテストファイル
  • テストファイル単位
  • テストグループ単位

テスト実行するためには以下コマンドを実行します。

作成したテストファイルを実行した結果がこちらとなります。

テストが完了すると結果を記す詳細ページが表示されます。
表示されない場合、「npx playwright show-report 」を実行してください。

各テストコードに緑のチェックマークがついています。これはテストが成功したという意味です。

デバッグ編

UI Modeは、テストの作成・実行を視覚的にサポートするためのツールとなります。テストファイルを実行、デバッグした結果をリアルタイムで閲覧することが可能となります。
UI Modeを開くには次のコマンドを実行します。
※Playwright v1.32.0以上

赤枠のアイコンを押すことでテスト実行ができます。
①テストファイル単位
②テストグループ単位

設定は?

playwright.config.ts でテストに関する設定をすることができます。
デフォルトで設定されているブラウザ(projects)はchromium、firefox、webkit(Safari)となっています。
Edgeなど別ブラウザを追加したい場合、projects内に加えてあげる必要があります。
またデフォルトではタイムアウト時間が30秒となっており、時間を変更したい場合は追記する必要があります。(タイムアウトをさせない場合は「0」を設定する)

ポイント

  • テストを実施したいファイルを作成したい場合
    • インストールの際に設定したディレクトリ内にテストファイルを配置する
    • テストファイルの拡張子に「.spec.ts」または「.test.ts」を付ける
  • javascriptの確認ダイアログでどちらを選択したかは自動コード作成では取得できません。
    • そのため以下のようにコードを追記する必要があります。
  • テストコードの量が増えたらtest.step等で区切って上げた方が可読性が上がります!

We are hiring!

ニフティでは、さまざまなプロダクトへ挑戦するエンジニアを絶賛募集中です!
ご興味のある方は以下の採用サイトよりお気軽にご連絡ください!

Tech TalkやMeetUpも開催しております!
こちらもお気軽にご応募ください!