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 +7 -0
- data/README.md +62 -0
- data/lib/browsenator.rb +18 -0
- data/lib/browsenator/local.rb +20 -0
- data/lib/browsenator/local/chrome.rb +30 -0
- data/lib/browsenator/local/firefox.rb +24 -0
- data/lib/browsenator/local/safari.rb +16 -0
- data/lib/browsenator/local/window_size.rb +13 -0
- data/lib/browsenator/remote/browserstack.rb +19 -0
- data/lib/browsenator/remote/browserstack/browserstack_credentials.rb +9 -0
- data/lib/browsenator/remote/browserstack/chrome.rb +37 -0
- data/lib/browsenator/remote/browserstack/safari.rb +37 -0
- data/lib/browsenator/remote/browserstack/window_size.rb +15 -0
- metadata +167 -0
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
|
+
[](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
|
+
|
data/lib/browsenator.rb
ADDED
@@ -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,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,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
|
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: []
|