uptime_monitor 0.6.3 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.env.examples +4 -0
- data/.travis.yml +22 -5
- data/Dockerfile +5 -0
- data/Gemfile +3 -4
- data/Gemfile.lock +55 -58
- data/README.md +91 -74
- data/VERSION +1 -1
- data/docker-compose.yml +52 -0
- data/lib/uptime_monitor.rb +5 -4
- data/lib/uptime_monitor/browser.rb +7 -3
- data/lib/uptime_monitor/uptime_monitor.rb +1 -1
- data/spec/browser_spec.rb +4 -4
- data/spec/browsers_lang_parser_spec.rb +1 -1
- data/spec/uptime_monitor_spec.rb +5 -5
- data/uptime_monitor.gemspec +43 -46
- metadata +13 -38
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c3f61d132de121f2a13283ec56d030eef62f4d40
|
4
|
+
data.tar.gz: 147e6f471ea6a98b88564e5d27146fed984dc942
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9ad8a58fb8de43e2b7e0e74f4d4b55822c8cee4357950f29ea23aedf596816d3b204a06025e9232a3d799527a77b10f5f75e729d11f0df4ddb863f7a4670574
|
7
|
+
data.tar.gz: bfc374f0434af353033d49fd18bafe6317a4ce9a27d219f1137cd5ee7a4afc833cfac6a80590166d88df51269b3345f6b584232c019c867dff773a2ad586417f
|
data/.env.examples
ADDED
data/.travis.yml
CHANGED
@@ -1,6 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
- 2.3.0
|
4
|
-
- 2.2.3
|
1
|
+
env:
|
2
|
+
- DOCKER_COMPOSE_VERSION=1.16.1
|
5
3
|
|
6
|
-
|
4
|
+
addons:
|
5
|
+
apt:
|
6
|
+
packages:
|
7
|
+
- docker-ce
|
8
|
+
|
9
|
+
|
10
|
+
before_install:
|
11
|
+
- sudo rm /usr/local/bin/docker-compose
|
12
|
+
- curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose
|
13
|
+
- chmod +x docker-compose
|
14
|
+
- sudo mv docker-compose /usr/local/bin
|
15
|
+
|
16
|
+
before_script:
|
17
|
+
- docker-compose build
|
18
|
+
|
19
|
+
script:
|
20
|
+
- docker-compose run unit_tests
|
21
|
+
|
22
|
+
after_script:
|
23
|
+
- docker-compose down
|
data/Dockerfile
ADDED
data/Gemfile
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
gem 'headless', "~> 1.0.2"
|
4
|
-
gem 'watir
|
3
|
+
# gem 'headless', "~> 1.0.2"
|
4
|
+
gem 'watir'
|
5
5
|
gem 'watir-webdriver-performance', "~> 0.2.4"
|
6
6
|
gem "aws-s3"
|
7
7
|
gem "treetop"
|
8
|
-
gem "selenium-webdriver", '~> 2.53.4'
|
9
8
|
|
10
9
|
group :development do
|
11
10
|
gem "rspec"
|
12
11
|
gem "rdoc", "~> 3.12"
|
13
12
|
gem "bundler", "~> 1.0"
|
14
|
-
gem "jeweler", "~> 2.
|
13
|
+
gem "jeweler", "~> 2.3.7"
|
15
14
|
gem "pry"
|
16
15
|
end
|
data/Gemfile.lock
CHANGED
@@ -6,90 +6,89 @@ GEM
|
|
6
6
|
builder
|
7
7
|
mime-types
|
8
8
|
xml-simple
|
9
|
-
builder (3.2.
|
10
|
-
childprocess (0.
|
9
|
+
builder (3.2.3)
|
10
|
+
childprocess (0.8.0)
|
11
11
|
ffi (~> 1.0, >= 1.0.11)
|
12
|
-
coderay (1.1.
|
12
|
+
coderay (1.1.2)
|
13
13
|
descendants_tracker (0.0.4)
|
14
14
|
thread_safe (~> 0.3, >= 0.3.1)
|
15
|
-
diff-lcs (1.
|
15
|
+
diff-lcs (1.3)
|
16
16
|
faraday (0.9.2)
|
17
17
|
multipart-post (>= 1.2, < 3)
|
18
|
-
ffi (1.9.
|
19
|
-
git (1.
|
20
|
-
github_api (0.
|
18
|
+
ffi (1.9.18)
|
19
|
+
git (1.3.0)
|
20
|
+
github_api (0.16.0)
|
21
21
|
addressable (~> 2.4.0)
|
22
22
|
descendants_tracker (~> 0.0.4)
|
23
23
|
faraday (~> 0.8, < 0.10)
|
24
24
|
hashie (>= 3.4)
|
25
|
-
|
26
|
-
oauth2
|
27
|
-
hashie (3.
|
28
|
-
|
29
|
-
|
30
|
-
jeweler (2.0.1)
|
25
|
+
mime-types (>= 1.16, < 3.0)
|
26
|
+
oauth2 (~> 1.0)
|
27
|
+
hashie (3.5.7)
|
28
|
+
highline (1.7.10)
|
29
|
+
jeweler (2.3.7)
|
31
30
|
builder
|
32
|
-
bundler (>= 1
|
31
|
+
bundler (>= 1)
|
33
32
|
git (>= 1.2.5)
|
34
|
-
github_api
|
33
|
+
github_api (~> 0.16.0)
|
35
34
|
highline (>= 1.6.15)
|
36
35
|
nokogiri (>= 1.5.10)
|
36
|
+
psych (~> 2.2)
|
37
37
|
rake
|
38
38
|
rdoc
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
multi_xml (0.5.5)
|
39
|
+
semver2
|
40
|
+
json (1.8.6)
|
41
|
+
jwt (1.5.6)
|
42
|
+
method_source (0.9.0)
|
43
|
+
mime-types (2.99.3)
|
44
|
+
mini_portile2 (2.3.0)
|
45
|
+
multi_json (1.13.1)
|
46
|
+
multi_xml (0.6.0)
|
48
47
|
multipart-post (2.0.0)
|
49
|
-
nokogiri (1.
|
50
|
-
mini_portile2 (~> 2.
|
51
|
-
oauth2 (1.
|
52
|
-
faraday (>= 0.8, < 0.
|
53
|
-
jwt (~> 1.0
|
48
|
+
nokogiri (1.8.1)
|
49
|
+
mini_portile2 (~> 2.3.0)
|
50
|
+
oauth2 (1.4.0)
|
51
|
+
faraday (>= 0.8, < 0.13)
|
52
|
+
jwt (~> 1.0)
|
54
53
|
multi_json (~> 1.3)
|
55
54
|
multi_xml (~> 0.5)
|
56
55
|
rack (>= 1.2, < 3)
|
57
56
|
polyglot (0.3.5)
|
58
|
-
pry (0.
|
57
|
+
pry (0.11.3)
|
59
58
|
coderay (~> 1.1.0)
|
60
|
-
method_source (~> 0.
|
61
|
-
|
62
|
-
rack (
|
63
|
-
rake (
|
59
|
+
method_source (~> 0.9.0)
|
60
|
+
psych (2.2.4)
|
61
|
+
rack (2.0.3)
|
62
|
+
rake (12.3.0)
|
64
63
|
rdoc (3.12.2)
|
65
64
|
json (~> 1.4)
|
66
|
-
rspec (3.
|
67
|
-
rspec-core (~> 3.
|
68
|
-
rspec-expectations (~> 3.
|
69
|
-
rspec-mocks (~> 3.
|
70
|
-
rspec-core (3.
|
71
|
-
rspec-support (~> 3.
|
72
|
-
rspec-expectations (3.
|
65
|
+
rspec (3.7.0)
|
66
|
+
rspec-core (~> 3.7.0)
|
67
|
+
rspec-expectations (~> 3.7.0)
|
68
|
+
rspec-mocks (~> 3.7.0)
|
69
|
+
rspec-core (3.7.1)
|
70
|
+
rspec-support (~> 3.7.0)
|
71
|
+
rspec-expectations (3.7.0)
|
73
72
|
diff-lcs (>= 1.2.0, < 2.0)
|
74
|
-
rspec-support (~> 3.
|
75
|
-
rspec-mocks (3.
|
73
|
+
rspec-support (~> 3.7.0)
|
74
|
+
rspec-mocks (3.7.0)
|
76
75
|
diff-lcs (>= 1.2.0, < 2.0)
|
77
|
-
rspec-support (~> 3.
|
78
|
-
rspec-support (3.
|
79
|
-
rubyzip (1.2.
|
80
|
-
selenium-webdriver (
|
76
|
+
rspec-support (~> 3.7.0)
|
77
|
+
rspec-support (3.7.0)
|
78
|
+
rubyzip (1.2.1)
|
79
|
+
selenium-webdriver (3.8.0)
|
81
80
|
childprocess (~> 0.5)
|
82
81
|
rubyzip (~> 1.0)
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
treetop (1.6.4)
|
82
|
+
semver2 (3.4.2)
|
83
|
+
thread_safe (0.3.6)
|
84
|
+
treetop (1.6.9)
|
87
85
|
polyglot (~> 0.3)
|
88
|
-
watir
|
86
|
+
watir (6.10.2)
|
87
|
+
selenium-webdriver (~> 3.4, >= 3.4.1)
|
88
|
+
watir-webdriver (0.9.9)
|
89
89
|
selenium-webdriver (>= 2.46.2)
|
90
90
|
watir-webdriver-performance (0.2.4)
|
91
91
|
watir-webdriver
|
92
|
-
websocket (1.2.3)
|
93
92
|
xml-simple (1.1.5)
|
94
93
|
|
95
94
|
PLATFORMS
|
@@ -98,15 +97,13 @@ PLATFORMS
|
|
98
97
|
DEPENDENCIES
|
99
98
|
aws-s3
|
100
99
|
bundler (~> 1.0)
|
101
|
-
|
102
|
-
jeweler (~> 2.0.1)
|
100
|
+
jeweler (~> 2.3.7)
|
103
101
|
pry
|
104
102
|
rdoc (~> 3.12)
|
105
103
|
rspec
|
106
|
-
selenium-webdriver (~> 2.53.4)
|
107
104
|
treetop
|
108
|
-
watir
|
105
|
+
watir
|
109
106
|
watir-webdriver-performance (~> 0.2.4)
|
110
107
|
|
111
108
|
BUNDLED WITH
|
112
|
-
1.
|
109
|
+
1.15.1
|
data/README.md
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
uptime_monitor (Hercules)
|
2
2
|
==========================
|
3
|
-
[![Build Status](https://travis-ci.org/obi-a/uptime_monitor.png?branch=master)](https://travis-ci.org/obi-a/uptime_monitor)
|
4
3
|
[![Gem Version](https://badge.fury.io/rb/uptime_monitor.svg)](http://badge.fury.io/rb/uptime_monitor)
|
5
4
|
|
6
|
-
Uptime_monitor is a [ragios](https://github.com/obi-a/ragios) plugin that uses a real web browser to perform transactions on a website to ensure that features of the site are still working correctly. It can check elements of a webpage to ensure they still exist and it can also perform transactions like a website login to ensure that the process still works correctly.
|
7
5
|
|
8
|
-
|
9
|
-
|
6
|
+
Uptime_monitor is a [ragios](https://github.com/obi-a/ragios) plugin that uses a real web browser to perform actions on a website to ensure that features of the site are still working correctly. It can check elements of a webpage to ensure they still exist and it can also perform actions like a website login to ensure that the process still works correctly. When uptime_monitor detects a problem with the website, Uptime_monitor can take a screenshot of the web page it sees, and it can also record a video of the actions it performed on the website. The video feature is not yet implemented.
|
7
|
+
|
8
|
+
## Requirements
|
9
|
+
Ruby: At least Ruby 2.4.1 or higher is recommended
|
10
10
|
|
11
11
|
[Ragios](https://github.com/obi-a/ragios)
|
12
12
|
|
13
|
-
|
13
|
+
|
14
|
+
## Installation:
|
14
15
|
Add the uptime_monitor gem to your ragios Gemfile
|
15
16
|
```ruby
|
16
17
|
gem "uptime_monitor"
|
@@ -19,24 +20,20 @@ Run bundle install from the ragios root directory
|
|
19
20
|
```
|
20
21
|
bundle install
|
21
22
|
```
|
22
|
-
In the Ragios root directory, in the file ```config.rb```, add to line 1
|
23
|
-
```ruby
|
24
|
-
require 'uptime_monitor'
|
25
|
-
```
|
26
23
|
Restart ragios
|
27
24
|
|
28
|
-
|
29
|
-
|
25
|
+
To run Ragios with uptime_monitor and all its dependencies already setup and configured in Docker Compose, See details here: [Using Maestro](https://github.com/obi-a/maestro). This is the easiest way to get Ragios and Uptime_monitor up and running.
|
26
|
+
|
30
27
|
|
31
|
-
##Usage:
|
28
|
+
## Usage:
|
32
29
|
A quick example, to monitor the title tag of a web page to ensure that it hasn't changed. Using [Ragios ruby client](http://www.whisperservers.com/ragios/ragios-saint-ruby/using-ragios)
|
33
|
-
|
30
|
+
```ruby
|
34
31
|
monitor = {
|
35
32
|
monitor: "My Blog title tag",
|
36
33
|
url: "http://obi-akubue.org",
|
37
34
|
every: "5m",
|
38
35
|
contact: "admin@obiora.com",
|
39
|
-
via: "
|
36
|
+
via: "ses",
|
40
37
|
plugin: "uptime_monitor",
|
41
38
|
exists?: 'title.with_text("Obi Akubue")',
|
42
39
|
browser: "firefox"
|
@@ -49,13 +46,13 @@ exists?: 'title.with_text("Obi Akubue")'
|
|
49
46
|
```
|
50
47
|
When the title tag on the web page doesn't match the text "Obi Akubue", a failure notification will be sent out to the provided contact "admin@obiora.com".
|
51
48
|
|
52
|
-
###Using the plugin
|
49
|
+
### Using the plugin
|
53
50
|
To use the uptime monitor plugin add the key/value pair to the monitor
|
54
51
|
```ruby
|
55
52
|
plugin: "uptime_monitor"
|
56
53
|
```
|
57
54
|
|
58
|
-
###Browsers
|
55
|
+
### Browsers
|
59
56
|
A browser is specified, by adding a browser key/value pair to the monitor
|
60
57
|
```ruby
|
61
58
|
browser: "firefox"
|
@@ -66,27 +63,16 @@ browser: "chrome"
|
|
66
63
|
browser: "safari"
|
67
64
|
browser: "phantomjs"
|
68
65
|
```
|
69
|
-
uptime_monitor uses [Watir
|
66
|
+
uptime_monitor uses [Watir](http://watir.com), to easily access the different browsers see the development section, running uptime_monitor with Selenium Grid and Docker Compose.
|
70
67
|
|
71
|
-
|
72
|
-
```ruby
|
73
|
-
browser: "firefox headless"
|
74
|
-
```
|
75
|
-
This will run firefox as a headless browser. You should have [Xvfb](https://en.wikipedia.org/wiki/Xvfb) installed to run a non-headless browsers as headless. Headless browsers like Phantomjs don't require Xvfb.
|
76
|
-
|
77
|
-
To run Chrome browser as headless
|
78
|
-
```ruby
|
79
|
-
browser: "chrome headless"
|
80
|
-
```
|
81
|
-
|
82
|
-
###Validations
|
68
|
+
### Validations
|
83
69
|
To verify that a html element exists on the web page, a validation needs to be added to the monitor. Validations are specified with the exists? key/value pair which takes a string of html elements as it's value. It verifies that the html elements in the array exists on the current web page.
|
84
70
|
```ruby
|
85
71
|
exists?: "h1 div"
|
86
72
|
```
|
87
73
|
The above example will verify that a h1 and a div exists on the page.
|
88
74
|
|
89
|
-
####HTML Elements
|
75
|
+
#### HTML Elements
|
90
76
|
The simplest way to specify a html element is using the element name.
|
91
77
|
```ruby
|
92
78
|
exists?: "h1 div a img span"
|
@@ -109,7 +95,7 @@ div.where(id:"test", class: "test-section")
|
|
109
95
|
```
|
110
96
|
Specifes a div with id="test" and class="test-section".
|
111
97
|
|
112
|
-
####Multiple validations
|
98
|
+
#### Multiple validations
|
113
99
|
Multiple validations can be added to a monitor, see below:
|
114
100
|
```ruby
|
115
101
|
validations = <<-eos
|
@@ -123,7 +109,7 @@ monitor = {
|
|
123
109
|
url: "http://obi-akubue.org",
|
124
110
|
every: "5m",
|
125
111
|
contact: "admin@obiora.com",
|
126
|
-
via: "
|
112
|
+
via: "ses",
|
127
113
|
plugin: "uptime_monitor",
|
128
114
|
exists?: validations,
|
129
115
|
browser: "firefox"
|
@@ -134,7 +120,7 @@ ragios.create(monitor)
|
|
134
120
|
In the above example the string variable *validations* contains validations that need to be performed when the monitor runs. During execution, the monitor will visit the website and verify that all the html elements specified in the validations exists on the page, if any of them doesn't exist, a notification of the failure will be sent out.
|
135
121
|
|
136
122
|
|
137
|
-
####Standard attributes
|
123
|
+
#### Standard attributes
|
138
124
|
|
139
125
|
Only standard attributes for an element can be included in the above format *div.where(id: "test")*, for example a div has the following standard attributes id, class, lang, dir, title, align, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup. So *div.where(class: "anything")* will work.
|
140
126
|
|
@@ -149,7 +135,7 @@ div.where(data-brand: "toyota")
|
|
149
135
|
will give an error because "data-brand" is not a standard attibute for div, to specify elements by data or custom attributes use css selectors, see below.
|
150
136
|
|
151
137
|
|
152
|
-
####Using CSS Selectors
|
138
|
+
#### Using CSS Selectors
|
153
139
|
HTML elements can also be specified with css selectors.
|
154
140
|
```ruby
|
155
141
|
element.where(css: "#rss-link")
|
@@ -161,7 +147,7 @@ To specify an element by data attributes
|
|
161
147
|
element.where(css: "[data-brand='toyota']")
|
162
148
|
```
|
163
149
|
|
164
|
-
####Helpers for HTML elements
|
150
|
+
#### Helpers for HTML elements
|
165
151
|
Helpers are available to make some elements easier to reason about:
|
166
152
|
|
167
153
|
#####Links
|
@@ -181,7 +167,7 @@ link.where(text: "Click Here")
|
|
181
167
|
link.where(href: "https://www.southmunn.com/aboutus")
|
182
168
|
```
|
183
169
|
|
184
|
-
#####Buttons
|
170
|
+
##### Buttons
|
185
171
|
```ruby
|
186
172
|
button.where(id: "searchsubmit")
|
187
173
|
```
|
@@ -196,16 +182,16 @@ More readable than the input tag
|
|
196
182
|
input.where(id: "search")
|
197
183
|
```
|
198
184
|
|
199
|
-
#####Checkboxes
|
185
|
+
##### Checkboxes
|
200
186
|
```ruby
|
201
187
|
checkbox.where(value: "Butter")
|
202
188
|
```
|
203
|
-
#####Radio Buttons
|
189
|
+
##### Radio Buttons
|
204
190
|
```ruby
|
205
191
|
radio.where(name: "group1", value: "Milk")
|
206
192
|
```
|
207
193
|
|
208
|
-
#####Drop Down menus
|
194
|
+
##### Drop Down menus
|
209
195
|
```html
|
210
196
|
<select name="mydropdown">
|
211
197
|
<option value="Milk">Fresh Milk</option>
|
@@ -228,7 +214,7 @@ Options of the drop-down menu can be specified using option
|
|
228
214
|
option.where(value: "Milk")
|
229
215
|
```
|
230
216
|
|
231
|
-
####Text Validations
|
217
|
+
#### Text Validations
|
232
218
|
A text validation is used to verify that the text content of a html element hasn't changed. For example,
|
233
219
|
```ruby
|
234
220
|
exists?: 'title.with_text("Welcome to my site")'
|
@@ -245,14 +231,14 @@ exists?: 'div.where(class: "box_content").includes_text("SouthMunn is a Website"
|
|
245
231
|
```
|
246
232
|
Text validations can be used on html elements that can contain text like title, div, span, h1, h2 etc.
|
247
233
|
|
248
|
-
####Actions
|
234
|
+
#### Actions
|
249
235
|
Validations can also include actions. The actions are performed on the html element after it is verfied that the element exists. Example to set a text field's value
|
250
236
|
```ruby
|
251
237
|
exists?: 'text_field.where(id: "username").set("admin")'
|
252
238
|
```
|
253
239
|
The above example is an action that will set the text field's value to the string "admin".
|
254
240
|
|
255
|
-
#####Actions on html elements
|
241
|
+
##### Actions on html elements
|
256
242
|
Common actions performed on elements are set, select and click.
|
257
243
|
|
258
244
|
For example to set value for a textfield or textarea.
|
@@ -278,14 +264,14 @@ checkbox.where(name: "checkbox").click
|
|
278
264
|
link.where(text: "Click Here").click
|
279
265
|
button.where(id: "submit").click
|
280
266
|
```
|
281
|
-
####Waiting
|
267
|
+
#### Waiting
|
282
268
|
For webpages that use a lot of AJAX, it's possible to wait until an element exists, by using the wait_for keyword. This keyword takes an element as value. It is a special type of validation, it will wait for 30 seconds for the provided element to exist, if the element doesn't exist in 30 seconds the validation fails.
|
283
269
|
```ruby
|
284
270
|
wait_for div.where(id: "open-section")
|
285
271
|
```
|
286
272
|
The above example will wait 30 seconds until the div exists, if it doesn't exist after 30 seconds the validation will fail.
|
287
273
|
|
288
|
-
####Multiple validations and actions
|
274
|
+
#### Multiple validations and actions
|
289
275
|
```ruby
|
290
276
|
validations = <<-eos
|
291
277
|
text_field.where(id: "username").set("admin")
|
@@ -301,7 +287,7 @@ When actions like clicking a link, changes the current page, the following valid
|
|
301
287
|
A combination of multiple validations and actions form the basis for performing transactions.
|
302
288
|
|
303
289
|
|
304
|
-
####Performing Transactions
|
290
|
+
#### Performing Transactions
|
305
291
|
Transactions are achieved by a combination of multiple validations and actions.
|
306
292
|
|
307
293
|
Example, to monitor the keyword search feature on my blog, notice the validations in the exists? key's value:
|
@@ -319,7 +305,7 @@ monitor = {
|
|
319
305
|
url: "http://obi-akubue.org",
|
320
306
|
every: "1h",
|
321
307
|
contact: "admin@obiora.com",
|
322
|
-
via: "
|
308
|
+
via: "ses",
|
323
309
|
plugin: "uptime_monitor",
|
324
310
|
exists?: steps,
|
325
311
|
browser: "firefox"
|
@@ -387,27 +373,58 @@ monitor = {
|
|
387
373
|
via: "email_notifier",
|
388
374
|
plugin: "uptime_monitor",
|
389
375
|
exists?: login_process,
|
390
|
-
browser: "firefox
|
376
|
+
browser: "firefox"
|
391
377
|
}
|
392
378
|
|
393
379
|
ragios.create(monitor)
|
394
380
|
```
|
395
381
|
|
396
|
-
|
382
|
+
## Running Uptime Monitor outside Ragios with Docker Compose
|
383
|
+
|
384
|
+
First clone the uptime_monitor Repo on github.
|
385
|
+
|
386
|
+
```
|
387
|
+
git clone git@github.com:obi-a/uptime_monitor.git
|
388
|
+
```
|
389
|
+
|
390
|
+
Change to the uptime_monitor directory:
|
391
|
+
```
|
392
|
+
cd uptime_monitor
|
393
|
+
```
|
394
|
+
|
395
|
+
Build the docker containers:
|
396
|
+
```
|
397
|
+
docker-compose build
|
398
|
+
```
|
399
|
+
This builds the uptime_monitor container
|
400
|
+
|
401
|
+
Load the uptime_monitor into PRY console in a container:
|
402
|
+
```
|
403
|
+
docker-compose run --rm uptime_monitor
|
404
|
+
```
|
405
|
+
This will give you access to the entire uptime_monitor and all its objects loaded into PRY console. It will also run Selenium Grid and firefox in separate docker containers already connected to the uptime_monitor.
|
406
|
+
|
407
|
+
|
408
|
+
## Testing the validations outside Ragios
|
397
409
|
Sometimes it's useful to run validations outside Ragios to verify that the validations are syntactically correct and don't raise any exceptions. This is best done by running the uptime_monitor plugin as a Plain Old Ruby Object.
|
398
|
-
```ruby
|
399
|
-
require 'uptime_monitor'
|
400
410
|
|
411
|
+
First load uptime_monitor into PRY console:
|
412
|
+
```
|
413
|
+
docker-compose run uptime_monitor
|
414
|
+
```
|
415
|
+
From the console you can load the uptime_monitor directly:
|
416
|
+
|
417
|
+
```ruby
|
401
418
|
monitor = {
|
402
419
|
url: "http://obi-akubue.org",
|
403
|
-
browser: "firefox
|
420
|
+
browser: "firefox",
|
404
421
|
exists?: "title div"
|
405
422
|
}
|
406
423
|
|
407
|
-
u = Ragios::
|
424
|
+
u = Ragios::Plugins::UptimeMonitor.new
|
408
425
|
u.init(monitor)
|
409
426
|
u.test_command?
|
410
|
-
|
427
|
+
# => true
|
411
428
|
u.test_result
|
412
429
|
#=> {
|
413
430
|
# :results =>
|
@@ -417,18 +434,18 @@ u.test_result
|
|
417
434
|
# ]
|
418
435
|
# }
|
419
436
|
|
420
|
-
#test result for a failed test during downtime
|
437
|
+
# test result for a failed test during downtime
|
421
438
|
monitor = {
|
422
439
|
url: "http://obi-akubue.org",
|
423
|
-
browser: "firefox
|
440
|
+
browser: "firefox",
|
424
441
|
exists?: 'title.with_text("something")'
|
425
442
|
}
|
426
443
|
|
427
444
|
u.init(monitor)
|
428
445
|
u.test_command?
|
429
|
-
|
446
|
+
# => false
|
430
447
|
u.test_result
|
431
|
-
|
448
|
+
# => {
|
432
449
|
# :results =>
|
433
450
|
# [
|
434
451
|
# ["title, with text \"something\"", "does_not_exist_as_expected"]
|
@@ -438,15 +455,12 @@ u.test_result
|
|
438
455
|
In the above example the *test_command?* method runs the validations and returns true when all validations passes, returns false when any of the validation fails. *test_result* is a hash that contains the result of the tests ran by *test_command?*.
|
439
456
|
|
440
457
|
|
441
|
-
|
458
|
+
## Testing individual validations
|
442
459
|
It can be very useful to test validations/actions individually before adding them to Ragios. This can be done by running plugin's browser directly.
|
443
460
|
```ruby
|
444
|
-
require 'uptime_monitor'
|
445
|
-
|
446
461
|
url= "http://obi-akubue.org"
|
447
|
-
headless = false
|
448
462
|
browser_name = "firefox"
|
449
|
-
browser = Hercules::Maestro::Browser.new(url, browser_name
|
463
|
+
browser = Hercules::Maestro::Browser.new(url, browser_name)
|
450
464
|
|
451
465
|
browser.exists? 'title.includes_text("ruby")'
|
452
466
|
|
@@ -456,14 +470,14 @@ browser.exists? 'checkbox.where(name: "checkbox").click'
|
|
456
470
|
|
457
471
|
browser.close
|
458
472
|
```
|
459
|
-
The above example will launch firebox and open the provided url. The exists
|
473
|
+
The above example will launch firebox and open the provided url. The `exists?` method takes a single validation/action as parameter and performs the validation on the current page, it returns true if the validation passes and returns false if the validation fails. In the first validation
|
460
474
|
```
|
461
475
|
browser.exists? 'title.includes_text("ruby")'
|
462
476
|
```
|
463
477
|
it checks if the title tag on the current webpage includes the text 'ruby'.
|
464
478
|
|
465
479
|
|
466
|
-
##Screenshots
|
480
|
+
## Screenshots
|
467
481
|
The uptime_monitor can be configured to take a screenshot of the webpage when a test fails. This screenshot is uploaded to Amazon s3 and its url is included in the test_result. So the website admin can see what the site looks like when transaction failed.
|
468
482
|
|
469
483
|
This feature is disable by default, to enable it set following environment variable.
|
@@ -481,15 +495,13 @@ The above env vars are for the Amazon AWS access key, AWS secret key and s3 dire
|
|
481
495
|
With the screenshots feature enabled, the results of a failed test will include a screenshot of the webpage when the test failed.
|
482
496
|
See an example below:
|
483
497
|
```ruby
|
484
|
-
require 'uptime_monitor'
|
485
|
-
|
486
498
|
monitor = {
|
487
499
|
url: "http://obi-akubue.org",
|
488
|
-
browser: "firefox
|
500
|
+
browser: "firefox",
|
489
501
|
exists?: 'title.with_text("dont_exist")'
|
490
502
|
}
|
491
503
|
|
492
|
-
u = Ragios::
|
504
|
+
u = Ragios::Plugins::UptimeMonitor.new
|
493
505
|
u.init(monitor)
|
494
506
|
u.test_command?
|
495
507
|
#=>false
|
@@ -500,18 +512,18 @@ u.test_result
|
|
500
512
|
# ["title, with text \"dont_exist\"", "does_not_exist_as_expected"]
|
501
513
|
# ],
|
502
514
|
# :screenshot=>
|
503
|
-
# "
|
515
|
+
# "https://screenshot-ragios.s3.amazonaws.com/uploads/screenshot1428783237.png"
|
504
516
|
# }
|
505
517
|
```
|
506
518
|
Notice that *test_result* includes a url to the screenshot of the webpage when the test failed. This test result is also included in the notifications sent to site admin by Ragios when a test fails. So this way the admin can see exactly what webpage looked like when the transaction failed.
|
507
519
|
|
508
|
-
##Disable screenshots on individual monitors
|
509
|
-
|
520
|
+
## Disable screenshots on individual monitors
|
521
|
+
While using Ragios, to disable screenshots on a particular monitor add the key/value pair ```disable_screenshots: true```
|
510
522
|
example:
|
511
523
|
```ruby
|
512
524
|
monitor = {
|
513
525
|
url: "http://obi-akubue.org",
|
514
|
-
browser: "firefox
|
526
|
+
browser: "firefox",
|
515
527
|
exists?: "title",
|
516
528
|
disable_screenshots: true
|
517
529
|
}
|
@@ -520,7 +532,12 @@ ragios.create(monitor)
|
|
520
532
|
```
|
521
533
|
This will diable screenshots only for this monitor, no screenshots will be taken when its test fails.
|
522
534
|
|
523
|
-
|
535
|
+
### To run all the unit tests
|
536
|
+
```
|
537
|
+
docker-compose run --rm unit_tests
|
538
|
+
```
|
539
|
+
|
540
|
+
## License:
|
524
541
|
MIT License.
|
525
542
|
|
526
|
-
Copyright (c)
|
543
|
+
Copyright (c) 2017 Obi Akubue, obi-akubue.org
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.7.0
|
data/docker-compose.yml
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
version: '3'
|
2
|
+
services:
|
3
|
+
firefox:
|
4
|
+
image: selenium/node-firefox:3.8.1-erbium
|
5
|
+
volumes:
|
6
|
+
- /dev/shm:/dev/shm
|
7
|
+
depends_on:
|
8
|
+
- hub
|
9
|
+
environment:
|
10
|
+
HUB_HOST: hub
|
11
|
+
|
12
|
+
chrome:
|
13
|
+
image: selenium/node-chrome:3.8.1-erbium
|
14
|
+
volumes:
|
15
|
+
- /dev/shm:/dev/shm
|
16
|
+
depends_on:
|
17
|
+
- hub
|
18
|
+
environment:
|
19
|
+
HUB_HOST: hub
|
20
|
+
|
21
|
+
hub:
|
22
|
+
image: selenium/hub:3.8.1-erbium
|
23
|
+
ports:
|
24
|
+
- "4444:4444"
|
25
|
+
|
26
|
+
uptime_monitor:
|
27
|
+
build: .
|
28
|
+
volumes:
|
29
|
+
- .:/usr/src/uptime_monitor
|
30
|
+
links:
|
31
|
+
- firefox:firefox
|
32
|
+
environment:
|
33
|
+
AWS_ACCESS_KEY_ID:
|
34
|
+
AWS_SECRET_ACCESS_KEY:
|
35
|
+
RAGIOS_HERCULES_S3_DIR:
|
36
|
+
RAGIOS_HERCULES_ENABLE_SCREENSHOTS:
|
37
|
+
BROWSER: firefox
|
38
|
+
entrypoint: bundle exec rake repl
|
39
|
+
|
40
|
+
unit_tests:
|
41
|
+
build: .
|
42
|
+
volumes:
|
43
|
+
- .:/usr/src/uptime_monitor
|
44
|
+
links:
|
45
|
+
- firefox:firefox
|
46
|
+
environment:
|
47
|
+
AWS_ACCESS_KEY_ID:
|
48
|
+
AWS_SECRET_ACCESS_KEY:
|
49
|
+
RAGIOS_HERCULES_S3_DIR:
|
50
|
+
RAGIOS_HERCULES_ENABLE_SCREENSHOTS:
|
51
|
+
BROWSER: firefox
|
52
|
+
entrypoint: bundle exec rspec -fd spec
|
data/lib/uptime_monitor.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
|
2
|
-
require '
|
1
|
+
# Headless is no longer needed will be removed later
|
2
|
+
# require 'headless'
|
3
|
+
require 'watir'
|
3
4
|
require 'watir-webdriver-performance'
|
4
5
|
require 'ostruct'
|
5
6
|
require 'aws/s3'
|
@@ -32,8 +33,8 @@ end
|
|
32
33
|
if RAGIOS_HERCULES_ENABLE_SCREENSHOTS
|
33
34
|
setup_screenshot_dir
|
34
35
|
AWS::S3::Base.establish_connection!(
|
35
|
-
:access_key_id => ENV['
|
36
|
-
:secret_access_key => ENV['
|
36
|
+
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
|
37
|
+
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
|
37
38
|
)
|
38
39
|
clear_screenshots_cache!
|
39
40
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Hercules
|
2
2
|
module UptimeMonitor
|
3
3
|
class Browser
|
4
|
-
def initialize(url, browser_name =
|
4
|
+
def initialize(url, browser_name = :firefox, is_headless = false)
|
5
5
|
start_headless if is_headless
|
6
6
|
goto(url,browser_name)
|
7
7
|
end
|
@@ -119,8 +119,12 @@ module Hercules
|
|
119
119
|
private
|
120
120
|
def goto(url, browser_name)
|
121
121
|
client = Selenium::WebDriver::Remote::Http::Default.new
|
122
|
-
client.
|
123
|
-
|
122
|
+
client.read_timeout = 180 # seconds – default is 60
|
123
|
+
|
124
|
+
options = {http_client: client}
|
125
|
+
options[:url] = "http://#{ENV['BROWSER']}:5555/wd/hub" if ENV['BROWSER']
|
126
|
+
|
127
|
+
@browser = Watir::Browser.new browser_name, options
|
124
128
|
@browser.goto url
|
125
129
|
end
|
126
130
|
def start_headless
|
data/spec/browser_spec.rb
CHANGED
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Hercules::UptimeMonitor::Browser do
|
4
4
|
before(:all) do
|
5
5
|
url= "http://obi-akubue.org"
|
6
|
-
headless =
|
6
|
+
headless = false
|
7
7
|
browser_name = "firefox"
|
8
8
|
@browser = Hercules::UptimeMonitor::Browser.new(url, browser_name, headless)
|
9
9
|
end
|
@@ -32,7 +32,7 @@ describe Hercules::UptimeMonitor::Browser do
|
|
32
32
|
it "cannot apply an action on element that can't respond to it " do
|
33
33
|
element = @browser.get_element({button: {id: "searchsubmit"}})
|
34
34
|
element.exists?.should == true
|
35
|
-
expect{@browser.apply_action?(element, {set: "github"})}.to raise_error
|
35
|
+
expect{@browser.apply_action?(element, {set: "github"})}.to raise_error(/undefined method `set'/)
|
36
36
|
end
|
37
37
|
it "cannot apply action in wrong form" do
|
38
38
|
element = @browser.get_element({text_field: {id: "s"}})
|
@@ -119,7 +119,7 @@ describe Hercules::UptimeMonitor::Browser do
|
|
119
119
|
end
|
120
120
|
it "cannot check an element exists using unusual attributes unless its a css query" do
|
121
121
|
element = @browser.get_element({div: {unusual_attribute: "something_else", id: "something_else"}})
|
122
|
-
|
122
|
+
element.exists?.should == false
|
123
123
|
end
|
124
124
|
it "can check an element exists using unusual attributes with css query" do
|
125
125
|
element = @browser.get_element({element: {css: '[data-name="message"]'}})
|
@@ -156,7 +156,7 @@ describe Hercules::UptimeMonitor::Browser do
|
|
156
156
|
end
|
157
157
|
it "cannot check if page_element_exists if first is in wrong form" do
|
158
158
|
element = [{div: {unusual_attribute: "something_else", id: "something_else"}}]
|
159
|
-
|
159
|
+
@browser.page_element_exists?(element).should == false
|
160
160
|
end
|
161
161
|
it "can check if page_element_exists" do
|
162
162
|
@browser.exists?([{text_field: {id: "s"}}]).should == true
|
@@ -10,7 +10,7 @@ describe Hercules::UptimeMonitor::BrowsersLangParser do
|
|
10
10
|
@parser.parse("_,0any_non_whitespace").should == {browser: "_,0any_non_whitespace", headless: false}
|
11
11
|
end
|
12
12
|
it "raises an exception for invalid browser name" do
|
13
|
-
expect { @parser.parse("\n") }.to raise_error
|
13
|
+
expect { @parser.parse("\n") }.to raise_error(/no implicit conversion of nil into String/)
|
14
14
|
expect { @parser.parse(" ") }.to raise_error(Hercules::UptimeMonitor::ParserSyntaxError)
|
15
15
|
end
|
16
16
|
it "parses valid specification for headless browser operation" do
|
data/spec/uptime_monitor_spec.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Ragios::
|
3
|
+
describe Ragios::Plugins::UptimeMonitor do
|
4
4
|
before(:each) do
|
5
|
-
@uptime_monitor = Ragios::
|
5
|
+
@uptime_monitor = Ragios::Plugins::UptimeMonitor.new
|
6
6
|
end
|
7
7
|
it "sets the correct test result for success" do
|
8
8
|
@uptime_monitor.result!("page_element", state = true)
|
@@ -36,7 +36,7 @@ describe Ragios::Plugin::UptimeMonitor do
|
|
36
36
|
it "runs a test that passes" do
|
37
37
|
monitor = {
|
38
38
|
url: "http://obi-akubue.org",
|
39
|
-
browser: "firefox
|
39
|
+
browser: "firefox",
|
40
40
|
exists?: "title"
|
41
41
|
}
|
42
42
|
@uptime_monitor.init(monitor)
|
@@ -50,7 +50,7 @@ describe Ragios::Plugin::UptimeMonitor do
|
|
50
50
|
it "runs a test that fails" do
|
51
51
|
monitor = {
|
52
52
|
url: "http://obi-akubue.org",
|
53
|
-
browser: "firefox
|
53
|
+
browser: "firefox",
|
54
54
|
exists?: 'title.with_text("dont_exist")'
|
55
55
|
}
|
56
56
|
@uptime_monitor.init(monitor)
|
@@ -65,7 +65,7 @@ describe Ragios::Plugin::UptimeMonitor do
|
|
65
65
|
it "can disable screenshot capture when a test fails for individual monitors" do
|
66
66
|
monitor = {
|
67
67
|
url: "http://obi-akubue.org",
|
68
|
-
browser: "firefox
|
68
|
+
browser: "firefox",
|
69
69
|
exists?: 'title.with_text("dont_exist")',
|
70
70
|
disable_screenshots: true
|
71
71
|
}
|
data/uptime_monitor.gemspec
CHANGED
@@ -2,31 +2,34 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: uptime_monitor 0.
|
5
|
+
# stub: uptime_monitor 0.7.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
|
-
s.name = "uptime_monitor"
|
9
|
-
s.version = "0.
|
8
|
+
s.name = "uptime_monitor".freeze
|
9
|
+
s.version = "0.7.0"
|
10
10
|
|
11
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
-
s.require_paths = ["lib"]
|
13
|
-
s.authors = ["obi-a"]
|
14
|
-
s.date = "
|
15
|
-
s.description = "A Ragios plugin that uses a real web browser to monitor transactions on a website for availability"
|
16
|
-
s.email = "obioraakubue@yahoo.com"
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib".freeze]
|
13
|
+
s.authors = ["obi-a".freeze]
|
14
|
+
s.date = "2018-01-27"
|
15
|
+
s.description = "A Ragios plugin that uses a real web browser to monitor transactions on a website for availability".freeze
|
16
|
+
s.email = "obioraakubue@yahoo.com".freeze
|
17
17
|
s.extra_rdoc_files = [
|
18
18
|
"LICENSE",
|
19
19
|
"README.md"
|
20
20
|
]
|
21
21
|
s.files = [
|
22
22
|
".document",
|
23
|
+
".env.examples",
|
23
24
|
".travis.yml",
|
25
|
+
"Dockerfile",
|
24
26
|
"Gemfile",
|
25
27
|
"Gemfile.lock",
|
26
28
|
"LICENSE",
|
27
29
|
"README.md",
|
28
30
|
"Rakefile",
|
29
31
|
"VERSION",
|
32
|
+
"docker-compose.yml",
|
30
33
|
"lib/uptime_monitor.rb",
|
31
34
|
"lib/uptime_monitor/browser.rb",
|
32
35
|
"lib/uptime_monitor/browsers.treetop",
|
@@ -42,51 +45,45 @@ Gem::Specification.new do |s|
|
|
42
45
|
"spec/uptime_monitor_spec.rb",
|
43
46
|
"uptime_monitor.gemspec"
|
44
47
|
]
|
45
|
-
s.homepage = "http://github.com/obi-a/uptime_monitor"
|
46
|
-
s.licenses = ["MIT"]
|
47
|
-
s.rubygems_version = "2.
|
48
|
-
s.summary = "Real browser website uptime monitoring plugin for Ragios"
|
48
|
+
s.homepage = "http://github.com/obi-a/uptime_monitor".freeze
|
49
|
+
s.licenses = ["MIT".freeze]
|
50
|
+
s.rubygems_version = "2.6.11".freeze
|
51
|
+
s.summary = "Real browser website uptime monitoring plugin for Ragios".freeze
|
49
52
|
|
50
53
|
if s.respond_to? :specification_version then
|
51
54
|
s.specification_version = 4
|
52
55
|
|
53
56
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
54
|
-
s.add_runtime_dependency(%q<
|
55
|
-
s.add_runtime_dependency(%q<watir-webdriver
|
56
|
-
s.add_runtime_dependency(%q<
|
57
|
-
s.add_runtime_dependency(%q<
|
58
|
-
s.
|
59
|
-
s.
|
60
|
-
s.add_development_dependency(%q<
|
61
|
-
s.add_development_dependency(%q<
|
62
|
-
s.add_development_dependency(%q<
|
63
|
-
s.add_development_dependency(%q<jeweler>, ["~> 2.0.1"])
|
64
|
-
s.add_development_dependency(%q<pry>, [">= 0"])
|
57
|
+
s.add_runtime_dependency(%q<watir>.freeze, [">= 0"])
|
58
|
+
s.add_runtime_dependency(%q<watir-webdriver-performance>.freeze, ["~> 0.2.4"])
|
59
|
+
s.add_runtime_dependency(%q<aws-s3>.freeze, [">= 0"])
|
60
|
+
s.add_runtime_dependency(%q<treetop>.freeze, [">= 0"])
|
61
|
+
s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
|
62
|
+
s.add_development_dependency(%q<rdoc>.freeze, ["~> 3.12"])
|
63
|
+
s.add_development_dependency(%q<bundler>.freeze, ["~> 1.0"])
|
64
|
+
s.add_development_dependency(%q<jeweler>.freeze, ["~> 2.3.7"])
|
65
|
+
s.add_development_dependency(%q<pry>.freeze, [">= 0"])
|
65
66
|
else
|
66
|
-
s.add_dependency(%q<
|
67
|
-
s.add_dependency(%q<watir-webdriver
|
68
|
-
s.add_dependency(%q<
|
69
|
-
s.add_dependency(%q<
|
70
|
-
s.add_dependency(%q<
|
71
|
-
s.add_dependency(%q<
|
72
|
-
s.add_dependency(%q<
|
73
|
-
s.add_dependency(%q<
|
74
|
-
s.add_dependency(%q<
|
75
|
-
s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
|
76
|
-
s.add_dependency(%q<pry>, [">= 0"])
|
67
|
+
s.add_dependency(%q<watir>.freeze, [">= 0"])
|
68
|
+
s.add_dependency(%q<watir-webdriver-performance>.freeze, ["~> 0.2.4"])
|
69
|
+
s.add_dependency(%q<aws-s3>.freeze, [">= 0"])
|
70
|
+
s.add_dependency(%q<treetop>.freeze, [">= 0"])
|
71
|
+
s.add_dependency(%q<rspec>.freeze, [">= 0"])
|
72
|
+
s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
|
73
|
+
s.add_dependency(%q<bundler>.freeze, ["~> 1.0"])
|
74
|
+
s.add_dependency(%q<jeweler>.freeze, ["~> 2.3.7"])
|
75
|
+
s.add_dependency(%q<pry>.freeze, [">= 0"])
|
77
76
|
end
|
78
77
|
else
|
79
|
-
s.add_dependency(%q<
|
80
|
-
s.add_dependency(%q<watir-webdriver
|
81
|
-
s.add_dependency(%q<
|
82
|
-
s.add_dependency(%q<
|
83
|
-
s.add_dependency(%q<
|
84
|
-
s.add_dependency(%q<
|
85
|
-
s.add_dependency(%q<
|
86
|
-
s.add_dependency(%q<
|
87
|
-
s.add_dependency(%q<
|
88
|
-
s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
|
89
|
-
s.add_dependency(%q<pry>, [">= 0"])
|
78
|
+
s.add_dependency(%q<watir>.freeze, [">= 0"])
|
79
|
+
s.add_dependency(%q<watir-webdriver-performance>.freeze, ["~> 0.2.4"])
|
80
|
+
s.add_dependency(%q<aws-s3>.freeze, [">= 0"])
|
81
|
+
s.add_dependency(%q<treetop>.freeze, [">= 0"])
|
82
|
+
s.add_dependency(%q<rspec>.freeze, [">= 0"])
|
83
|
+
s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
|
84
|
+
s.add_dependency(%q<bundler>.freeze, ["~> 1.0"])
|
85
|
+
s.add_dependency(%q<jeweler>.freeze, ["~> 2.3.7"])
|
86
|
+
s.add_dependency(%q<pry>.freeze, [">= 0"])
|
90
87
|
end
|
91
88
|
end
|
92
89
|
|
metadata
CHANGED
@@ -1,43 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uptime_monitor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- obi-a
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: watir
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 1.0.2
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 1.0.2
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: watir-webdriver
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
17
|
+
- - ">="
|
32
18
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0
|
19
|
+
version: '0'
|
34
20
|
type: :runtime
|
35
21
|
prerelease: false
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
|
-
- - "
|
24
|
+
- - ">="
|
39
25
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0
|
26
|
+
version: '0'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: watir-webdriver-performance
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,20 +66,6 @@ dependencies:
|
|
80
66
|
- - ">="
|
81
67
|
- !ruby/object:Gem::Version
|
82
68
|
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: selenium-webdriver
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 2.53.4
|
90
|
-
type: :runtime
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 2.53.4
|
97
69
|
- !ruby/object:Gem::Dependency
|
98
70
|
name: rspec
|
99
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,14 +114,14 @@ dependencies:
|
|
142
114
|
requirements:
|
143
115
|
- - "~>"
|
144
116
|
- !ruby/object:Gem::Version
|
145
|
-
version: 2.
|
117
|
+
version: 2.3.7
|
146
118
|
type: :development
|
147
119
|
prerelease: false
|
148
120
|
version_requirements: !ruby/object:Gem::Requirement
|
149
121
|
requirements:
|
150
122
|
- - "~>"
|
151
123
|
- !ruby/object:Gem::Version
|
152
|
-
version: 2.
|
124
|
+
version: 2.3.7
|
153
125
|
- !ruby/object:Gem::Dependency
|
154
126
|
name: pry
|
155
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -174,13 +146,16 @@ extra_rdoc_files:
|
|
174
146
|
- README.md
|
175
147
|
files:
|
176
148
|
- ".document"
|
149
|
+
- ".env.examples"
|
177
150
|
- ".travis.yml"
|
151
|
+
- Dockerfile
|
178
152
|
- Gemfile
|
179
153
|
- Gemfile.lock
|
180
154
|
- LICENSE
|
181
155
|
- README.md
|
182
156
|
- Rakefile
|
183
157
|
- VERSION
|
158
|
+
- docker-compose.yml
|
184
159
|
- lib/uptime_monitor.rb
|
185
160
|
- lib/uptime_monitor/browser.rb
|
186
161
|
- lib/uptime_monitor/browsers.treetop
|
@@ -215,7 +190,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
215
190
|
version: '0'
|
216
191
|
requirements: []
|
217
192
|
rubyforge_project:
|
218
|
-
rubygems_version: 2.
|
193
|
+
rubygems_version: 2.6.11
|
219
194
|
signing_key:
|
220
195
|
specification_version: 4
|
221
196
|
summary: Real browser website uptime monitoring plugin for Ragios
|