BrowserStack は最も人気のあるクラウドテストプラットフォームの1つです。Nightwatchとの使用は非常に簡単で、自動生成されたnightwatch.conf.jsファイルに設定があります。

アカウントを作成したら、次の環境変数を設定できます。DotenvファイルもNightwatchでサポートされています。

  • BROWSERSTACK_USERNAME
  • BROWSERSTACK_ACCESS_KEY

ネットワークパフォーマンスの向上のため、HTTP keepaliveも有効にしてください。

Nightwatchは、BrowserStackとのこれらの統合機能をすぐに利用できます。

  • BrowserStackでのテスト名の設定
  • テストを「合格」または「不合格」としてマークする
  • テスト実行の最後にBrowserStackビルドページへのリンクを表示する。

設定例

この設定例を使用して、BrowserStackでテストを実行してみてください。

nightwatch.conf.js
module.exports = {
  src_folders: [],
  
webdriver: { keep_alive: true, timeout_options: { timeout: 60000, retry_attempts: 3 } },
test_settings: { default: { launch_url: 'https://nightwatch.dokyumento.jp' },
browserstack: { selenium: { host: 'hub-cloud.browserstack.com', port: 443 },
// More info on configuring capabilities can be found on: // https://www.browserstack.com/automate/capabilities?tag=selenium-4 desiredCapabilities: { 'bstack:options' : { local: 'false', userName: '${BROWSERSTACK_USERNAME}', accessKey: '${BROWSERSTACK_ACCESS_KEY}', } } },
'browserstack.chrome': { extends: 'browserstack', desiredCapabilities: { browserName: 'chrome' } },
'browserstack.firefox': { extends: 'browserstack', desiredCapabilities: { browserName: 'firefox' } },
'browserstack.ie': { extends: 'browserstack', desiredCapabilities: { browserName: 'IE', browserVersion: '11.0', 'bstack:options' : { os: 'Windows', osVersion: '10', local: 'false', seleniumVersion: '3.5.2', resolution: '1366x768' } } } } }

BrowserStack Localの統合

BrowserStack Localは、公開されていないローカルホスト、ステージング、その他のプライベートウェブサイトをテストできる機能です。この機能を使用するには、browserstack-localパッケージをダウンロードし、テストスイートと共に実行する必要があります。

注:BrowserStack Localは、ビルドの開始時に一度だけインスタンス化し、すべてのテスト実行が完了したら停止する必要があります。

BrowserStackチームが維持しているこのサンプル実装を参照できます。

プロキシサーバー経由でのBrowserStackへの接続

nightwatch.conf.jsproxyキーを追加することで、Nightwatchでプロキシ設定を指定できます。

nightwatch.conf.js

  test_settings: {
    default: {
      desiredCapabilities: {
        // Your capabilities
      },
      proxy: {
        "host": "",     // "127.0.0.1"
        "port": "",     // "8081"
        "protocol": ""  // "http"
      }
    }
  }