解決策は、BrowserStackLocal と browserstack-cli ツールを一緒に使用することです。BrowserStackLocal の 64 ビット Linux バージョンは、circleCI サーバーから Browserstack サーバーへのトンネルを構築します。その後、browserstack-cli を使用してブラウザを起動し、testem からテストを実行できます。
BrowserStackLocal をダウンロード
.browserstack
プロジェクトのフォルダーに挿入します。
スクリプトを作成し、
これが実行され、browserstack-cli の設定が作成されます。circleCI でグローバル変数を設定する必要があり、アクセスの詳細を秘密裏に保持できます。runthis.sh
このファイルを呼び出してフォルダに保存しましょう.browserstack
。このスクリプトは BrowserStackLocal バイナリも実行するため、トンネルが存在します。
#!/bin/bash
echo "{\"username\":\"`echo $BS_USER`\", \"password\":\"`echo $BS_PASSWORD`\", \"privateKey\": \"`echo $BS_KEY`\", \"apiKey\":\"`echo $BS_KEY`\"}" >> ~/.browserstack/browserstack.json
./.browserstack/BrowserStackLocal $BS_KEY &
CircleCI 構成
( circle.yml
) ファイルは、主にプロジェクトに依存します。.browserstack
ホームフォルダーにフォルダーをコピーし、bower、browserstack-cli、testem をインストールする必要があります。
例:
machine:
timezone:
Pacific/Auckland
node:
version: v0.10.28
dependencies:
pre:
- mv ./.browserstack ~/
- sh ~/.browserstack/runthis.sh
post:
- bower install
- npm install browserstack-cli -g
- npm install testem -g
test:
override:
- PATH=$PATH:bin grunt integration_tests_cli; testem ci
- PATH=$PATH:bin grunt tests_cli; testem ci
テストム構成:
testem.yml
- ほとんどの部分はプロジェクトに依存します。私たちの場合、重要なのはlaunchers
セクションです。
framework: "qunit"
test_page: "tmp/index.html"
src_files:
- "tmp/assets/application.js"
- "tmp/tests.js"
- "tmp/integration_tests.js"
launchers:
bs_chrome:
command: browserstack launch chrome --attach
protocol: browser
timeout: 300
launch_in_ci:
- "PhantomJS"
- "bs_chrome"
launch_in_dev:
- "Chrome"
- "Firefox"
- "PhantomJS"
parallel: 2
したがって、github でプロジェクトを更新すると、circleci はテストを起動して browserstack に接続し、そこでブラウザーを使用します...