js-test-driver-rails 0.4.3 → 0.5.0.pre1
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/Gemfile.lock +17 -2
- data/TODO +6 -0
- data/bin/jstd +74 -0
- data/js-test-driver-rails.gemspec +2 -0
- data/lib/js_test_driver/application.rb +52 -0
- data/lib/js_test_driver/cli/capture_browsers.rb +34 -0
- data/lib/js_test_driver/cli/run.rb +56 -0
- data/lib/js_test_driver/cli/run_tests.rb +22 -0
- data/lib/js_test_driver/cli/start_server.rb +20 -0
- data/lib/js_test_driver/commands/base_command.rb +43 -0
- data/lib/js_test_driver/commands/generate_coverage_report.rb +17 -0
- data/lib/js_test_driver/commands/jstd_jar_command.rb +61 -0
- data/lib/js_test_driver/config.rb +84 -15
- data/lib/js_test_driver/config_factory.rb +21 -0
- data/lib/js_test_driver/missing_dependency_error.rb +4 -0
- data/lib/js_test_driver/remote_browser.rb +57 -0
- data/lib/js_test_driver/runner.rb +5 -217
- data/lib/js_test_driver/runtime_config.rb +155 -0
- data/lib/js_test_driver/tasks.rb +10 -8
- data/lib/js_test_driver/version.rb +1 -1
- data/lib/js_test_driver.rb +27 -3
- data/test/integration/sample_test.rb +3 -4
- data/test/sample/config/js_test_driver.rb +4 -0
- data/test/test_helper.rb +52 -1
- data/test/unit/capture_browsers_test.rb +30 -0
- data/test/unit/config_test.rb +31 -23
- data/test/unit/run_test.rb +28 -0
- data/test/unit/run_tests_test.rb +20 -0
- data/test/unit/runtime_config_test.rb +19 -0
- data/test/unit/start_server_test.rb +15 -0
- data/vendor/JasmineAdapter.js +3 -2
- data/vendor/jasmine.js +60 -23
- metadata +53 -11
- data/test/unit/runner_test.rb +0 -107
@@ -1,225 +1,13 @@
|
|
1
1
|
module JsTestDriver
|
2
|
-
# The Runner class is used
|
3
|
-
class Runner
|
4
|
-
|
5
|
-
def initialize(attributes = {})
|
6
|
-
self.attributes = attributes
|
7
|
-
end
|
8
|
-
|
9
|
-
# configuration, by default it's parsed from config_path
|
10
|
-
attr_writer :config
|
11
|
-
|
12
|
-
def config
|
13
|
-
@config ||= parse_config
|
14
|
-
end
|
15
|
-
|
16
|
-
attr_writer :generated_files_dir
|
17
|
-
|
18
|
-
# this is where the generated files will be saved, by default this is `pwd`/.js_test_driver
|
19
|
-
#
|
20
|
-
# the generated files are the config yml file and the fixture files
|
21
|
-
def generated_files_dir
|
22
|
-
@generated_files_dir || default_generated_files_dir
|
23
|
-
end
|
24
|
-
|
25
|
-
# this is the path of the config file, by default its `pwd`/config/js_test_driver.rb
|
26
|
-
attr_writer :config_path
|
27
|
-
|
28
|
-
def config_path
|
29
|
-
@config_path ||= default_config_path
|
30
|
-
end
|
31
|
-
|
32
|
-
# this is the path to the js test driver jar file, by default it's stored relatively to this file
|
33
|
-
attr_writer :jar_path
|
34
|
-
|
35
|
-
def jar_path
|
36
|
-
@jar_path ||= default_jar_path
|
37
|
-
end
|
38
|
-
|
39
|
-
# this is where the config yml file will be saved, by default its saved in the generated files
|
40
|
-
# directory under the name jsTestDriver.conf
|
41
|
-
attr_writer :tmp_path
|
42
|
-
|
43
|
-
def config_yml_path
|
44
|
-
@tmp_path ||= default_config_yml_path
|
45
|
-
end
|
46
|
-
|
47
|
-
# starts the server on the default port specified in the config file
|
48
|
-
def start_server
|
49
|
-
command = execute_jar
|
50
|
-
|
51
|
-
add_start_server(command)
|
52
|
-
|
53
|
-
command.run
|
54
|
-
end
|
55
|
-
|
56
|
-
# captures the browsers
|
57
|
-
#
|
58
|
-
# by default it will capture the browsers specified in the config,
|
59
|
-
# but you can pass an argument like 'opera,chrome,firefox' to capture opera, chrome and firefox
|
60
|
-
def capture_browsers(browsers = nil)
|
61
|
-
browsers ||= ''
|
62
|
-
browsers = browsers.split(',')
|
63
|
-
browsers = config.browsers if browsers.empty?
|
64
|
-
|
65
|
-
url = config.server + "/capture"
|
66
|
-
|
67
|
-
browsers.each do |browser|
|
68
|
-
spawn("#{browser} \'#{url}\'")
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
# runs the tests specified by the argument
|
73
|
-
#
|
74
|
-
# by default it will run all the tests, but you can pass a string like:
|
75
|
-
# 'TestCase' or 'TestCase.test'
|
76
|
-
# to run either a single test case or a single test
|
77
|
-
def run_tests(tests = nil)
|
78
|
-
command = execute_jar
|
79
|
-
|
80
|
-
add_with_config(command)
|
81
|
-
add_run_tests(command, tests)
|
82
|
-
|
83
|
-
command.run
|
84
|
-
end
|
85
|
-
|
86
|
-
def start_server_capture_and_run(tests = nil, browsers = nil, output_xml_path = nil, console = nil)
|
87
|
-
command = execute_jar
|
88
|
-
|
89
|
-
add_start_server(command)
|
90
|
-
add_with_config(command)
|
91
|
-
add_capture_browsers(command, browsers)
|
92
|
-
add_run_tests(command, tests)
|
93
|
-
add_output_directory(command, output_xml_path) if output_xml_path
|
94
|
-
add_capture_console(command) if console
|
95
|
-
|
96
|
-
result = command.run
|
97
|
-
|
98
|
-
if config.measure_coverage? && output_xml_path
|
99
|
-
generate_html_coverage_report(output_xml_path)
|
100
|
-
end
|
101
|
-
|
102
|
-
return result
|
103
|
-
end
|
104
|
-
|
105
|
-
def add_start_server(command)
|
106
|
-
command.option('--port', config.port)
|
107
|
-
end
|
108
|
-
|
109
|
-
def add_run_tests(command, tests)
|
110
|
-
command.option('--tests', tests || "all")
|
111
|
-
end
|
112
|
-
|
113
|
-
def add_capture_browsers(command, browsers)
|
114
|
-
browsers ||= config.browsers.join(',')
|
115
|
-
raise ArgumentError.new("No browsers defined!") if browsers == ""
|
116
|
-
command.option('--browser', browsers)
|
117
|
-
end
|
118
|
-
|
119
|
-
def add_output_directory(command, path)
|
120
|
-
path = File.expand_path(path)
|
121
|
-
FileUtils.mkdir_p(path) unless File.exists?(path)
|
122
|
-
command.option('--testOutput', path)
|
123
|
-
end
|
124
|
-
|
125
|
-
def add_capture_console(command)
|
126
|
-
command.option('--captureConsole')
|
127
|
-
end
|
128
|
-
|
129
|
-
def add_with_config(command)
|
130
|
-
save_config_file(config_yml_path)
|
131
|
-
command.option('--config', config_yml_path)
|
132
|
-
end
|
133
|
-
|
134
|
-
def execute_jar
|
135
|
-
Command.new('java').option('-jar', jar_path)
|
136
|
-
end
|
137
|
-
|
138
|
-
def generate_html_coverage_report(output_path)
|
139
|
-
unless genhtml_installed?
|
140
|
-
puts "Could not find genhtml. You must install lcov (sudo apt-get install lcov)"
|
141
|
-
return
|
142
|
-
end
|
143
|
-
|
144
|
-
output_path = File.expand_path(output_path)
|
145
|
-
|
146
|
-
config_file_name = File.basename(config_yml_path)
|
147
|
-
coverage_file_name = config_file_name + '-coverage.dat'
|
148
|
-
coverage_file_path = File.join(output_path, coverage_file_name)
|
149
|
-
coverage_out_dir = File.join(output_path, 'coverage')
|
150
|
-
|
151
|
-
system("genhtml -o #{coverage_out_dir} #{coverage_file_path}")
|
152
|
-
end
|
153
|
-
|
154
|
-
protected
|
155
2
|
|
156
|
-
|
157
|
-
!%x[which genhtml].strip.empty?
|
158
|
-
end
|
159
|
-
|
160
|
-
def parse_config
|
161
|
-
source = ""
|
162
|
-
if File.exist?(config_path)
|
163
|
-
source = File.read(config_path)
|
164
|
-
else
|
165
|
-
warn("Could not find JS Test Driver config: '#{config_path}', assuming empty config file!")
|
166
|
-
end
|
167
|
-
config = JsTestDriver::Config.parse(source)
|
168
|
-
config.config_dir = generated_files_dir
|
169
|
-
return config
|
170
|
-
end
|
171
|
-
|
172
|
-
def default_config_path
|
173
|
-
root = defined?(::Rails) ? ::Rails.root.to_s : '.'
|
174
|
-
return File.expand_path(File.join(root, 'config', 'js_test_driver.rb'))
|
175
|
-
end
|
176
|
-
|
177
|
-
def default_jar_path
|
178
|
-
current_dir = File.dirname(__FILE__)
|
179
|
-
path = File.join(current_dir, '..', '..', 'vendor', 'js_test_driver.jar')
|
180
|
-
return File.expand_path(path)
|
181
|
-
end
|
182
|
-
|
183
|
-
def default_config_yml_path
|
184
|
-
return File.expand_path("jsTestDriver.conf", generated_files_dir)
|
185
|
-
end
|
186
|
-
|
187
|
-
def default_generated_files_dir
|
188
|
-
return File.expand_path(".js_test_driver")
|
189
|
-
end
|
190
|
-
|
191
|
-
private
|
192
|
-
|
193
|
-
def save_config_file(path)
|
194
|
-
Dir.mkdir(generated_files_dir) unless File.exists?(generated_files_dir)
|
195
|
-
File.open(path, "w+") { |f| f.puts config.to_s }
|
196
|
-
config.save_fixtures
|
197
|
-
end
|
3
|
+
class Runner
|
198
4
|
|
199
|
-
def
|
200
|
-
|
201
|
-
self.send("#{attr}=", value)
|
202
|
-
end
|
5
|
+
def run(command)
|
6
|
+
system(command.to_s)
|
203
7
|
end
|
204
8
|
|
205
|
-
|
206
|
-
|
207
|
-
@command = "#{executable}"
|
208
|
-
end
|
209
|
-
|
210
|
-
def option(name, value = nil)
|
211
|
-
value = "'#{value}'" if value && value =~ /\s/
|
212
|
-
@command = [@command, name, value].compact.join(' ')
|
213
|
-
self
|
214
|
-
end
|
215
|
-
|
216
|
-
def run
|
217
|
-
system(self.to_s)
|
218
|
-
end
|
219
|
-
|
220
|
-
def to_s
|
221
|
-
return @command
|
222
|
-
end
|
9
|
+
def runbg(command)
|
10
|
+
spawn(command.to_s)
|
223
11
|
end
|
224
12
|
|
225
13
|
end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
module JsTestDriver
|
2
|
+
# The RuntimeConfig class holds the various paths that the application
|
3
|
+
# uses, as well as the actual JsTestDriver configuration
|
4
|
+
class RuntimeConfig
|
5
|
+
|
6
|
+
def initialize(attributes = {})
|
7
|
+
self.attributes = attributes
|
8
|
+
end
|
9
|
+
|
10
|
+
attr_accessor :config_factory
|
11
|
+
|
12
|
+
# configuration, by default it's parsed from config_path
|
13
|
+
attr_writer :config
|
14
|
+
|
15
|
+
def config
|
16
|
+
@config ||= parse_config
|
17
|
+
end
|
18
|
+
|
19
|
+
attr_writer :generated_files_dir
|
20
|
+
|
21
|
+
# this is where the generated files will be saved, by default this is `pwd`/.js_test_driver
|
22
|
+
#
|
23
|
+
# the generated files are the config yml file and the fixture files
|
24
|
+
def generated_files_dir
|
25
|
+
dir(@generated_files_dir || default_generated_files_dir)
|
26
|
+
end
|
27
|
+
|
28
|
+
# this is the path of the config file, by default its `pwd`/config/js_test_driver.rb
|
29
|
+
attr_writer :config_path
|
30
|
+
|
31
|
+
def config_path
|
32
|
+
file(@config_path ||= default_config_path)
|
33
|
+
end
|
34
|
+
|
35
|
+
# this is the path to the js test driver jar file, by default it's stored relatively to this file
|
36
|
+
attr_writer :jar_path
|
37
|
+
|
38
|
+
def jar_path
|
39
|
+
file(@jar_path ||= default_jar_path)
|
40
|
+
end
|
41
|
+
|
42
|
+
# this is where the config yml file will be saved, by default its saved in the generated files
|
43
|
+
# directory under the name jsTestDriver.conf
|
44
|
+
attr_writer :tmp_path
|
45
|
+
|
46
|
+
def config_yml_path
|
47
|
+
file(@tmp_path ||= default_config_yml_path)
|
48
|
+
end
|
49
|
+
|
50
|
+
# This is the directory where the coverage HTML files will be saved
|
51
|
+
attr_writer :coverage_files_path
|
52
|
+
|
53
|
+
def coverage_files_path
|
54
|
+
dir(@coverage_files_path ||= default_coverage_files_path)
|
55
|
+
end
|
56
|
+
|
57
|
+
# This is the file in which js-test-driver saves coverage data
|
58
|
+
# it is not configurable
|
59
|
+
def coverage_data_file
|
60
|
+
file_name = File.basename(config_yml_path + '-coverage.dat')
|
61
|
+
return file(file_name, test_xml_data_path)
|
62
|
+
end
|
63
|
+
|
64
|
+
# This is where the XML files with test results will be saved
|
65
|
+
attr_writer :test_xml_data_path
|
66
|
+
|
67
|
+
def test_xml_data_path
|
68
|
+
dir(@test_xml_data_path ||= default_test_xml_data_path)
|
69
|
+
end
|
70
|
+
|
71
|
+
# This is where the fixtures will be saved
|
72
|
+
attr_writer :fixture_dir
|
73
|
+
|
74
|
+
def fixture_dir
|
75
|
+
dir(@fixture_dir ||= default_fixture_dir)
|
76
|
+
end
|
77
|
+
|
78
|
+
# This is where the remote browser scripts will be saved
|
79
|
+
attr_writer :remote_browsers_dir
|
80
|
+
|
81
|
+
def remote_browsers_dir
|
82
|
+
dir(@remote_browsers_dir ||= default_remote_browsers_dir)
|
83
|
+
end
|
84
|
+
|
85
|
+
protected
|
86
|
+
|
87
|
+
def parse_config
|
88
|
+
source = ""
|
89
|
+
if File.exist?(config_path)
|
90
|
+
source = File.read(config_path)
|
91
|
+
else
|
92
|
+
warn("Could not find JS Test Driver config: '#{config_path}', assuming empty config file!")
|
93
|
+
end
|
94
|
+
return config_factory.parse(source).save
|
95
|
+
end
|
96
|
+
|
97
|
+
def default_config_path
|
98
|
+
root = defined?(::Rails) ? ::Rails.root.to_s : '.'
|
99
|
+
return File.expand_path(File.join(root, 'config', 'js_test_driver.rb'))
|
100
|
+
end
|
101
|
+
|
102
|
+
def default_jar_path
|
103
|
+
current_dir = File.dirname(__FILE__)
|
104
|
+
path = File.join(current_dir, '..', '..', 'vendor', 'js_test_driver.jar')
|
105
|
+
return File.expand_path(path)
|
106
|
+
end
|
107
|
+
|
108
|
+
def default_config_yml_path
|
109
|
+
return file("jsTestDriver.conf", generated_files_dir)
|
110
|
+
end
|
111
|
+
|
112
|
+
def default_generated_files_dir
|
113
|
+
return dir(".js_test_driver")
|
114
|
+
end
|
115
|
+
|
116
|
+
def default_coverage_files_path
|
117
|
+
return dir('coverage', generated_files_dir)
|
118
|
+
end
|
119
|
+
|
120
|
+
def default_test_xml_data_path
|
121
|
+
return dir('tests', generated_files_dir)
|
122
|
+
end
|
123
|
+
|
124
|
+
def default_fixture_dir
|
125
|
+
return dir('fixtures', generated_files_dir)
|
126
|
+
end
|
127
|
+
|
128
|
+
def default_remote_browsers_dir
|
129
|
+
return dir('browsers', generated_files_dir)
|
130
|
+
end
|
131
|
+
|
132
|
+
private
|
133
|
+
|
134
|
+
def dir(name, parent = nil)
|
135
|
+
path = File.expand_path(name, parent)
|
136
|
+
FileUtils.mkdir_p(path) unless File.exist?(path)
|
137
|
+
return path
|
138
|
+
end
|
139
|
+
|
140
|
+
def file(name, parent = nil)
|
141
|
+
path = File.expand_path(name, parent)
|
142
|
+
dir = File.dirname(path)
|
143
|
+
FileUtils.mkdir_p(dir) unless File.exist?(dir)
|
144
|
+
return path
|
145
|
+
end
|
146
|
+
|
147
|
+
def attributes=(values)
|
148
|
+
values.each do |attr, value|
|
149
|
+
self.send("#{attr}=", value)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|
154
|
+
|
155
|
+
end
|
data/lib/js_test_driver/tasks.rb
CHANGED
@@ -4,25 +4,27 @@ namespace :js_test_driver do
|
|
4
4
|
|
5
5
|
desc "Starts the server using the provided configuration variables"
|
6
6
|
task :start_server do
|
7
|
-
JsTestDriver::
|
7
|
+
JsTestDriver::Application.new.start_server
|
8
8
|
end
|
9
9
|
|
10
10
|
desc "Runs the javascript tests"
|
11
11
|
task :run_tests do
|
12
|
-
exit(1) unless JsTestDriver::
|
12
|
+
exit(1) unless JsTestDriver::Application.new.run_tests(:tests => ENV['TESTS'])
|
13
13
|
end
|
14
14
|
|
15
15
|
desc "Capture the browsers defined in config"
|
16
16
|
task :capture_browsers do
|
17
|
-
JsTestDriver::
|
17
|
+
JsTestDriver::Application.new.capture_browsers(:browsers => ENV['BROWSERS'])
|
18
18
|
end
|
19
19
|
|
20
20
|
desc "Starts the server, captures the browsers, runs the tests - all at the same time"
|
21
21
|
task :run do
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
app = JsTestDriver::Application.new
|
23
|
+
|
24
|
+
exit(1) unless app.run(:tests => ENV['TESTS'],
|
25
|
+
:browsers => ENV['BROWSERS'],
|
26
|
+
:output_xml => !!ENV['OUTPUT_XML'],
|
27
|
+
:capture_console => ENV['CAPTURE_CONSOLE'])
|
26
28
|
end
|
27
29
|
|
28
|
-
end
|
30
|
+
end
|
data/lib/js_test_driver.rb
CHANGED
@@ -1,6 +1,30 @@
|
|
1
1
|
require 'json'
|
2
|
+
require 'yaml'
|
2
3
|
require 'fileutils'
|
3
4
|
|
4
|
-
require
|
5
|
-
|
6
|
-
|
5
|
+
require 'selenium-webdriver'
|
6
|
+
|
7
|
+
module JsTestDriver
|
8
|
+
autoload :Application, 'js_test_driver/application'
|
9
|
+
autoload :Config, 'js_test_driver/config'
|
10
|
+
autoload :ConfigFactory, 'js_test_driver/config_factory'
|
11
|
+
autoload :HtmlFixture, 'js_test_driver/html_fixture'
|
12
|
+
autoload :MissingDependencyError, 'js_test_driver/missing_dependency_error'
|
13
|
+
autoload :RemoteBrowser, 'js_test_driver/remote_browser'
|
14
|
+
autoload :Runner, 'js_test_driver/runner'
|
15
|
+
autoload :RuntimeConfig, 'js_test_driver/runtime_config'
|
16
|
+
autoload :VERSION, 'js_test_driver/version'
|
17
|
+
|
18
|
+
module CLI
|
19
|
+
autoload :CaptureBrowsers, 'js_test_driver/cli/capture_browsers'
|
20
|
+
autoload :Run, 'js_test_driver/cli/run'
|
21
|
+
autoload :RunTests, 'js_test_driver/cli/run_tests'
|
22
|
+
autoload :StartServer, 'js_test_driver/cli/start_server'
|
23
|
+
end
|
24
|
+
|
25
|
+
module Commands
|
26
|
+
autoload :BaseCommand, 'js_test_driver/commands/base_command'
|
27
|
+
autoload :GenerateCoverageReport, 'js_test_driver/commands/generate_coverage_report'
|
28
|
+
autoload :JstdJarCommand, 'js_test_driver/commands/jstd_jar_command'
|
29
|
+
end
|
30
|
+
end
|
@@ -4,11 +4,10 @@ module JsTestDriver
|
|
4
4
|
class SampleTest < Test::Unit::TestCase
|
5
5
|
|
6
6
|
def test_running_sample_specs
|
7
|
-
|
7
|
+
config_path = File.expand_path('../../sample/config/js_test_driver.rb', __FILE__)
|
8
|
+
app = JsTestDriver::Application.new(:config_path => config_path)
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
assert config.start_server_capture_and_run(nil, nil, output_path), 'running tests should return a success'
|
10
|
+
assert app.run(:output_xml => true), 'running tests should return a success'
|
12
11
|
end
|
13
12
|
|
14
13
|
end
|
@@ -1,9 +1,13 @@
|
|
1
|
+
host guess_local_ip
|
2
|
+
|
1
3
|
includes 'test/sample/lib/*.js'
|
2
4
|
|
3
5
|
['google-chrome', 'firefox', 'chromium-browser'].select{|b| !%x[which #{b}].strip.empty? }.each do |b|
|
4
6
|
browser b
|
5
7
|
end
|
6
8
|
|
9
|
+
remote_browser '192.168.1.106:4444', :browser => :ie
|
10
|
+
|
7
11
|
enable_jasmine
|
8
12
|
measure_coverage
|
9
13
|
|
data/test/test_helper.rb
CHANGED
@@ -8,9 +8,44 @@ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'js_test
|
|
8
8
|
require 'test/unit'
|
9
9
|
require 'mocha'
|
10
10
|
|
11
|
+
class FakeRunner
|
12
|
+
|
13
|
+
attr_reader :commands_run, :commands_run_in_bg
|
14
|
+
|
15
|
+
def initialize
|
16
|
+
@commands_run = []
|
17
|
+
@commands_run_in_bg = []
|
18
|
+
end
|
19
|
+
|
20
|
+
def run(command)
|
21
|
+
@commands_run << command.to_s
|
22
|
+
end
|
23
|
+
|
24
|
+
def runbg(command)
|
25
|
+
@commands_run_in_bg << command.to_s
|
26
|
+
end
|
27
|
+
|
28
|
+
def has_run?(command)
|
29
|
+
@commands_run.include?(command.to_s)
|
30
|
+
end
|
31
|
+
|
32
|
+
def has_run_in_bg?(command)
|
33
|
+
@commands_run_in_bg.include?(command.to_s)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
11
37
|
class Test::Unit::TestCase
|
12
38
|
|
39
|
+
attr_reader :application, :runner
|
40
|
+
|
13
41
|
def setup
|
42
|
+
@application = JsTestDriver::Application.new
|
43
|
+
runtime_config.config = runtime_config.config_factory.new
|
44
|
+
@runner = FakeRunner.new
|
45
|
+
@application.stubs(:runner => @runner)
|
46
|
+
end
|
47
|
+
|
48
|
+
def teardown
|
14
49
|
clean_up_saved_config_files
|
15
50
|
end
|
16
51
|
|
@@ -18,6 +53,22 @@ class Test::Unit::TestCase
|
|
18
53
|
File.expand_path('fixtures', File.dirname(__FILE__))
|
19
54
|
end
|
20
55
|
|
56
|
+
def config
|
57
|
+
application.config
|
58
|
+
end
|
59
|
+
|
60
|
+
def runtime_config
|
61
|
+
application.runtime_config
|
62
|
+
end
|
63
|
+
|
64
|
+
def assert_run(cmd)
|
65
|
+
assert runner.has_run?(cmd), "Expected to have run:\n#{cmd}\nbut only commands run were:\n#{runner.commands_run.join("\n")}"
|
66
|
+
end
|
67
|
+
|
68
|
+
def assert_run_in_bg(cmd)
|
69
|
+
assert runner.has_run_in_bg?(cmd), "Expected to have run in bg:\n#{cmd}\nbut only commands run were:\n#{runner.commands_run_in_bg.join("\n")}"
|
70
|
+
end
|
71
|
+
|
21
72
|
def clean_up_saved_config_files
|
22
73
|
root_dir = File.expand_path('..', File.dirname(__FILE__))
|
23
74
|
Dir["#{root_dir}/**/.js_test_driver"].each do |file|
|
@@ -25,4 +76,4 @@ class Test::Unit::TestCase
|
|
25
76
|
end
|
26
77
|
end
|
27
78
|
|
28
|
-
end
|
79
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper'))
|
2
|
+
|
3
|
+
module JsTestDriver
|
4
|
+
class CaptureBrowsersTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_should_capture_default_browsers
|
7
|
+
config.browser 'foo', 'bar', 'baz'
|
8
|
+
JsTestDriver::Commands::BaseCommand.any_instance.stubs(:ensure_installed!)
|
9
|
+
|
10
|
+
application.capture_browsers
|
11
|
+
|
12
|
+
['foo', 'bar', 'baz'].each do |browser|
|
13
|
+
assert_run_in_bg("#{browser} http://localhost:4224/capture?strict")
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_should_capture_given_browsers
|
18
|
+
config.browser 'foo', 'bar', 'baz'
|
19
|
+
JsTestDriver::Commands::BaseCommand.any_instance.stubs(:ensure_installed!)
|
20
|
+
|
21
|
+
application.capture_browsers(:browsers => 'aaa,bbb')
|
22
|
+
|
23
|
+
['aaa', 'bbb'].each do |browser|
|
24
|
+
assert_run_in_bg("#{browser} http://localhost:4224/capture?strict")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
data/test/unit/config_test.rb
CHANGED
@@ -21,7 +21,7 @@ module JsTestDriver
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def given_an_empty_config
|
24
|
-
|
24
|
+
application.config_factory.new
|
25
25
|
end
|
26
26
|
|
27
27
|
def test_empty_config
|
@@ -152,7 +152,7 @@ module JsTestDriver
|
|
152
152
|
str = ""
|
153
153
|
|
154
154
|
# when
|
155
|
-
config =
|
155
|
+
config = application.config_factory.parse(str)
|
156
156
|
|
157
157
|
# then
|
158
158
|
assert_equal [], config.included_files
|
@@ -172,7 +172,7 @@ module JsTestDriver
|
|
172
172
|
CONFIG
|
173
173
|
|
174
174
|
# when
|
175
|
-
config =
|
175
|
+
config = application.config_factory.parse(str)
|
176
176
|
|
177
177
|
# then
|
178
178
|
assert_equal ['a', 'b', 'c'].map{|p| File.expand_path(p)}, config.included_files
|
@@ -183,8 +183,6 @@ module JsTestDriver
|
|
183
183
|
def test_given_a_config_path_should_expand_the_includes
|
184
184
|
# given
|
185
185
|
config = given_an_empty_config
|
186
|
-
config.config_dir = "/foo/bbb/ccc"
|
187
|
-
pwd = File.expand_path('.')
|
188
186
|
config.includes "a/a", "/b/b", "../c"
|
189
187
|
|
190
188
|
# then
|
@@ -194,7 +192,7 @@ module JsTestDriver
|
|
194
192
|
def test_config_with_html_fixtures
|
195
193
|
# given
|
196
194
|
config = given_an_empty_config
|
197
|
-
|
195
|
+
runtime_config.generated_files_dir = File.expand_path("configs")
|
198
196
|
|
199
197
|
# when
|
200
198
|
config.fixtures "fixture/directory", :name => "fixture_name", :namespace => "fixture_namespace"
|
@@ -203,23 +201,6 @@ module JsTestDriver
|
|
203
201
|
assert_config_includes config, 'load' => paths(["configs/fixtures/fixture_namespace/fixture_name.js"])
|
204
202
|
end
|
205
203
|
|
206
|
-
def test_should_save_fixtures
|
207
|
-
# given
|
208
|
-
config = given_an_empty_config
|
209
|
-
config.config_dir = "tmp/stuff"
|
210
|
-
config.fixtures fixture_dir, :name => "fixture_name", :namespace => "fixture_namespace"
|
211
|
-
|
212
|
-
# when
|
213
|
-
config.save_fixtures
|
214
|
-
|
215
|
-
# then
|
216
|
-
name = "tmp/stuff/fixtures/fixture_namespace/fixture_name.js"
|
217
|
-
assert File.exists?(name)
|
218
|
-
assert_equal File.read(name), config.html_fixtures.first.to_s
|
219
|
-
ensure
|
220
|
-
FileUtils.rm_rf("tmp/stuff")
|
221
|
-
end
|
222
|
-
|
223
204
|
def test_should_raise_argument_error_if_the_same_fixture_defined_twice
|
224
205
|
# given
|
225
206
|
config = given_an_empty_config
|
@@ -266,5 +247,32 @@ module JsTestDriver
|
|
266
247
|
'module' => 'com.google.jstestdriver.coverage.CoverageModule'}]
|
267
248
|
end
|
268
249
|
|
250
|
+
def test_with_proxies
|
251
|
+
# given
|
252
|
+
config = given_an_empty_config
|
253
|
+
|
254
|
+
# when
|
255
|
+
config.proxy('/hello/*').to('http://localhost:3111')
|
256
|
+
config.proxy('*').to('http://localhost:3222')
|
257
|
+
|
258
|
+
# then
|
259
|
+
assert_config_includes config, 'proxy' => [
|
260
|
+
{'matcher' => '/hello/*', 'server' => 'http://localhost:3111'},
|
261
|
+
{'matcher' => '*', 'server' => 'http://localhost:3222'}
|
262
|
+
]
|
263
|
+
end
|
264
|
+
|
265
|
+
def test_config_with_remote_browsers
|
266
|
+
# given
|
267
|
+
config = given_an_empty_config
|
268
|
+
|
269
|
+
# when
|
270
|
+
config.browser 'foo'
|
271
|
+
config.remote_browser('192.168.1.12:4444', :browser => :internet_explorer)
|
272
|
+
|
273
|
+
# then
|
274
|
+
assert_equal ['foo', File.join(runtime_config.remote_browsers_dir, 'remote-browser-192.168.1.12:4444-internet_explorer.rb')], config.browsers
|
275
|
+
end
|
276
|
+
|
269
277
|
end
|
270
278
|
end
|