Chrome Flags support with JavaScript Testing

August 2024 · 3 minute read

Automated JavaScript Testing APIs support the automation of Chrome Flags on your Google Chrome browser.

Overview

Chrome Flags are potential functionalities that you can enable, disable, or set as default to control the browser services and behavior. You can check all Chrome Flags using the chrome://flags/ URL on your Google Chrome browser.

Run test using Chrome Flags

Pass Chrome Flags in karma_conf.js to use Flags in your tests.

flags: ["--enable-features=WebContentsForceDark"] 

For example:

customLaunchers: { bs_chrome_win1: { base: 'BrowserStack', browser: 'chrome', browser_version: 'latest', os: 'Windows', os_version: '11', flags: ["--enable-features=WebContentsForceDark"] }, }, 

Following code snippet is a test script that enables dark mode using a Chrome Flag.

require 'rubygems' require 'json' require 'net/http' require 'uri' require 'pp' require 'net/http' require 'openssl' # require 'openssl' OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE  # local user = 'YOUR_USERNAME' key = 'YOUR_ACCESS_KEY' base_url = 'apidev.bsstag.com'    uri= URI.parse("https://#{base_url}/5")  http = Net::HTTP.new(uri.host, uri.port) http.verify_mode = OpenSSL::SSL::VERIFY_NONE http.use_ssl = true # if uri.scheme == 'https' puts "Creating worker #{uri.port}" #Create a worker uri=URI.parse("https://#{base_url}/5/worker")  request=Net::HTTP::Post.new(uri.request_uri) request.initialize_http_header({"Content-Type" => "application/json", "Accept" => "application/json"}) request.basic_auth("#{user}","#{key}")  flags = ["--enable-features=WebContentsForceDark"] request.body = { "flags" => flags, "os" => "android", "os_version" => "11.0", "device" => "Samsung Galaxy S21 Ultra" , "url" => "https://reddit.com", "realMobile" => "true", "build" => "JS mobile" }.to_json begin response=http.request(request)  url = response['location'] end while response.is_a?(Net::HTTPRedirection) puts "RESPONSE: #{response.body}" jobId= JSON.parse(response.body)["id"] puts "https://#{base_url}/5/worker/#{jobId}"  #Get job status uri=URI.parse("https://#{base_url}/5/worker/#{jobId}") request=Net::HTTP::Get.new(uri.request_uri) request.basic_auth("#{user}","#{key}") response=http.request(request) status = JSON.parse(response.body)["status"] puts status while status!="running" response = http.request(request) status = JSON.parse(response.body)["status"] puts status sleep 1 end  #Get API Status  uri=URI.parse("https://#{base_url}/5/worker/#{jobId}/screenshot.json") request=Net::HTTP::Get.new(uri.request_uri) request.basic_auth("#{user}","#{key}") response=http.request(request) puts response.body sleep(5) response=http.request(request) puts response.body  sleep(5) response=http.request(request)  puts response.each_header.to_h  sleep(3)  # puts driver.title()  uri=URI.parse("https://#{base_url}/5/workers") request=Net::HTTP::Get.new(uri.request_uri) request.basic_auth("#{user}","#{key}") response=http.request(request) puts response.body   # Delete worker puts "/n/nDelete worker/n/n" uri=URI.parse("https://#{base_url}/5/worker/#{jobId}") request=Net::HTTP::Delete.new(uri.request_uri) request.basic_auth("#{user}","#{key}") response=http.request(request) puts response.body puts "/n/n Worker Deleted /n/n"   #status of API after delete   uri=URI.parse("https://#{base_url}/5/status") request=Net::HTTP::Get.new(uri.request_uri) request.basic_auth("#{user}","#{key}") response=http.request(request) puts response.body 
Did this page help you?

Yes No

We're sorry to hear that. Please share your feedback so we can do better

Submit

Contact our Support team for immediate help while we work on improving our docs.

We're continuously improving our docs. We'd love to know what you liked


Any additional feedback?

Submit

Thank you for your valuable feedback

Is this page helping you?

Yes No

We're sorry to hear that. Please share your feedback so we can do better

Submit Skip

Contact our Support team for immediate help while we work on improving our docs.

We're continuously improving our docs. We'd love to know what you liked


Any additional feedback?

Submit Skip

Thank you for your valuable feedback!

ncG1vNJzZmivp6x7o77OsKqeqqOprqS3jZympmeUpLC0e8Cuq6ilkamycLbAr5ism6KevbV5056qraGenHyktNGopJ5llqGuqL8%3D