Rails의 feature spec이 Chrome Driver를 사용할 때의 메모

5617 단어 RubyRails
Gemfile
gem 'capybara'
gem 'selenium-webdriver'
gem 'webdrivers'
rails_helper.어딘가에 쓰다
Capybara.register_driver :headless_chrome do |app|
  options = Selenium::WebDriver::Chrome::Options.new
  options.add_argument('--headless')
  options.add_argument('--disable-gpu')
  options.add_argument('--window-size=800,600')

  Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end

Capybara.configure do |config|
  config.default_max_wait_time = 15
  config.default_driver = :headless_chrome
end

CircleaCI를 이용한 Artifacts


다음 Artifacts 영역을 수집합니다.구문 결과 화면에서 브라우저에서 디렉토리 내의 파일을 직접 볼 수 있습니다.
      # collect reports
      - store_test_results:
          path: /tmp/test-results
      - store_artifacts:
          path: /tmp/test-results
          destination: test-result

따라서 피처 스펙이 Circleci에 유출되었을 때의 브라우저 화면을 Artifacts로 수집된 디렉터리에 squist로 놓으면 쉽게 디버깅할 수 있습니다.특별히 SSH로 컨테이너에 담을 필요는 없다.
다음 함수를 미리 준비하면 편리합니다.
def take_screenshot
  page.save_screenshot "/tmp/test-results/screenshot-#{DateTime.now}.png"
end

테스트 예

RSpec.feature "User", type: :feature do
  background do
    create(:activated_user)
  end

  scenario 'can get logged in if activated' do
    visit root_path
    take_screenshot # 遷移直後にスクショをとる
    click_on 'Log in'
    expect(page).to have_content 'Login to Slip.it'

    fill_in 'session_email', with: '[email protected]'
    fill_in 'session_password', with: 'password'
    click_on 'Login'
    expect(page).to have_content 'Add a new bookmark'
  end
end

좋은 웹페이지 즐겨찾기