Read more

Headless Chrome: Changing the Accept-Language header is not possible

Emanuel
July 19, 2021Software engineer at makandra GmbH

It seems like changing the HTTP_ACCEPT_LANGUAGE is not possible for a headless chrome.

  • On Ubuntu the headless Chrome derives the Accept-Language from the operation system
  • Adding the option options.add_argument('--lang=de') to the Capybara::Selenium::Driver has no effect
  • Adding the preference options.add_preference('intl.accept_languages', 'de') to the Capybara::Selenium::Driver has only effects if the --headless option is skipped (see bug ticket #775911 Show archive.org snapshot )
  • Changing the request header in Capybara only works without Selenium
Illustration online protection

Rails Long Term Support

Rails LTS provides security patches for old versions of Ruby on Rails (2.3, 3.2, 4.2 and 5.2)

  • Prevents you from data breaches and liability risks
  • Upgrade at your own pace
  • Works with modern Rubies
Read more Show archive.org snapshot

You still can add logic to your application code that helps to modify the Accept-Language in tests. Here is an example for a Rails application with Cucumber integration tests:

class ApplicationController

  OVERRIDE_HTTP_ACCEPT_LANGUAGE = nil

  def accept_language
    OVERRIDE_HTTP_ACCEPT_LANGUAGE || request.env['HTTP_ACCEPT_LANGUAGE'].to_s
  end

end
# Override the Accept-Language header for all Cucumber scenarios

Before do
  stub_const('ApplicationController::OVERRIDE_HTTP_ACCEPT_LANGUAGE', 'de')
end
Posted by Emanuel to makandra dev (2021-07-19 14:10)