awetestlib 0.1.28-x86-mingw32 → 0.1.29pre3-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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ data.tar.gz: 46e7dc87c61d2287263ebcd1d01f86e7252bf8ef
4
+ metadata.gz: 8a25933b192650ddebf8282489bf8408c38ac024
5
+ SHA512:
6
+ data.tar.gz: 2bb1c9ddf6098832cfce5cf82b12ff5347d038edd5af2555212baf0587261017b28460ebb1da3e6a2cf2eab0ee35af77a1e1dc4fd9a75b7244587b01c0c3c37e
7
+ metadata.gz: 16b7fcebb9920d9ac6c4547546d99c48991c0029fe5c0706aba51c9af1f538b994d9901332e7afd81f2c8294d577355fa03b073a19ea8e34743ca0d2e710073c
data/README.md CHANGED
@@ -5,6 +5,8 @@ Run automated regression and mobile tests
5
5
 
6
6
  After completing this guide you will be able to run tests locally from command line or from an IDE
7
7
 
8
+ v0.1.29pre3 fixes an issue with running scripts against Safari on OSX
9
+
8
10
  ------------
9
11
 
10
12
  ## Prerequisites
@@ -44,7 +46,12 @@ Run the following command to see the different usages
44
46
 
45
47
  ### Setup Safari (Mac OS X only)
46
48
 
47
- To setup support for Safari browser, please follow the instructions at [SafariDriver](http://code.google.com/p/selenium/wiki/SafariDriver)
49
+ To setup support for Safari browser, please follow the instructions at [SafariDriver](http://code.google.com/p/selenium/wiki/SafariDriver)
50
+
51
+ It is important to start a selenium-server-standalone process in a terminal session before running Safari scripts.
52
+ When using raw Watir-webdriver for Safari, open the browser with
53
+
54
+ browser = Watir::Browser.new(:remote, :desired_capabilities=>:'safari')
48
55
 
49
56
  ### Setup Chrome
50
57
  To setup support for Google Chrome browser, please download the latest Chromedriver version from [here](http://code.google.com/p/chromedriver/downloads/list)
@@ -32,7 +32,7 @@ Gem::Specification.new do |s|
32
32
  s.add_dependency('nokogiri')
33
33
  s.add_dependency('i18n')
34
34
  s.add_dependency('rb-appscript')
35
- s.add_dependency('json', '1.6.1') #for safari support
35
+ #s.add_dependency('json', '1.6.1') #for safari support
36
36
  s.add_dependency('pry')
37
37
  s.add_dependency('cucumber')
38
38
  s.add_dependency('calabash-cucumber')
@@ -126,7 +126,7 @@ module Awetestlib
126
126
  end
127
127
  strg << " #{message}" if message.length > 0
128
128
  strg << " (#{desc})" if desc.length > 0
129
- strg << " [#{call_line}]"
129
+ strg << " [#{call_line}]" if dbg or @debug_calls
130
130
  strg << "\n#{list.to_yaml}" if dbg or @debug_calls
131
131
  @report_class.add_to_report(strg, "&nbsp", lvl || 1) unless Awetestlib::Runner.nil?
132
132
  log_message(INFO, strg, lvl, nil, 1)
@@ -40,6 +40,7 @@ module Awetestlib
40
40
 
41
41
  # Open a browser based on the command line parameters that identify the browser and
42
42
  # version to use for the test.
43
+ # @note Safari currently supported only on Mac OS X
43
44
  # @example
44
45
  # browser = open_browser('www.google.com')
45
46
  # @param [String, Regexp] url When provided, the browser will go to this url.
@@ -53,10 +54,13 @@ module Awetestlib
53
54
  @myHwnd = @myBrowser.hwnd
54
55
  end
55
56
  when 'FF'
56
- @myBrowser = open_ff_for_version
57
+ @myBrowser = open_ff
57
58
  when 'S'
58
- aBrowser = Watir::Browser.new :safari
59
- @myBrowser = aBrowser
59
+ if USING_OSX
60
+ @myBrowser = open_safari
61
+ else
62
+ raise "Safari is not supported under this operating system #{RUBY_PLATFORM}"
63
+ end
60
64
  when 'C', 'GC'
61
65
  @myBrowser = open_chrome
62
66
  else
@@ -82,18 +86,16 @@ module Awetestlib
82
86
  browser
83
87
  end
84
88
 
85
- # Open FF (Firefox) browser instance.
86
- # @param [Fixnum] version A number designating the version of the browser to be opened.
87
- # @return [Watir::Browser, Firewatir::Browser]
88
- # Returns Firewatir::Browser if target browser is Firefox version less than 4.0
89
- def open_ff_for_version(version = @targetVersion)
90
- browser = Watir::Browser.new :firefox
89
+ # Open Safari browser instance.
90
+ # @note Safari currently supported only on Mac OS X
91
+ # @return [Watir::Browser]
92
+ def open_safari
93
+ browser = Watir::Browser.new(:remote, :desired_capabilities=>:'safari')
91
94
  end
92
95
 
93
96
  # Open FF (Firefox) browser instance under FireWatir.
94
- # @return [Firewatir::Browser]
97
+ # @return [Watir::Browser]
95
98
  def open_ff
96
- # Watir::Browser.default = 'firefox'
97
99
  browser = Watir::Browser.new :firefox
98
100
  end
99
101
 
@@ -502,17 +504,18 @@ module Awetestlib
502
504
  end
503
505
 
504
506
  # Closes main browser session. Misnamed. Usually used at end of script to shut down browser.
505
- def logout(browser, where = @myName, lnbr = __LINE__)
507
+ def close_browser(browser, where = @myName, lnbr = __LINE__)
506
508
  #TODO Firewatir 1.6.5 does not implement .exists for FireWatir::Firefox class
507
509
  debug_to_log("Logging out in #{where} at line #{lnbr}.", lnbr, true)
508
510
  debug_to_log("#{__method__}: browser: #{browser.inspect} (#{__LINE__})")
509
511
 
512
+ url = browser.url
513
+ title = browser.title
514
+
510
515
  if ['FF', 'S'].include?(@browserAbbrev) || browser.exists?
511
516
  case @browserAbbrev
512
517
  when 'FF'
513
518
  if is_browser?(browser)
514
- url = browser.url
515
- title = browser.title
516
519
  debug_to_log("#{__method__}: Firefox browser url: [#{url}]")
517
520
  debug_to_log("#{__method__}: Firefox browser title: [#{title}]")
518
521
  debug_to_log("#{__method__}: Closing browser: #{where} (#{lnbr})")
@@ -525,16 +528,23 @@ module Awetestlib
525
528
 
526
529
  end
527
530
  when 'IE'
528
- hwnd = browser.hwnd
529
- pid = Watir::IE::Process.process_id_from_hwnd(hwnd)
530
- debug_to_log("#{__method__}: Closing browser: hwnd #{hwnd} pid #{pid} #{where} (#{lnbr}) (#{__LINE__})")
531
- browser.close
532
- if browser.exists? and pid > 0 and pid < 538976288 # value of uninitialized memory location
533
- debug_to_log("Retry close browser: hwnd #{hwnd} pid #{pid} #{where} #{lnbr} (#{__LINE__})")
531
+ debug_to_log("#{__method__}: Internet Explorer browser url: [#{url}]")
532
+ debug_to_log("#{__method__}: Internet Explorer browser title: [#{title}]")
533
+ debug_to_log("#{__method__}: Closing browser: #{where} (#{lnbr})")
534
+ if $watir_script
535
+ hwnd = browser.hwnd
536
+ pid = Watir::IE::Process.process_id_from_hwnd(hwnd)
537
+ debug_to_log("#{__method__}: Closing browser: hwnd #{hwnd} pid #{pid} #{where} (#{lnbr}) (#{__LINE__})")
538
+ browser.close
539
+ if browser.exists? and pid > 0 and pid < 538976288 # value of uninitialized memory location
540
+ debug_to_log("Retry close browser: hwnd #{hwnd} pid #{pid} #{where} #{lnbr} (#{__LINE__})")
541
+ browser.close
542
+ end
543
+ if browser.exists? and pid > 0 and pid < 538976288 # value of uninitialized memory location
544
+ kill_browser(browser.hwnd, __LINE__, browser)
545
+ end
546
+ else
534
547
  browser.close
535
- end
536
- if browser.exists? and pid > 0 and pid < 538976288 # value of uninitialized memory location
537
- kill_browser(browser.hwnd, __LINE__, browser)
538
548
  end
539
549
  when 'S'
540
550
  if is_browser?(browser)
@@ -555,9 +565,6 @@ module Awetestlib
555
565
  debug_to_log("Closing browser: #{where} (#{lnbr})")
556
566
  if url and url.length > 1
557
567
  browser.close
558
- #else
559
- #browser = FireWatir::Firefox.attach(:title, title)
560
- #browser.close
561
568
  end
562
569
 
563
570
  end
@@ -565,12 +572,12 @@ module Awetestlib
565
572
  raise "Unsupported browser: '#{@browserAbbrev}'"
566
573
  end
567
574
  end
568
- # rescue => e
569
- # if not e.is_a?(Vapir::WindowGoneException)
570
- # raise e
571
- # end
575
+ rescue
576
+ failed_to_log(unable_to)
572
577
  end
573
578
 
579
+ alias logout close_browser
580
+
574
581
  # Close a browser popup window. Does not apply to modal popups.
575
582
  # @param [Watir::Browser] popup Reference to the popup to be closed
576
583
  def close_new_window_popup(popup)
@@ -2,7 +2,7 @@ module Awetestlib
2
2
  module Regression
3
3
  # Methods for moving and resizing elements, manipulating the mouse, and checking for relative positioning of elements,
4
4
  # including overlap, overlay, etc.
5
- # @note Still experimental. Works with IE but not fully tested with Firefox or Chrome in Windows.
5
+ # @note Still experimental. Works with IE but not fully tested with Firefox or Chrome in Windows using Watir-webdriver.
6
6
  # Not compatible with Mac
7
7
  # Rdoc is work in progress
8
8
  module DragAndDrop
@@ -284,8 +284,9 @@ module Awetestlib
284
284
  [x, y, w, h]
285
285
  end
286
286
 
287
- def drag_and_drop(browser, how, what, delta_x, delta_y, desc = '')
287
+ def drag_and_drop_div(browser, how, what, delta_x, delta_y, desc = '')
288
288
  #TODO: webdriver
289
+ #TODO: assumes element is div
289
290
  msg = "Drag and drop element :#{how}=>#{what} by x=>#{delta_x} y=>#{delta_y}."
290
291
  msg << " #{desc}" if desc.length > 0
291
292
  drag_me = browser.div(how, what)
@@ -293,7 +294,7 @@ module Awetestlib
293
294
  passed_to_log(msg)
294
295
  true
295
296
  rescue
296
- failed_to_log("Unable to #{msg} '#{$!}'")
297
+ failed_to_log(unable_to)
297
298
  end
298
299
 
299
300
  def drag_and_drop(x1, y1, dx, dy, speed=nil)
@@ -112,8 +112,10 @@ module Awetestlib
112
112
  # @param [Fixnum] column_index A number indicating which rows the column to focus the search in.
113
113
  # When not supplied, the entire row is searched for *strg*.
114
114
  # @param [Boolean] fail_if_found If true log a failure if *strg* _is_ found.
115
+ # @param [Fixnum] after_index Forces method to accept hit on *strg* only if it occurs
116
+ # after the row indicated by this argument. When omitted, the first hit is accepted.
115
117
  # @return [Fixnum] the index of the row containing *strg*
116
- def get_index_of_row_with_text(table, strg, column_index = nil, fail_if_found = false)
118
+ def get_index_of_row_with_text(table, strg, column_index = nil, fail_if_found = false, after_index = nil)
117
119
  debug_to_log("#{__method__}: #{get_callers(5)}")
118
120
  if fail_if_found
119
121
  msg = 'No '
@@ -140,8 +142,13 @@ module Awetestlib
140
142
  end
141
143
  dbg << "\n#{index}. [#{text}]"
142
144
  if text =~ /#{strg}/
143
- found = true
144
- break
145
+ if after_index and index > after_index
146
+ found = true
147
+ break
148
+ else
149
+ found = true
150
+ break
151
+ end
145
152
  end
146
153
  end
147
154
  debug_to_log(dbg)
@@ -329,17 +336,18 @@ module Awetestlib
329
336
  hit
330
337
  end
331
338
 
332
- def fetch_array_for_table_column(nc_element, table_index, column_index)
333
- ary = []
334
- nc_element.tables[table_index].each do |row|
339
+ def fetch_array_for_table_column(table, column_index, start_row = 2)
340
+ ary = []
341
+ row_count = 0
342
+ table.each do |row|
343
+ row_count += 1
335
344
  if get_cell_count(row) >= column_index
336
- #TODO this assumes column 1 is a number column
337
- if row[1].text =~ /\d+/
345
+ if row_count >= start_row
338
346
  ary << row[column_index].text
339
347
  end
340
348
  end
341
349
  end
342
- return ary f
350
+ ary
343
351
  end
344
352
 
345
353
  def fetch_hash_for_table_column(table, column_index, start_row = 2)
@@ -487,7 +487,7 @@ module Awetestlib
487
487
  # @param [String] desc Contains a message or description intended to appear in the log and/or report output. Required in this method.
488
488
  # @param [String] valid_value The expected value of the text field, e.g., following reformatting.
489
489
  # @return (see #click)
490
- def set_text_field_and_validate(browser, how, what, value, desc, valid_value = nil)
490
+ def set_text_field_and_validate(browser, how, what, value, valid_value = nil, desc ='')
491
491
  #NOTE: use when value and valid_value differ as with dollar reformatting
492
492
  if set_text_field(browser, how, what, value, desc, true)
493
493
  expected = valid_value ? valid_value : value
@@ -59,6 +59,31 @@ module Awetestlib
59
59
  msg
60
60
  end
61
61
 
62
+ def get_date_names(date = Date.today)
63
+ this_month = date.month
64
+ if this_month == 12
65
+ next_month = 1
66
+ else
67
+ next_month = this_month + 1
68
+ end
69
+ if this_month == 1
70
+ prev_month = 12
71
+ else
72
+ prev_month = this_month - 1
73
+ end
74
+
75
+ month_arr = ['', 'January', 'February', 'March', 'April', 'May', 'June',
76
+ 'July', 'August', 'September', 'October', 'November', 'December']
77
+
78
+ this_month_name = month_arr[this_month]
79
+ next_month_name = month_arr[next_month]
80
+ prev_month_name = month_arr[prev_month]
81
+
82
+ arr = [date.year, date.day, this_month_name, next_month_name, prev_month_name]
83
+ debug_to_log("#{__method__} #{nice_array(arr)}")
84
+ arr
85
+ end
86
+
62
87
  def get_trace(lnbr)
63
88
  callertrace = "\nCaller trace: (#{lnbr})\n"
64
89
  Kernel.caller.each_index do |x|
@@ -286,14 +311,41 @@ module Awetestlib
286
311
  else
287
312
  new_arr = arr
288
313
  end
289
- "['#{new_arr.join("','")}']"
314
+ "['#{new_arr.join("', '")}']"
315
+ end
316
+
317
+ def nice_number(number, decimals = 0, dollars = false)
318
+ number.to_s.gsub!(/[,\$]/, '')
319
+ ptrn = "%0.#{decimals}f"
320
+ ptrn = '$' + ptrn if dollars
321
+ sprintf(ptrn, number).gsub(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1,")
290
322
  end
291
323
 
324
+ def pad_date(dt)
325
+ if dt and dt.length > 0
326
+ a, d1, b, d2, c = dt.split(/([\/\.-])/)
327
+ a = a.rjust(2, '0') unless a and a.length > 1
328
+ b = b.rjust(2, '0') unless b and b.length > 1
329
+ c = c.rjust(2, '0') unless c and c.length > 1
330
+ a + d1 + b + d2 + c
331
+ else
332
+ ''
333
+ end
334
+ end
335
+
292
336
  def string_count_in_string(strg, substrg)
293
337
  count = strg.scan(substrg).length
294
338
  count
295
339
  end
296
340
 
341
+ def strip_regex_mix(strg)
342
+ rslt = strg.dup
343
+ while match = rslt.match(/(\(\?-mix:(.+)\))/)
344
+ rslt.sub!(match[1], "/#{match[2]}/")
345
+ end
346
+ rslt
347
+ end
348
+
297
349
  def rescue_me(e, me = nil, what = nil, where = nil, who = nil)
298
350
  #TODO: these are rescues from exceptions raised in Watir/Firewatir
299
351
  debug_to_log("#{__method__}: Begin rescue")
@@ -834,14 +886,10 @@ module Awetestlib
834
886
  #method for handling file upload dialog
835
887
  #use click_no_wait on the action that triggers the save dialog
836
888
  # TODO need version for Firefox
837
- def file_upload(filepath)
838
- title = 'Choose File'
839
- title = translate_popup_title(title)
840
- text = ''
841
- button = "&Open"
842
- control = "Edit1"
843
- side = 'primary'
844
- msg = "Window title=#{title} button='#{button}' text='#{text}' side='#{side}':"
889
+ def file_upload(filepath, title = 'Choose File', text = '', button = '&Open',
890
+ control = 'Edit1', side = 'primary')
891
+ title = translate_popup_title(title)
892
+ msg = "Window title=#{title} button='#{button}' text='#{text}' side='#{side}':"
845
893
  begin
846
894
  if @ai.WinWait(title, text, WAIT)
847
895
  passed_to_log("#{msg} found.")
@@ -852,7 +900,10 @@ module Awetestlib
852
900
  passed_to_log("#{msg} #{control} command sent.")
853
901
  sleep_for 1
854
902
  if @ai.ControlClick(title, text, button, "primary")
903
+
855
904
  passed_to_log("#{msg} Upload of #{filepath} succeeded.")
905
+
906
+
856
907
  else
857
908
  failed_to_log("#{msg} Upload of #{filepath} failed. (#{__LINE__})")
858
909
  end
@@ -938,10 +989,12 @@ module Awetestlib
938
989
  debug_to_log("#{__method__}: #{method} #{$!}")
939
990
  end
940
991
 
941
- def unable_to(message = '', no_dolbang = false)
992
+ def unable_to(message = '', no_dolbang = false, verify_that = false)
942
993
  call_arr = get_call_array()
943
994
  call_script, call_line, call_meth = parse_caller(call_arr[1])
944
- strg = "Unable to #{call_meth.titleize}:"
995
+ strg = "Unable to"
996
+ strg << " verify" if verify_that
997
+ strg << " #{call_meth.titleize}:"
945
998
  strg << " #{message}" if message.length > 0
946
999
  strg << " '#{$!}'" unless no_dolbang
947
1000
  strg
@@ -982,6 +1035,11 @@ module Awetestlib
982
1035
  [arr.length, arr]
983
1036
  end
984
1037
 
1038
+ def awetestlib?
1039
+ not Awetestlib::Runner.nil?
1040
+ rescue
1041
+ return false
1042
+ end
985
1043
 
986
1044
  end
987
1045
  end
@@ -23,18 +23,18 @@ module Awetestlib
23
23
  msg = build_message("Expected Style #{type} value '#{expected}' in #{element} with #{how} = #{what}", desc)
24
24
  case element
25
25
  when :link
26
- actual = browser.link(how => what).style type
26
+ actual = browser.link(how, what).style type
27
27
  when :button
28
- actual = browser.button(how => what).style type
28
+ actual = browser.button(how, what).style type
29
29
  when :image
30
- actual = browser.image(how => what).style type
30
+ actual = browser.image(how, what).style type
31
31
  when :span
32
- actual = browser.span(how => what).style type
32
+ actual = browser.span(how, what).style type
33
33
  when :div
34
- actual = browser.div(how => what).style type
34
+ actual = browser.div(how, what).style type
35
35
  else
36
- if browser.element(how => what).responds_to?("style")
37
- actual = browser.element(how => what).style type
36
+ if browser.element(how, what).responds_to?("style")
37
+ actual = browser.element(how, what).style type
38
38
  else
39
39
  failed_to_log("#{msg}: Element #{element} does not repond to style command.")
40
40
  end
@@ -46,23 +46,23 @@ module Awetestlib
46
46
  failed_to_log(msg)
47
47
  end
48
48
  rescue
49
- failed_to_log("Unable to verify that #{msg} '#{$!}'")
49
+ failed_to_log(unable_to(msg, false, true))
50
50
  end
51
51
 
52
52
  def validate_style_greater_than_value(browser, element, how, what, type, value, desc = '')
53
53
  case element
54
54
  when :link
55
- actual_value = browser.link(how => what).style type
55
+ actual_value = browser.link(how, what).style type
56
56
  when :button
57
- actual_value = browser.button(how => what).style type
57
+ actual_value = browser.button(how, what).style type
58
58
  when :image
59
- actual_value = browser.image(how => what).style type
59
+ actual_value = browser.image(how, what).style type
60
60
  when :span
61
- actual_value = browser.span(how => what).style type
61
+ actual_value = browser.span(how, what).style type
62
62
  when :div
63
- actual_value = browser.div(how => what).style type
63
+ actual_value = browser.div(how, what).style type
64
64
  else
65
- actual_value = browser.element(how => what).style type
65
+ actual_value = browser.element(how, what).style type
66
66
  end
67
67
  msg = build_message("The CSS value for style #{type} in #{element} :#{how}=>#{what}: '#{actual_value}' is greater than #{value}.", desc)
68
68
 
@@ -74,7 +74,7 @@ module Awetestlib
74
74
  failed_to_log(msg)
75
75
  end
76
76
  rescue
77
- fail_to_log("Unable to verify #{msg} '#{$!}'")
77
+ failed_to_log(unable_to(msg, false, true))
78
78
  # sleep_for(1)
79
79
  end
80
80
 
@@ -83,17 +83,17 @@ module Awetestlib
83
83
  def validate_style_less_than_value(browser, element, how, what, type, value, desc = '')
84
84
  case element
85
85
  when :link
86
- actual_value = browser.link(how => what).style type
86
+ actual_value = browser.link(how, what).style type
87
87
  when :button
88
- actual_value = browser.button(how => what).style type
88
+ actual_value = browser.button(how, what).style type
89
89
  when :image
90
- actual_value = browser.image(how => what).style type
90
+ actual_value = browser.image(how, what).style type
91
91
  when :span
92
- actual_value = browser.span(how => what).style type
92
+ actual_value = browser.span(how, what).style type
93
93
  when :div
94
- actual_value = browser.div(how => what).style type
94
+ actual_value = browser.div(how, what).style type
95
95
  else
96
- actual_value = browser.element(how => what).style type
96
+ actual_value = browser.element(how, what).style type
97
97
  end
98
98
  msg = build_message("The CSS value for style #{type} in #{element} :#{how}=>#{what}: '#{actual_value}' is greater than #{value}.", desc)
99
99
 
@@ -105,7 +105,7 @@ module Awetestlib
105
105
  failed_to_log(msg)
106
106
  end
107
107
  rescue
108
- fail_to_log("Unable to verify #{msg} '#{$!}'")
108
+ failed_to_log(unable_to(msg, false, true))
109
109
  # sleep_for(1)
110
110
  end
111
111
 
@@ -155,7 +155,7 @@ module Awetestlib
155
155
  end
156
156
  rtrn
157
157
  rescue
158
- failed_to_log("#Unable to verify that #{msg}': '#{$!}")
158
+ failed_to_log(unable_to(msg, false, true))
159
159
  end
160
160
 
161
161
  alias validate_enabled enabled?
@@ -189,7 +189,7 @@ module Awetestlib
189
189
  end
190
190
  rtrn
191
191
  rescue
192
- failed_to_log("#Unable to verify that #{msg}: '#{$!}'")
192
+ failed_to_log(unable_to(msg, false, true))
193
193
  end
194
194
 
195
195
  alias validate_not_enabled disabled?
@@ -220,7 +220,7 @@ module Awetestlib
220
220
  end
221
221
  rtrn
222
222
  rescue
223
- failed_to_log("Unable to verify that #{msg}': '#{$!}'")
223
+ failed_to_log(unable_to(msg, false, true))
224
224
  end
225
225
 
226
226
  alias validate_visible visible?
@@ -250,7 +250,7 @@ module Awetestlib
250
250
  end
251
251
  rtrn
252
252
  rescue
253
- failed_to_log("Unable to verify that #{msg}': '#{$!}' #{desc}")
253
+ failed_to_log(unable_to(msg, false, true))
254
254
  end
255
255
 
256
256
  alias validate_not_visible not_visible?
@@ -273,7 +273,7 @@ module Awetestlib
273
273
  failed_to_log(msg)
274
274
  end
275
275
  rescue
276
- failed_to_log("Unable to verify that #{msg}: '#{$!}'")
276
+ failed_to_log(unable_to(msg, false, true))
277
277
  end
278
278
 
279
279
  alias checkbox_checked? checked?
@@ -292,7 +292,7 @@ module Awetestlib
292
292
  failed_to_log(msg)
293
293
  end
294
294
  rescue
295
- failed_to_log("Unable to verify that #{msg}: '#{$!}'")
295
+ failed_to_log(unable_to(msg, false, true))
296
296
  end
297
297
 
298
298
  alias checkbox_checked? checked?
@@ -323,7 +323,7 @@ module Awetestlib
323
323
  failed_to_log("#{msg}? #{desc} [#{get_callers(1)}]")
324
324
  end
325
325
  rescue
326
- failed_to_log("Unable to verify that #{msg}. #{desc} '#{$!}' [#{get_callers(1)}]")
326
+ failed_to_log(unable_to(msg, false, true))
327
327
  end
328
328
 
329
329
  # Verify that a DOM element does not exist on the page.
@@ -345,7 +345,7 @@ module Awetestlib
345
345
  true
346
346
  end
347
347
  rescue
348
- failed_to_log("Unable to verify that #{msg}': '#{$!}' #{desc}")
348
+ failed_to_log(unable_to(msg, false, true))
349
349
  end
350
350
 
351
351
  alias not_exist? does_not_exist?
@@ -355,19 +355,19 @@ module Awetestlib
355
355
  # @return [Boolean] Returns true if the radio button is set.
356
356
  def set?(browser, how, what, desc = '', no_fail = false)
357
357
  #TODO: handle identification of element with value as well as other attribute. see radio_with_value_set?
358
- msg = build_message("Radio #{how}=>#{what} is selected.", desc)
358
+ msg = build_message("Radio #{how}=>#{what} is set.", desc)
359
359
  if browser.radio(how, what).set?
360
360
  passed_to_log(msg)
361
361
  true
362
362
  else
363
363
  if no_fail
364
- passed_to_log("Radio #{how}=>#{what} is not selected.")
364
+ passed_to_log("#{msg}. (Fail suppressed)")
365
365
  else
366
366
  failed_to_log(msg)
367
367
  end
368
368
  end
369
369
  rescue
370
- failed_to_log("Unable to verify taht #{msg}: '#{$!}'")
370
+ failed_to_log(unable_to(msg, false, true))
371
371
  end
372
372
 
373
373
  alias radio_set? set?
@@ -379,19 +379,19 @@ module Awetestlib
379
379
  # @return [Boolean] Returns true if the radio button is not set.
380
380
  def not_set?(browser, how, what, desc = '', no_fail = false)
381
381
  #TODO: handle identification of element with value as well as other attribute. see radio_with_value_set?
382
- msg = build_message("Radio #{how}=>#{what} is not selected.", desc)
382
+ msg = build_message("Radio #{how}=>#{what} is not set.", desc)
383
383
  if not browser.radio(how, what).set?
384
384
  passed_to_log(msg)
385
385
  true
386
386
  else
387
387
  if no_fail
388
- passed_to_log("Radio #{how}=>#{what} is not selected.")
388
+ passed_to_log("#{msg} (Fail suppressed")
389
389
  else
390
390
  failed_to_log(msg)
391
391
  end
392
392
  end
393
393
  rescue
394
- failed_to_log("Unable to verify that #{msg}: '#{$!}'")
394
+ failed_to_log(unable_to(msg, false, true))
395
395
  end
396
396
 
397
397
  alias radio_not_set? not_set?
@@ -491,7 +491,7 @@ module Awetestlib
491
491
  failed_to_log("#{msg}")
492
492
  end
493
493
  rescue
494
- failed_to_log("Unable to #{msg}. #{$!}")
494
+ failed_to_log("Unable to verify #{msg}. #{$!}")
495
495
  end
496
496
 
497
497
  alias validate_string_equal string_equals?
@@ -584,6 +584,7 @@ module Awetestlib
584
584
  # Verify that a DOM element is ready, i.e., both exists and is enabled.
585
585
  # @param (see #exists?)
586
586
  # @return [Boolean] Returns true if the element is ready.
587
+ #TODO: Watir-webdriver support
587
588
  def ready?(browser, element, how, what, value = '', desc = '')
588
589
  msg2 = "and value=>'#{value}' " if value
589
590
  msg = build_message("#{element.to_s.titlecase} with #{how}=>'#{what}' ", msg2, 'exists and is enabled.', desc)
@@ -632,7 +633,7 @@ module Awetestlib
632
633
  end
633
634
  end
634
635
  rescue
635
- failed_to_log("Unable to verify that #{msg}: '#{$!}")
636
+ failed_to_log(unable_to)
636
637
  end
637
638
 
638
639
  alias validate_textfield_value textfield_equals?
@@ -657,7 +658,7 @@ module Awetestlib
657
658
  failed_to_log("#{msg} Contents: '#{contents}'")
658
659
  end
659
660
  rescue
660
- failed_to_log("Unable to verify that #{msg} '#{$!}'")
661
+ failed_to_log(unable_to)
661
662
  end
662
663
 
663
664
  # Verify that a text field (also text area), identified by *how* and *what*, is empty.
@@ -679,7 +680,7 @@ module Awetestlib
679
680
  failed_to_log("#{msg} Contents: '#{contents}'")
680
681
  end
681
682
  rescue
682
- failed_to_log("Unable to verify that #{msg} '#{$!}'")
683
+ failed_to_log(unable_to)
683
684
  end
684
685
 
685
686
  alias validate_textfield_empty textfield_empty?
@@ -721,7 +722,7 @@ module Awetestlib
721
722
  failed_to_log("#{msg} Actual: #{browser.url}")
722
723
  end
723
724
  rescue
724
- failed_to_log("Unable to validate that #{msg} '#{$!}'")
725
+ failed_to_log(unable_to)
725
726
  end
726
727
 
727
728
  # @!endgroup Core
@@ -766,7 +767,7 @@ module Awetestlib
766
767
  failed_to_log(msg)
767
768
  end
768
769
  rescue
769
- failed_to_log("Unable to verify that #{msg}: '#{$!}'. (#{__LINE__})")
770
+ failed_to_log(unable_to)
770
771
  end
771
772
 
772
773
  alias popup_exist popup_is_browser?
@@ -819,19 +820,18 @@ module Awetestlib
819
820
  myText = browser.text
820
821
  end
821
822
  if myText.match(target)
822
- #if myText.match(ptrn)
823
823
  passed_to_log("#{msg}")
824
824
  true
825
825
  else
826
826
  if skip_fail
827
- debug_to_log("#{cls} text does not contain the text: '#{ptrn}'. #{desc}")
827
+ debug_to_log("#{cls} text does not contain the text: '#{ptrn}'. #{desc} (Fail suppressed)")
828
828
  else
829
829
  failed_to_log("#{msg}")
830
830
  end
831
831
  #debug_to_log("\n#{myText}")
832
832
  end
833
833
  rescue
834
- failed_to_log("Unable to verify that #{msg} '#{$!}'")
834
+ failed_to_log(unable_to)
835
835
  end
836
836
 
837
837
  alias validate_link validate_text
@@ -852,16 +852,16 @@ module Awetestlib
852
852
  end
853
853
  end
854
854
  rescue
855
- failed_to_log("Unable to verify #{msg} '#{$!}'")
855
+ failed_to_log(unable_to)
856
856
  end
857
857
 
858
858
  def element_contains_text?(browser, element, how, what, expected, desc = '')
859
859
  msg = build_message("Element #{element} :{how}=>#{what} contains text '#{expected}'.", desc)
860
860
  case how
861
861
  when :href
862
- who = browser.element(how, what)
863
- else
864
862
  who = browser.link(how, what)
863
+ else
864
+ who = browser.element(how, what)
865
865
  end
866
866
  if who
867
867
  text = who.text
@@ -887,22 +887,26 @@ module Awetestlib
887
887
  end
888
888
  end
889
889
  rescue
890
- failed_to_log("Unable to verify #{msg} '#{$!}'")
890
+ failed_to_log(unable_to)
891
891
  end
892
892
 
893
- def validate_select_list(browser, how, what, opt_type, list = nil, multiple = false, ignore = ['Select One'], limit = 5)
894
- mark_testlevel("#{__method__.to_s.titleize} (#{how}=>#{what})", 0)
893
+ def validate_select_list(browser, how, what, opt_type, list = nil, desc= '', multiple = false, ignore = ['Select One'], limit = 5)
894
+ mark_testlevel("(#{how}=>#{what})")
895
+ msg = "Select list #{how}=>#{what}"
895
896
  ok = true
896
897
  select_list = browser.select_list(how, what)
897
898
  options = select_list.options
898
899
  if list
899
900
  if options == list
900
- passed_to_log("Select list options list equals expected list #{list}")
901
+ passed_to_log(build_message(msg, ": options list equals expected list #{list}"))
901
902
  else
902
903
  debug_to_report("actual:\n#{nice_array(options, true)}")
903
904
  debug_to_report("expected:\n#{nice_array(list, true)}")
904
- failed_to_log("Select list options list #{nice_array(options, true)} "+
905
+ failed_to_log(build_message(
906
+ msg,
907
+ ": options list #{nice_array(options, true)}",
905
908
  "does not equal expected list #{nice_array(list, true)}")
909
+ )
906
910
  end
907
911
  end
908
912
 
@@ -926,34 +930,36 @@ module Awetestlib
926
930
  select_option(select_list, opt_type, options[1])
927
931
  select_option(select_list, opt_type, options[2])
928
932
  selected = select_list.selected_options
933
+ msg1 = "#{msg}: selected options equals expected #{nice_array(targets)}."
929
934
  if selected == targets
930
- passed_to_log("Select list selected options equals expected #{targets}")
935
+ passed_to_log(msg1)
931
936
  else
932
- failed_to_log("Select list selected options #{selected} does not equal expected list #{targets.to_a}")
937
+ failed_to_log("#{msg} Found #{nice_array(selected)}")
933
938
  end
934
939
  else
935
- debug_to_log("Too few options to test multiple selection (need 2 or more): '#{options}", __LINE__)
940
+ debug_to_log("#{msg}: Too few options to test multiple selection (need 2 or more): '#{options}")
936
941
  end
937
942
  end
938
943
  rescue
939
- failed_to_log("Unable to validate select_list: '#{$!}'", __LINE__)
944
+ failed_to_log(unable_to)
940
945
  end
941
946
 
942
- def validate_select_list_contents(browser, how, what, list)
943
- mark_testlevel("#{__method__.to_s.titleize} (#{what})", 2)
947
+ def validate_select_list_contents(browser, how, what, list, desc = '')
948
+ mark_testlevel("#{how}=>#{what}", 2)
949
+ msg = build_message("Select list #{how}=>#{what} options list equals", nice_array(list), desc)
944
950
  select_list = browser.select_list(how, what)
945
951
  options = select_list.options
946
952
  if list
947
953
  if options == list
948
- passed_to_log("Select list options list equals expected list #{list}")
954
+ passed_to_log(msg)
949
955
  options
950
956
  else
951
- failed_to_log("Select list options list #{options} does not equal expected list #{list}")
957
+ failed_to_log("#{msg}. Found #{nice_array(options)}")
952
958
  nil
953
959
  end
954
960
  end
955
961
  rescue
956
- failed_to_log("Unable to validate select_list contents: '#{$!}'", __LINE__)
962
+ failed_to_log(unable_to)
957
963
  end
958
964
 
959
965
  def validate_selected_options(browser, how, what, list, desc = '')
@@ -984,7 +990,7 @@ module Awetestlib
984
990
  end
985
991
 
986
992
  rescue
987
- failed_to_log("Unable to validate selected option(s): '#{$!}' #{desc}", __LINE__)
993
+ failed_to_log(unable_to)
988
994
  end
989
995
 
990
996
  alias validate_selections validate_selected_options
@@ -1036,7 +1042,7 @@ module Awetestlib
1036
1042
  true
1037
1043
  end
1038
1044
  rescue
1039
- failed_to_log("Unable to verify that #{msg}: '#{$!}'")
1045
+ failed_to_log(unable_to)
1040
1046
  end
1041
1047
 
1042
1048
  def textfield_does_not_equal?(browser, how, what, expected, desc = '')
@@ -1048,11 +1054,24 @@ module Awetestlib
1048
1054
  failed_to_log(msg)
1049
1055
  end
1050
1056
  rescue
1051
- failed_to_log("Unable to validate that #{msg}: '#{$!}'")
1057
+ failed_to_log(unable_to)
1052
1058
  end
1053
1059
 
1054
1060
  alias validate_textfield_not_value textfield_does_not_equal?
1055
1061
 
1062
+ def verify_class(browser, element, how, what, strg, desc = '')
1063
+ msg = build_message("#{element} :#{how}=>#{what} :class contains '#{strg}'", desc)
1064
+ class_strg = browser.element(how, what).class_name
1065
+ if class_strg =~ /#{strg}/
1066
+ passed_to_log(msg)
1067
+ true
1068
+ else
1069
+ failed_to_log(msg)
1070
+ end
1071
+ rescue
1072
+ failed_to_log(unable_to)
1073
+ end
1074
+
1056
1075
  # @!endgroup Core
1057
1076
 
1058
1077
  # @!group Deprecated
data/lib/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Awetestlib
2
- VERSION = "0.1.28"
3
- VERSION_DATE = "2013-03-05"
2
+ VERSION = "0.1.29pre3"
3
+ VERSION_DATE = "2013-03-26"
4
4
  end
data/test/demo_wwd.rb ADDED
@@ -0,0 +1,7 @@
1
+ require 'rubygems'
2
+ require 'watir-webdriver'
3
+
4
+ b=Watir::Browser.new(:remote, :desired_capabilities=>:'safari')
5
+ b.goto("www.google.com")
6
+ b.text_field(:name ,"q").set("3qilabs")
7
+ b.button(:name,"btnG").click
metadata CHANGED
@@ -1,13 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awetestlib
3
3
  version: !ruby/object:Gem::Version
4
- hash: 35
5
- prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 28
10
- version: 0.1.28
4
+ version: 0.1.29pre3
11
5
  platform: x86-mingw32
12
6
  authors:
13
7
  - Anthony Woo
@@ -16,19 +10,16 @@ autorequire:
16
10
  bindir: bin
17
11
  cert_chain: []
18
12
 
19
- date: 2013-03-05 00:00:00 Z
13
+ date: 2013-03-26 00:00:00 Z
20
14
  dependencies:
21
15
  - !ruby/object:Gem::Dependency
22
16
  name: watir-webdriver
23
17
  prerelease: false
24
18
  requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
19
  requirements:
27
- - - ">="
20
+ - &id006
21
+ - ">="
28
22
  - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
23
  version: "0"
33
24
  type: :runtime
34
25
  version_requirements: *id001
@@ -36,15 +27,9 @@ dependencies:
36
27
  name: watir
37
28
  prerelease: false
38
29
  requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
30
  requirements:
41
31
  - - "="
42
32
  - !ruby/object:Gem::Version
43
- hash: 53
44
- segments:
45
- - 1
46
- - 8
47
- - 1
48
33
  version: 1.8.1
49
34
  type: :runtime
50
35
  version_requirements: *id002
@@ -52,15 +37,9 @@ dependencies:
52
37
  name: commonwatir
53
38
  prerelease: false
54
39
  requirement: &id003 !ruby/object:Gem::Requirement
55
- none: false
56
40
  requirements:
57
41
  - - "="
58
42
  - !ruby/object:Gem::Version
59
- hash: 53
60
- segments:
61
- - 1
62
- - 8
63
- - 1
64
43
  version: 1.8.1
65
44
  type: :runtime
66
45
  version_requirements: *id003
@@ -68,15 +47,9 @@ dependencies:
68
47
  name: firewatir
69
48
  prerelease: false
70
49
  requirement: &id004 !ruby/object:Gem::Requirement
71
- none: false
72
50
  requirements:
73
51
  - - "="
74
52
  - !ruby/object:Gem::Version
75
- hash: 53
76
- segments:
77
- - 1
78
- - 8
79
- - 1
80
53
  version: 1.8.1
81
54
  type: :runtime
82
55
  version_requirements: *id004
@@ -84,211 +57,128 @@ dependencies:
84
57
  name: activesupport
85
58
  prerelease: false
86
59
  requirement: &id005 !ruby/object:Gem::Requirement
87
- none: false
88
60
  requirements:
89
61
  - - ~>
90
62
  - !ruby/object:Gem::Version
91
- hash: 7
92
- segments:
93
- - 3
94
- - 0
95
- - 0
96
63
  version: 3.0.0
97
64
  type: :runtime
98
65
  version_requirements: *id005
99
66
  - !ruby/object:Gem::Dependency
100
67
  name: i18n
101
68
  prerelease: false
102
- requirement: &id006 !ruby/object:Gem::Requirement
103
- none: false
69
+ requirement: &id007 !ruby/object:Gem::Requirement
104
70
  requirements:
105
- - - ">="
106
- - !ruby/object:Gem::Version
107
- hash: 3
108
- segments:
109
- - 0
110
- version: "0"
71
+ - *id006
111
72
  type: :runtime
112
- version_requirements: *id006
73
+ version_requirements: *id007
113
74
  - !ruby/object:Gem::Dependency
114
75
  name: andand
115
76
  prerelease: false
116
- requirement: &id007 !ruby/object:Gem::Requirement
117
- none: false
77
+ requirement: &id008 !ruby/object:Gem::Requirement
118
78
  requirements:
119
- - - ">="
120
- - !ruby/object:Gem::Version
121
- hash: 3
122
- segments:
123
- - 0
124
- version: "0"
79
+ - *id006
125
80
  type: :runtime
126
- version_requirements: *id007
81
+ version_requirements: *id008
127
82
  - !ruby/object:Gem::Dependency
128
83
  name: watirloo
129
84
  prerelease: false
130
- requirement: &id008 !ruby/object:Gem::Requirement
131
- none: false
85
+ requirement: &id009 !ruby/object:Gem::Requirement
132
86
  requirements:
133
- - - ">="
134
- - !ruby/object:Gem::Version
135
- hash: 3
136
- segments:
137
- - 0
138
- version: "0"
87
+ - *id006
139
88
  type: :runtime
140
- version_requirements: *id008
89
+ version_requirements: *id009
141
90
  - !ruby/object:Gem::Dependency
142
91
  name: win32-process
143
92
  prerelease: false
144
- requirement: &id009 !ruby/object:Gem::Requirement
145
- none: false
93
+ requirement: &id010 !ruby/object:Gem::Requirement
146
94
  requirements:
147
95
  - - "="
148
96
  - !ruby/object:Gem::Version
149
- hash: 11
150
- segments:
151
- - 0
152
- - 6
153
- - 6
154
97
  version: 0.6.6
155
98
  type: :runtime
156
- version_requirements: *id009
99
+ version_requirements: *id010
157
100
  - !ruby/object:Gem::Dependency
158
101
  name: win32screenshot
159
102
  prerelease: false
160
- requirement: &id010 !ruby/object:Gem::Requirement
161
- none: false
103
+ requirement: &id011 !ruby/object:Gem::Requirement
162
104
  requirements:
163
- - - ">="
164
- - !ruby/object:Gem::Version
165
- hash: 3
166
- segments:
167
- - 0
168
- version: "0"
105
+ - *id006
169
106
  type: :runtime
170
- version_requirements: *id010
107
+ version_requirements: *id011
171
108
  - !ruby/object:Gem::Dependency
172
109
  name: spreadsheet
173
110
  prerelease: false
174
- requirement: &id011 !ruby/object:Gem::Requirement
175
- none: false
111
+ requirement: &id012 !ruby/object:Gem::Requirement
176
112
  requirements:
177
113
  - - "="
178
114
  - !ruby/object:Gem::Version
179
- hash: 23
180
- segments:
181
- - 0
182
- - 6
183
- - 8
184
115
  version: 0.6.8
185
116
  type: :runtime
186
- version_requirements: *id011
117
+ version_requirements: *id012
187
118
  - !ruby/object:Gem::Dependency
188
119
  name: google-spreadsheet-ruby
189
120
  prerelease: false
190
- requirement: &id012 !ruby/object:Gem::Requirement
191
- none: false
121
+ requirement: &id013 !ruby/object:Gem::Requirement
192
122
  requirements:
193
123
  - - "="
194
124
  - !ruby/object:Gem::Version
195
- hash: 23
196
- segments:
197
- - 0
198
- - 1
199
- - 6
200
125
  version: 0.1.6
201
126
  type: :runtime
202
- version_requirements: *id012
127
+ version_requirements: *id013
203
128
  - !ruby/object:Gem::Dependency
204
129
  name: roo
205
130
  prerelease: false
206
- requirement: &id013 !ruby/object:Gem::Requirement
207
- none: false
131
+ requirement: &id014 !ruby/object:Gem::Requirement
208
132
  requirements:
209
133
  - - "="
210
134
  - !ruby/object:Gem::Version
211
- hash: 61
212
- segments:
213
- - 1
214
- - 10
215
- - 1
216
135
  version: 1.10.1
217
136
  type: :runtime
218
- version_requirements: *id013
137
+ version_requirements: *id014
219
138
  - !ruby/object:Gem::Dependency
220
139
  name: selenium-webdriver
221
140
  prerelease: false
222
- requirement: &id014 !ruby/object:Gem::Requirement
223
- none: false
141
+ requirement: &id015 !ruby/object:Gem::Requirement
224
142
  requirements:
225
- - - ">="
226
- - !ruby/object:Gem::Version
227
- hash: 3
228
- segments:
229
- - 0
230
- version: "0"
143
+ - *id006
231
144
  type: :runtime
232
- version_requirements: *id014
145
+ version_requirements: *id015
233
146
  - !ruby/object:Gem::Dependency
234
147
  name: pry
235
148
  prerelease: false
236
- requirement: &id015 !ruby/object:Gem::Requirement
237
- none: false
149
+ requirement: &id016 !ruby/object:Gem::Requirement
238
150
  requirements:
239
- - - ">="
240
- - !ruby/object:Gem::Version
241
- hash: 3
242
- segments:
243
- - 0
244
- version: "0"
151
+ - *id006
245
152
  type: :runtime
246
- version_requirements: *id015
153
+ version_requirements: *id016
247
154
  - !ruby/object:Gem::Dependency
248
155
  name: rdoc
249
156
  prerelease: false
250
- requirement: &id016 !ruby/object:Gem::Requirement
251
- none: false
157
+ requirement: &id017 !ruby/object:Gem::Requirement
252
158
  requirements:
253
159
  - - ~>
254
160
  - !ruby/object:Gem::Version
255
- hash: 17
256
- segments:
257
- - 3
258
- - 11
259
161
  version: "3.11"
260
162
  type: :runtime
261
- version_requirements: *id016
163
+ version_requirements: *id017
262
164
  - !ruby/object:Gem::Dependency
263
165
  name: cucumber
264
166
  prerelease: false
265
- requirement: &id017 !ruby/object:Gem::Requirement
266
- none: false
167
+ requirement: &id018 !ruby/object:Gem::Requirement
267
168
  requirements:
268
- - - ">="
269
- - !ruby/object:Gem::Version
270
- hash: 3
271
- segments:
272
- - 0
273
- version: "0"
169
+ - *id006
274
170
  type: :runtime
275
- version_requirements: *id017
171
+ version_requirements: *id018
276
172
  - !ruby/object:Gem::Dependency
277
173
  name: calabash-android
278
174
  prerelease: false
279
- requirement: &id018 !ruby/object:Gem::Requirement
280
- none: false
175
+ requirement: &id019 !ruby/object:Gem::Requirement
281
176
  requirements:
282
177
  - - "="
283
178
  - !ruby/object:Gem::Version
284
- hash: 11
285
- segments:
286
- - 0
287
- - 4
288
- - 2
289
179
  version: 0.4.2
290
180
  type: :runtime
291
- version_requirements: *id018
181
+ version_requirements: *id019
292
182
  description: Awetest DSL for automated testing of browser-based applications.
293
183
  email: patrick@3qilabs.com
294
184
  executables:
@@ -388,6 +278,7 @@ files:
388
278
  - test/create_zoho_account1.rb
389
279
  - test/create_zoho_account2.rb
390
280
  - test/demo.rb
281
+ - test/demo_wwd.rb
391
282
  - test/google_search1.rb
392
283
  - test/google_search2.rb
393
284
  - test/login.xls
@@ -401,35 +292,28 @@ files:
401
292
  homepage: http://3qilabs.com
402
293
  licenses: []
403
294
 
295
+ metadata: {}
296
+
404
297
  post_install_message:
405
298
  rdoc_options: []
406
299
 
407
300
  require_paths:
408
301
  - lib
409
302
  required_ruby_version: !ruby/object:Gem::Requirement
410
- none: false
411
303
  requirements:
412
- - - ">="
413
- - !ruby/object:Gem::Version
414
- hash: 3
415
- segments:
416
- - 0
417
- version: "0"
304
+ - *id006
418
305
  required_rubygems_version: !ruby/object:Gem::Requirement
419
- none: false
420
306
  requirements:
421
- - - ">="
307
+ - - ">"
422
308
  - !ruby/object:Gem::Version
423
- hash: 3
424
- segments:
425
- - 0
426
- version: "0"
309
+ version: 1.3.1
427
310
  requirements: []
428
311
 
429
312
  rubyforge_project:
430
- rubygems_version: 1.8.11
313
+ rubygems_version: 2.0.3
431
314
  signing_key:
432
- specification_version: 3
315
+ specification_version: 4
433
316
  summary: Awetest DSL for automated testing of browser-based applications.
434
317
  test_files: []
435
318
 
319
+ has_rdoc: