首页 > 解决方案 > “未能找到 Chrome 二进制文件。” 在系统规范 gitlab-ci

问题描述

语境:

在我的 gitlab CI 中,我使用 RSpec 和 Selenium 运行系统规范。测试在本地运行良好,但在 gitlab CI 中抛出以下错误

Failure/Error: driven_by :selenium, using: :chrome
     Webdrivers::BrowserNotFound:
       Failed to find Chrome binary.
     # ./spec/rails_helper.rb:35:in `block (2 levels) in '

谁能告诉我如何解决这个错误?


这是我的.gitlab-ci.yml

image: "ruby:2.7.1-buster"

cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths:
    - vendor/bundle
    - .bundle
    - node_modules/
    - .yarn

stages:
  - build
  - test

variables:
  POSTGRES_HOST: xxxx
  POSTGRES_USER: xxxx
  POSTGRES_DB: xxxx
  POSTGRES_PASSWORD: xxxx

before_script:
  - gem install bundler
  - bundle install -j $(nproc) --deployment

job_0_build:
  stage: build
  script:
    - ruby -v

job_3_tests:
  stage: test
  cache:
    paths:
    - node_modules/
    - .yarn
  services:
    - postgres:12.1
  before_script:
    - apt-get update -qq && apt-get install -y -qq nodejs
    - curl -o- -L https://yarnpkg.com/install.sh | bash
    - export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH"
    - yarn install --cache-folder .yarn
    - yarn --version
    - gem install bundler
    - bundle install -j $(nproc) --deployment
  script:
    - bundle exec rake assets:precompile RAILS_ENV=test
    - bundle exec rspec

这是我Gemfile.lock(我认为)相关宝石的摘录,如果您觉得有用,我可以提供其他人

    selenium-webdriver (3.142.7)
      childprocess (>= 0.5, < 4.0)
      rubyzip (>= 1.2.2)
    chromedriver-helper (2.1.1)
      archive-zip (~> 0.10)
      nokogiri (~> 1.8)
    capybara (3.33.0)
      addressable
      mini_mime (>= 0.1.3)
      nokogiri (~> 1.8)
      rack (>= 1.6.0)
      rack-test (>= 0.6.3)
      regexp_parser (~> 1.5)
      xpath (~> 3.2)
    webdrivers (4.4.1)
      nokogiri (~> 1.6)
      rubyzip (>= 1.3.0)
      selenium-webdriver (>= 3.0, < 4.0)

标签: selenium-webdriverrspecselenium-chromedrivergitlab-ci

解决方案


推荐阅读