質問編集履歴

2 再更新

DAN56

DAN56 score 0

2021/03/03 15:21  投稿

[更新]docker環境でrspecのjs:trueのsystemspecでエラーが出てしまう。
[更新]docker環境でrspecのjs:trueのsystemspecでエラーが出てしまう。
### 前提・実現したいこと
docker環境でrspecのjs:trueのsystemspecでエラーが出てしまう。
### 発生している問題・エラーメッセージ
```
エラーメッセージ
1.1) Failure/Error: visit root_path
Selenium::WebDriver::Error::UnknownError:
unknown error: Chrome failed to start: crashed.
(chrome not reachable)
(The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: '92c07f261f73', ip: '172.29.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '4.19.104-linuxkit', java.version: '1.8.0_275'
Driver info: driver.version: unknown
remote stacktrace: #0 0x004000614199 <unknown>
```
### 該当のソースコード
```ここに言語名を入力
ソースコード
**Dockerfile**
FROM ruby:2.6.5
# yarnのインストール
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs yarn
WORKDIR /local-eating
COPY Gemfile Gemfile.lock /local-eating/
RUN gem install bundler -v 2.1.4
RUN bundle install
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000
**docker-compose.yml**
version: '3'
services:
db:
image: mysql@sha256:e29f4d4b43951c766cd6bacca8d05ac545ec76bb7f42e798bed5e2038c5e2753 #macM1OSの為、ハッシュ指定でエラーとならないように5.6を指定
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: root
ports:
- "4306:3306"
volumes:
- ./mysql-data:/var/lib/mysql
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/local-eating
- bundle:/usr/local/bundle
ports:
- "3000:3000"
depends_on:
- db
- chrome
env_file: my_env_file.env
tty: true
stdin_open: true
environment:
SELENIUM_DRIVER_URL: http://chrome:4444/wd/hub
chrome:
image: selenium/standalone-chrome:latest
ports:
- "4444:4444"
volumes:
mysql-data:
bundle:
**rails_helper.rb**
Capybara.register_driver :remote_chrome do |app|
url = "http://chrome:4444/wd/hub"
caps = ::Selenium::WebDriver::Remote::Capabilities.chrome(
'goog:chromeOptions' => {
'args' => [
'no-sandbox',
'headless',
'disable-gpu',
'window-size=1680,1050'
]
}
)
Capybara::Selenium::Driver.new(app, browser: :remote, url: url, desired_capabilities: caps)
end
RSpec.configure do |config|
config.before(:each, type: :system) do
driven_by :rack_test
end
# js:trueのテスト動かず
config.before(:each, type: :system, js: true) do
driven_by :remote_chrome
Capybara.server_host = IPSocket.getaddress(Socket.gethostname)
Capybara.server_port = 4444
Capybara.app_host = "http://#{Capybara.server_host}:#{Capybara.server_port}"
end
end
**gemfile**
group :test do
# Adds support for Capybara system testing and selenium driver
gem 'capybara', '>= 2.15'
gem 'selenium-webdriver'
end
group :development, :test do
gem 'rspec-rails'
end
```
### 試したこと
js:true以外のsystemspecはパスするので、chromeの接続自体はできているが、selenium-webdriver使用時にエラーが出てしまう。quiteなどを参考にselenium-webdriverのupdateやchromeコンテナのバージョン確認等行ったがエラー分変わらず。丸2日かけて主にquiteを参考に様々なパターンを試したが改善に至らず、ご教授頂きたいです。
以下参考一部
https://qiita.com/ngron/items/f61b8635b4d67f666d75
https://qiita.com/masarashi/items/84761a4e8de494f4d073
https://qiita.com/ryohei_kh/items/2249c13d30648f50b9c8
### 補足情報(FW/ツールのバージョンなど)
環境
rails 6.0.3.4
capybara (3.35.3)
rspec-rails (4.0.1)
selenium-webdriver (3.142.7)
OS macM1
Docker previewバージョン7
  • RSpec

    692 questions

    RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

  • Docker

    3370 questions

    Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

  • selenium

    1994 questions

    Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

  • Capybara

    89 questions

    Capybaraは、 Rubyで開発されているWebアプリケーションテストフレームワークです。Webブラウザ不要でブラウザ上のユーザー操作及びJavaScriptの挙動を自動化することができます。

  • Ruby on Rails 6

    2386 questions

    Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

1 書式変更

DAN56

DAN56 score 0

2021/02/26 16:15  投稿

docker環境でrspecのjs:trueのsystemspecでエラーが出てしまう。
[更新]docker環境でrspecのjs:trueのsystemspecでエラーが出てしまう。
### 前提・実現したいこと
docker環境でrspecのjs:trueのsystemspecでエラーが出てしまう。
### 発生している問題・エラーメッセージ
```
エラーメッセージ
1.1) Failure/Error: visit root_path
Selenium::WebDriver::Error::UnknownError:
unknown error: Chrome failed to start: crashed.
(chrome not reachable)
(The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: '92c07f261f73', ip: '172.29.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '4.19.104-linuxkit', java.version: '1.8.0_275'
Driver info: driver.version: unknown
remote stacktrace: #0 0x004000614199 <unknown>
```
### 該当のソースコード
```ここに言語名を入力
ソースコード
**Dockerfile**
FROM ruby:2.6.5
# yarnのインストール
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs yarn
WORKDIR /local-eating
COPY Gemfile Gemfile.lock /local-eating/
RUN gem install bundler -v 2.1.4
RUN bundle install
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000
**docker-compose.yml**
version: '3'
services:
db:
image: mysql@sha256:e29f4d4b43951c766cd6bacca8d05ac545ec76bb7f42e798bed5e2038c5e2753 #macM1OSの為、ハッシュ指定でエラーとならないように5.6を指定
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: root
ports:
- "4306:3306"
volumes:
- ./mysql-data:/var/lib/mysql
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/local-eating
- bundle:/usr/local/bundle
ports:
- "3000:3000"
depends_on:
- db
- chrome
env_file: my_env_file.env
tty: true
stdin_open: true
environment:
SELENIUM_DRIVER_URL: http://chrome:4444/wd/hub
chrome:
image: selenium/standalone-chrome:latest
ports:
- "4444:4444"
volumes:
mysql-data:
bundle:
**rails_helper.rb**
Capybara.register_driver :remote_chrome do |app|
url = "http://chrome:4444/wd/hub"
caps = ::Selenium::WebDriver::Remote::Capabilities.chrome(
'goog:chromeOptions' => {
'args' => [
'no-sandbox',
'headless',
'disable-gpu',
'window-size=1680,1050'
]
}
)
Capybara::Selenium::Driver.new(app, browser: :remote, url: url, desired_capabilities: caps)
end
RSpec.configure do |config|
config.before(:each, type: :system) do
driven_by :rack_test
end
# js:trueのテスト動かず
config.before(:each, type: :system, js: true) do
driven_by :remote_chrome
Capybara.server_host = IPSocket.getaddress(Socket.gethostname)
Capybara.server_port = 4444
Capybara.app_host = "http://#{Capybara.server_host}:#{Capybara.server_port}"
end
end
**gemfile**
group :test do
# Adds support for Capybara system testing and selenium driver
gem 'capybara', '>= 2.15'
gem 'selenium-webdriver'
end
group :development, :test do
gem 'rspec-rails'
end
```
### 試したこと
js:true以外のsystemspecはパスするので、chromeの接続自体はできているが、selenium-webdriver使用時にエラーが出てしまう。quiteなどを参考にselenium-webdriverのupdateやchromeコンテナのバージョン確認等行ったがエラー分変わらず。丸2日かけて主にquiteを参考に様々なパターンを試したが改善に至らず、ご教授頂きたいです。
以下参考一部
https://qiita.com/ngron/items/f61b8635b4d67f666d75
https://qiita.com/masarashi/items/84761a4e8de494f4d073
https://qiita.com/ryohei_kh/items/2249c13d30648f50b9c8
### 補足情報(FW/ツールのバージョンなど)
環境
rails 6.0.3.4
capybara (3.35.3)
rspec-rails (4.0.1)
selenium-webdriver (3.142.7)
OS macM1
Docker previewバージョン7
  • RSpec

    692 questions

    RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

  • Docker

    3370 questions

    Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

  • selenium

    1994 questions

    Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

  • Capybara

    89 questions

    Capybaraは、 Rubyで開発されているWebアプリケーションテストフレームワークです。Webブラウザ不要でブラウザ上のユーザー操作及びJavaScriptの挙動を自動化することができます。

  • Ruby on Rails 6

    2386 questions

    Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る