awetestlib 0.1.22-x86-mingw32 → 0.1.23-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.yardopts +7 -0
- data/lib/awetestlib/html_report.rb +15 -44
- data/lib/awetestlib/logging.rb +334 -374
- data/lib/awetestlib/regression/browser.rb +61 -71
- data/lib/awetestlib/regression/drag_and_drop.rb +31 -5
- data/lib/awetestlib/regression/find.rb +21 -139
- data/lib/awetestlib/regression/legacy.rb +1175 -1
- data/lib/awetestlib/regression/runner.rb +10 -6
- data/lib/awetestlib/regression/tables.rb +71 -25
- data/lib/awetestlib/regression/user_input.rb +88 -900
- data/lib/awetestlib/regression/utilities.rb +43 -18
- data/lib/awetestlib/regression/validations.rb +165 -248
- data/lib/awetestlib/regression/waits.rb +180 -94
- data/lib/awetestlib/runner.rb +1 -0
- data/lib/awetestlib.rb +3 -1
- data/lib/version.rb +2 -2
- data/test/create_zoho_account1.rb +1 -1
- data/test/login.xls +0 -0
- data/test/login_1.rb +37 -0
- data/test/login_1a.rb +37 -0
- data/test/login_2.rb +32 -0
- data/test/zoho_exercise.rb +21 -0
- metadata +10 -4
@@ -17,9 +17,11 @@ require 'active_support/inflector'
|
|
17
17
|
|
18
18
|
module Awetestlib
|
19
19
|
module Regression
|
20
|
+
# Collects all the components needed to run the script and executes it.
|
20
21
|
class Runner < Awetestlib::Runner
|
21
22
|
|
22
23
|
# order matters here
|
24
|
+
include ActiveSupport::Inflector
|
23
25
|
include Awetestlib::Logging
|
24
26
|
include Awetestlib::Regression::Utilities
|
25
27
|
include Awetestlib::Regression::Browser
|
@@ -97,12 +99,15 @@ module Awetestlib
|
|
97
99
|
@myName = File.basename(options[:script_file]).sub(/\.rb$/, '')
|
98
100
|
|
99
101
|
if options[:output_to_log]
|
100
|
-
|
101
|
-
|
102
|
-
|
102
|
+
log_name = "#{@myName}_#{Time.now.strftime("%Y%m%d%H%M%S")}.log"
|
103
|
+
if options[:log_path_subdir]
|
104
|
+
FileUtils.mkdir options[:log_path_subdir] unless File.directory? options[:log_path_subdir]
|
105
|
+
log_path = options[:log_path_subdir]
|
106
|
+
log_spec = File.join(log_path, log_name)
|
107
|
+
else
|
108
|
+
log_spec = log_name
|
109
|
+
end
|
103
110
|
@myLog = init_logger(log_spec, @myName)
|
104
|
-
#@start_timestamp = Time.now
|
105
|
-
#start_to_log(@start_timestamp)
|
106
111
|
end
|
107
112
|
|
108
113
|
if options[:xls_path]
|
@@ -280,7 +285,6 @@ module Awetestlib
|
|
280
285
|
finish_run
|
281
286
|
@report_class.finish_report(@html_report_file)
|
282
287
|
open_report_file
|
283
|
-
#finish_run
|
284
288
|
@myLog.close if @myLog
|
285
289
|
end
|
286
290
|
|
@@ -5,18 +5,14 @@ module Awetestlib
|
|
5
5
|
module Tables
|
6
6
|
|
7
7
|
|
8
|
-
# Groups: Columns, Rows, Sorting
|
9
|
-
|
10
8
|
def get_index_for_column_head(panel, table_index, strg, desc = '')
|
11
9
|
table = panel.tables[table_index]
|
12
10
|
get_column_index(table, strg, desc, true)
|
13
11
|
end
|
14
12
|
|
15
13
|
def get_column_index(table, strg, desc = '', header = false)
|
16
|
-
|
17
|
-
msg
|
18
|
-
msg << " column containing #{strg}. "
|
19
|
-
msg << " #{desc}" if desc.length > 0
|
14
|
+
msg1 = " header" if header
|
15
|
+
msg = build_message("Get index of ", msg1, " column containing #{strg}. ", desc)
|
20
16
|
rgx = Regexp.new(strg)
|
21
17
|
row_idx = 0
|
22
18
|
index = -1
|
@@ -47,6 +43,13 @@ module Awetestlib
|
|
47
43
|
failed_to_log("Unable to #{msg} '#{$!}'")
|
48
44
|
end
|
49
45
|
|
46
|
+
# Return the index of the last row of the specified table.
|
47
|
+
# @param [Watir::Table] table A reference to the table in question.
|
48
|
+
# @param [Fixnum] pad The number of zeroes to prefix the index to allow correct sorting.
|
49
|
+
# @param [Fixnum] every A number indicating which rows in the table actually carry data if
|
50
|
+
# the table is padded with empty rows. 1 = every row, 2 = every other row, 3 = every third
|
51
|
+
# row, and etc.
|
52
|
+
# @return [Fixnum]
|
50
53
|
def get_index_of_last_row(table, pad = 2, every = 1)
|
51
54
|
index = calc_index(table.row_count, every)
|
52
55
|
index = index.to_s.rjust(pad, '0')
|
@@ -56,12 +59,17 @@ module Awetestlib
|
|
56
59
|
|
57
60
|
alias get_index_for_last_row get_index_of_last_row
|
58
61
|
|
62
|
+
# Return the index of the last row of the specified table containing *strg*
|
63
|
+
# @param [Watir::Table] table A reference to the table in question.
|
64
|
+
# @param [String, Regexp] strg A string or regular expression to search for in the table..
|
65
|
+
# @param [Fixnum] column_index A number indicating which rows the column to focus the search in.
|
66
|
+
# When not supplied, the entire row is searched for *strg*.
|
67
|
+
# @return [Fixnum]
|
59
68
|
def get_index_of_last_row_with_text(table, strg, column_index = nil)
|
60
69
|
debug_to_log("#{__method__}: #{get_callers(5)}")
|
61
|
-
|
62
|
-
msg
|
63
|
-
dbg = "#{__method__}: #{table.id} text by row
|
64
|
-
dbg << "in column #{column_index}" if column_index
|
70
|
+
msg1 = " in column #{column_index}" if column_index
|
71
|
+
msg = build_message("Find last row in table :id=#{table.id} with text '#{strg}'", msg1)
|
72
|
+
dbg = build_message("#{__method__}: #{table.id} text by row", msg1)
|
65
73
|
index = 0
|
66
74
|
found = false
|
67
75
|
at_index = 0
|
@@ -98,6 +106,13 @@ module Awetestlib
|
|
98
106
|
|
99
107
|
alias get_index_for_last_row_with_text get_index_of_last_row_with_text
|
100
108
|
|
109
|
+
# Return the index of the _first_ row of the specified table containing *strg*
|
110
|
+
# @param [Watir::Table] table A reference to the table in question.
|
111
|
+
# @param [String, Regexp] strg A string or regular expression to search for in the table..
|
112
|
+
# @param [Fixnum] column_index A number indicating which rows the column to focus the search in.
|
113
|
+
# When not supplied, the entire row is searched for *strg*.
|
114
|
+
# @param [Boolean] fail_if_found If true log a failure if *strg* _is_ found.
|
115
|
+
# @return [Fixnum] the index of the row containing *strg*
|
101
116
|
def get_index_of_row_with_text(table, strg, column_index = nil, fail_if_found = false)
|
102
117
|
debug_to_log("#{__method__}: #{get_callers(5)}")
|
103
118
|
if fail_if_found
|
@@ -149,6 +164,17 @@ module Awetestlib
|
|
149
164
|
failed_to_log("Unable to #{msg}. '#{$!}'")
|
150
165
|
end
|
151
166
|
|
167
|
+
# Return the index of the _first_ row of the specified table containing *strg* in a text field
|
168
|
+
# identified by *how* and *what*.
|
169
|
+
# @param [Watir::Table] table A reference to the table in question.
|
170
|
+
# @param [String, Regexp] strg A string or regular expression to search for in the table..
|
171
|
+
# @param [Symbol] how The element attribute used to identify the specific element.
|
172
|
+
# Valid values depend on the kind of element.
|
173
|
+
# Common values: :text, :id, :title, :name, :class, :href (:link only)
|
174
|
+
# @param [String, Regexp] what A string or a regular expression to be found in the *how* attribute that uniquely identifies the element.
|
175
|
+
# @param [Fixnum] column_index A number indicating which rows the column to focus the search in.
|
176
|
+
# When not supplied, the entire row is searched for *strg*.
|
177
|
+
# @return [Fixnum] the index of the row containing *strg*
|
152
178
|
def get_index_of_row_with_textfield_value(table, strg, how, what, column_index = nil)
|
153
179
|
msg = "Find row in table :id=#{table.id} with value '#{strg}' in text_field #{how}=>'#{what} "
|
154
180
|
msg << " in column #{column_index}" if column_index
|
@@ -186,6 +212,12 @@ module Awetestlib
|
|
186
212
|
failed_to_log("Unable to #{msg}. '#{$!}'")
|
187
213
|
end
|
188
214
|
|
215
|
+
# Return the index of a table in *browser* containing *strg*. *ordinal* indicates
|
216
|
+
# whether it is the first, second, third, etc. table found with the matching text in *strg*
|
217
|
+
# @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
|
218
|
+
# @param [String, Regexp] strg A string or regular expression to search for in the table..
|
219
|
+
# @param [Fixnum] ordinal A number indicating which matching table will have its index returned.
|
220
|
+
# @return [Fixnum] the index of the table containing *strg*
|
189
221
|
def get_index_for_table_containing_text(browser, strg, ordinal = 1)
|
190
222
|
msg = "Get index for table containing text '#{strg}'"
|
191
223
|
index = 0
|
@@ -210,6 +242,12 @@ module Awetestlib
|
|
210
242
|
failed_to_log("Unable to find index of table containing text '#{strg}' '#{$!}' ")
|
211
243
|
end
|
212
244
|
|
245
|
+
# Return a reference to a table in *browser* containing *strg*. *ordinal* indicates
|
246
|
+
# whether it is the first, second, third, etc. table found with the matching text in *strg*
|
247
|
+
# @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
|
248
|
+
# @param [String, Regexp] strg A string or regular expression to search for in the table..
|
249
|
+
# @param [Fixnum] ordinal A number indicating which matching table will have its index returned.
|
250
|
+
# @return [Watir::Table] the table containing *strg*
|
213
251
|
def get_table_containing_text(browser, strg, ordinal = 1)
|
214
252
|
msg = "Get table #{ordinal} containing text '#{strg}'"
|
215
253
|
index = get_index_for_table_containing_text(browser, strg, ordinal)
|
@@ -272,9 +310,10 @@ module Awetestlib
|
|
272
310
|
failed_to_log("Unable to get content headers. '#{$!}'")
|
273
311
|
end
|
274
312
|
|
275
|
-
|
313
|
+
# @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
|
314
|
+
def count_rows_with_string(browser, table_index, strg)
|
276
315
|
hit = 0
|
277
|
-
|
316
|
+
browser.tables[table_index].each do |row|
|
278
317
|
if get_cell_count(row) >= 1
|
279
318
|
# debug_to_log("#{__method__}: #{row.text}")
|
280
319
|
#TODO this assumes column 1 is a number column
|
@@ -345,11 +384,11 @@ module Awetestlib
|
|
345
384
|
end
|
346
385
|
|
347
386
|
def get_cell_count(row)
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
387
|
+
if $watir_script
|
388
|
+
row.column_count
|
389
|
+
else
|
390
|
+
row.cells.length
|
391
|
+
end
|
353
392
|
end
|
354
393
|
|
355
394
|
def exercise_sorting(browser, columnList, desc = '')
|
@@ -438,7 +477,8 @@ module Awetestlib
|
|
438
477
|
failed_to_log("Unable to verify sort on column '#{strg}'. #{$!}")
|
439
478
|
end
|
440
479
|
|
441
|
-
#
|
480
|
+
# @todo unstub
|
481
|
+
# @private
|
442
482
|
def verify_column_hidden(browser, panel, table_index, column_name)
|
443
483
|
passed_to_log("TEST STUBBED: Column '#{column_name}' is hidden.")
|
444
484
|
return true
|
@@ -469,7 +509,8 @@ module Awetestlib
|
|
469
509
|
# failed_to_log("Unable to verify column '#{column_name}' is hidden: '#{$!}' (#{__LINE__})")
|
470
510
|
end
|
471
511
|
|
472
|
-
#
|
512
|
+
# @todo unstub
|
513
|
+
# @private
|
473
514
|
def verify_column_hidden_temp_ff(browser, data_index, row_index, column_name)
|
474
515
|
passed_to_log("TEST STUBBED: Column '#{column_name}' is hidden.")
|
475
516
|
return true
|
@@ -486,7 +527,8 @@ module Awetestlib
|
|
486
527
|
end
|
487
528
|
end
|
488
529
|
|
489
|
-
#
|
530
|
+
# @todo unstub
|
531
|
+
# @private
|
490
532
|
def verify_column_visible_temp_ff(browser, data_index, row_index, column_name)
|
491
533
|
passed_to_log("TEST STUBBED: Column '#{column_name}' is visible.")
|
492
534
|
return true
|
@@ -502,7 +544,8 @@ module Awetestlib
|
|
502
544
|
end
|
503
545
|
end
|
504
546
|
|
505
|
-
#
|
547
|
+
# @todo unstub
|
548
|
+
# @private
|
506
549
|
def verify_column_visible(browser, panel, table_index, column_name)
|
507
550
|
|
508
551
|
passed_to_log("TEST STUBBED: Column '#{column_name}' is visible.")
|
@@ -528,9 +571,12 @@ module Awetestlib
|
|
528
571
|
failed_to_log("Unable to verify column '#{column_name} is visible': '#{$!}' (#{__LINE__})")
|
529
572
|
end
|
530
573
|
|
531
|
-
|
532
|
-
|
533
|
-
|
574
|
+
# Verify that a table's columns are in the expected order by header names. The table is identified by its *index*
|
575
|
+
# within the container *browser*.
|
576
|
+
# @param [Watir::Browser] browser A reference to the browser window or container element to be tested.
|
577
|
+
def verify_column_order(browser, table_index, header_index, exp_ary)
|
578
|
+
mark_testlevel("Begin #{__method__.to_s.titleize}", 0)
|
579
|
+
row = browser.tables[table_index][header_index]
|
534
580
|
act_ary = get_row_cells_text_as_array(row)
|
535
581
|
|
536
582
|
if exp_ary == act_ary
|
@@ -538,7 +584,7 @@ module Awetestlib
|
|
538
584
|
else
|
539
585
|
failed_to_log("Column order [#{act_ary.join(', ')}] not as expected [#{exp_ary.join(', ')}].")
|
540
586
|
end
|
541
|
-
|
587
|
+
mark_testlevel("End #{__method__.to_s.titleize}", 0)
|
542
588
|
end
|
543
589
|
|
544
590
|
def text_in_table?(browser, how, what, expected, desc = '')
|