Headless Chromeを使用した自動化テスト
3753 ワード
Automated testing with Headless Chrome作者:Eric Bidelman(Googleエンジニア)訳者:justjavac
Headless Chromeを使用して自動テストを行いたい場合は、これ以上見ないでください.ここでは、test runnerとしてKarmaを使用する方法を教え、Mocha+Chaiと協力してテストします.
これは何ですか.
Karma?Mocha?Chai?Headless Chrome?oh my! Karmaは、Jasmine、Mocha、QUnitなどの一般的なテストフレームワークとともに使用できるテストキットです. Chaiは、Node.jsまたはブラウザとともに使用できる断言ライブラリです.後者が必要です. Headless Chromeは、UIがないheadless環境で実行されるChromeブラウザです.Nodeで直接テストするのではなく、Headless Chromeを使用するメリットの1つは、JavaScriptテストがWebサイトのユーザーと同じ環境で実行されることです.Headless Chromeは、完全なバージョンのChromeを実行することなく、本格的なブラウザ環境を提供し、メモリのオーバーヘッドを回避します.
インストール
依存ライブラリのインストール
Karmaに関連するプラグインをインストールし、
または
この記事では、MochaとChaiを使用しています.この2つのライブラリが好きでない場合は、ブラウザで実行できる限り、好きなライブラリを選択することができます.
Karmaの設定
karma.conf.js
注:Karmaプロファイルを生成するには、
テストを書く
新規ファイル
/test/test.js
あなたのテストを実行
package.json
テスト(
カスタムHeadless Chromeイニシエータの作成
カスタムflagをChromeに渡したり、イニシエータが使用するリモートデバッグポートを変更したりする場合があります.
karma.conf.js
Travis CIでテストを実行
Karmaを構成し、Headless Chromeでテストを実行するのは簡単ではありません.しかし、Travisで継続的な統合を行うには数行のコードしか必要ありません.
To run your tests in Travis, use
Travisでテストを実行するには、
.travis.yml
注意:この倉庫(example repo)には参照可能なコードがあります.
Headless Chromeを使用して自動テストを行いたい場合は、これ以上見ないでください.ここでは、test runnerとしてKarmaを使用する方法を教え、Mocha+Chaiと協力してテストします.
これは何ですか.
Karma?Mocha?Chai?Headless Chrome?oh my!
インストール
依存ライブラリのインストール
Karmaに関連するプラグインをインストールし、
yarn
を使用できます.yarn add --dev karma karma-chrome-launcher karma-mocha karma-chai
yarn add --dev mocha chai
または
npm
を使用します.npm i --save-dev karma karma-chrome-launcher karma-mocha karma-chai
npm i --save-dev mocha chai
この記事では、MochaとChaiを使用しています.この2つのライブラリが好きでない場合は、ブラウザで実行できる限り、好きなライブラリを選択することができます.
Karmaの設定
karma.config.js
ファイルを作成し、ChromeHeadless
イニシエータがこのファイルを使用します.karma.conf.js
module.exports = function(config) {
config.set({
frameworks: ['mocha', 'chai'],
files: ['test/**/*.js'],
reporters: ['progress'],
port: 9876, // karma web server port
colors: true,
logLevel: config.LOG_INFO,
browsers: ['ChromeHeadless'],
autoWatch: false,
// singleRun: false, // Karma captures browsers, runs the tests and exits
concurrency: Infinity
})
}
注:Karmaプロファイルを生成するには、
./node_modules/karma/bin/ init karma.conf.js
を実行します.テストを書く
新規ファイル
/test/test.js
./test/test.js
describe('Array', () => {
describe('#indexOf()', () => {
it('should return -1 when the value is not present', () => {
assert.equal(-1, [1,2,3].indexOf(4));
});
});
});
あなたのテストを実行
package.json
にtest
スクリプトを追加し、前のプロファイルからKarmaを実行します.package.json
"scripts": {
"test": "karma start --single-run --browsers ChromeHeadless karma.conf.js"
}
テスト(
yarn test
)を実行すると、Headless Chromeが起動し、結果をターミナルに出力します.カスタムHeadless Chromeイニシエータの作成
ChromeHeadless
イニシエータは、開梱用のHeadless Chromeテストを提供するため、非常に重要です.Chrome flagに対応し、Chromeのリモートデバッグ機能を起動し、9222
ポートをリスニングします.カスタムflagをChromeに渡したり、イニシエータが使用するリモートデバッグポートを変更したりする場合があります.
customLaunchers
イニシエータのデフォルトフィールドを拡張するために、ChromeHeadless
を作成します.karma.conf.js
module.exports = function(config) {
...
config.set({
browsers: ['Chrome', 'ChromeHeadless', 'MyHeadlessChrome'],
customLaunchers: {
MyHeadlessChrome: {
base: 'ChromeHeadless',
flags: ['--disable-translate', '--disable-extensions', '--remote-debugging-port=9223']
}
},
}
};
Travis CIでテストを実行
Karmaを構成し、Headless Chromeでテストを実行するのは簡単ではありません.しかし、Travisで継続的な統合を行うには数行のコードしか必要ありません.
To run your tests in Travis, use
dist: trusty
and install the Chrome stable addon: Travisでテストを実行するには、
dist: trusty
を使用してChrome stableプラグインをインストールします..travis.yml
language: node_js
node_js:
- "7"
dist: trusty # needs Ubuntu Trusty
sudo: false # no need for virtualization.
addons:
chrome: stable # have Travis install chrome stable.
cache:
yarn: true
directories:
- node_modules
install:
- yarn
script:
- yarn test
注意:この倉庫(example repo)には参照可能なコードがあります.