awetestlib 0.1.30-x86-mingw32 → 1.2.4-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +101 -41
- data/awetestlib.gemspec +36 -47
- data/awetestlib_osx.gemspec +24 -18
- data/awetestlib_windows.gemspec +46 -0
- data/bin/awetestlib +130 -111
- data/bin/awetestlib-driver-setup.rb +0 -2
- data/bin/awetestlib-helpers.rb +43 -30
- data/lib/awetestlib.rb +196 -20
- data/lib/awetestlib/command_line.rb +44 -0
- data/lib/awetestlib/html_report.rb +57 -50
- data/lib/awetestlib/logging.rb +242 -171
- data/lib/awetestlib/regression/awetest_dsl.rb +4240 -0
- data/lib/awetestlib/regression/browser.rb +514 -397
- data/lib/awetestlib/regression/date_and_time.rb +280 -0
- data/lib/awetestlib/regression/drag_and_drop.rb +24 -0
- data/lib/awetestlib/regression/find.rb +70 -43
- data/lib/awetestlib/regression/legacy.rb +1 -1
- data/lib/awetestlib/regression/mobile.rb +293 -0
- data/lib/awetestlib/regression/reporting.rb +298 -0
- data/lib/awetestlib/regression/runner.rb +156 -200
- data/lib/awetestlib/regression/tables.rb +117 -7
- data/lib/awetestlib/regression/test_data.rb +354 -0
- data/lib/awetestlib/regression/user_input.rb +179 -93
- data/lib/awetestlib/regression/utilities.rb +755 -286
- data/lib/awetestlib/regression/validations.rb +325 -115
- data/lib/awetestlib/regression/waits.rb +60 -133
- data/lib/awetestlib/runner.rb +5 -2
- data/lib/version.rb +11 -2
- data/setup_samples/sample_cucumber/features/step_definitions/predefined_steps.rb +109 -49
- data/setup_samples/sample_mobile_app/features/support/env.rb +1 -1
- data/test/google_search2.rb +7 -6
- data/test/popup_child_0.rb +13 -0
- data/test/popup_child_1.rb +33 -0
- data/test/watir_no_require.rb +13 -0
- data/test/watir_with_require.rb +16 -0
- data/test/zoho_exercise.rb +8 -8
- metadata +216 -303
- data/AwetestLib Instructions.rtf +0 -0
- data/awetestlib.windows.gemspec +0 -42
- data/lib/patches/README +0 -2
- data/lib/patches/firewatir.rb +0 -106
- data/lib/patches/watir.rb +0 -175
@@ -13,10 +13,10 @@ module Awetestlib
|
|
13
13
|
# @param [Fixnum] seconds The number of seconds to wait.
|
14
14
|
# @param [Boolean] dbg If true, includes a trace in the message
|
15
15
|
# @param [String] desc Contains a message or description intended to appear in the log and/or report output.
|
16
|
-
def sleep_for(seconds,
|
17
|
-
trace = "\n#{get_debug_list}"
|
16
|
+
def sleep_for(seconds, desc = '')
|
17
|
+
trace = $debug ? "\n#{get_debug_list}" : ''
|
18
18
|
msg = build_message("Sleeping for #{seconds} seconds.", desc, trace)
|
19
|
-
info_to_log(msg)
|
19
|
+
info_to_log(msg, 3)
|
20
20
|
sleep(seconds)
|
21
21
|
end
|
22
22
|
|
@@ -51,6 +51,7 @@ module Awetestlib
|
|
51
51
|
start = Time.now.to_f
|
52
52
|
# TODO: try Watir::Wait.until { browser.element(how, what).exists? } instead of this (cumbersome) case statement
|
53
53
|
# TODO: above fails on frame
|
54
|
+
# TODO: Webdriver compatibility?
|
54
55
|
Watir::Wait.until { browser.exists? }
|
55
56
|
begin
|
56
57
|
case element
|
@@ -88,12 +89,11 @@ module Awetestlib
|
|
88
89
|
end
|
89
90
|
end
|
90
91
|
stop = Time.now.to_f
|
91
|
-
|
92
|
-
|
93
|
-
passed_to_log("#{msg} (#{stop - start} seconds)")
|
92
|
+
msg += " (#{"%.5f" % (stop - start)} seconds)"
|
93
|
+
passed_to_log(msg)
|
94
94
|
true
|
95
95
|
rescue
|
96
|
-
failed_to_log(
|
96
|
+
failed_to_log(unable_to(msg))
|
97
97
|
end
|
98
98
|
|
99
99
|
# Wait _while_ expression in *&block* returns true.
|
@@ -111,7 +111,7 @@ module Awetestlib
|
|
111
111
|
# @return [Boolean] True if condition returns false within time limit.
|
112
112
|
def wait_while(browser, desc, timeout = 45, &block)
|
113
113
|
#TODO: Would like to be able to see the block code in the log message instead of the identification
|
114
|
-
msg = "Wait while
|
114
|
+
msg = build_message("Wait while", desc)
|
115
115
|
start = Time.now.to_f
|
116
116
|
Watir::Wait.until { browser.exists? }
|
117
117
|
begin
|
@@ -128,9 +128,8 @@ module Awetestlib
|
|
128
128
|
end
|
129
129
|
end
|
130
130
|
stop = Time.now.to_f
|
131
|
-
|
132
|
-
|
133
|
-
passed_to_log("#{msg} (#{"%.5f" % (stop - start)} seconds)") # {#{block.to_s}}")
|
131
|
+
msg += " (#{"%.5f" % (stop - start)} seconds)"
|
132
|
+
passed_to_log(msg)
|
134
133
|
true
|
135
134
|
rescue
|
136
135
|
failed_to_log("Unable to complete #{msg}. '#{$!}'")
|
@@ -146,7 +145,7 @@ module Awetestlib
|
|
146
145
|
# @return [Boolean] True if condition in *&block* returns true within time limit.
|
147
146
|
def wait_until(browser, desc, timeout = 45, skip_pass = false, &block)
|
148
147
|
#TODO: Would like to be able to see the block code in the log message instead of the identification
|
149
|
-
msg = "Wait until
|
148
|
+
msg = build_message("Wait until", desc)
|
150
149
|
start = Time.now.to_f
|
151
150
|
Watir::Wait.until { browser.exists? }
|
152
151
|
begin
|
@@ -160,12 +159,11 @@ module Awetestlib
|
|
160
159
|
end
|
161
160
|
end
|
162
161
|
stop = Time.now.to_f
|
163
|
-
|
164
|
-
|
165
|
-
passed_to_log("#{msg} (#{"%.5f" % (stop - start)} seconds)") unless skip_pass # {#{block.to_s}}")
|
162
|
+
msg += " (#{"%.5f" % (stop - start)} seconds)"
|
163
|
+
passed_to_log(msg) unless skip_pass # {#{block.to_s}}")
|
166
164
|
true
|
167
165
|
rescue
|
168
|
-
failed_to_log(
|
166
|
+
failed_to_log(unable_to(msg))
|
169
167
|
end
|
170
168
|
|
171
169
|
alias wait_until_true wait_until
|
@@ -179,147 +177,77 @@ module Awetestlib
|
|
179
177
|
# @param [String, Regexp] what A string or a regular expression to be found in the *how* attribute that uniquely identifies the element.
|
180
178
|
# @param [String] desc Contains a message or description intended to appear in the log and/or report output
|
181
179
|
# @param [Fixnum] timeout Maximum time to wait, in seconds.
|
182
|
-
# @param [Boolean] verbose When set to true,
|
183
|
-
#
|
184
|
-
# @return [Boolean] True if
|
185
|
-
def wait_until_ready(browser, how, what, desc = '', timeout = 90, verbose = false)
|
186
|
-
msg = "
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
180
|
+
# @param [Boolean] verbose When set to true, actual wait time is reported.
|
181
|
+
# @param [Boolean] quiet When set to true, only fail messages are logged and reported.
|
182
|
+
# @return [Boolean] True if element is ready within time limit.
|
183
|
+
def wait_until_ready(browser, how, what, desc = '', timeout = 90, verbose = true, quiet = false)
|
184
|
+
msg = build_message("Wait until element :#{how}=>'#{what}') is ready.", desc)
|
185
|
+
ok = false
|
186
|
+
start = Time.now.to_f if verbose
|
187
|
+
Watir::Wait.until(timeout) { browser.exists? }
|
188
|
+
|
189
|
+
if $using_webdriver
|
190
|
+
proc_present = Proc.new { browser.element(how, what).present? }
|
191
|
+
if Watir::Wait.until(timeout) { proc_present.call(nil) }
|
192
|
+
ok = true
|
193
|
+
end
|
194
|
+
else
|
195
|
+
proc_exists = Proc.new { browser.element(how, what).exists? }
|
196
|
+
proc_enabled = Proc.new { browser.element(how, what).enabled? }
|
197
|
+
if how == :href
|
192
198
|
proc_exists = Proc.new { browser.link(how, what).exists? }
|
193
199
|
proc_enabled = Proc.new { browser.link(how, what).enabled? }
|
194
|
-
end
|
195
|
-
if verbose
|
196
|
-
if wait_until(browser, "#{msg} Element exists.", timeout) { proc_exists.call(nil) }
|
197
|
-
if wait_until(browser, "#{msg} Element enabled.", timeout) { proc_enabled.call(nil) }
|
198
|
-
passed_to_log(msg)
|
199
|
-
true
|
200
|
-
else
|
201
|
-
failed_to_log(msg)
|
202
|
-
end
|
203
|
-
else
|
204
|
-
failed_to_log(msg)
|
205
200
|
end
|
206
|
-
else
|
207
|
-
start = Time.now.to_f
|
208
|
-
Watir::Wait.until { browser.exists? }
|
209
201
|
if Watir::Wait.until(timeout) { proc_exists.call(nil) }
|
210
202
|
if Watir::Wait.until(timeout) { proc_enabled.call(nil) }
|
211
|
-
|
212
|
-
#debug_to_log("#{__method__}: start:#{"%.5f" % start} stop:#{"%.5f" % stop}")
|
213
|
-
passed_to_log("#{msg} (#{"%.5f" % (stop - start)} seconds)")
|
214
|
-
true
|
215
|
-
else
|
216
|
-
failed_to_log(msg)
|
203
|
+
ok = true
|
217
204
|
end
|
218
|
-
else
|
219
|
-
failed_to_log(msg)
|
220
205
|
end
|
221
206
|
end
|
222
|
-
rescue
|
223
|
-
failed_to_log("Unable to #{msg}. '#{$!}'")
|
224
|
-
end
|
225
207
|
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
# @param [Symbol] how The element attribute used to identify the specific element.
|
230
|
-
# Valid values depend on the kind of element.
|
231
|
-
# Common values: :text, :id, :title, :name, :class, :href (:link only)
|
232
|
-
# @param [String, Regexp] what A string or a regular expression to be found in the *how* attribute that uniquely identifies the element.
|
233
|
-
# @param [String] desc Contains a message or description intended to appear in the log and/or report output
|
234
|
-
# @param [Fixnum] timeout Maximum time to wait, in seconds.
|
235
|
-
# @param [Boolean] quiet When set to true, only fail messages are logged and reported.
|
236
|
-
# @return [Boolean] True if condition returns false within time limit.
|
237
|
-
def wait_until_ready_quiet(browser, how, what, desc = '', timeout = 45, quiet = true)
|
238
|
-
msg = "#{__method__.to_s.titleize}: element: #{how}='#{what}'"
|
239
|
-
msg << " #{desc}" if desc.length > 0
|
240
|
-
proc_exists = Proc.new { browser.element(how, what).exists? }
|
241
|
-
proc_enabled = Proc.new { browser.element(how, what).enabled? }
|
242
|
-
case how
|
243
|
-
when :href
|
244
|
-
proc_exists = Proc.new { browser.link(how, what).exists? }
|
245
|
-
proc_enabled = Proc.new { browser.link(how, what).enabled? }
|
208
|
+
if verbose
|
209
|
+
stop = Time.now.to_f
|
210
|
+
msg += " (#{"%.5f" % (stop - start)} seconds)"
|
246
211
|
end
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
if Watir::Wait.until(timeout) { proc_exists.call(nil) }
|
251
|
-
if Watir::Wait.until(timeout) { proc_enabled.call(nil) }
|
252
|
-
stop = Time.now.to_f
|
253
|
-
#debug_to_log("#{msg}: start:#{"%.5f" % start} stop:#{"%.5f" % stop}")
|
254
|
-
passed_to_log("#{msg} (#{"%.5f" % (stop - start)} seconds)") unless quiet
|
255
|
-
true
|
256
|
-
else
|
257
|
-
failed_to_log(msg)
|
212
|
+
if ok
|
213
|
+
unless quiet
|
214
|
+
passed_to_log(msg)
|
258
215
|
end
|
259
216
|
else
|
260
217
|
failed_to_log(msg)
|
261
218
|
end
|
219
|
+
ok
|
262
220
|
rescue
|
263
|
-
failed_to_log(
|
221
|
+
failed_to_log(unable_to(msg))
|
222
|
+
end
|
223
|
+
|
224
|
+
# Wait _until_ element, identified by attribute *how* and its value *what*, exists.
|
225
|
+
# If it exists within *timeout* seconds then wait _until_ it is enabled. By default reports only failures.
|
226
|
+
# @param (see #wait_until_ready)
|
227
|
+
# @return [Boolean] True if element is ready within time limit.
|
228
|
+
def wait_until_ready_quiet(browser, how, what, desc = '', timeout = 90, quiet = true, verbose = false)
|
229
|
+
wait_until_ready(browser, how, what, desc, timeout, verbose, quiet)
|
264
230
|
end
|
265
231
|
|
266
|
-
def wait_until_text(browser, strg, desc = '', timeout = 60)
|
267
|
-
|
232
|
+
def wait_until_text(browser, strg, desc = '', refs = '', timeout = 60)
|
233
|
+
unless strg.class.to_s.match('String')
|
268
234
|
raise "#{__method__} requires String for search target. #{strg.class} is not supported."
|
269
235
|
end
|
270
|
-
wait_until(browser, "'#{strg}' #{desc}", timeout) { browser.text.include? strg }
|
236
|
+
wait_until(browser, "'#{strg}' #{desc} #{refs}", timeout) { browser.text.include? strg }
|
271
237
|
end
|
272
238
|
|
273
239
|
alias wait_until_by_text wait_until_text
|
274
240
|
|
275
|
-
def wait_until_enabled(browser,
|
276
|
-
|
277
|
-
start = Time.now.to_f
|
278
|
-
Watir::Wait.until { browser.exists? }
|
279
|
-
sleep_for(1)
|
280
|
-
begin
|
281
|
-
case what
|
282
|
-
when :link
|
283
|
-
Watir::Wait.until { browser.link(how, value).enabled? }
|
284
|
-
when :button
|
285
|
-
Watir::Wait.until { browser.button(how, value).enabled? }
|
286
|
-
when :radio
|
287
|
-
Watir::Wait.until { browser.radio(how, value).enabled? }
|
288
|
-
when :checkbox
|
289
|
-
Watir::Wait.until { browser.checkbox(how, value).enabled? }
|
290
|
-
when :div
|
291
|
-
Watir::Wait.until { browser.div(how, value).enabled? }
|
292
|
-
when :select_list
|
293
|
-
Watir::Wait.until { browser.select_list(how, value).enabled? }
|
294
|
-
when :text_field
|
295
|
-
Watir::Wait.until { browser.text_field(how, value).enabled? }
|
296
|
-
when :table
|
297
|
-
Watir::Wait.until { browser.table(how, value).enabled? }
|
298
|
-
else
|
299
|
-
Watir::Wait.until { browser.element(how, value).enabled? }
|
300
|
-
end
|
301
|
-
rescue => e
|
302
|
-
if e.class.to_s =~ /TimeOutException/
|
303
|
-
failed_to_log("Wait until (#{what} :#{how}=>#{value}) enabled. #{desc}: '#{$!}' #{desc}")
|
304
|
-
return false
|
305
|
-
elsif not rescue_me(e, __method__, "#{block.to_s}", "#{browser.class}")
|
306
|
-
raise e
|
307
|
-
end
|
308
|
-
end
|
309
|
-
stop = Time.now.to_f
|
310
|
-
#debug_to_log("#{__method__}: start:#{start} stop:#{stop}")
|
311
|
-
# sleep 1
|
312
|
-
passed_to_log("Wait until (#{what} :#{how}=>#{value}) enabled. #{desc} (#{stop - start} seconds)")
|
313
|
-
true
|
314
|
-
rescue
|
315
|
-
failed_to_log("Unable to complete wait until (#{what} :#{how}=>#{value}) enabled. #{desc}: '#{$!}'")
|
241
|
+
def wait_until_enabled(browser, element, how, what, desc = '')
|
242
|
+
wait_until_ready(browser, how, what, desc, timeout = 90, verbose = true, quiet = false)
|
316
243
|
end
|
317
244
|
|
318
|
-
def wait_until_visible(browser, element, how, what, desc = '')
|
245
|
+
def wait_until_visible(browser, element, how, what, desc = '', timeout = 60)
|
246
|
+
msg = build_message("Wait until #{element} :#{how}=>'#{what}') is visible.", desc)
|
319
247
|
start = Time.now.to_f
|
320
248
|
Watir::Wait.until { browser.exists? }
|
321
249
|
sleep_for(1)
|
322
|
-
Watir::Wait.until(
|
250
|
+
Watir::Wait.until(timeout) { browser.element(how, what).exists? }
|
323
251
|
begin
|
324
252
|
case element
|
325
253
|
when :link
|
@@ -349,12 +277,11 @@ module Awetestlib
|
|
349
277
|
end
|
350
278
|
end
|
351
279
|
stop = Time.now.to_f
|
352
|
-
|
353
|
-
|
354
|
-
passed_to_log("Wait until (#{element} :#{how}=>#{what}) visible. #{desc} (#{stop - start} seconds)")
|
280
|
+
msg += " (#{"%.5f" % (stop - start)} seconds)"
|
281
|
+
passed_to_log(msg)
|
355
282
|
true
|
356
283
|
rescue
|
357
|
-
failed_to_log(
|
284
|
+
failed_to_log(unable_to(msg))
|
358
285
|
end
|
359
286
|
|
360
287
|
# @!endgroup Core
|
data/lib/awetestlib/runner.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'open-uri' #; load_time
|
2
2
|
module Awetestlib
|
3
|
+
# TODO replace this with regression/runner. Only one script type.
|
3
4
|
# Parent class. Each script type will have a Runner that inherits from this class.
|
4
5
|
class Runner
|
5
6
|
def initialize(options = {})
|
@@ -9,8 +10,10 @@ module Awetestlib
|
|
9
10
|
|
10
11
|
def check_script_type(script_type)
|
11
12
|
case script_type
|
12
|
-
when
|
13
|
-
|
13
|
+
when 'Regression', 'Awetest', 'AwetestDSL', 'Awetestlib'
|
14
|
+
'Regression'
|
15
|
+
else
|
16
|
+
script_type
|
14
17
|
end
|
15
18
|
end
|
16
19
|
end
|
data/lib/version.rb
CHANGED
@@ -1,4 +1,13 @@
|
|
1
1
|
module Awetestlib
|
2
|
-
VERSION
|
3
|
-
VERSION_DATE = "
|
2
|
+
VERSION = "1.2.4"
|
3
|
+
VERSION_DATE = "2016-07-19"
|
4
|
+
if Dir.exists?('.git')
|
5
|
+
require 'git'
|
6
|
+
git = Git.open(Dir.pwd)
|
7
|
+
branch = git.current_branch
|
8
|
+
commit = git.gblob(branch).log(5).first
|
9
|
+
BRANCH = branch
|
10
|
+
SHA = commit.sha
|
11
|
+
SHA_DATE = commit.date
|
12
|
+
end
|
4
13
|
end
|
@@ -5,20 +5,20 @@ rescue
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def setup_classic_watir
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
end
|
8
|
+
require 'watir'
|
9
|
+
require 'win32ole'
|
10
|
+
$ai = ::WIN32OLE.new('AutoItX3.Control')
|
11
|
+
$first_index = 1
|
12
|
+
$timestamp = Time.now.strftime("%Y%m%d%H%M%S")
|
13
|
+
$watir_script = true
|
14
|
+
Watir::IE.close_all
|
15
|
+
Watir::IE.visible = true
|
16
|
+
end
|
17
17
|
|
18
18
|
def setup_watir_webdriver
|
19
19
|
require 'watir-webdriver'
|
20
|
-
$first_index
|
21
|
-
$timestamp
|
20
|
+
$first_index = 0
|
21
|
+
$timestamp = Time.now.strftime("%Y%m%d%H%M%S")
|
22
22
|
$watir_script = false
|
23
23
|
end
|
24
24
|
|
@@ -29,7 +29,7 @@ end
|
|
29
29
|
|
30
30
|
def open_safari
|
31
31
|
setup_watir_webdriver
|
32
|
-
@browser = Watir::Browser.new(:remote, :desired_capabilities
|
32
|
+
@browser = Watir::Browser.new(:remote, :desired_capabilities=>:'safari')
|
33
33
|
end
|
34
34
|
|
35
35
|
def open_chrome
|
@@ -52,7 +52,7 @@ end
|
|
52
52
|
|
53
53
|
def navigate_to_environment_url
|
54
54
|
if @params and @params['environment'] and @params['environment']['url']
|
55
|
-
|
55
|
+
url = @params['environment']['url']
|
56
56
|
elsif @login and @login['url']
|
57
57
|
url = @login['url']
|
58
58
|
elsif @role and @login[@role] and @login[@role]['url']
|
@@ -63,24 +63,24 @@ end
|
|
63
63
|
|
64
64
|
def open_a_browser
|
65
65
|
if @params
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
66
|
+
puts "@params: #{@params}"
|
67
|
+
case @params["browser"]
|
68
|
+
when "FF"
|
69
|
+
open_firefox
|
70
|
+
when "IE"
|
71
|
+
open_internet_explorer
|
72
|
+
when "C", "GC"
|
73
|
+
open_chrome
|
74
|
+
when "S"
|
75
|
+
open_safari
|
76
|
+
end
|
77
|
+
else
|
78
|
+
if $watir_script
|
79
|
+
open_internet_explorer
|
80
|
+
else
|
81
|
+
open_firefox
|
82
|
+
end
|
83
|
+
end
|
84
84
|
end
|
85
85
|
|
86
86
|
Given /^I run with Watir$/ do
|
@@ -187,7 +187,7 @@ And /^I enter the value for "(.*?)" in text field with "?(.*?)"? "(.*?)"$/ do |i
|
|
187
187
|
if index =~ /zipcode/
|
188
188
|
value = @var[index].to_i.to_s
|
189
189
|
else
|
190
|
-
value =
|
190
|
+
value = index
|
191
191
|
end
|
192
192
|
step "I enter \"#{value}\" in text field with #{how} \"#{what}\""
|
193
193
|
end
|
@@ -260,9 +260,9 @@ When /^I wait until "?(.*?)"? with "?(.*?)"? "(.*?)" is ready$/ do |element, how
|
|
260
260
|
#what = Regexp.new(Regexp.escape(what)) unless how =~ /index|text/i or what.is_a?(Regexp)
|
261
261
|
ok = false
|
262
262
|
if $watir_script
|
263
|
-
if Watir::Wait.until {
|
264
|
-
if Watir::Wait.until {
|
265
|
-
if Watir::Wait.until {
|
263
|
+
if Watir::Wait.until {@browser.element(how, what).exists?}
|
264
|
+
if Watir::Wait.until {@browser.element(how, what).visible?}
|
265
|
+
if Watir::Wait.until {@browser.element(how, what).enabled?}
|
266
266
|
ok = true
|
267
267
|
end
|
268
268
|
end
|
@@ -276,8 +276,8 @@ When /^I wait until "?(.*?)"? with "?(.*?)"? "(.*?)" is ready$/ do |element, how
|
|
276
276
|
when 'text field'
|
277
277
|
sleep 2
|
278
278
|
#if @browser.text_field(how.to_sym, what).wait_until_present
|
279
|
-
|
280
|
-
|
279
|
+
ok = true
|
280
|
+
#end
|
281
281
|
else
|
282
282
|
if @browser.element(how.to_sym, what).wait_until_present
|
283
283
|
ok = true
|
@@ -311,16 +311,45 @@ And /^I close the browser$/ do
|
|
311
311
|
@browser.close
|
312
312
|
end
|
313
313
|
|
314
|
+
When(/^I should see "([^"]*)" but proceed if not present$/) do |arg|
|
315
|
+
@text_list[arg]= @browser.link(:text, "#{arg}").exists?
|
316
|
+
File.open(@error_file,"w") do |f|
|
317
|
+
f.write(@text_list.to_json)
|
318
|
+
end
|
319
|
+
|
320
|
+
if @browser.link(:text, "#{arg}").exists?
|
321
|
+
# Do not take a screen shot
|
322
|
+
else
|
323
|
+
step "I take a screenshot"
|
324
|
+
end
|
325
|
+
end
|
326
|
+
|
327
|
+
Then(/^I interact with window having title "(.*?)"$/) do |arg1| # title of child window
|
328
|
+
sleep 5
|
329
|
+
counter = 0
|
330
|
+
if arg1 == "Parent_Window_Title"
|
331
|
+
@browser.driver.switch_to.window(@browser.driver.window_handles[0])
|
332
|
+
else
|
333
|
+
@browser.windows.each do |win|
|
334
|
+
if win.title == arg1 # switches control to child window
|
335
|
+
@browser.driver.switch_to.window(@browser.driver.window_handles[counter])
|
336
|
+
else
|
337
|
+
counter = counter + 1
|
338
|
+
end
|
339
|
+
end
|
340
|
+
end
|
341
|
+
end
|
342
|
+
|
314
343
|
Given /^I load data spreadsheet "(.*?)" for "(.*?)"$/ do |file, feature|
|
315
344
|
require 'roo'
|
316
|
-
@workbook
|
317
|
-
@feature_name
|
345
|
+
@workbook = Excel.new(file)
|
346
|
+
@feature_name = feature #File.basename(feature, ".feature")
|
318
347
|
step "I load @login from spreadsheet"
|
319
348
|
step "I load @var from spreadsheet"
|
320
349
|
end
|
321
350
|
|
322
351
|
Then /^I load @login from spreadsheet$/ do
|
323
|
-
@login
|
352
|
+
@login = Hash.new
|
324
353
|
@workbook.default_sheet = @workbook.sheets[0]
|
325
354
|
|
326
355
|
script_col = 0
|
@@ -369,10 +398,10 @@ Then /^I load @login from spreadsheet$/ do
|
|
369
398
|
end
|
370
399
|
|
371
400
|
Then /^I load @var from spreadsheet$/ do
|
372
|
-
@var
|
401
|
+
@var = Hash.new
|
373
402
|
@workbook.default_sheet = @workbook.sheets[1]
|
374
|
-
script_col
|
375
|
-
name_col
|
403
|
+
script_col = 0
|
404
|
+
name_col = 0
|
376
405
|
|
377
406
|
1.upto(@workbook.last_column) do |col|
|
378
407
|
header = @workbook.cell(1, col)
|
@@ -391,9 +420,40 @@ Then /^I load @var from spreadsheet$/ do
|
|
391
420
|
end
|
392
421
|
end
|
393
422
|
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
#
|
423
|
+
And(/^I take a screenshot$/) do
|
424
|
+
take_screenshot
|
425
|
+
end
|
426
|
+
|
427
|
+
Before do
|
428
|
+
# unless awetestlib?
|
429
|
+
# manifest_file = File.join(File.dirname(__FILE__), '..', 'manifest.json')
|
430
|
+
# @params = JSON.parse(File.open(manifest_file).read)['params'] #Have access to all params in manifest file
|
431
|
+
# end
|
432
|
+
@text_list = Hash.new()
|
433
|
+
@error_file = File.join(File.dirname(__FILE__), '..', '..', 'error.txt')
|
434
|
+
|
435
|
+
if $step_no.to_i < 3
|
436
|
+
$step_no = 2
|
437
|
+
else
|
438
|
+
$step_no = $step_no + 2
|
439
|
+
end
|
440
|
+
end
|
441
|
+
|
442
|
+
AfterStep() do
|
443
|
+
$step_no = $step_no + 1
|
444
|
+
end
|
445
|
+
|
446
|
+
After do |scenario|
|
447
|
+
if scenario.failed?
|
448
|
+
take_screenshot
|
449
|
+
else
|
450
|
+
$step_no = $step_no - 1
|
451
|
+
end
|
452
|
+
end
|
453
|
+
|
454
|
+
def take_screenshot
|
455
|
+
abc = File.expand_path("../..",File.dirname(__FILE__))
|
456
|
+
file_na = abc.split("/").last
|
457
|
+
file_path = File.join(File.dirname(__FILE__), '..', '..', "#{file_na.to_s}_#{$step_no}.jpg")
|
458
|
+
@browser.screenshot.save(file_path)
|
459
|
+
end
|