rwebspec 6.0.3 → 6.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +6 -0
- data/Rakefile +1 -1
- data/lib/plugins/testwise_plugin.rb +60 -41
- data/lib/rwebspec-common/core.rb +5 -5
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5573de85d53760dcc6e601d4f580262f76359ce
|
4
|
+
data.tar.gz: c6d7642e66b2684c68a8905c95cf7c7d5f306fe0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47638dcb16b3bf65e5a824b9c381764afc791ccdc13eff0bdc800b4d0ffd5956787b5134893e35181ecd27f9e8f750277454525eb3820b92740766f79c927a2d
|
7
|
+
data.tar.gz: 4df38f3a99225a8fdacbec2b37838a06b7028a2d4471e92a58142f8148509507b79fdb1c35881767797f19899691a2371db004f28c8938c60e0ca2eafdc6e5a9
|
data/CHANGELOG
CHANGED
data/Rakefile
CHANGED
@@ -77,7 +77,7 @@ end
|
|
77
77
|
spec = Gem::Specification.new do |s|
|
78
78
|
s.platform= Gem::Platform::RUBY
|
79
79
|
s.name = "rwebspec"
|
80
|
-
s.version = "6.0
|
80
|
+
s.version = "6.2.0"
|
81
81
|
s.summary = "Web application functional specification in Ruby"
|
82
82
|
s.description = "Executable functional specification for web applications in RSpec syntax with Watir or Selenium WebDriver"
|
83
83
|
|
@@ -1,35 +1,45 @@
|
|
1
1
|
require 'socket'
|
2
2
|
|
3
|
-
MAX_MESSAGE_LENGTH = 8192
|
3
|
+
MAX_MESSAGE_LENGTH = 8192 # < 10K
|
4
|
+
|
4
5
|
$testwise_support = true
|
5
6
|
|
6
7
|
module RWebSpec
|
7
8
|
module TestWisePlugin
|
8
9
|
|
10
|
+
def debugging?
|
11
|
+
if ENV["TESTWISE_DEBUGGING"].to_s == "true" && ENV["TESTWISE_RUNNING_AS"] == "test_case"
|
12
|
+
return true
|
13
|
+
end
|
14
|
+
return $TESTWISE_DEBUGGING && $TESTWISE_RUNNING_AS == "test_case"
|
15
|
+
end
|
16
|
+
|
9
17
|
def debug(message)
|
10
18
|
Thread.pass
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
+
if (ENV["RUN_IN_TESTWISE"] && ENV["RUN_IN_TESTWISE"].to_s == "true" || $RUN_IN_TESTWISE) && message
|
20
|
+
the_sent_msg = message.to_s
|
21
|
+
if the_sent_msg.size > MAX_MESSAGE_LENGTH
|
22
|
+
the_sent_msg = the_sent_msg[0..MAX_MESSAGE_LENGTH] + "..."
|
23
|
+
end
|
24
|
+
connect_to_testwise(" DEBUG", the_sent_msg + "\r\n")
|
25
|
+
else
|
26
|
+
puts message
|
27
|
+
end
|
19
28
|
end
|
29
|
+
alias write_to_console debug
|
20
30
|
|
21
31
|
|
22
|
-
# Support of
|
32
|
+
# Support of TestWise to ajust the intervals between keystroke/mouse operations
|
23
33
|
def operation_delay
|
24
|
-
begin
|
25
|
-
|
26
|
-
|
34
|
+
begin
|
35
|
+
$TESTWISE_OPERATION_DELAY = ENV["TESTWISE_OPERATION_DELAY"] if ENV["TESTWISE_OPERATION_DELAY"] && ENV["TESTWISE_OPERATION_DELAY"].to_i > 0
|
36
|
+
if $TESTWISE_OPERATION_DELAY && $TESTWISE_OPERATION_DELAY > 0 &&
|
27
37
|
$TESTWISE_OPERATION_DELAY < 30000 then # max 30 seconds
|
28
38
|
Thread.pass
|
29
39
|
sleep($TESTWISE_OPERATION_DELAY / 1000)
|
30
40
|
end
|
31
41
|
|
32
|
-
while $TESTWISE_PAUSE
|
42
|
+
while (ENV["TESTWISE_PAUSE"] && ENV["TESTWISE_PAUSE"].to_s == "true") || $TESTWISE_PAUSE
|
33
43
|
Thread.pass
|
34
44
|
debug("Paused, waiting ...")
|
35
45
|
sleep 1
|
@@ -40,33 +50,14 @@ module RWebSpec
|
|
40
50
|
end
|
41
51
|
end
|
42
52
|
|
43
|
-
|
44
|
-
|
45
|
-
if $TESTWISE_READY_TO_PAUSE
|
46
|
-
# Already executed the the line immedately above,
|
47
|
-
# give some buffer time for TW to set $TESTWISE_PAUSE flag
|
48
|
-
sleep 0.5
|
49
|
-
end
|
50
|
-
|
51
|
-
# If the executed line no change, ignore
|
52
|
-
while $TESTWISE_PAUSE
|
53
|
-
Thread.pass
|
54
|
-
debug("[selenium_webdriver_extension] Paused, waiting ...")
|
55
|
-
sleep 1
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
53
|
+
|
59
54
|
def notify_screenshot_location(image_file_path)
|
60
|
-
|
61
|
-
connect_to_testwise(" SHOT", image_file_path)
|
62
|
-
rescue => e
|
63
|
-
puts "[DEBUG] failed to notify TestWise a screenshot"
|
64
|
-
end
|
55
|
+
connect_to_testwise(" SHOT", image_file_path)
|
65
56
|
end
|
66
57
|
|
67
58
|
# find out the line (and file) the execution is on, and notify iTest via Socket
|
68
59
|
def dump_caller_stack
|
69
|
-
return unless ($TESTWISE_TRACE_EXECUTION)
|
60
|
+
return unless (ENV["TESTWISE_TRACE_EXECUTION"].to_s == "true" || $TESTWISE_TRACE_EXECUTION)
|
70
61
|
begin
|
71
62
|
trace_lines = []
|
72
63
|
trace_file = nil
|
@@ -104,15 +95,43 @@ module RWebSpec
|
|
104
95
|
if @last_message == the_message then # ignore the message same as preivous one
|
105
96
|
return
|
106
97
|
end
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
98
|
+
testwise_port = ENV["TESTWISE_TRACE_PORT"].to_i || $TESTWISE_TRACE_PORT || 7025
|
99
|
+
testwise_socket = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
|
100
|
+
testwise_socket.connect(Socket.pack_sockaddr_in(testwise_port, '127.0.0.1'))
|
101
|
+
testwise_socket.puts(the_message)
|
111
102
|
@last_message = the_message
|
112
|
-
|
103
|
+
testwise_socket.close
|
113
104
|
rescue => e
|
114
105
|
end
|
115
106
|
end
|
116
107
|
|
108
|
+
def check_for_pause
|
109
|
+
json_data = fetch_debug_server_status
|
110
|
+
|
111
|
+
if json_data["testwise_ready_to_pause"]
|
112
|
+
# Already executed the the line immedately above,
|
113
|
+
# give some buffer time for TW to set $TESTWISE_PAUSE flag
|
114
|
+
sleep 0.5
|
115
|
+
end
|
116
|
+
|
117
|
+
# If the executed line no change, ignore
|
118
|
+
while json_data["testwise_pause"] || $TESTWISE_PAUSE
|
119
|
+
Thread.pass
|
120
|
+
write_to_console("[rwebspec] Paused, waiting ...")
|
121
|
+
sleep 1
|
122
|
+
json_data = fetch_debug_server_status
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
126
|
+
|
127
|
+
def fetch_debug_server_status
|
128
|
+
testwise_debug_server_port = ENV["TESTWISE_DEBUG_PORT"].to_i || $TESTWISE_DEBUG_PORT || 7035
|
129
|
+
server = TCPSocket.open("127.0.0.1", testwise_debug_server_port)
|
130
|
+
server.puts("debug_status")
|
131
|
+
msg = server.gets.chomp
|
132
|
+
server.close
|
133
|
+
json_data = JSON.parse(msg)
|
134
|
+
end
|
135
|
+
|
117
136
|
end
|
118
137
|
end
|
data/lib/rwebspec-common/core.rb
CHANGED
@@ -29,7 +29,7 @@ module RWebSpec
|
|
29
29
|
# New Options:
|
30
30
|
# :browser => :ie | :firefox | :chrome | :safari
|
31
31
|
def open_browser(opts = {})
|
32
|
-
puts "[INFO] RWebSpec.Framework currently set to => #{RWebSpec.framework }"
|
32
|
+
# puts "[INFO] RWebSpec.Framework currently set to => #{RWebSpec.framework }"
|
33
33
|
=begin
|
34
34
|
if RWebSpec.framework =~ /watir/i
|
35
35
|
RWebSpec.load_watir
|
@@ -45,12 +45,12 @@ module RWebSpec
|
|
45
45
|
return open_browser_by_selenium(opts)
|
46
46
|
end
|
47
47
|
=end
|
48
|
-
puts "[INFO] No underlying framework is set, try to determine browser: #{opts.inspect}"
|
48
|
+
# puts "[INFO] No underlying framework is set, try to determine browser: #{opts.inspect}"
|
49
49
|
if opts.class == Hash
|
50
50
|
if opts[:browser]
|
51
51
|
|
52
52
|
if opts[:browser].to_s =~ /ie/i || opts[:browser].to_s =~ /internet\sexplorer/i
|
53
|
-
puts "[INFO] based on browser, set to Watir"
|
53
|
+
# puts "[INFO] based on browser, set to Watir"
|
54
54
|
RWebSpec.framework = "Watir"
|
55
55
|
self.class.send(:include, RWebSpec::Driver)
|
56
56
|
# Reload abstract web page to load driver
|
@@ -58,7 +58,7 @@ module RWebSpec
|
|
58
58
|
return open_browser_by_watir(opts)
|
59
59
|
end
|
60
60
|
|
61
|
-
puts "[INFO] based on browser, set to Selenium"
|
61
|
+
# puts "[INFO] based on browser, set to Selenium"
|
62
62
|
# not IE, using selenium
|
63
63
|
RWebSpec.framework = "Selenium"
|
64
64
|
self.class.send(:include, RWebSpec::Driver)
|
@@ -68,7 +68,7 @@ module RWebSpec
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
-
puts "[INFO] browser type not specified, decide framework based on platform"
|
71
|
+
# puts "[INFO] browser type not specified, decide framework based on platform"
|
72
72
|
if RUBY_PLATFORM =~ /mingw/
|
73
73
|
# if it is Windows, set to Watir
|
74
74
|
RWebSpec.framework = "Watir"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rwebspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0
|
4
|
+
version: 6.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zhimin Zhan
|
8
8
|
autorequire: rwebspec
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-10-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -164,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
164
164
|
requirements:
|
165
165
|
- none
|
166
166
|
rubyforge_project: rwebspec
|
167
|
-
rubygems_version: 2.
|
167
|
+
rubygems_version: 2.4.8
|
168
168
|
signing_key:
|
169
169
|
specification_version: 4
|
170
170
|
summary: Web application functional specification in Ruby
|