js-test-server 0.2.6 → 0.2.7
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +9 -1
- data/Rakefile +1 -1
- data/lib/js_test_server/client/runner.rb +3 -2
- data/lib/js_test_server/server/resources/spec_file.rb +2 -2
- data/lib/js_test_server/server/views/page.html.rb +8 -0
- data/lib/js_test_server/server/views/suites/jasmine.html.rb +2 -4
- data/public/js_test_server.js +0 -3
- data/public/js_test_server/jasmine_driver.js +28 -27
- data/spec/functional/jasmine/jasmine_functional_spec.rb +1 -1
- data/spec/unit/js_test_core/client/runner_spec.rb +12 -12
- metadata +4 -4
data/CHANGES
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
0.2.7
|
2
|
+
- Fixed issue where Jasmine Runner hangs when there is no window.console
|
3
|
+
- Fixed selenium runner for Jasmine.
|
4
|
+
|
5
|
+
0.2.6
|
6
|
+
- All js files are loaded, instead of *_spec.js.
|
7
|
+
|
8
|
+
0.2.5
|
1
9
|
- Renamed JsTestServer::Representations to JsTestServer::Views
|
2
10
|
- Added JsTestServer::Views::Spec.project_js_files and .project_css_files
|
3
11
|
- Updated to erector 0.6.7, which fixes a bug related to including modules into Views.
|
@@ -29,4 +37,4 @@
|
|
29
37
|
- Added JsTestCore::WebRoot.dispatch_specs and .dispatch_strategy
|
30
38
|
- Extracted JsTestCore::Resources::Specs::SpecDir
|
31
39
|
- Extracted JsTestCore::Resources::Specs::SpecFile
|
32
|
-
- No longer depending on Guid. The child libraries are responsible for obtaining the Selenium session_id from the client by using top.runOptions.getSessionId().
|
40
|
+
- No longer depending on Guid. The child libraries are responsible for obtaining the Selenium session_id from the client by using top.runOptions.getSessionId().
|
data/Rakefile
CHANGED
@@ -96,9 +96,10 @@ module JsTestServer
|
|
96
96
|
end
|
97
97
|
|
98
98
|
def poll
|
99
|
-
raw_status = selenium_client.get_eval("window.JsTestServer.status()")
|
99
|
+
raw_status = selenium_client.get_eval("window.JsTestServer ? window.JsTestServer.status() : ''")
|
100
100
|
unless raw_status.to_s == ""
|
101
101
|
@current_status = JSON.parse(raw_status)
|
102
|
+
# puts "#{__FILE__}:#{__LINE__} #{console.inspect}"
|
102
103
|
end
|
103
104
|
end
|
104
105
|
|
@@ -126,4 +127,4 @@ module JsTestServer
|
|
126
127
|
end
|
127
128
|
end
|
128
129
|
end
|
129
|
-
end
|
130
|
+
end
|
@@ -14,7 +14,7 @@ class JsTestServer::Server::Resources::SpecFile < JsTestServer::Server::Resource
|
|
14
14
|
def do_get
|
15
15
|
if ::File.exists?(absolute_path)
|
16
16
|
if ::File.directory?(absolute_path)
|
17
|
-
spec_files = ::Dir["#{absolute_path}
|
17
|
+
spec_files = ::Dir["#{absolute_path}/**/*.js"].map do |file|
|
18
18
|
["#{relative_path}#{file.gsub(absolute_path, "")}"]
|
19
19
|
end
|
20
20
|
get_generated_spec(absolute_path, spec_files)
|
@@ -44,4 +44,4 @@ class JsTestServer::Server::Resources::SpecFile < JsTestServer::Server::Resource
|
|
44
44
|
def absolute_path
|
45
45
|
@absolute_path ||= ::File.expand_path("#{spec_path}#{relative_path.gsub(%r{^/specs}, "")}")
|
46
46
|
end
|
47
|
-
end
|
47
|
+
end
|
@@ -26,6 +26,14 @@ class JsTestServer::Server::Views::Page < Erector::Widget
|
|
26
26
|
yield(self)
|
27
27
|
end
|
28
28
|
|
29
|
+
def javascript(params={})
|
30
|
+
if params[:src]
|
31
|
+
script({:type => "text/javascript"}.merge(params))
|
32
|
+
else
|
33
|
+
super
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
29
37
|
def path
|
30
38
|
helpers.rack_request.path_info
|
31
39
|
end
|
@@ -12,9 +12,7 @@ class JsTestServer::Server::Views::Suites::Jasmine < JsTestServer::Server::Views
|
|
12
12
|
link :rel => "stylesheet", :href => "/framework/jasmine.css"
|
13
13
|
project_css_files
|
14
14
|
spec_script_elements
|
15
|
-
|
16
|
-
JsTestServer.JasmineDriver.init();
|
17
|
-
JS
|
15
|
+
javascript "JsTestServer.JasmineDriver.init();"
|
18
16
|
|
19
17
|
end
|
20
18
|
|
@@ -29,4 +27,4 @@ class JsTestServer::Server::Views::Suites::Jasmine < JsTestServer::Server::Views
|
|
29
27
|
def body_content
|
30
28
|
div :id => "jasmine_content"
|
31
29
|
end
|
32
|
-
end
|
30
|
+
end
|
data/public/js_test_server.js
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
(function() {
|
2
2
|
function JsTestServer() {
|
3
3
|
}
|
4
|
-
|
5
|
-
;
|
6
4
|
window.JsTestServer = JsTestServer;
|
7
5
|
|
8
6
|
JsTestServer.status = function() {
|
@@ -20,7 +18,6 @@
|
|
20
18
|
for (var attribute in attributes) {
|
21
19
|
html += (" " + attribute + "='" + attributes[attribute]) + "'";
|
22
20
|
}
|
23
|
-
;
|
24
21
|
html += "></";
|
25
22
|
html += name;
|
26
23
|
html += ">";
|
@@ -2,61 +2,62 @@ JsTestServer.JasmineDriver = {};
|
|
2
2
|
|
3
3
|
JsTestServer.JasmineDriver.init = function() {
|
4
4
|
JsTestServer.JasmineDriver.instance = new JsTestServer.JasmineDriver.Instance();
|
5
|
-
JsTestServer.JasmineDriver.instance.
|
5
|
+
JsTestServer.JasmineDriver.instance.init();
|
6
|
+
JsTestServer.JasmineDriver.instance.startJasmine();
|
6
7
|
};
|
7
8
|
|
8
9
|
JsTestServer.JasmineDriver.Instance = function() {
|
9
10
|
};
|
10
11
|
|
11
12
|
(function(Instance) {
|
12
|
-
var
|
13
|
-
var reporter;
|
13
|
+
var jsTestServerReporter;
|
14
14
|
|
15
|
-
Instance.prototype.
|
16
|
-
this.addJasmineReporter();
|
15
|
+
Instance.prototype.init = function() {
|
17
16
|
this.defineStatusMethod();
|
18
|
-
this.startJasmine();
|
19
|
-
};
|
20
|
-
|
21
|
-
Instance.prototype.addJasmineReporter = function() {
|
22
|
-
reporter = new JsTestServer.JasmineDriver.Reporter();
|
23
|
-
jasmine.getEnv().addReporter(reporter);
|
24
17
|
};
|
25
18
|
|
26
19
|
Instance.prototype.defineStatusMethod = function() {
|
27
20
|
JsTestServer.status = function() {
|
28
21
|
var runnerState;
|
29
|
-
|
30
|
-
|
31
|
-
runnerState = "passed";
|
32
|
-
} else {
|
33
|
-
runnerState = "failed";
|
34
|
-
}
|
35
|
-
} else {
|
36
|
-
runnerState = "running";
|
37
|
-
}
|
22
|
+
var jasmineEnv = jasmine.getEnv();
|
23
|
+
jasmineEnv.reporter.log("jsTestServerReporter.finished: " + jsTestServerReporter.finished)
|
38
24
|
|
39
25
|
return JsTestServer.JSON.stringify({
|
40
|
-
"runner_state": runnerState,
|
41
|
-
"console":
|
26
|
+
"runner_state": jsTestServerReporter.runnerState,
|
27
|
+
"console": jsTestServerReporter.console
|
42
28
|
});
|
43
29
|
};
|
44
30
|
};
|
45
31
|
|
46
32
|
Instance.prototype.startJasmine = function() {
|
47
33
|
var jasmineEnv = jasmine.getEnv();
|
48
|
-
|
49
|
-
jasmineEnv.addReporter(
|
34
|
+
jsTestServerReporter = new JsTestServer.JasmineDriver.Reporter();
|
35
|
+
jasmineEnv.addReporter(jsTestServerReporter);
|
36
|
+
jasmineEnv.addReporter(new jasmine.JsApiReporter());
|
37
|
+
jasmine.TrivialReporter.prototype.log = function() {
|
38
|
+
if (window.console && window.console.log) window.console.log.apply(window.console, arguments);
|
39
|
+
};
|
50
40
|
jasmineEnv.addReporter(new jasmine.TrivialReporter());
|
41
|
+
|
51
42
|
window.onload = function() {
|
52
43
|
jasmineEnv.execute();
|
53
|
-
}
|
44
|
+
}
|
54
45
|
};
|
55
46
|
|
56
47
|
JsTestServer.JasmineDriver.Reporter = function() {
|
48
|
+
this.console = "";
|
49
|
+
this.finished = false;
|
50
|
+
this.runnerState = "running";
|
57
51
|
};
|
58
52
|
JsTestServer.JasmineDriver.Reporter.prototype.log = function(str) {
|
59
|
-
|
60
|
-
jsTestServerConsole += "\n";
|
53
|
+
this.console += (str + "\n");
|
61
54
|
};
|
55
|
+
JsTestServer.JasmineDriver.Reporter.prototype.reportRunnerResults = function(runner) {
|
56
|
+
this.finished = true;
|
57
|
+
if (runner.results().failedCount == 0) {
|
58
|
+
this.runnerState = "passed";
|
59
|
+
} else {
|
60
|
+
this.runnerState = "failed";
|
61
|
+
}
|
62
|
+
}
|
62
63
|
})(JsTestServer.JasmineDriver.Instance);
|
@@ -36,19 +36,19 @@ module JsTestServer
|
|
36
36
|
mock.proxy(driver).start.ordered
|
37
37
|
mock.proxy(driver).open("/specs").ordered
|
38
38
|
|
39
|
-
mock.strong(driver).get_eval("window.JsTestServer.status()") do
|
39
|
+
mock.strong(driver).get_eval("window.JsTestServer ? window.JsTestServer.status() : ''") do
|
40
40
|
{"runner_state" => RUNNING_RUNNER_STATE, "console" => ""}.to_json
|
41
41
|
end
|
42
42
|
|
43
|
-
mock.strong(driver).get_eval("window.JsTestServer.status()") do
|
43
|
+
mock.strong(driver).get_eval("window.JsTestServer ? window.JsTestServer.status() : ''") do
|
44
44
|
{"runner_state" => RUNNING_RUNNER_STATE, "console" => ".."}.to_json
|
45
45
|
end
|
46
46
|
|
47
|
-
mock.strong(driver).get_eval("window.JsTestServer.status()") do
|
47
|
+
mock.strong(driver).get_eval("window.JsTestServer ? window.JsTestServer.status() : ''") do
|
48
48
|
{"runner_state" => RUNNING_RUNNER_STATE, "console" => "...F."}.to_json
|
49
49
|
end
|
50
50
|
|
51
|
-
mock.strong(driver).get_eval("window.JsTestServer.status()") do
|
51
|
+
mock.strong(driver).get_eval("window.JsTestServer ? window.JsTestServer.status() : ''") do
|
52
52
|
{"runner_state" => FAILED_RUNNER_STATE, "console" => "...F..\n\nFailure\n/specs/foo_spec.js"}.to_json
|
53
53
|
end
|
54
54
|
|
@@ -61,19 +61,19 @@ module JsTestServer
|
|
61
61
|
mock.proxy(driver).start.ordered
|
62
62
|
mock.proxy(driver).open("/specs").ordered
|
63
63
|
|
64
|
-
mock.strong(driver).get_eval("window.JsTestServer.status()") do
|
64
|
+
mock.strong(driver).get_eval("window.JsTestServer ? window.JsTestServer.status() : ''") do
|
65
65
|
{"runner_state" => RUNNING_RUNNER_STATE, "console" => ""}.to_json
|
66
66
|
end
|
67
67
|
|
68
|
-
mock.strong(driver).get_eval("window.JsTestServer.status()") do
|
68
|
+
mock.strong(driver).get_eval("window.JsTestServer ? window.JsTestServer.status() : ''") do
|
69
69
|
{"runner_state" => RUNNING_RUNNER_STATE, "console" => ".."}.to_json
|
70
70
|
end
|
71
71
|
|
72
|
-
mock.strong(driver).get_eval("window.JsTestServer.status()") do
|
72
|
+
mock.strong(driver).get_eval("window.JsTestServer ? window.JsTestServer.status() : ''") do
|
73
73
|
{"runner_state" => RUNNING_RUNNER_STATE, "console" => "....."}.to_json
|
74
74
|
end
|
75
75
|
|
76
|
-
mock.strong(driver).get_eval("window.JsTestServer.status()") do
|
76
|
+
mock.strong(driver).get_eval("window.JsTestServer ? window.JsTestServer.status() : ''") do
|
77
77
|
{"runner_state" => PASSED_RUNNER_STATE, "console" => "......\n\nPassed"}.to_json
|
78
78
|
end
|
79
79
|
|
@@ -100,19 +100,19 @@ module JsTestServer
|
|
100
100
|
mock.proxy(driver).start.ordered
|
101
101
|
mock.proxy(driver).open("/specs/path").ordered
|
102
102
|
|
103
|
-
mock.strong(driver).get_eval("window.JsTestServer.status()") do
|
103
|
+
mock.strong(driver).get_eval("window.JsTestServer ? window.JsTestServer.status() : ''") do
|
104
104
|
{"runner_state" => RUNNING_RUNNER_STATE, "console" => ""}.to_json
|
105
105
|
end
|
106
106
|
|
107
|
-
mock.strong(driver).get_eval("window.JsTestServer.status()") do
|
107
|
+
mock.strong(driver).get_eval("window.JsTestServer ? window.JsTestServer.status() : ''") do
|
108
108
|
{"runner_state" => RUNNING_RUNNER_STATE, "console" => ".."}.to_json
|
109
109
|
end
|
110
110
|
|
111
|
-
mock.strong(driver).get_eval("window.JsTestServer.status()") do
|
111
|
+
mock.strong(driver).get_eval("window.JsTestServer ? window.JsTestServer.status() : ''") do
|
112
112
|
{"runner_state" => RUNNING_RUNNER_STATE, "console" => "....."}.to_json
|
113
113
|
end
|
114
114
|
|
115
|
-
mock.strong(driver).get_eval("window.JsTestServer.status()") do
|
115
|
+
mock.strong(driver).get_eval("window.JsTestServer ? window.JsTestServer.status() : ''") do
|
116
116
|
{"runner_state" => PASSED_RUNNER_STATE, "console" => "......\n\nPassed"}.to_json
|
117
117
|
end
|
118
118
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: js-test-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 7
|
10
|
+
version: 0.2.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Brian Takita
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-06-01 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|