Ifd_Automation 1.9.2 → 2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/bin/documentation_generator.rb +1 -1
  3. data/lib/Ifd_Automation/REST_steps.rb +105 -0
  4. data/lib/Ifd_Automation/SOAP_steps.rb +54 -0
  5. data/lib/Ifd_Automation/database_steps.rb +17 -47
  6. data/lib/Ifd_Automation/dynamic_store_vavue_steps.rb +25 -0
  7. data/lib/Ifd_Automation/email_steps.rb +32 -36
  8. data/lib/Ifd_Automation/file_steps.rb +7 -58
  9. data/lib/Ifd_Automation/require_libs.rb +6 -0
  10. data/lib/Ifd_Automation/ssh_steps.rb +14 -23
  11. data/lib/Ifd_Automation/version.rb +1 -1
  12. data/lib/Ifd_Automation/web_steps.rb +58 -293
  13. data/lib/helper/assertion_helpers.rb +100 -0
  14. data/lib/helper/auto_utils.rb +67 -0
  15. data/lib/{Ifd_Automation_support → helper}/connection_helpers.rb +2 -2
  16. data/lib/{Ifd_Automation_support → helper}/core.rb +154 -60
  17. data/lib/{Ifd_Automation_support → helper}/mail_helpers.rb +2 -2
  18. data/lib/helper/web_steps_helpers.rb +123 -0
  19. data/project/Gemfile +1 -2
  20. data/project/features/Screenshot/failed_sample.png +0 -0
  21. data/project/features/TestData/globalData.yml +4 -1
  22. data/project/features/TestSuite/test.feature +1 -4
  23. data/project/features/step_definitions/lib_steps/test.rb +5 -3
  24. data/project/features/step_definitions/repositories/project_object.yml +2 -2
  25. data/project/features/support/env.rb +53 -52
  26. data/project/features/support/hooks.rb +2 -0
  27. data/project/features/support/project_config.yml +6 -6
  28. metadata +36 -148
  29. data/lib/Ifd_Automation/javascript_steps.rb +0 -33
  30. data/lib/Ifd_Automation/required_libs.rb +0 -7
  31. data/lib/Ifd_Automation/response.rb +0 -105
  32. data/lib/Ifd_Automation/webservice_steps.rb +0 -281
  33. data/lib/Ifd_Automation_support/assertion_helpers.rb +0 -205
  34. data/lib/Ifd_Automation_support/javascript_helpers.rb +0 -45
  35. data/lib/Ifd_Automation_support/selenium_sync_issues.rb +0 -62
  36. data/lib/Ifd_Automation_support/web_steps_helpers.rb +0 -296
  37. data/project/Gemfile.lock +0 -203
  38. data/project/Rakefile +0 -46
data/project/Gemfile CHANGED
@@ -1,3 +1,2 @@
1
1
  source 'http://rubygems.org'
2
-
3
- #gem 'Ifd_Automation'
2
+ gem 'Ifd_Automation'
@@ -1 +1,4 @@
1
- testpage: http://google.com
1
+ testpage: https://mymupgrade.infodation.com/?lang=en
2
+ host: 10.5.1.239
3
+ db_username: root
4
+ db_password:
@@ -1,4 +1 @@
1
- Feature: Example feature for GUI testing
2
-
3
- Scenario: testing case for web interaction
4
- Given I am on Login Page
1
+ Feature: Test
@@ -1,3 +1,5 @@
1
- # When /^I login into system with username "(.*)" and password "(.*)"$/ do |username, password|
2
- # step %{I click on "mym_header.button"}
3
- # end
1
+ Given "I have $n cucumbers in my belly" do |url|
2
+ steps %Q{
3
+ I am on the #{url} page
4
+ }
5
+ end
@@ -1,2 +1,2 @@
1
- # Example
2
- #button_login: {xpath_selector: '//*[@class="btn ifd-btn-black"]'}
1
+ button: {xpath_selector: './/*[@id="search-form-property"]/div[3]/div[2]/div/button'}
2
+ test: {ph_xpath_selector: './/*[@id="search-form-property"]/div[3]/div[2]/div/div/ul/li[.="<ph_value>"]'}
@@ -2,6 +2,7 @@ $_CFWEB = Hash.new
2
2
  $current_dir = File.expand_path(File.dirname(__FILE__))
3
3
  $base_dir = File.expand_path(File.dirname(__FILE__) + '/../..')
4
4
  $test_data_dir = $base_dir + '/features/TestData/'
5
+ $screenshot = $base_dir + '/features/Screenshot/'
5
6
  PROJECT_CONFIG = YAML.load_file("#{$current_dir}/project_config.yml")
6
7
  $PARAMS = YAML.load_file("#{$test_data_dir}/globalData.yml")
7
8
  $OBJECT = YAML.load_file("#{$base_dir}/features/step_definitions/repositories/project_object.yml")
@@ -13,18 +14,6 @@ require 'cucumber'
13
14
  require 'yaml'
14
15
  require 'selenium-webdriver'
15
16
  require 'Ifd_Automation'
16
- # require File.expand_path('../lib/Ifd_Automation/email_steps.rb')
17
- # require File.expand_path('../lib/Ifd_Automation/file_steps.rb')
18
- # require File.expand_path('../lib/Ifd_Automation/ssh_steps.rb')
19
- # require File.expand_path('../lib/Ifd_Automation/database_steps.rb')
20
- # require File.expand_path('../lib/Ifd_Automation/web_steps.rb')
21
- # require File.expand_path('../lib/Ifd_Automation/webservice_steps.rb')
22
- # require File.expand_path('../lib/Ifd_Automation/response.rb')
23
- # require File.expand_path('../lib/Ifd_Automation_support/selenium_sync_issues.rb')
24
- # require File.expand_path('../lib/Ifd_Automation_support/core.rb')
25
- # require File.expand_path('../lib/Ifd_Automation_support/web_steps_helpers.rb')
26
- # require File.expand_path('../lib/Ifd_Automation_support/mail_helpers.rb')
27
- # require File.expand_path('../lib/Ifd_Automation_support/assertion_helpers.rb')
28
17
 
29
18
  $_CFWEB['Default Browser'] = PROJECT_CONFIG['default_browser'].downcase
30
19
  $_CFWEB['Wait Time'] = PROJECT_CONFIG['wait_time']
@@ -41,66 +30,78 @@ $RECEIVE_EMAIL_PASSWORD = PROJECT_CONFIG['receive_email_password']
41
30
 
42
31
  Mail.defaults do
43
32
  delivery_method :smtp, {
44
- :enable_starttls_auto => true,
45
- :address => 'smtp.gmail.com',
46
- :port => 25,
47
- :domain => 'gmail.com',
48
- :authentication => :plain,
49
- :user_name => $SEND_EMAIL_USERNAME,
50
- :password => $SEND_EMAIL_PASSWORD
51
- }
33
+ :enable_starttls_auto => true,
34
+ :address => 'smtp.gmail.com',
35
+ :port => 25,
36
+ :domain => 'gmail.com',
37
+ :authentication => :plain,
38
+ :user_name => $SEND_EMAIL_USERNAME,
39
+ :password => $SEND_EMAIL_PASSWORD
40
+ }
52
41
  retriever_method :pop3, {
53
- :address => 'pop.gmail.com',
54
- :port => 995,
55
- :user_name => $RECEIVE_EMAIL_USERNAME,
56
- :password => $RECEIVE_EMAIL_PASSWORD,
57
- :enable_ssl => true
58
- }
42
+ :address => 'pop.gmail.com',
43
+ :port => 995,
44
+ :user_name => $RECEIVE_EMAIL_USERNAME,
45
+ :password => $RECEIVE_EMAIL_PASSWORD,
46
+ :enable_ssl => true
47
+ }
59
48
  end
60
49
  Capybara.configure do |config|
61
50
  config.app_host = $_CFWEB['Page Address']
62
- config.default_wait_time = $_CFWEB['Wait Time']
51
+ config.default_max_wait_time = $_CFWEB['Wait Time']
63
52
  # config.run_server = false
64
53
  config.default_driver = :selenium
65
- # config.default_selector = :css
54
+ config.default_selector = :css
66
55
  config.ignore_hidden_elements = true
67
56
  #config.visible_text_only = true
68
57
  end
69
58
 
70
59
  def register_selenium_remote_driver(browser)
71
- Capybara.register_driver :selenium do |app|
72
- Capybara::Selenium::Driver.new(app, browser: :remote, url: "http://#{SELENIUM_SERVER}:4444/wd/hub", desired_capabilities: browser.to_sym)
60
+ case browser
61
+ when "firefox"
62
+ caps = Selenium::WebDriver::Remote::Capabilities.firefox
63
+ Capybara.register_driver :selenium do |app|
64
+ Capybara::Selenium::Driver.new(app,
65
+ browser: :remote,
66
+ url: "http://#{SELENIUM_SERVER}:4444/wd/hub",
67
+ desired_capabilities: caps)
68
+ end
69
+ when "chrome"
70
+ caps = Selenium::WebDriver::Remote::Capabilities.chrome
71
+ Capybara.register_driver :selenium do |app|
72
+ Capybara::Selenium::Driver.new(app,
73
+ browser: :remote,
74
+ url: "http://#{SELENIUM_SERVER}:4444/wd/hub",
75
+ desired_capabilities: caps)
76
+ end
73
77
  end
74
78
  end
75
79
 
76
80
  def register_selenium_local_driver(browser)
77
81
  Capybara.register_driver :selenium do |app|
78
82
  case browser
79
- when "firefox"
80
- profile = Selenium::WebDriver::Firefox::Profile.new
81
- profile['browser.download.folderList'] = 2
82
- profile['browser.helperApps.neverAsk.saveToDisk'] = "text/csv,application/pdf,application/x-pdf,application/octet-stream"
83
- profile["pdfjs.disabled"] = true
84
- Capybara::Selenium::Driver.new(app, :browser => browser.to_sym, :profile => profile)
85
- when "chrome"
86
- prefs = {:download => {
87
- :prompt_for_download => false
88
- }}
89
- args = []
90
- args << "--test-type" #to fix the error of chrome "you are using an unsupported command-line flag ignore-certificate-errors"
91
- Capybara::Selenium::Driver.new(app, :browser => browser.to_sym, :prefs => prefs, :args => args)
92
- when "internet_explorer"
93
- Capybara::Selenium::Driver.new(app, :browser => browser.to_sym)
94
- else
95
- puts("Not support browser...")
83
+ when "firefox"
84
+ profile = Selenium::WebDriver::Firefox::Profile.new
85
+ profile['browser.download.folderList'] = 2
86
+ profile['browser.helperApps.neverAsk.saveToDisk'] = "text/csv,application/pdf,application/x-pdf,application/octet-stream"
87
+ profile["pdfjs.disabled"] = true
88
+ Capybara::Selenium::Driver.new(app, :browser => browser.to_sym, :profile => profile)
89
+ when "chrome"
90
+ prefs = {:download => {
91
+ :prompt_for_download => false
92
+ }}
93
+ args = []
94
+ args << "--test-type" #to fix the error of chrome "you are using an unsupported command-line flag ignore-certificate-errors"
95
+ Capybara::Selenium::Driver.new(app, :browser => browser.to_sym, :prefs => prefs, :args => args)
96
+ else
97
+ puts("Not support browser...")
96
98
  end
97
99
  end
98
100
  end
99
101
 
100
102
  case ENV["SELENIUM"]
101
- when "remote"
102
- register_selenium_remote_driver($_CFWEB['Default Browser'])
103
- else
104
- register_selenium_local_driver($_CFWEB['Default Browser'])
105
-
103
+ when "remote"
104
+ register_selenium_remote_driver($_CFWEB['Default Browser'])
105
+ else
106
+ register_selenium_local_driver($_CFWEB['Default Browser'])
106
107
  end
@@ -35,6 +35,8 @@ Before do
35
35
  end
36
36
 
37
37
  After do |scenario|
38
+ file_name = 'failed_%s.png' % rand(1000).to_s
39
+ page.save_screenshot($screenshot+file_name) if scenario.failed?
38
40
  begin
39
41
  Capybara.page.driver.quit
40
42
  Capybara.send(:session_pool).delete_if { |key, value| key =~ /selenium/i }
@@ -1,8 +1,8 @@
1
1
  default_browser: firefox
2
2
  wait_time: 30
3
- test_page_address:
4
- selenium_grid: 10.5.1.202
5
- send_email_username:
6
- send_email_password:
7
- receive_email_username:
8
- receive_email_password:
3
+ test_page_address: http://google.com
4
+ selenium_grid: 10.5.1.215
5
+ send_email_username:
6
+ send_email_password:
7
+ receive_email_username:
8
+ receive_email_password:
metadata CHANGED
@@ -1,227 +1,131 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Ifd_Automation
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.2
4
+ version: '2.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anh Pham
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-20 00:00:00.000000000 Z
11
+ date: 2017-12-26 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.12'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.12'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '10.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '10.0'
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '3.0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '3.0'
55
13
  - !ruby/object:Gem::Dependency
56
14
  name: selenium-webdriver
57
15
  requirement: !ruby/object:Gem::Requirement
58
16
  requirements:
59
17
  - - "~>"
60
18
  - !ruby/object:Gem::Version
61
- version: 2.46.2
19
+ version: '3.6'
62
20
  - - ">="
63
21
  - !ruby/object:Gem::Version
64
- version: 2.46.2
22
+ version: 3.6.0
65
23
  type: :runtime
66
24
  prerelease: false
67
25
  version_requirements: !ruby/object:Gem::Requirement
68
26
  requirements:
69
27
  - - "~>"
70
28
  - !ruby/object:Gem::Version
71
- version: 2.46.2
29
+ version: '3.6'
72
30
  - - ">="
73
31
  - !ruby/object:Gem::Version
74
- version: 2.46.2
32
+ version: 3.6.0
75
33
  - !ruby/object:Gem::Dependency
76
34
  name: cucumber
77
35
  requirement: !ruby/object:Gem::Requirement
78
36
  requirements:
79
37
  - - "~>"
80
38
  - !ruby/object:Gem::Version
81
- version: '2.4'
39
+ version: '3.1'
82
40
  type: :runtime
83
41
  prerelease: false
84
42
  version_requirements: !ruby/object:Gem::Requirement
85
43
  requirements:
86
44
  - - "~>"
87
45
  - !ruby/object:Gem::Version
88
- version: '2.4'
46
+ version: '3.1'
89
47
  - !ruby/object:Gem::Dependency
90
48
  name: capybara
91
49
  requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '2.10'
96
- - - ">="
97
- - !ruby/object:Gem::Version
98
- version: 2.10.1
99
- type: :runtime
100
- prerelease: false
101
- version_requirements: !ruby/object:Gem::Requirement
102
- requirements:
103
- - - "~>"
104
- - !ruby/object:Gem::Version
105
- version: '2.10'
106
- - - ">="
107
- - !ruby/object:Gem::Version
108
- version: 2.10.1
109
- - !ruby/object:Gem::Dependency
110
- name: json-schema
111
- requirement: !ruby/object:Gem::Requirement
112
- requirements:
113
- - - "~>"
114
- - !ruby/object:Gem::Version
115
- version: '2.7'
116
- type: :runtime
117
- prerelease: false
118
- version_requirements: !ruby/object:Gem::Requirement
119
50
  requirements:
120
51
  - - "~>"
121
52
  - !ruby/object:Gem::Version
122
53
  version: '2.7'
123
- - !ruby/object:Gem::Dependency
124
- name: mail
125
- requirement: !ruby/object:Gem::Requirement
126
- requirements:
127
- - - "~>"
128
- - !ruby/object:Gem::Version
129
- version: '2.6'
130
54
  - - ">="
131
55
  - !ruby/object:Gem::Version
132
- version: 2.6.4
56
+ version: 2.7.1
133
57
  type: :runtime
134
58
  prerelease: false
135
59
  version_requirements: !ruby/object:Gem::Requirement
136
60
  requirements:
137
61
  - - "~>"
138
62
  - !ruby/object:Gem::Version
139
- version: '2.6'
63
+ version: '2.7'
140
64
  - - ">="
141
65
  - !ruby/object:Gem::Version
142
- version: 2.6.4
66
+ version: 2.7.1
143
67
  - !ruby/object:Gem::Dependency
144
68
  name: actionmailer
145
69
  requirement: !ruby/object:Gem::Requirement
146
70
  requirements:
147
71
  - - "~>"
148
72
  - !ruby/object:Gem::Version
149
- version: '5.0'
73
+ version: '5.1'
150
74
  - - ">="
151
75
  - !ruby/object:Gem::Version
152
- version: 5.0.0.1
76
+ version: 5.1.4
153
77
  type: :runtime
154
78
  prerelease: false
155
79
  version_requirements: !ruby/object:Gem::Requirement
156
80
  requirements:
157
81
  - - "~>"
158
82
  - !ruby/object:Gem::Version
159
- version: '5.0'
83
+ version: '5.1'
160
84
  - - ">="
161
85
  - !ruby/object:Gem::Version
162
- version: 5.0.0.1
163
- - !ruby/object:Gem::Dependency
164
- name: rest-client
165
- requirement: !ruby/object:Gem::Requirement
166
- requirements:
167
- - - "~>"
168
- - !ruby/object:Gem::Version
169
- version: '2.0'
170
- type: :runtime
171
- prerelease: false
172
- version_requirements: !ruby/object:Gem::Requirement
173
- requirements:
174
- - - "~>"
175
- - !ruby/object:Gem::Version
176
- version: '2.0'
86
+ version: 5.1.4
177
87
  - !ruby/object:Gem::Dependency
178
- name: mysql2
88
+ name: net-ssh
179
89
  requirement: !ruby/object:Gem::Requirement
180
90
  requirements:
181
91
  - - "~>"
182
92
  - !ruby/object:Gem::Version
183
- version: 0.4.5
93
+ version: '3.2'
184
94
  type: :runtime
185
95
  prerelease: false
186
96
  version_requirements: !ruby/object:Gem::Requirement
187
97
  requirements:
188
98
  - - "~>"
189
99
  - !ruby/object:Gem::Version
190
- version: 0.4.5
100
+ version: '3.2'
191
101
  - !ruby/object:Gem::Dependency
192
- name: activerecord
102
+ name: jsonpath
193
103
  requirement: !ruby/object:Gem::Requirement
194
104
  requirements:
195
105
  - - "~>"
196
106
  - !ruby/object:Gem::Version
197
- version: '5.0'
198
- - - ">="
199
- - !ruby/object:Gem::Version
200
- version: 5.0.0.1
107
+ version: 0.5.8
201
108
  type: :runtime
202
109
  prerelease: false
203
110
  version_requirements: !ruby/object:Gem::Requirement
204
111
  requirements:
205
112
  - - "~>"
206
113
  - !ruby/object:Gem::Version
207
- version: '5.0'
208
- - - ">="
209
- - !ruby/object:Gem::Version
210
- version: 5.0.0.1
114
+ version: 0.5.8
211
115
  - !ruby/object:Gem::Dependency
212
- name: jsonpath
116
+ name: httparty
213
117
  requirement: !ruby/object:Gem::Requirement
214
118
  requirements:
215
119
  - - "~>"
216
120
  - !ruby/object:Gem::Version
217
- version: 0.5.8
121
+ version: 0.15.6
218
122
  type: :runtime
219
123
  prerelease: false
220
124
  version_requirements: !ruby/object:Gem::Requirement
221
125
  requirements:
222
126
  - - "~>"
223
127
  - !ruby/object:Gem::Version
224
- version: 0.5.8
128
+ version: 0.15.6
225
129
  - !ruby/object:Gem::Dependency
226
130
  name: savon
227
131
  requirement: !ruby/object:Gem::Requirement
@@ -242,20 +146,6 @@ dependencies:
242
146
  - - ">="
243
147
  - !ruby/object:Gem::Version
244
148
  version: 2.11.1
245
- - !ruby/object:Gem::Dependency
246
- name: net-ssh
247
- requirement: !ruby/object:Gem::Requirement
248
- requirements:
249
- - - "~>"
250
- - !ruby/object:Gem::Version
251
- version: '3.2'
252
- type: :runtime
253
- prerelease: false
254
- version_requirements: !ruby/object:Gem::Requirement
255
- requirements:
256
- - - "~>"
257
- - !ruby/object:Gem::Version
258
- version: '3.2'
259
149
  description: Behavior driven development (BDD) approach to write automation test script
260
150
  to test GUI, RESTful, SOAP, Database, eMail.
261
151
  email:
@@ -272,27 +162,25 @@ files:
272
162
  - bin/helper.rb
273
163
  - bin/setup
274
164
  - lib/Ifd_Automation.rb
165
+ - lib/Ifd_Automation/REST_steps.rb
166
+ - lib/Ifd_Automation/SOAP_steps.rb
275
167
  - lib/Ifd_Automation/all_steps.rb
276
168
  - lib/Ifd_Automation/database_steps.rb
169
+ - lib/Ifd_Automation/dynamic_store_vavue_steps.rb
277
170
  - lib/Ifd_Automation/email_steps.rb
278
171
  - lib/Ifd_Automation/file_steps.rb
279
- - lib/Ifd_Automation/javascript_steps.rb
280
- - lib/Ifd_Automation/required_libs.rb
281
- - lib/Ifd_Automation/response.rb
172
+ - lib/Ifd_Automation/require_libs.rb
282
173
  - lib/Ifd_Automation/ssh_steps.rb
283
174
  - lib/Ifd_Automation/version.rb
284
175
  - lib/Ifd_Automation/web_steps.rb
285
- - lib/Ifd_Automation/webservice_steps.rb
286
- - lib/Ifd_Automation_support/assertion_helpers.rb
287
- - lib/Ifd_Automation_support/connection_helpers.rb
288
- - lib/Ifd_Automation_support/core.rb
289
- - lib/Ifd_Automation_support/javascript_helpers.rb
290
- - lib/Ifd_Automation_support/mail_helpers.rb
291
- - lib/Ifd_Automation_support/selenium_sync_issues.rb
292
- - lib/Ifd_Automation_support/web_steps_helpers.rb
176
+ - lib/helper/assertion_helpers.rb
177
+ - lib/helper/auto_utils.rb
178
+ - lib/helper/connection_helpers.rb
179
+ - lib/helper/core.rb
180
+ - lib/helper/mail_helpers.rb
181
+ - lib/helper/web_steps_helpers.rb
293
182
  - project/Gemfile
294
- - project/Gemfile.lock
295
- - project/Rakefile
183
+ - project/features/Screenshot/failed_sample.png
296
184
  - project/features/TestData/globalData.yml
297
185
  - project/features/TestSuite/test.feature
298
186
  - project/features/step_definitions/lib_steps/test.rb
@@ -320,7 +208,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
320
208
  version: '0'
321
209
  requirements: []
322
210
  rubyforge_project:
323
- rubygems_version: 2.4.5.1
211
+ rubygems_version: 2.5.2
324
212
  signing_key:
325
213
  specification_version: 4
326
214
  summary: SELENIUM WEBDRIVER WITH RUBY & CUCUMBER