分度器を使用してAngularアプリケーションに対してテストを実行しています。OSX環境では機能しますが、TeamCityが実行しようとしているLinuxでは機能しません。
このコマンドをローカルOSX環境で実行すると、機能します(同僚のマシンでもテスト済み)。
./node_modules/protractor/bin/protractor protractor.conf.js
Using ChromeDriver directly...
..
Finished in 5.55 seconds
2 tests, 2 assertions, 0 failures
これをLinuxマシンで実行するか、TeamCityジョブで実行しようとすると、失敗します。
./node_modules/protractor/bin/protractor protractor.conf.js
Using ChromeDriver directly...
/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/http/util.js:87
Error('Timed out waiting for the WebDriver server at ' + url));
^
Error: Timed out waiting for the WebDriver server at http://127.0.0.1:52959/
at Error (<anonymous>)
at onResponse (/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/http/util.js:87:11)
at /usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/http/util.js:42:21
at /usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/lib/webdriver/http/http.js:96:5
at ClientRequest.<anonymous> (/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/http/index.js:136:7)
at ClientRequest.EventEmitter.emit (events.js:95:17)
at Socket.socketErrorListener (http.js:1547:9)
at Socket.EventEmitter.emit (events.js:95:17)
at net.js:440:14
at process._tickCallback (node.js:415:13)
==== async task ====
WebDriver.createSession()
at Function.webdriver.WebDriver.acquireSession_ (/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/lib/webdriver/webdriver.js:131:49)
at Function.webdriver.WebDriver.createSession (/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/lib/webdriver/webdriver.js:111:30)
私は この問題 を見てきましたが、スタンドアロンのWebドライバーサーバーは解決策ではありません。
私は この問題 を見ましたが、私のバージョンのSelenium-wedriverは2.42.1
なので、同じバグではありません。
$ node --version
v0.10.26
$ ./node_modules/protractor/bin/protractor --version
Version 1.0.0
$ uname -mrs
Linux 3.11.0-15-generic x86_64
chrome-webdriver
のバージョンを取得しようとすると、問題が発生しました。
$ ./node_modules/protractor/Selenium/chromedriver --version
./node_modules/protractor/Selenium/chromedriver: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory
このことから、依存関係の問題があると結論付け、 SeleniumにはChrome が必要であることがわかりました。 (more) 。
このような ステップを使用してLinuxボックスにChromeをインストールしました :
Sudo apt-get install libxss1 libappindicator1 libindicator7
Sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_AMD64.deb
Sudo dpkg -i google-chrome*.deb
これは正確には機能しませんでしたが、依存関係とSudo apt-get install
を何度か行ったり来たりした後、Chromeがインストールされたと思います:
$ google-chrome --version
Google Chrome 36.0.1985.143
これにより、chromedriverバージョンが機能しました。
$ ./node_modules/protractor/Selenium/chromedriver --version
ChromeDriver 2.10.267518
ただし、分度器の実行はまだ機能しません。
$ ./node_modules/protractor/bin/protractor protractor.conf.js
Using ChromeDriver directly...
/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/lib/atoms/error.js:109
var template = new Error(this.message);
^
UnknownError: unknown error: Chrome failed to start: exited abnormally
(Driver info: chromedriver=2.10.267518,platform=Linux 3.11.0-15-generic x86_64)
at new bot.Error (/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/lib/atoms/error.js:109:18)
at Object.bot.response.checkResponse (/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/Selenium-webdriver/lib/atoms/response.js:106:9)
ChromeまたはFirefoxヘッドレスを実行できる必要があります。そのためには、特にXvfbを構成する必要があります。そうしないと、Chromeがないと起動に失敗します。適切な$ DISPLAY。
PhantomJSを使用することもできますが、私見では、実際のブラウザーではないため、e2eテストにどのようなメリットがありますか。
これは私が継続的テストにうまく使用しているものです: https://github.com/elgalu/docker-Selenium
同じ問題が発生し、unity-gtk3-moduleをインストールした直後に解決しました!!
yum install unity-gtk3-module
Installing:
PackageKit-gtk3-module
Updating:
Installing for dependencies:
PackageKit-glib
adwaita-cursor-theme
adwaita-icon-theme
at-spi2-atk
at-spi2-core
cairo-gobject
colord-libs
gtk3
json-glib
libXevie
libgusb
rest
Updating for dependencies:
glib2
これがお役に立てば幸いです