Travis CI

Travis CIは、Githubリポジトリと統合し、コードがプッシュされたときに自動的にテストを実行する人気の高い継続的インテグレーションサービスです。統合は、プロジェクトのルートに簡単なYAMLファイルを追加することで行われます。残りの作業はTravisとGithubが行います。テストが行われると、Travisの結果がGithubのプルリクエストに表示され、履歴は制御パネル内で使用できます。このドキュメントでは、既にTravisアカウントがあることを前提としています。

Travisの構成 #

次のYAMLコンテンツを使用して、.travis.ymlという名前のファイルをプロジェクトのルートに作成します。

language: node_js
node_js:
  - "4"

テストコマンドの設定 #

プロジェクトのルートにpackage.jsonがない場合は、ここで作成します。Travisはnpm testを実行してテストを開始するため、ここではTravisでテストを実行する方法を指定します。

// ...snip...
"devDependencies": {
  "karma": "~0.12"
},
// ...snip...
"scripts": {
   "test": "karma start --single-run --browsers PhantomJS"
}
// ...snip...

Travisは各スイートの前にnpm installを実行するため、ここで、KarmaなどのTravisが認識していないアプリに必要なモジュールを指定できます。

Firefoxを使用したTravisの構成 #

Travisは、仮想画面を使用した実際のブラウザ(Firefox)の実行をサポートしています。.travis.ymlを更新して、仮想画面を次のように設定します(Xenialを使用している場合)。

language: node_js
node_js:
  - "4"
dist: xenial
services:
  - xvfb

または、Trusty以下の場合は次のようになります。

language: node_js
node_js:
  - "4"
before_script:
  - export DISPLAY=:99.0
  - sh -e /etc/init.d/xvfb start

これで、npm testコマンドを次のように変更するだけで、Firefoxでテストを実行できるようになりました。

karma start --browsers Firefox --single-run

備考 #

  • TravisのNode環境では使用できるリソースが非常に限られています。Travisでの起動プロセスが失敗する場合は、不足しているモジュール情報をチェックし、package.jsonの依存関係に追加してください。
  • Travisはローカルネットワークでは実行されません。そのため、リソースへの接続を試みるコードはNockを使用してスタブ化される必要があります。
  • インストール前またはテスト実行前にスクリプトを実行するなど、.travis.ymlで利用できるオプションは他にもいくつかあります。TravisのドキュメントにはGUIアプリ構成のヒントがあります。