フロントエンドNode.jsアプリ用のKarma&Jasmineを使用したテスト環境で、PhantomJSからChromeHeadlessに移行しています。ローカルでは、フィールドを置き換える必要があります
ブラウザ:['PhantomJS']、
と
ブラウザ:['ChromeHeadless']、
package.jsonにエントリを追加します:
"karma-chrome-launcher": "x.y.z"、
次に、npmビルドはローカルにインストールされたchromeブラウザインスタンスを使用して、Jasmineテストを実行します。これは正しく機能します。
Jenkinsビルドサーバー(Debian Jessieで実行)にはchromeがインストールされていないため、テストを実行できません。
今の質問:
[〜#〜] update [〜#〜]:はい、NPMパッケージの操り人形師がいます。 https://github.com/GoogleChrome/puppeteer を参照してください。これにより、現在のビルドマシンに応じてchromeバージョンがフェッチされます。したがって、新しいエントリpackage.jsonファイルを追加する(またはnpm install puppeteer -Dを介してインストールする)必要があります。 )::
「操り人形師」:「x.y.z」、
とkarma.conf:
process.env.CHROME_BIN = require('puppeteer').executablePath();
browsers: ['HeadlessChrome'],
customLaunchers: {
HeadlessChrome: {
base: 'ChromeHeadless',
flags: ['--no-sandbox']
}
},
Debianでは、依存関係が欠落しているインストールが必要になる場合があることに注意してください。参照: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md
これを行うには、どこにでもクロムを束ねるよりも良い方法があります。環境変数を設定して、PuppeteerにChromiumをインストールするかどうかを指示できます。したがって、ローカルでは、先に進んでクロムをインストールしますが、CIサーバーでenv変数を設定してクロムをインストールしないようにします。
次に、ブラウザーのないイメージを取得して、CIサーバーのクロムに対して実行できます。これがはるかに優れている理由は、Chromiumを機能させるためにサーバーにインストールする必要のある依存関係の量によるものです。 Dockerイメージを使用することは、それを行うためのはるかに優れた方法です。
こちらのドキュメントを参照してください: https://docs.browserless.io/docs/docker-quickstart.html
この中の答えを参照してください 質問 ! Seleniumでこれを行う方法に関するカルマ設定の場合chrome image