Chrome Flags support with JavaScript testing
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
We're sorry to hear that. Please share your feedback so we can do better
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
We're sorry to hear that. Please share your feedback so we can do better
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
Thank you for your valuable feedback!