SelenideでUIテストを簡単に実施する

アソビュー! Advent Calendar 2020 の21日目です

アソビュー!のバックエンドエンジニアをしているグエンです

はじめに

UIテストといえばSelenium、SeleniumIDE、Autify、Datadogなどで複数の方法がありますが今回Selenideを紹介したいと思います。

Selenideとは

SelenideはSeleniumをラッパーするフレームワークです

Selenideの良いところ

  • OSSなので無料です
  • ブラウザの閉じ方、タイムアウト、スクリーンキャプチャ、テストレポートとかを考える必要はなくテストに集中できる
  • Page Objectsがサポートされる
  • Java以外Groovy、Scalaでも実施できる

Selenideのよく使うAPI

  • 要素を選択する
$(By.tagName("button"));  //単一のButton要素を選択する
$$(By.tagName("button")); //Button要素のコレクションを選択する
// 他にもcom.codeborne.selenide.Selectorsクラスに定義されたセレクタが利用できます。
  • アクションを起こす
$(By.tagName("button")).click();
$(By.tagName("button")).doubleClick();
$(By.xpath("/html/body/section[1]")).pressEnter(String);
$("#payment-method").selectOption(String text);
  • アサーション
    状態チェックもSelenideElementのインスタスから呼び出せる
    Conditionは SelenideElementの状態を示すオブジェクトで、com.codeborne.selenide.Condition クラスに定義されています。
$(By.tagName("button")).should(Condition);
$(By.tagName("button")).shouldBe(Condition);
$(By.tagName("button")).shouldHave(Condition);
$(By.tagName("button")).shouldNot(Condition);
$(By.tagName("button")).shouldNotBe(Condition);
$(By.tagName("button")).shouldNotHave(Condition);
//デフォルトではFirefox。特にプロパティの設定は不要
Configuration.browser = WebDriverRunner.FIREFOX;
// タイムアウトの時間を5000ミリ秒にする(デフォルト:4000ミリ秒)
Configuration.timeout = 5000;
// レポート用のディレクトリを変更する
Configuration.reportsFolder = "/var/selenide";

UIテストを実施してみましょう

1. テストのプロジェクトを初期化する

  • Selenium UI Testingのpluginを導入する。
    Selenium UI TestingはIntelliJ IDE (V2020.2 Ultimate Edition)からリリースされたPluginです。このPluginを使うことで、Browser Driverやライブラリーの設定が必要がなくなる。
  • Testプロジェクトを開始する
    Selenium UI Testingのpluginを導入した後で、New Project ウィンドウズにSeleniumというメニューが追加されます。
    Testプロジェクトを開始するには以下の画像のように設定すれば良いと思います。
  • どんなライブラリーが必要なのか?
    Allure Framework:テストが終わった後でレポートを自動的に作成されるため。
    Selenide:Selenideより提供されてる便利なAPIを利用できるために
    Selenium:コアとしてはSeleniumのライブラリーなので、これは一番大切です
  • 最後はプロジェクト情報を入力する

2。テストケースを作成してみます。

  • Page Objectsを作成する
    一つのHTMLページに対して以下のようなPage Objectのクラスを作成しておいたら、どのテストケースでも使えることですごく便利だと思います。
    HTMLページの構築が変更された場合でも一つのクラスを修正することだけで影響範囲が大きくないです。
  • テストケースを実装してみます
    DOM操作はPage Objectに纏められたので、テストメソッドにはインプットとアウトプット確認を集中できる

3。テスト結果を確認する

  • テストレポートはWebUIで確認できます
  • IDEのConsoleでも簡単にログを調査できます
    スクリーンキャプチャとHTMLソースコードが保存される

最後に

以上となりますが、もっと良いやり方があれば教えていただければありがたいと思います

アソビューでは現在多方面で積極採用をしていますので、興味がありましたらお気軽にご応募いただければと思います。

--

--