Skip to content

alphagov/govuk_test

Repository files navigation

GOV.UK Test

Gem to package test dependencies and config for GOV.UK applications. Cousin of govuk_app_config.

Installation

gem "govuk_test"

And then execute:

$ bundle

Usage

Somewhere in your spec_helper.rb, rails_helper.rb, or spec/support/govuk_test.rb put:

GovukTest.configure

This will configure Capybara to run any JavaScript enabled tests against a Selenium driven instance of headless Google Chrome.

If you need to use this as a root user (such as within some docker containers) you will need to set a GOVUK_TEST_CHROME_NO_SANDBOX environment variable.

You can reuse the Selenium options for headless Google Chrome for configuring other Selenium driven tests, such as Jasmine:

class ChromeHeadlessJasmineConfigurer < JasmineSeleniumRunner::ConfigureJasmine
  def selenium_options
    { options: GovukTest.headless_chrome_selenium_options }
  end
end

Should you need to configure the options for your application the recommended approach is to re-register the headless Google Chrome driver:

GovukTest.configure

Capybara.register_driver :headless_chrome do |app|
  chrome_options = GovukTest.headless_chrome_selenium_options
  chrome_options.add_argument("--disable-web-security")
  chrome_options.add_argument("--window-size=1400,1400")

  Capybara::Selenium::Driver.new(
    app,
    browser: :chrome,
    desired_capabilities: { acceptInsecureCerts: true },
    options: chrome_options,
  )
end

Licence

The gem is available as open source under the terms of the MIT License.