rwebspec 1.9 → 1.9.2

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