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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 55829816e114b87b0d4f9e584256c9f9f1ae1c8d
4
- data.tar.gz: 71a7f7f48ca8267e05fd2e975342c09b6723cffb
3
+ metadata.gz: c3f61d132de121f2a13283ec56d030eef62f4d40
4
+ data.tar.gz: 147e6f471ea6a98b88564e5d27146fed984dc942
5
5
  SHA512:
6
- metadata.gz: c2f0b6bb1bb0574f5d3c0092422565e02d10c183642a456fb85b7510f96d7fb44fe97ae7fbc7f44b95c44858a9405534ec4104371d8f1416239843281f409757
7
- data.tar.gz: e79436645ed829c2b7705e05963f6d3e6f6613e6c012abef848c90867d90231ac24b7b30698edf10ba21fe63c34cfe61b4a35a8375922a602520024f127b2e51
6
+ metadata.gz: b9ad8a58fb8de43e2b7e0e74f4d4b55822c8cee4357950f29ea23aedf596816d3b204a06025e9232a3d799527a77b10f5f75e729d11f0df4ddb863f7a4670574
7
+ data.tar.gz: bfc374f0434af353033d49fd18bafe6317a4ce9a27d219f1137cd5ee7a4afc833cfac6a80590166d88df51269b3345f6b584232c019c867dff773a2ad586417f
@@ -0,0 +1,4 @@
1
+ AWS_ACCESS_KEY_ID=
2
+ AWS_SECRET_ACCESS_KEY=
3
+ RAGIOS_HERCULES_S3_DIR=
4
+ RAGIOS_HERCULES_ENABLE_SCREENSHOTS=
@@ -1,6 +1,23 @@
1
- language: ruby
2
- rvm:
3
- - 2.3.0
4
- - 2.2.3
1
+ env:
2
+ - DOCKER_COMPOSE_VERSION=1.16.1
5
3
 
6
- script: bundle exec rspec -fd spec
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
@@ -0,0 +1,5 @@
1
+ FROM ruby:2.4.1-stretch
2
+
3
+ COPY . /usr/src/uptime_monitor
4
+ WORKDIR /usr/src/uptime_monitor
5
+ RUN bundle install
data/Gemfile CHANGED
@@ -1,16 +1,15 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem 'headless', "~> 1.0.2"
4
- gem 'watir-webdriver', "~> 0.9.1"
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.0.1"
13
+ gem "jeweler", "~> 2.3.7"
15
14
  gem "pry"
16
15
  end
@@ -6,90 +6,89 @@ GEM
6
6
  builder
7
7
  mime-types
8
8
  xml-simple
9
- builder (3.2.2)
10
- childprocess (0.5.9)
9
+ builder (3.2.3)
10
+ childprocess (0.8.0)
11
11
  ffi (~> 1.0, >= 1.0.11)
12
- coderay (1.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.2.5)
15
+ diff-lcs (1.3)
16
16
  faraday (0.9.2)
17
17
  multipart-post (>= 1.2, < 3)
18
- ffi (1.9.13)
19
- git (1.2.9.1)
20
- github_api (0.13.1)
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
- multi_json (>= 1.7.5, < 2.0)
26
- oauth2
27
- hashie (3.4.3)
28
- headless (1.0.2)
29
- highline (1.7.8)
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.0)
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
- json (1.8.3)
40
- jwt (1.5.1)
41
- method_source (0.8.2)
42
- mime-types (3.0)
43
- mime-types-data (~> 3.2015)
44
- mime-types-data (3.2015.1120)
45
- mini_portile2 (2.0.0)
46
- multi_json (1.12.1)
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.6.7.2)
50
- mini_portile2 (~> 2.0.0.rc2)
51
- oauth2 (1.1.0)
52
- faraday (>= 0.8, < 0.10)
53
- jwt (~> 1.0, < 1.5.2)
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.10.3)
57
+ pry (0.11.3)
59
58
  coderay (~> 1.1.0)
60
- method_source (~> 0.8.1)
61
- slop (~> 3.4)
62
- rack (1.6.4)
63
- rake (10.5.0)
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.4.0)
67
- rspec-core (~> 3.4.0)
68
- rspec-expectations (~> 3.4.0)
69
- rspec-mocks (~> 3.4.0)
70
- rspec-core (3.4.3)
71
- rspec-support (~> 3.4.0)
72
- rspec-expectations (3.4.0)
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.4.0)
75
- rspec-mocks (3.4.1)
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.4.0)
78
- rspec-support (3.4.1)
79
- rubyzip (1.2.0)
80
- selenium-webdriver (2.53.4)
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
- websocket (~> 1.0)
84
- slop (3.6.0)
85
- thread_safe (0.3.5)
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-webdriver (0.9.1)
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
- headless (~> 1.0.2)
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-webdriver (~> 0.9.1)
105
+ watir
109
106
  watir-webdriver-performance (~> 0.2.4)
110
107
 
111
108
  BUNDLED WITH
112
- 1.11.2
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
- ##Requirements
9
- Ruby: At least Ruby 2.3.0 or higher is recommended
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
- ##Installation:
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
- ##Run in a Docker Container
29
- (Optional) A docker container is available with the uptime_monitor plugin and all its dependencies already setup and configured. You can run it out of the box with minimal effort in this docker container. See details here: [Using Maestro](https://github.com/obi-a/maestro).
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
- ````ruby
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: "gmail_notifier",
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 Webdriver](http://watirwebdriver.com), firefox runs out of the box with no configuration required. To use Chrome or Safari see the Watir Webdriver documentation on downloading the appropriate driver binary and configuration.
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
- By default, the browsers don't run headless, to run the browser headless, you can specify it in the format below:
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: "gmail_notifier",
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: "gmail_notifier",
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 headless"
376
+ browser: "firefox"
391
377
  }
392
378
 
393
379
  ragios.create(monitor)
394
380
  ```
395
381
 
396
- ####Testing the validations outside Ragios
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 headless",
420
+ browser: "firefox",
404
421
  exists?: "title div"
405
422
  }
406
423
 
407
- u = Ragios::Plugin::UptimeMonitor.new
424
+ u = Ragios::Plugins::UptimeMonitor.new
408
425
  u.init(monitor)
409
426
  u.test_command?
410
- #=> true
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 headless",
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
- #=> false
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
- ####Testing individual validations
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, headless)
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?() 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
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 headless",
500
+ browser: "firefox",
489
501
  exists?: 'title.with_text("dont_exist")'
490
502
  }
491
503
 
492
- u = Ragios::Plugin::UptimeMonitor.new
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
- # "http://screenshot-ragios.s3.amazonaws.com/uploads/screenshot1428783237.png"
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
- To disable screenshots on a particular monitor add the key/value pair ```disable_screenshots: true```
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 headless",
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
- ##License:
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) 2014 Obi Akubue, obi-akubue.org
543
+ Copyright (c) 2017 Obi Akubue, obi-akubue.org
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.3
1
+ 0.7.0
@@ -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
@@ -1,5 +1,6 @@
1
- require 'headless'
2
- require 'watir-webdriver'
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['AMAZON_ACCESS_KEY_ID'],
36
- :secret_access_key => ENV['AMAZON_SECRET_ACCESS_KEY']
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 = "firefox", is_headless = false)
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.timeout = 180 # seconds – default is 60
123
- @browser = Watir::Browser.new browser_name, http_client: client
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
@@ -1,5 +1,5 @@
1
1
  module Ragios
2
- module Plugin
2
+ module Plugins
3
3
  class UptimeMonitor
4
4
  attr_reader :monitor
5
5
  attr_reader :test_result
@@ -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 = true
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
- expect{element.exists?}.to raise_error(Watir::Exception::MissingWayOfFindingObjectException)
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
- expect{@browser.page_element_exists?(element)}.to raise_error(Hercules::UptimeMonitor::UnknownPageElement)
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
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Ragios::Plugin::UptimeMonitor do
3
+ describe Ragios::Plugins::UptimeMonitor do
4
4
  before(:each) do
5
- @uptime_monitor = Ragios::Plugin::UptimeMonitor.new
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 headless",
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 headless",
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 headless",
68
+ browser: "firefox",
69
69
  exists?: 'title.with_text("dont_exist")',
70
70
  disable_screenshots: true
71
71
  }
@@ -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.6.3 ruby lib
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.6.3"
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 = "2016-07-10"
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.4.8"
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<headless>, ["~> 1.0.2"])
55
- s.add_runtime_dependency(%q<watir-webdriver>, ["~> 0.9.1"])
56
- s.add_runtime_dependency(%q<watir-webdriver-performance>, ["~> 0.2.4"])
57
- s.add_runtime_dependency(%q<aws-s3>, [">= 0"])
58
- s.add_runtime_dependency(%q<treetop>, [">= 0"])
59
- s.add_runtime_dependency(%q<selenium-webdriver>, ["~> 2.53.4"])
60
- s.add_development_dependency(%q<rspec>, [">= 0"])
61
- s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
62
- s.add_development_dependency(%q<bundler>, ["~> 1.0"])
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<headless>, ["~> 1.0.2"])
67
- s.add_dependency(%q<watir-webdriver>, ["~> 0.9.1"])
68
- s.add_dependency(%q<watir-webdriver-performance>, ["~> 0.2.4"])
69
- s.add_dependency(%q<aws-s3>, [">= 0"])
70
- s.add_dependency(%q<treetop>, [">= 0"])
71
- s.add_dependency(%q<selenium-webdriver>, ["~> 2.53.4"])
72
- s.add_dependency(%q<rspec>, [">= 0"])
73
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
74
- s.add_dependency(%q<bundler>, ["~> 1.0"])
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<headless>, ["~> 1.0.2"])
80
- s.add_dependency(%q<watir-webdriver>, ["~> 0.9.1"])
81
- s.add_dependency(%q<watir-webdriver-performance>, ["~> 0.2.4"])
82
- s.add_dependency(%q<aws-s3>, [">= 0"])
83
- s.add_dependency(%q<treetop>, [">= 0"])
84
- s.add_dependency(%q<selenium-webdriver>, ["~> 2.53.4"])
85
- s.add_dependency(%q<rspec>, [">= 0"])
86
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
87
- s.add_dependency(%q<bundler>, ["~> 1.0"])
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.6.3
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: 2016-07-10 00:00:00.000000000 Z
11
+ date: 2018-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: headless
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.9.1
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.9.1
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.0.1
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.0.1
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.4.8
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