簡體   English   中英

如何為 Rails + Rspec + Capybara & Selenium Webdrivers 設置 Github CI 用於多域應用程序?

[英]How to set up Github CI for Rails + Rspec + Capybara & Selenium Webdrivers for a multi domain app?

問題

在 Github 的 CI 上運行時,我得到一個SocketError: getaddrinfo: Name or service not known when trying to visit a page。

     2.1) Failure/Error: visit '/'

          SocketError:
            getaddrinfo: Name or service not known



          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara/server.rb:110:in `initialize'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara/server.rb:110:in `new'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara/server.rb:110:in `find_available_port'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara/server.rb:37:in `initialize'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara/session.rb:93:in `new'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara/session.rb:93:in `initialize'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara.rb:424:in `new'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara.rb:424:in `block in session_pool'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara.rb:315:in `current_session'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara/dsl.rb:46:in `page'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara/dsl.rb:58:in `block (2 levels) in <module:DSL>'
          # ./spec/system/register_system_spec.rb:8:in `block (3 levels) in <main>'


     2.2) Failure/Error: server = TCPServer.new(host, 0)

          SocketError:
            getaddrinfo: Name or service not known



          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara/server.rb:110:in `initialize'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara/server.rb:110:in `new'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara/server.rb:110:in `find_available_port'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara/server.rb:37:in `initialize'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara/session.rb:93:in `new'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara/session.rb:93:in `initialize'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara.rb:424:in `new'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara.rb:424:in `block in session_pool'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara.rb:315:in `current_session'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/capybara-3.33.0/lib/capybara/dsl.rb:46:in `page'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/actionpack-5.2.4.2/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb:54:in `save_image'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/actionpack-5.2.4.2/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb:25:in `take_screenshot'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/actionpack-5.2.4.2/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb:37:in `take_failed_screenshot'
          # /usr/share/rvm/gems/ruby-2.5.5/gems/actionpack-5.2.4.2/lib/action_dispatch/system_testing/test_helpers/setup_and_teardown.rb:21:in `after_teardown'

使用rspecselenium_google_chrome_headlessselenium_google_chrome在我的本地環境中正確運行測試。

該應用程序

  • 這是一個多域應用程序,所以我的測試運行
before { Capybara.app_host = "http://#{subdomain}.myapp.test" }
  • 庫版本
    • Ruby 2.5.5
    • gem 'rails', '~> 5.2.4'
    • gem 'rspec-rails', '~> 3.8'
    • capybara (3.33.0)
    • webdrivers (4.4.1)
      • selenium-webdriver (3.142.7)
  • 這是我的 Github CI 工作流程
env:
  RUBY_VERSION: 2.5.5
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Start database
        run: |
          sudo systemctl start mysql
      - name: Set up Ruby 2.5.5
        run: |
          sudo apt-add-repository -y ppa:rael-gc/rvm
          sudo apt-get update
          sudo apt-get -y install rvm
          source /etc/profile.d/rvm.sh
          rvm install ${{ env.RUBY_VERSION }}
      - name: setup-chromedriver
        uses: nanasess/setup-chromedriver@v1.0.1
      - name: Build and test
        env:
          DATABASE_PASSWORD: root
        run: |
          source /etc/profile.d/rvm.sh
          rvm use ${{ env.RUBY_VERSION }}
          gem install bundler
          bundle install --jobs 4 --retry 3
          mysql -uroot -p${{ env.DATABASE_PASSWORD }} --execute="CREATE DATABASE myapp_test"
          RAILS_ENV=test rails db:setup
          bundle exec rspec spec/system

使用:headless_chrome 作為 javascript 瀏覽器,並在 spec/spec_helper.rb 中使用配置

添加

Capybara.server = :puma

我的spec/rails_helper.rb文件似乎解決了我的主要問題。

我的測試仍然沒有通過 Github 操作,但它看起來是一個不同的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM