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 UI/UX Design

UI/UX Design by makandra brand

We make sure that your target audience has the best possible experience with your digital product. You get:

  • Design tailored to your audience
  • Proven processes customized to your needs
  • An expert team of experienced designers
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)