rwebspec 1.9 → 1.9.2

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/CHANGELOG CHANGED
@@ -1,9 +1,15 @@
1
1
  CHANGELOG
2
2
  =========
3
+ 1.9.2
4
+ [] TestWise 2
5
+
6
+ 1.9.1
7
+ [Fix] test_utils sentences and paragraphs
8
+
3
9
  1.9
4
10
  [Upgrade] support Watir 2 syntax
5
- alias tr row
6
- alias a link
11
+ [Update] alias tr row
12
+ [Update] alias a link
7
13
 
8
14
 
9
15
  1.8.2
data/Rakefile CHANGED
@@ -70,9 +70,9 @@ end
70
70
  spec = Gem::Specification.new do |s|
71
71
  s.platform= Gem::Platform::RUBY
72
72
  s.name = "rwebspec"
73
- s.version = "1.9"
73
+ s.version = "1.9.2"
74
74
  s.summary = "Executable functional specification for web applications in RSpec syntax and Watir"
75
- # s.description = ""
75
+ s.description = "Executable functional specification for web applications in RSpec syntax and Watir"
76
76
 
77
77
  s.author = "Zhimin Zhan"
78
78
  s.email = "zhimin@agileway.com.au"
@@ -91,7 +91,7 @@ spec = Gem::Specification.new do |s|
91
91
  s.files = s.files + Dir.glob( "docs/**/*" )
92
92
  s.add_dependency(%q<rspec>, ["= 1.1.12"])
93
93
 
94
- s.add_dependency("commonwatir", ">= 1.8.1")
94
+ s.add_dependency("commonwatir", ">= 2.0")
95
95
  end
96
96
 
97
97
  Rake::GemPackageTask.new(spec) do |pkg|
@@ -41,6 +41,7 @@ module RWebSpec
41
41
  puts "Unicode may not work in IE, #{e}"
42
42
  end
43
43
 
44
+ base_url ||= $TESTWISE_PROJECT_BASE_URL
44
45
  base_url ||= $ITEST2_PROJECT_BASE_URL
45
46
  base_url ||= $BASE_URL
46
47
  raise "base_url must be set" if base_url.nil?
@@ -53,8 +54,8 @@ module RWebSpec
53
54
  :go => true}
54
55
 
55
56
  options = default_options.merge options
56
- options[:firefox] = true if "Firefox" == $ITEST2_BROWSER || "Firefox" == $BROWSER
57
- ($ITEST2_HIDE_BROWSER) ? $HIDE_IE = true : $HIDE_IE = false
57
+ options[:firefox] = true if "Firefox" == $ITEST2_BROWSER || "Firefox" == $TESTWISE_BROWSER || "Firefox" == $BROWSER
58
+ ($TESTWISE_HIDE_BROWSER || $ITEST2_HIDE_BROWSER) ? $HIDE_IE = true : $HIDE_IE = false
58
59
 
59
60
  if base_url =~ /^file:/
60
61
  uri_base = base_url
@@ -196,7 +197,7 @@ module RWebSpec
196
197
  if url && url =~ /^http/
197
198
  http_response = client.get(url).body
198
199
  else
199
- base_url = $ITEST2_PROJECT_BASE_URL || $BASE_URL
200
+ base_url = $TESTWISE_PROJECT_BASE_URL || $ITEST2_PROJECT_BASE_URL || $BASE_URL
200
201
  http_response = client.get("#{base_url}#{url}").body
201
202
  end
202
203
 
@@ -397,14 +398,14 @@ module RWebSpec
397
398
  end
398
399
 
399
400
  def default_dump_dir
400
- if $ITEST2_RUNNING_SPEC_ID && $ITEST2_WORKING_DIR
401
+ if ($TESTWISE_RUNNING_SPEC_ID && $TESTWISE_WORKING_DIR) || ($ITEST2_RUNNING_SPEC_ID && $ITEST2_WORKING_DIR)
401
402
 
402
- $ITEST2_DUMP_DIR = File.join($ITEST2_WORKING_DIR, "dump")
403
+ $TESTWISE_DUMP_DIR = $ITEST2_DUMP_DIR = File.join($ITEST2_WORKING_DIR, "dump")
403
404
  FileUtils.mkdir($ITEST2_DUMP_DIR) unless File.exists?($ITEST2_DUMP_DIR)
404
405
 
405
- spec_run_id = $ITEST2_RUNNING_SPEC_ID
406
+ spec_run_id = $TESTWISE_RUNNING_SPEC_ID || $ITEST2_RUNNING_SPEC_ID
406
407
  spec_run_dir_name = spec_run_id.to_s.rjust(4, "0") unless spec_run_id == "unknown"
407
- to_dir = File.join($ITEST2_DUMP_DIR, spec_run_dir_name)
408
+ to_dir = File.join($TESTWISE_DUMP_DIR, spec_run_dir_name)
408
409
  else
409
410
  to_dir = ENV['TEMP_DIR'] || (is_windows? ? "C:\\temp" : "/tmp")
410
411
  end
@@ -973,29 +974,6 @@ module RWebSpec
973
974
  end
974
975
  end
975
976
 
976
- # take_screenshot to save the current active window
977
- # TODO can't move mouse
978
- def take_screenshot_old
979
- if is_windows? && $ITEST2_DUMP_PAGE
980
- begin
981
- puts "[DEBUG] Capturing screenshots..."
982
- screenshot_image_filename = "rwebspec_" + Time.now.strftime("%m%d%H%M%S") + ".jpg"
983
- the_dump_dir = default_dump_dir
984
- FileUtils.mkdir_p(the_dump_dir) unless File.exists?(the_dump_dir)
985
- screenshot_image_filepath = File.join(the_dump_dir, screenshot_image_filename)
986
-
987
- screenshot_image_filepath.gsub!("/", "\\") if is_windows?
988
- screen_capture(screenshot_image_filepath, true)
989
-
990
- notify_screenshot_location(screenshot_image_filepath)
991
- rescue
992
- puts "error: #{Failed to capture screen}"
993
- end
994
- end
995
- end
996
-
997
-
998
-
999
977
  # use win32screenshot library to save curernt active window, which shall be IE
1000
978
  #
1001
979
  def take_screenshot
@@ -80,7 +80,7 @@ module RWebSpec
80
80
 
81
81
  # When running
82
82
  def debugging?
83
- $ITEST2_DEBUGGING && $ITEST2_RUNNING_AS == "test_case"
83
+ ($ITEST2_DEBUGGING && $ITEST2_RUNNING_AS == "test_case") || ($TESTWISE_DEBUGGING && $TESTWISE_RUNNING_AS == "test_case")
84
84
  end
85
85
 
86
86
  # RSpec Matchers
@@ -133,7 +133,11 @@ module RWebSpec
133
133
  # Generate a given number of words. If a range is passed, it will generate
134
134
  # a random number of words within that range.
135
135
  def words(total)
136
- (1..interpret_value(total)).map { WORDS[random_number(0, total)] }.join(' ')
136
+ if total.class == Range
137
+ (1..interpret_value(total)).map { WORDS[random_number(total.min, total.max)] }.join(' ')
138
+ else
139
+ (1..interpret_value(total)).map { WORDS[random_number(0, total)] }.join(' ')
140
+ end
137
141
  end
138
142
 
139
143
  # Generate a given number of sentences. If a range is passed, it will generate
@@ -1,83 +1,93 @@
1
- require 'socket'
2
-
3
- module RWebSpec
4
- module TestWisePlugin
5
-
6
- def debug(message)
7
- connect_to_testwise(" DEBUG", message.to_s + "\r\n") if $RUN_IN_TESTWISE && message
8
- end
9
-
10
-
11
- # Support of iTest to ajust the intervals between keystroke/mouse operations
12
- def operation_delay
13
- begin
14
- if $ITEST2_OPERATION_DELAY && $ITEST2_OPERATION_DELAY > 0 &&
15
- $ITEST2_OPERATION_DELAY && $ITEST2_OPERATION_DELAY < 30000 then # max 30 seconds
16
- sleep($ITEST2_OPERATION_DELAY / 1000)
17
- end
18
-
19
- while $ITEST2_PAUSE
20
- debug("Paused, waiting ...")
21
- sleep 1
22
- end
23
- rescue => e
24
- puts "Error on delaying: #{e}"
25
- # ignore
26
- end
27
- end
28
-
29
- def notify_screenshot_location(image_file_path)
30
- connect_to_testwise(" SHOT", image_file_path)
31
- end
32
-
33
- # find out the line (and file) the execution is on, and notify iTest via Socket
34
- def dump_caller_stack
35
- return unless $ITEST2_TRACE_EXECUTION
36
- begin
37
- trace_lines = []
38
- trace_file = nil
39
- found_first_spec_reference = false
40
- caller.each_with_index do |position, idx|
41
- next unless position =~ /\A(.*?):(\d+)/
42
- trace_file = $1
43
- if trace_file =~ /(_spec|_test|_rwebspec)\.rb\s*$/
44
- found_first_spec_reference = true
45
- trace_lines << position
46
- break
47
- end
48
- trace_lines << position
49
- break if trace_file =~ /example\/example_methods\.rb$/ or trace_file =~ /example\/example_group_methods\.rb$/
50
- break if trace_lines.size > 10
51
- # TODO: send multiple trace to be parse with pages.rb
52
- # break if trace_file =~ /example\/example_methods\.rb$/ or trace_file =~ /example\/example_group_methods\.rb$/ or trace_file =~ /driver\.rb$/ or trace_file =~ /timeout\.rb$/ # don't include rspec or ruby trace
53
- end
54
-
55
- # (trace_file.include?("_spec.rb") || trace_file.include?("_rwebspec.rb") || trace_file.include?("_test.rb") || trace_file.include?("_cmd.rb"))
56
- if !trace_lines.empty?
57
- connect_to_testwise(" TRACE", trace_lines.reverse.join("|"))
58
- end
59
-
60
- rescue => e
61
- puts "failed to capture log: #{e}"
62
- end
63
- end
64
-
65
-
66
- def connect_to_testwise (message_type, body)
67
- begin
68
- the_message = message_type + "|" + body
69
- if @last_message == the_message then # ignore the message same as preivous one
70
- return
71
- end
72
- itest_port = $ITEST2_TRACE_PORT || 7025
73
- itest_socket = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
74
- itest_socket.connect(Socket.pack_sockaddr_in(itest_port, '127.0.0.1'))
75
- itest_socket.puts(the_message)
76
- @last_message = the_message
77
- itest_socket.close
78
- rescue => e
79
- end
80
- end
81
-
82
- end
1
+ require 'socket'
2
+
3
+ module RWebSpec
4
+ module TestWisePlugin
5
+
6
+ def debug(message)
7
+ Thread.pass
8
+ connect_to_testwise(" DEBUG", message.to_s + "\r\n") if $RUN_IN_TESTWISE && message
9
+ end
10
+
11
+
12
+ # Support of iTest to ajust the intervals between keystroke/mouse operations
13
+ def operation_delay
14
+ begin
15
+ if $ITEST2_OPERATION_DELAY && $ITEST2_OPERATION_DELAY > 0 &&
16
+ $ITEST2_OPERATION_DELAY < 30000 then # max 30 seconds
17
+ Thread.pass
18
+ sleep($ITEST2_OPERATION_DELAY / 1000)
19
+ end
20
+
21
+ if $TESTWISE_OPERATION_DELAY && $TESTWISE_OPERATION_DELAY > 0 &&
22
+ $TESTWISE_OPERATION_DELAY < 30000 then # max 30 seconds
23
+ Thread.pass
24
+ sleep($TESTWISE_OPERATION_DELAY / 1000)
25
+ end
26
+
27
+ while $TESTWISE_PAUSE || $ITEST2_PAUSE
28
+ Thread.pass
29
+ debug("Paused, waiting ...")
30
+ sleep 1
31
+ end
32
+ rescue => e
33
+ puts "Error on delaying: #{e}"
34
+ # ignore
35
+ end
36
+ end
37
+
38
+ def notify_screenshot_location(image_file_path)
39
+ connect_to_testwise(" SHOT", image_file_path)
40
+ end
41
+
42
+ # find out the line (and file) the execution is on, and notify iTest via Socket
43
+ def dump_caller_stack
44
+ return unless ($TESTWISE_TRACE_EXECUTION || $ITEST2_TRACE_EXECUTION)
45
+ begin
46
+ trace_lines = []
47
+ trace_file = nil
48
+ found_first_spec_reference = false
49
+ caller.each_with_index do |position, idx|
50
+ next unless position =~ /\A(.*?):(\d+)/
51
+ trace_file = $1
52
+ if trace_file =~ /(_spec|_test|_rwebspec)\.rb\s*$/ || trace_file =~ /\.feature$/
53
+ found_first_spec_reference = true
54
+ trace_lines << position
55
+ break
56
+ end
57
+ trace_lines << position
58
+ break if trace_file =~ /example\/example_methods\.rb$/ or trace_file =~ /example\/example_group_methods\.rb$/
59
+ break if trace_lines.size > 10
60
+ # TODO: send multiple trace to be parse with pages.rb
61
+ # break if trace_file =~ /example\/example_methods\.rb$/ or trace_file =~ /example\/example_group_methods\.rb$/ or trace_file =~ /driver\.rb$/ or trace_file =~ /timeout\.rb$/ # don't include rspec or ruby trace
62
+ end
63
+
64
+ # (trace_file.include?("_spec.rb") || trace_file.include?("_rwebspec.rb") || trace_file.include?("_test.rb") || trace_file.include?("_cmd.rb"))
65
+ if !trace_lines.empty?
66
+ connect_to_testwise(" TRACE", trace_lines.reverse.join("|"))
67
+ end
68
+
69
+ rescue => e
70
+ puts "failed to capture log: #{e}"
71
+ end
72
+ end
73
+
74
+
75
+ def connect_to_testwise (message_type, body)
76
+ Thread.pass
77
+ begin
78
+ the_message = message_type + "|" + body
79
+ if @last_message == the_message then # ignore the message same as preivous one
80
+ return
81
+ end
82
+ itest_port = $TESTWISE_TRACE_PORT || $ITEST2_TRACE_PORT || 7025
83
+ itest_socket = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
84
+ itest_socket.connect(Socket.pack_sockaddr_in(itest_port, '127.0.0.1'))
85
+ itest_socket.puts(the_message)
86
+ @last_message = the_message
87
+ itest_socket.close
88
+ rescue => e
89
+ end
90
+ end
91
+
92
+ end
83
93
  end
@@ -111,24 +111,16 @@ module RWebSpec
111
111
  end
112
112
 
113
113
  def initialize_ie_browser(existing_browser, options)
114
- if existing_browser then
115
- @browser = existing_browser
116
- if $ITEST2_EMULATE_TYPING && $ITEST2_TYPING_SPEED then
117
- @browser.set_slow_speed if $ITEST2_TYPING_SPEED == 'slow'
118
- @browser.set_fast_speed if $ITEST2_TYPING_SPEED == 'fast'
119
- else
120
- @browser.speed = :zippy
121
- end
122
- return
123
- end
124
-
125
- @browser = Watir::IE.new
126
- if $ITEST2_EMULATE_TYPING && $ITEST2_TYPING_SPEED then
127
- @browser.set_slow_speed if $ITEST2_TYPING_SPEED == 'slow'
128
- @browser.set_fast_speed if $ITEST2_TYPING_SPEED == 'fast'
114
+ @browser = existing_browser || Watir::IE.new
115
+ if ($TESTWISE_EMULATE_TYPING && $TESTWISE_TYPING_SPEED) || ($ITEST2_EMULATE_TYPING && $ITEST2_TYPING_SPEED) then
116
+ @browser.set_slow_speed if $TESTWISE_TYPING_SPEED == "slow" || $ITEST2_TYPING_SPEED == 'slow'
117
+ @browser.set_fast_speed if $TESTWISE_TYPING_SPEED == 'fast' || $ITEST2_TYPING_SPEED == 'fast'
129
118
  else
130
119
  @browser.speed = :zippy
131
120
  end
121
+
122
+ return if existing_browser
123
+
132
124
  @browser.activeObjectHighLightColor = options[:highlight_colour]
133
125
  @browser.visible = options[:visible] unless $HIDE_IE
134
126
  #NOTE: close_others fails
@@ -144,7 +136,7 @@ module RWebSpec
144
136
  end
145
137
 
146
138
  def self.reuse(base_url, options)
147
- if self.is_windows? && $ITEST2_BROWSER != "Firefox"
139
+ if self.is_windows? && ($TESTWISE_BROWSER != "Firefox" && $ITEST2_BROWSER != "Firefox")
148
140
  Watir::IE.each do |browser_window|
149
141
  return WebBrowser.new(base_url, browser_window, options)
150
142
  end
@@ -34,8 +34,8 @@ module RWebSpec
34
34
  @web_tester = the_browser
35
35
  @page_specific_text = page_specific_text
36
36
  begin
37
- snapshot if $ITEST2_DUMP_PAGE
38
- delay = $ITEST2_PAGE_DELAY
37
+ snapshot if $TESTWISE_DUMP_PAGE || $ITEST2_DUMP_PAGE
38
+ delay = $TESTWISE_PAGE_DELAY || $ITEST2_PAGE_DELAY
39
39
  sleep(delay)
40
40
  rescue => e
41
41
  end
metadata CHANGED
@@ -5,7 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 9
8
- version: "1.9"
8
+ - 2
9
+ version: 1.9.2
9
10
  platform: ruby
10
11
  authors:
11
12
  - Zhimin Zhan
@@ -13,7 +14,7 @@ autorequire: rwebspec
13
14
  bindir: bin
14
15
  cert_chain: []
15
16
 
16
- date: 2011-08-11 00:00:00 +10:00
17
+ date: 2011-08-18 00:00:00 +10:00
17
18
  default_executable:
18
19
  dependencies:
19
20
  - !ruby/object:Gem::Dependency
@@ -38,13 +39,12 @@ dependencies:
38
39
  - - ">="
39
40
  - !ruby/object:Gem::Version
40
41
  segments:
41
- - 1
42
- - 8
43
- - 1
44
- version: 1.8.1
42
+ - 2
43
+ - 0
44
+ version: "2.0"
45
45
  type: :runtime
46
46
  version_requirements: *id002
47
- description:
47
+ description: Executable functional specification for web applications in RSpec syntax and Watir
48
48
  email: zhimin@agileway.com.au
49
49
  executables: []
50
50