Sha256: e1354452d23e04bfa6985dcba99f733ac2c50bb0dda9b2afa8bf60e51f76372a

Contents?: true

Size: 1.93 KB

Versions: 8

Compression:

Stored size: 1.93 KB

Contents

# frozen_string_literal: true

require "selenium-webdriver"
require "system_test_html_screenshots"

module Decidim
  # Helpers meant to be used only during capybara test runs.
  module CapybaraTestHelpers
    def switch_to_host(host = "lvh.me")
      raise "Can't switch to a custom host unless it really exists. Use `whatever.lvh.me` as a workaround." unless /lvh\.me$/.match?(host)

      app_host = (host ? "http://#{host}" : nil)
      Capybara.app_host = app_host
    end

    def switch_to_default_host
      Capybara.app_host = nil
    end
  end
end

Capybara.register_driver :headless_chrome do |app|
  options = ::Selenium::WebDriver::Chrome::Options.new
  options.args << "--headless"
  options.args << "--no-sandbox"
  options.args << if ENV["BIG_SCREEN_SIZE"].present?
                    "--window-size=1920,3000"
                  else
                    "--window-size=1024,768"
                  end

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

Capybara.register_driver :iphone do |app|
  options = ::Selenium::WebDriver::Chrome::Options.new
  options.args << "--headless"
  options.args << "--no-sandbox"
  options.add_emulation(device_name: "iPhone 6")

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

Capybara.server = :puma, { Silent: true }

Capybara.asset_host = "http://localhost:3000"

Capybara.server_errors = [SyntaxError, StandardError]

RSpec.configure do |config|
  config.before :each, type: :system do
    driven_by(:headless_chrome)
    switch_to_default_host
  end

  config.before :each, driver: :rack_test do
    driven_by(:rack_test)
  end

  config.around :each, :slow do |example|
    max_wait_time_for_slow_specs = 30

    using_wait_time(max_wait_time_for_slow_specs) do
      example.run
    end
  end

  config.include Decidim::CapybaraTestHelpers, type: :system
  config.include Devise::Test::IntegrationHelpers, type: :system
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
decidim-dev-0.23.6 lib/decidim/dev/test/rspec_support/capybara.rb
decidim-dev-0.23.5 lib/decidim/dev/test/rspec_support/capybara.rb
decidim-dev-0.23.4 lib/decidim/dev/test/rspec_support/capybara.rb
decidim-dev-0.23.3 lib/decidim/dev/test/rspec_support/capybara.rb
decidim-dev-0.23.2 lib/decidim/dev/test/rspec_support/capybara.rb
decidim-dev-0.23.1 lib/decidim/dev/test/rspec_support/capybara.rb
decidim-dev-0.23.1.rc1 lib/decidim/dev/test/rspec_support/capybara.rb
decidim-dev-0.23.0 lib/decidim/dev/test/rspec_support/capybara.rb