Optimize your Chrome options for testing to get x1.25 impact

🚀 Increase Browser Test Speed with Chrome Options Optimization 🚀

Are you looking to supercharge your browser tests and optimize their speed? By fine-tuning your Chrome browser options, you can significantly enhance the performance of your automated tests.

Below are some Chrome options that helped me get x1.25 improvement:

CHROME_ARGS = {
  'allow-running-insecure-content' => nil,
  'autoplay-policy' => 'user-gesture-required',
  'disable-add-to-shelf' => nil,
  'disable-background-networking' => nil,
  'disable-background-timer-throttling' => nil,
  'disable-backgrounding-occluded-windows' => nil,
  'disable-breakpad' => nil,
  'disable-checker-imaging' => nil,
  'disable-client-side-phishing-detection' => nil,
  'disable-component-extensions-with-background-pages' => nil,
  'disable-datasaver-prompt' => nil,
  'disable-default-apps' => nil,
  'disable-desktop-notifications' => nil,
  'disable-dev-shm-usage' => nil,
  'disable-domain-reliability' => nil,
  'disable-extensions' => nil,
  'disable-features' => 'TranslateUI,BlinkGenPropertyTrees',
  'disable-hang-monitor' => nil,
  'disable-infobars' => nil,
  'disable-ipc-flooding-protection' => nil,
  'disable-notifications' => nil,
  'disable-popup-blocking' => nil,
  'disable-prompt-on-repost' => nil,
  'disable-renderer-backgrounding' => nil,
  'disable-setuid-sandbox' => nil,
  'disable-site-isolation-trials' => nil,
  'disable-sync' => nil,
  'disable-web-security' => nil,
  'enable-automation' => nil,
  'force-color-profile' => 'srgb',
  'force-device-scale-factor' => '1',
  'ignore-certificate-errors' => nil,
  'js-flags' => '--random-seed=1157259157',
  'disable-logging' => nil,
  'metrics-recording-only' => nil,
  'mute-audio' => nil,
  'no-default-browser-check' => nil,
  'no-first-run' => nil,
  'no-sandbox' => nil,
  'password-store' => 'basic',
  'test-type' => nil,
  'use-mock-keychain' => nil
}.map { |k, v| ["--#{k}", v].compact.join('=') }.freeze


class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
  driven_by :selenium, using: :headless_chrome, screen_size: [1024, 768] do |options|
    options.args.concat CHROME_ARGS
  end
end

Descriptions per option #

--allow-running-insecure-content: Disables the warning message when loading insecure content on a secure page, which can save time during testing.

--autoplay-policy=user-gesture-required: Adjusts the autoplay policy, requiring user gestures to start media playback, potentially reducing unwanted interactions during testing.

--disable-add-to-shelf: Disables the “Add to Shelf” feature, which is unnecessary for automated tests.

--disable-background-networking: Prevents background networking tasks, focusing resources on the foreground tasks relevant to testing.

--disable-background-timer-throttling: Disables timer throttling in the background, helping to speed up background operations during tests.

--disable-backgrounding-occluded-windows: Disables backgrounding of occluded windows, improving focus on the main testing window.

--disable-breakpad: Disables crash reporting, which is not essential for automated testing.

--disable-checker-imaging: Disables checker imaging, reducing unnecessary image processing during tests.

--disable-client-side-phishing-detection: Turns off client-side phishing detection, streamlining security checks during testing.

--disable-component-extensions-with-background-pages: Disables extensions with background pages, saving resources for test-specific tasks.

--disable-datasaver-prompt: Disables the data saver prompt, which is irrelevant for testing scenarios.

--disable-default-apps: Disables default apps, focusing on the necessary components for browser testing.

--disable-desktop-notifications: Disables desktop notifications, avoiding interruptions during testing.

--disable-dev-shm-usage: Disables the use of the /dev/shm shared memory file system, which may reduce memory usage during testing.

--disable-domain-reliability: Disables domain reliability checks, potentially speeding up network-related tasks during testing.

--disable-extensions: Disables extensions during testing, eliminating any interference they might cause.

--disable-features=TranslateUI,BlinkGenPropertyTrees: Disables specific browser features like TranslateUI and BlinkGenPropertyTrees that may not be necessary for testing.

--disable-hang-monitor: Disables the hang monitor feature, which helps avoid unnecessary interruptions during tests.

--disable-infobars: Disables the yellow info bar that displays when Chrome is controlled by automated software, streamlining the testing experience.

--disable-ipc-flooding-protection: Disables IPC flooding protection, potentially improving inter-process communication performance during tests.

--disable-logging: Disables logging to improve test performance and avoid unnecessary log entries.

--disable-notifications: Disables browser notifications, avoiding interruptions during testing.

--disable-popup-blocking: Disables the popup blocker to avoid interference with specific test scenarios.

--disable-prompt-on-repost: Disables prompts when navigating to a reposted page, streamlining automated navigation.

--disable-renderer-backgrounding: Disables renderer backgrounding, which can speed up foreground tasks during tests.

--disable-setuid-sandbox: Disables the setuid sandbox, potentially reducing security overhead during testing.

--disable-site-isolation-trials: Disables site isolation trials, which might improve resource usage during testing.

--disable-sync: Disables browser sync functionality, which may not be required during automated tests.

--disable-web-security: Disables web security features, potentially speeding up interactions during testing, but be cautious when testing untrusted websites.

--enable-automation: Enables automation features, helpful for controlling the browser during automated tests.

--force-color-profile=srgb: Forces the browser to use the sRGB color profile, streamlining color rendering during testing.

--force-device-scale-factor=1: Forces the device scale factor to 1, potentially improving consistency in visual testing.

--ignore-certificate-errors: Ignores certificate errors, helpful when dealing with self-signed certificates during testing.

--js-flags=--random-seed=1157259157: Sets specific JavaScript flags with a random seed, potentially improving consistency in JavaScript testing.

--metrics-recording-only: Enables metrics recording only, valid for collecting performance metrics during testing.

--mute-audio: Mutes audio playback during testing, avoiding audio distractions.

--no-default-browser-check: Skips the default browser check, streamlining test setup.

--no-first-run: Skips the first-run experience, useful for repeated testing.

--no-sandbox: Disables the sandbox, potentially reducing overhead during testing.

--password-store=basic: Sets the password store to basic, simplifying password management during testing.

--test-type: Sets the test type, potentially influencing browser behavior during testing.

--use-mock-keychain: Uses a mock keychain for credentials, improving security and avoiding popups during testing.

Disclaimer #

Remember that not all of these options may be relevant to your specific testing needs, so evaluating their impact on your test environment and application behavior is essential. Happy optimizing! 🚀💨


Paul Keen is an Open Source Contributor and a Chief Technology Officer at JetThoughts . Follow him on LinkedIn or GitHub .

If you enjoyed this story, we recommend reading our latest tech stories and trending tech stories .