Optimize your Chrome options for testing to get x1.25 impact
Tags: testing, performance, productivity, browser
Published: 2023-08-05 14:12:04

🚀 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:

```ruby
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](https://www.jetthoughts.com). Follow him on [LinkedIn](https://www.linkedin.com/in/paul-keen/) or [GitHub](https://github.com/pftg).

If you enjoyed this story, we recommend reading our [latest tech stories](https://jtway.co/latest) and [trending tech stories](https://jtway.co/trending).