module Playwright::Utils::PrepareBrowserContextOptions

def prepare_browser_context_options(params)

Other tags:
    See: https://github.com/microsoft/playwright/blob/5a2cfdbd47ed3c3deff77bb73e5fac34241f649d/src/client/browserContext.ts#L265 -
def prepare_browser_context_options(params)
ams[:noViewport] == 0
ms.delete(:noViewport)
ms[:noDefaultViewport] = true
ams[:extraHTTPHeaders]
ms[:extraHTTPHeaders] = ::Playwright::HttpHeaders.new(params[:extraHTTPHeaders]).as_serialized
ams[:record_video_dir]
ms[:recordVideo] = {
r: params.delete(:record_video_dir)
arams[:record_video_size]
rams[:recordVideo][:size] = params.delete(:record_video_size)
arams[:record_video_show_actions]
rams[:recordVideo][:showActions] = params.delete(:record_video_show_actions)
ams[:storageState].is_a?(String)
ms[:storageState] = JSON.parse(File.read(params[:storageState]))
orScheme reducedMotion forcedColors contrast].each do |key|
arams[key] == 'null'
rams[key] = 'no-override'
ams[:acceptDownloads] || params[:acceptDownloads] == false
ms[:acceptDownloads] = params[:acceptDownloads] ? 'accept' : 'deny'
ams[:clientCertificates].is_a?(Array)
ms[:clientCertificates] = params[:clientCertificates].filter_map do |item|
t_record = {
origin: item[:origin],
passphrase: item[:passphrase],
pfxPath: 'pfx', certPath: 'cert', keyPath: 'key' }.each do |key, out_key|
if (filepath = item[key])
  out_record[out_key] = Base64.encode64(File.read(filepath)) rescue ''
elsif (value = item[out_key.to_sym])
  out_record[out_key] = value
end
d
t_record.compact!
xt nil if out_record.empty?
t_record