lib/puppeteer/page.rb in puppeteer-ruby-0.32.2 vs lib/puppeteer/page.rb in puppeteer-ruby-0.32.3
- old
+ new
@@ -47,11 +47,11 @@
@workers = {}
@client.on_event('Target.attachedToTarget') do |event|
if event['targetInfo']['type'] != 'worker'
# If we don't detach from service workers, they will never die.
- await @client.send_message('Target.detachFromTarget', sessionId: event['sessionId'])
+ @client.async_send_message('Target.detachFromTarget', sessionId: event['sessionId'])
next
end
session = Puppeteer::Connection.from_session(@client).session(event['sessionId']) # rubocop:disable Lint/UselessAssignment
# const worker = new Worker(session, event.targetInfo.url, this._addConsoleMessage.bind(this), this._handleException.bind(this));
@@ -792,34 +792,50 @@
raise ArgumentError.new("Unsupported media type: #{media_type}")
end
@client.send_message('Emulation.setEmulatedMedia', media: media_type_str)
end
- # /**
- # * @param {?Array<MediaFeature>} features
- # */
- # async emulateMediaFeatures(features) {
- # if (features === null)
- # await this._client.send('Emulation.setEmulatedMedia', {features: null});
- # if (Array.isArray(features)) {
- # features.every(mediaFeature => {
- # const name = mediaFeature.name;
- # assert(/^prefers-(?:color-scheme|reduced-motion)$/.test(name), 'Unsupported media feature: ' + name);
- # return true;
- # });
- # await this._client.send('Emulation.setEmulatedMedia', {features: features});
- # }
- # }
+ # @param features [Array]
+ def emulate_media_features(features)
+ if features.nil?
+ @client.send_message('Emulation.setEmulatedMedia', features: nil)
+ elsif features.is_a?(Array)
+ features.each do |media_feature|
+ name = media_feature[:name]
+ unless /^(?:prefers-(?:color-scheme|reduced-motion)|color-gamut)$/.match?(name)
+ raise ArgumentError.new("Unsupported media feature: #{name}")
+ end
+ end
+ @client.send_message('Emulation.setEmulatedMedia', features: features)
+ end
+ end
# @param timezone_id [String?]
def emulate_timezone(timezone_id)
@client.send_message('Emulation.setTimezoneOverride', timezoneId: timezone_id || '')
rescue => err
if err.message.include?('Invalid timezone')
raise ArgumentError.new("Invalid timezone ID: #{timezone_id}")
else
raise err
end
+ end
+
+ VISION_DEFICIENCY_TYPES = %w[
+ none
+ achromatopsia
+ blurredVision
+ deuteranopia
+ protanopia
+ tritanopia
+ ].freeze
+
+ def emulate_vision_deficiency(vision_deficiency_type)
+ value = vision_deficiency_type || 'none'
+ unless VISION_DEFICIENCY_TYPES.include?(value)
+ raise ArgumentError.new("Unsupported vision deficiency: #{vision_deficiency_type}")
+ end
+ @client.send_message('Emulation.setEmulatedVisionDeficiency', type: value)
end
# @param is_user_active [Boolean]
# @param is_screen_unlocked [Boolean]
def emulate_idle_state(is_user_active: nil, is_screen_unlocked: nil)