web-dev-qa-db-ja.com

ブラウザなしでKarmaを実行することは可能ですか?

Angular.jsアプリをYeomanのyo angular Karmaテストが含まれています。そうして grunt testKarmaはブラウザを見つけることができません のため、合理的に失敗しました。 (browsersはアプリのnode_modules/karma設定ファイルで設定されていません。)

私はSSHを介してリモートマシンに開発を行っています。これは、Chromeを使用しても意味がない(私が間違っている場合は知らせてください)/usr/bin/chromium-browser、インストール済み。

では、ブラウザなしでKarmaを実行することは可能ですか?

27
randwa1k

Karma needs設定するブラウザ。

Chromeの代わりにPhantomJSを使用できます。
確かに、これは従来のブラウザの起動よりも目立たないものです。

19
Mik378

この質問と回答は、今日(2018年中、> angular2、@ angular/cli、TypeScriptなど)と非常に関連があります。

これは私がネット上で役に立ったと思ったものに基づいた小さなアップデートです:

調整されていないangular cliで生成されたプロジェクトがあるとします。 PhantomJSを使用して、angular2テストを実行したいとします(何も衝撃はありません)。

プロジェクトにKarma用のPhantomJSランチャーをインストールすることから始めます

npm i --save-dev karma-phantomjs-launcher

次に、karma.conf.jsファイルを次のように更新する必要があります。

まずプラグインのプロパティ:

plugins: [
  require('karma-jasmine'),
  require('karma-phantomjs-launcher'),
  require('karma-jasmine-html-reporter'),
  require('karma-coverage-istanbul-reporter'),
  require('@angular/cli/plugins/karma')
],

次に、ブラウザのプロパティ

browsers: [ 'PhantomJS' ],

この時点でテストを実行すると、おそらく次のエラーに遭遇します。

PhantomJS 2.1.1 (Windows 7 0.0.0) ERROR
  TypeError: pre,template,textarea,script,style is not iterable!
  at http://localhost:9876/_karma_webpack_/polyfills.bundle.js:792

基本的に、それはあなたのPhantomJSが異なるポリフィルを必要とすることを意味します。 src\polyfills.tsの次の行のコメントを外します

import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/weak-map';
import 'core-js/es6/set';

最後に重要なことですが、これは私がこれを解決するのに役立つリンクです:

ブラウザなしでジャスミンテストを実行する方法は?

新しいangular-cliアプリがiphone 4sで機能しない

11
avi.elkharrat

これに2セントを加算します。

正解-Karmaを実行するにはブラウザが必要です。ただし、Chrome=ヘッドレスモードで実行できます。つまり、ブラウザをインストールする必要はありますが、UIは開かないため、たとえば、SSHセッションだけでテストを実行できます。 。

この構成をCI/CD展開に使用しました。テストを実行するためのDockerイメージにはChromeがインストールされており、Chromeヘッドレスモードで実行しました。チャームのように動作しました。

これを使用するには、karma.conf.jsbrowsersプロパティを変更するだけです

browsers: ['ChromeHeadless']

これが似たようなものを探している誰かを助けるかもしれないことを願っています...

4
Clay