awetestlib 0.1.28-x86-mingw32 → 0.1.29pre3-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
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: