class Shoot::Browser
Constants
- BROWSERS_PATH
- EMULATORS_UNAVAILABLE_ON_THE_API
Attributes
active[R]
browser[R]
browser_version[R]
device[R]
emulator[R]
id[R]
os[R]
os_version[R]
Public Class Methods
activate(ids)
click to toggle source
# File lib/shoot/browser.rb, line 29 def self.activate(ids) update(select_by_ids(ids), :activate) end
active()
click to toggle source
# File lib/shoot/browser.rb, line 41 def self.active all.select(&:active) end
all()
click to toggle source
# File lib/shoot/browser.rb, line 25 def self.all @@all ||= fetch_json.map { |browser| Browser.new(browser.symbolize_keys) } end
deactivate(ids)
click to toggle source
# File lib/shoot/browser.rb, line 33 def self.deactivate(ids) update(select_by_ids(ids), :deactivate) end
deactivate_all()
click to toggle source
# File lib/shoot/browser.rb, line 37 def self.deactivate_all update(active, :deactivate) end
filter(filter)
click to toggle source
# File lib/shoot/browser.rb, line 49 def self.filter(filter) all.select { |browser| browser.inspect =~ /#{filter}/i } end
new(id:, os:, browser:, device:, os_version: nil, browser_version: nil, active: false, emulator: false)
click to toggle source
# File lib/shoot/browser.rb, line 63 def initialize(id:, os:, browser:, device:, os_version: nil, browser_version: nil, active: false, emulator: false) @id = id @os = os @os_version = os_version @browser = browser @device = device @browser_version = browser_version @active = active @emulator = emulator end
save()
click to toggle source
# File lib/shoot/browser.rb, line 58 def self.save File.write(BROWSERS_PATH, JSON.pretty_generate(all.map(&:to_h))) end
select_by_ids(ids)
click to toggle source
# File lib/shoot/browser.rb, line 53 def self.select_by_ids(ids) ids = ids.map(&:to_i) all.select { |browser| ids.include?(browser.id) } end
update_json()
click to toggle source
# File lib/shoot/browser.rb, line 45 def self.update_json File.write(BROWSERS_PATH, JSON.dump(fetch_and_prepare)) end
Private Class Methods
fetch_and_prepare()
click to toggle source
# File lib/shoot/browser.rb, line 108 def self.fetch_and_prepare require 'rest_client' json = JSON.parse(RestClient.get("https://#{ENV['BROWSERSTACK_USER']}:#{ENV['BROWSERSTACK_KEY']}@www.browserstack.com/automate/browsers.json")) json += EMULATORS_UNAVAILABLE_ON_THE_API json.each_with_index do |browser, index| browser['id'] = index end json end
fetch_json()
click to toggle source
# File lib/shoot/browser.rb, line 103 def self.fetch_json update_json unless File.exist?(BROWSERS_PATH) JSON.parse(File.read(BROWSERS_PATH)) end
update(browsers, action)
click to toggle source
# File lib/shoot/browser.rb, line 97 def self.update(browsers, action) browsers.map(&action) save browsers end
Public Instance Methods
activate()
click to toggle source
# File lib/shoot/browser.rb, line 74 def activate @active = true end
deactivate()
click to toggle source
# File lib/shoot/browser.rb, line 78 def deactivate @active = false end
to_h()
click to toggle source
# File lib/shoot/browser.rb, line 82 def to_h { id: id, os: os, os_version: os_version, browser: browser, device: device, browser_version: browser_version, active: active, emulator: emulator } end