web-dev-qa-db-ja.com

Debianを使用したJenkinsCIでのChromeHeadlessを使用したKarma

フロントエンドNode.jsアプリ用のKarma&Jasmineを使用したテスト環境で、PhantomJSからChromeHeadlessに移行しています。ローカルでは、フィールドを置き換える必要があります

ブラウザ:['PhantomJS']、

ブラウザ:['ChromeHeadless']、

package.jsonにエントリを追加します:

"karma-chrome-launcher": "x.y.z"、

次に、npmビルドはローカルにインストールされたchromeブラウザインスタンスを使用して、Jasmineテストを実行します。これは正しく機能します。

Jenkinsビルドサーバー(Debian Jessieで実行)にはchromeがインストールされていないため、テストを実行できません。

今の質問:

  • chrome用NPMパッケージがありますか?これをインストールできるので、Debianマシンに直接インストールする必要はありませんか? (実際のテストケースを実行する前に現在のPhantomJSインスタンスをインストールするphantomjs-prebuiltと同様)

[〜#〜] 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

10
schowave

これを行うには、どこにでもクロムを束ねるよりも良い方法があります。環境変数を設定して、PuppeteerにChromiumをインストールするかどうかを指示できます。したがって、ローカルでは、先に進んでクロムをインストールしますが、CIサーバーでenv変数を設定してクロムをインストールしないようにします。

次に、ブラウザーのないイメージを取得して、CIサーバーのクロムに対して実行できます。これがはるかに優れている理由は、Chromiumを機能させるためにサーバーにインストールする必要のある依存関係の量によるものです。 Dockerイメージを使用することは、それを行うためのはるかに優れた方法です。

こちらのドキュメントを参照してください: https://docs.browserless.io/docs/docker-quickstart.html

この中の答えを参照してください 質問 ! Seleniumでこれを行う方法に関するカルマ設定の場合chrome image

1
Nanotron