テストスクリプトの作成

今回は並列実行をするスクリプトを、wd-parallelを利用して作成しました。本サイトのトップページのスクリーンショットを取得し保存するスクリプトです。

【testscript.js】

var parallel_webdriver = require('wd-parallel');
// Hubサーバーのアドレスを指定
var browsers = parallel_webdriver.remote("10.211.55.5", 4444);

browsers.test = function(browser, target) {
  // 初期化処理
  browser.init(target);

  // Windowサイズを設定する
  browser.setWindowSize(960, 480, function(error) {});

  // Webページを開く    
  browser.get('https://ics.media/');

  // 画面の読み込みが完了するまで待つ(60秒)
  browser.waitForElementByCss('#top-image-wrap', 3000);

  // スクリーンショットを取得し保存する
  browser.saveScreenshot("screenshots/" + target.name + '.jpg', function(error, file) {});

  // ブラウザを閉じる
  browser.close();

  // 終了
  browser.quit();
};

// 並列実行するブラウザーの設定ファイルを読み込む
browsers.loadConfigFile('config.json');

// テスト実行
browsers.run();

【config.json】

{
  "desired" : [
    {
      "platform": "Windows 10",
      "name" : "Windows10_Chrome",
      "browserName" : "chrome",
      "chromeOptions" : 
        {
          "args" : ["--test-type"]
        }    },
    {
      "platform": "Windows 10",
      "name" : "Windows10_FireFox",
      "browserName" : "firefox"
    },
    {
      "platform": "MAC",
      "name" : "Mac_Chrome",
      "browserName" : "chrome",
      "chromeOptions" : 
        {
          "args" : ["--test-type"]
        }
    },
    {
      "platform": "MAC",
      "name" : "Mac_FireFox",
      "browserName" : "firefox"
    }
  ]
}

上記の準備ができたら、下記のコマンドでテストスクリプトを実行します。

node testscript.js

実行結果は下記になります。無事に各Nodeサーバーで実行したスクリーンショットが取得できました。

おわりに

上記の通り、Selenium Grid を使用することで、指定したOSの指定したバージョンのブラウザーでテストを並列実行をすることができました。

UIの自動テストは、UIの操作やWebページの読み込みやレンダリングの待ち時間などの時間があるため、どうしても時間がかかってしまいます。Selenium Gridはテスト実行時に空いているNodeに対して処理を振り分けてくれるため、登録するNodeを増やしていけば、さらにテストにかかる時間を短縮できます。

テスト実行に時間がかかり困っている方はぜひお試しください。