browsenator 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e92b28da1e6c1430a0086b32892212542aa166f0
4
+ data.tar.gz: e058c5f20090410634b1ac4b132e9377d34fc1d5
5
+ SHA512:
6
+ metadata.gz: afbe17523c0665005930fb4956b00b0cbde9869de8a44b5c9473209f4285fc4d16b671c575c68b0c64783cf8ce2da90bc46f5925337bf91178aaedc1b8ffaf8e
7
+ data.tar.gz: c0ce17449c3f224b3ea2f751938c4e0bc467ac672cad70e6a0a07066472aafb04eeebd0718c409d9dd2af244614b1b698cde50aba5f02521cf2389ff866f5866
data/README.md ADDED
@@ -0,0 +1,62 @@
1
+ # Browsenator
2
+ [![Build Status](https://travis-ci.com/Typeform/browsenator.svg?token=4XnFa7v9wzSNqUXXdfpX&branch=master)](https://travis-ci.com/Typeform/browsenator)
3
+
4
+ Browsenator is a Watir wrapper to make starting local and remote browsers easier.
5
+
6
+ ## Installation
7
+
8
+ Install Browsenator as a Gem from git:
9
+
10
+ ```ruby
11
+ gem 'browsenator', git: git@github.com:Typeform/browsenator.git
12
+ ```
13
+
14
+ And then in your project execute:
15
+
16
+ $ bundle install
17
+
18
+ ## Configuration
19
+
20
+ To use remote Browsertack browsers, configure the following environment variables:
21
+
22
+ - BROWSERSTACK_USERNAME
23
+ - BROWSERSTACK_ACCESS_KEY
24
+
25
+ ## Usage
26
+
27
+ ### Local browser
28
+
29
+ Start a local browser:
30
+
31
+ ```ruby
32
+ Browsenator.for(:chrome)
33
+ ```
34
+
35
+ You can start the following local browsers: `:chrome`, `:firefox`, `:safari`.
36
+
37
+ Chrome and Firefox browsers can be started in headless mode:
38
+
39
+ ```ruby
40
+ Browsenator.for(:chrome, headless: true)
41
+ ```
42
+
43
+ ### Remote browser
44
+
45
+ To start a remote browser:
46
+
47
+ ```ruby
48
+ Browsenator.for(:chrome, remote: :browserstack)
49
+ ```
50
+
51
+ Currently, remote browsers are only available through Browserstack.
52
+
53
+ You can start the following remote browsers: `:chrome`, `:safari`.
54
+
55
+ ## Development
56
+
57
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `bundle exec spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
58
+
59
+ The code follows [Ruby Style Guidelines](https://github.com/bbatsov/ruby-style-guide). Run Rubocop to ensure them by executing `bundle exec rubocop`.
60
+
61
+ Code coverage is automatically generated when rspec is run. A full report can be viewed by opening coverage/index.html (target is > 90%).
62
+
@@ -0,0 +1,18 @@
1
+ require 'webdrivers'
2
+ require_relative 'browsenator/local'
3
+ require_relative 'browsenator/remote/browserstack'
4
+
5
+ module Browsenator
6
+ def self.for(browser, opts = {})
7
+ remote = opts.delete(:remote)
8
+
9
+ case remote
10
+ when false, nil
11
+ Local.for(browser, opts)
12
+ when :browserstack
13
+ Remote::Browserstack.for(browser, opts)
14
+ else
15
+ raise ArgumentError, "Unknown remote: #{remote.inspect}"
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,20 @@
1
+ require_relative 'local/chrome'
2
+ require_relative 'local/firefox'
3
+ require_relative 'local/safari'
4
+
5
+ module Browsenator
6
+ module Local
7
+ def self.for(browser, opts = {})
8
+ case browser
9
+ when :chrome
10
+ Chrome.new(opts).open
11
+ when :firefox
12
+ Firefox.new(opts).open
13
+ when :safari
14
+ Safari.new.open
15
+ else
16
+ raise ArgumentError, "Unknown local browser: #{browser.inspect}"
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,30 @@
1
+ require 'watir'
2
+ require_relative 'window_size'
3
+
4
+ module Browsenator
5
+ module Local
6
+ class Chrome
7
+ include WindowSize
8
+
9
+ def initialize(opts = {})
10
+ @args = %w[--ignore-certificate-errors
11
+ --dirubocosable-prompt-on-repost
12
+ --disable-popup-blocking
13
+ --disable-translate
14
+ --disable-infobars]
15
+
16
+ @args << '--headless' if opts[:headless]
17
+ end
18
+
19
+ def open
20
+ chrome = Watir::Browser.new :chrome, args: args
21
+ chrome.window.resize_to(width, height)
22
+ chrome
23
+ end
24
+
25
+ private
26
+
27
+ attr_reader :args
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,24 @@
1
+ require 'watir'
2
+ require_relative 'window_size'
3
+
4
+ module Browsenator
5
+ module Local
6
+ class Firefox
7
+ include WindowSize
8
+
9
+ def initialize(opts = {})
10
+ @options = { accept_insecure_certs: true }
11
+
12
+ @options[:headless] = true if opts[:headless]
13
+ end
14
+
15
+ def open
16
+ firefox = Watir::Browser.new :firefox, options
17
+ firefox.window.resize_to(width, height)
18
+ firefox
19
+ end
20
+
21
+ attr_reader :options
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,16 @@
1
+ require 'watir'
2
+ require_relative 'window_size'
3
+
4
+ module Browsenator
5
+ module Local
6
+ class Safari
7
+ include WindowSize
8
+
9
+ def open
10
+ safari = Watir::Browser.new :safari
11
+ safari.window.resize_to(width, height)
12
+ safari
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ module Browsenator
2
+ module Local
3
+ module WindowSize
4
+ def width
5
+ 1024
6
+ end
7
+
8
+ def height
9
+ 640
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,19 @@
1
+ require_relative 'browserstack/chrome'
2
+ require_relative 'browserstack/safari'
3
+
4
+ module Browsenator
5
+ module Remote
6
+ module Browserstack
7
+ def self.for(browser, opts = {})
8
+ case browser
9
+ when :chrome
10
+ Chrome.new(opts).open
11
+ when :safari
12
+ Safari.new(opts).open
13
+ else
14
+ raise ArgumentError, "Unknown Browserstack browser: #{browser.inspect}"
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,9 @@
1
+ module BrowserstackCredentials
2
+ def username
3
+ ENV['BROWSERSTACK_USERNAME']
4
+ end
5
+
6
+ def access_key
7
+ ENV['BROWSERSTACK_ACCESS_KEY']
8
+ end
9
+ end
@@ -0,0 +1,37 @@
1
+ require 'watir'
2
+ require_relative 'browserstack_credentials'
3
+ require_relative 'window_size'
4
+
5
+ module Browsenator
6
+ module Remote
7
+ module Browserstack
8
+ class Chrome
9
+ include BrowserstackCredentials
10
+ include WindowSize
11
+
12
+ def initialize(opts = {})
13
+ caps = Selenium::WebDriver::Remote::Capabilities.new
14
+ caps['browser'] = 'Chrome'
15
+ caps['browser_version'] = '66.0'
16
+ caps['os'] = 'OS X'
17
+ caps['os_version'] = 'High Sierra'
18
+ caps['resolution'] = "#{width}x#{height}"
19
+ caps['project'] = opts[:project]
20
+
21
+ @options = {
22
+ url: "http://#{username}:#{access_key}@hub-cloud.browserstack.com/wd/hub",
23
+ desired_capabilities: caps
24
+ }
25
+ end
26
+
27
+ def open
28
+ Watir::Browser.new :remote, options
29
+ end
30
+
31
+ private
32
+
33
+ attr_reader :options
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,37 @@
1
+ require 'watir'
2
+ require_relative 'browserstack_credentials'
3
+ require_relative 'window_size'
4
+
5
+ module Browsenator
6
+ module Remote
7
+ module Browserstack
8
+ class Safari
9
+ include BrowserstackCredentials
10
+ include WindowSize
11
+
12
+ def initialize(opts = {})
13
+ caps = Selenium::WebDriver::Remote::Capabilities.new
14
+ caps['browser'] = 'Safari'
15
+ caps['browser_version'] = '11.1'
16
+ caps['os'] = 'OS X'
17
+ caps['os_version'] = 'High Sierra'
18
+ caps['resolution'] = "#{width}x#{height}"
19
+ caps['project'] = opts[:project]
20
+
21
+ @options = {
22
+ url: "http://#{username}:#{access_key}@hub-cloud.browserstack.com/wd/hub",
23
+ desired_capabilities: caps
24
+ }
25
+ end
26
+
27
+ def open
28
+ Watir::Browser.new :remote, options
29
+ end
30
+
31
+ private
32
+
33
+ attr_reader :options
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,15 @@
1
+ module Browsenator
2
+ module Remote
3
+ module Browserstack
4
+ module WindowSize
5
+ def width
6
+ 1024
7
+ end
8
+
9
+ def height
10
+ 768
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
metadata ADDED
@@ -0,0 +1,167 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: browsenator
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Aida Manna
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-05-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: watir
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '6.10'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '6.10'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.16'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.16'
41
+ - !ruby/object:Gem::Dependency
42
+ name: byebug
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: dotenv
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.4'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.4'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.7'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.7'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.56.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.56.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: simplecov
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.16.1
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.16.1
111
+ - !ruby/object:Gem::Dependency
112
+ name: webdrivers
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '3.3'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '3.3'
125
+ description:
126
+ email:
127
+ - aidamanna@gmail.com
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - README.md
133
+ - lib/browsenator.rb
134
+ - lib/browsenator/local.rb
135
+ - lib/browsenator/local/chrome.rb
136
+ - lib/browsenator/local/firefox.rb
137
+ - lib/browsenator/local/safari.rb
138
+ - lib/browsenator/local/window_size.rb
139
+ - lib/browsenator/remote/browserstack.rb
140
+ - lib/browsenator/remote/browserstack/browserstack_credentials.rb
141
+ - lib/browsenator/remote/browserstack/chrome.rb
142
+ - lib/browsenator/remote/browserstack/safari.rb
143
+ - lib/browsenator/remote/browserstack/window_size.rb
144
+ homepage: https://github.com/Typeform/browsenator
145
+ licenses: []
146
+ metadata: {}
147
+ post_install_message:
148
+ rdoc_options: []
149
+ require_paths:
150
+ - lib
151
+ required_ruby_version: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
156
+ required_rubygems_version: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ requirements: []
162
+ rubyforge_project:
163
+ rubygems_version: 2.6.14
164
+ signing_key:
165
+ specification_version: 4
166
+ summary: Easily start different browsers
167
+ test_files: []