jasmine-headless-webkit 0.8.4 → 0.9.0.rc1
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 +16 -8
- data/Guardfile +6 -1
- data/Rakefile +2 -1
- data/config/cucumber.yml +2 -0
- data/ext/jasmine-webkit-specrunner/Page.cpp +2 -3
- data/ext/jasmine-webkit-specrunner/Page.h +1 -0
- data/ext/jasmine-webkit-specrunner/Runner.cpp +37 -16
- data/ext/jasmine-webkit-specrunner/Runner.h +15 -5
- data/ext/jasmine-webkit-specrunner/specrunner.cpp +17 -7
- data/features/bin/failure.feature +7 -0
- data/features/bin/files.feature +7 -0
- data/features/bin/filtered_run/both_runs.feature +18 -0
- data/features/bin/filtered_run/no_full_run.feature +14 -0
- data/features/bin/help.feature +7 -0
- data/features/bin/quiet_messages.feature +8 -0
- data/features/bin/runner_out.feature +8 -0
- data/features/bin/spec_files_with_same_basename.feature +7 -0
- data/features/bin/success.feature +20 -0
- data/features/bin/success_with_js_error.feature +5 -0
- data/features/bin/tries_to_leave_page.feature +7 -0
- data/features/bin/try_to_click_a_button.feature +7 -0
- data/features/bin/two_files_from_src_files.feature +11 -0
- data/features/bin/with_coffeescript_error.feature +7 -0
- data/features/bin/with_console_log.feature +7 -0
- data/features/bin/with_server.feature +7 -0
- data/features/bin/with_window_prompt.feature +7 -0
- data/features/reporters.feature +24 -0
- data/features/runner.feature +34 -0
- data/features/steps/given/i_have_test_suite.rb +2 -0
- data/features/steps/given/no_existing_file.rb +4 -0
- data/features/steps/given/options/i_have_defaults.rb +4 -0
- data/features/steps/given/options/i_have_reporters.rb +10 -0
- data/features/steps/given/options/i_have_runner_options.rb +3 -0
- data/features/steps/then/bin/exit_status_should_be.rb +3 -0
- data/features/steps/then/bin/file_should_contain_runner.rb +4 -0
- data/features/steps/then/bin/following_files_loaded_in_order.rb +10 -0
- data/features/steps/then/bin/i_should_get_help_output.rb +4 -0
- data/features/steps/then/bin/output_should_include.rb +3 -0
- data/features/steps/then/bin/output_should_not_include.rb +4 -0
- data/features/steps/then/reporting/report_does_not_exist.rb +4 -0
- data/features/steps/then/reporting/report_should_exist.rb +3 -0
- data/features/steps/then/reporting/report_should_have.rb +7 -0
- data/features/steps/then/reporting/report_should_have_seed.rb +4 -0
- data/features/steps/then/runner/it_should_have_exit_status.rb +3 -0
- data/features/steps/then/runner/it_should_include_report_file.rb +4 -0
- data/features/steps/then/runner/it_should_not_include_report_file.rb +3 -0
- data/features/steps/then/templates/it_should_use_reporter.rb +6 -0
- data/features/steps/when/i_delete_file.rb +3 -0
- data/features/steps/when/i_get_runner.rb +4 -0
- data/features/steps/when/i_get_template_writer.rb +4 -0
- data/features/steps/when/i_run_executable.rb +4 -0
- data/features/steps/when/i_run_runner.rb +4 -0
- data/features/support/env.rb +7 -0
- data/lib/jasmine/headless/file_checker.rb +7 -3
- data/lib/jasmine/headless/files_list.rb +46 -19
- data/lib/jasmine/headless/options.rb +113 -5
- data/lib/jasmine/headless/report.rb +6 -1
- data/lib/jasmine/headless/report_message/console.rb +2 -4
- data/lib/jasmine/headless/report_message/seed.rb +14 -0
- data/lib/jasmine/headless/report_message/spec.rb +3 -5
- data/lib/jasmine/headless/report_message.rb +1 -0
- data/lib/jasmine/headless/runner.rb +169 -28
- data/lib/jasmine/headless/task.rb +0 -14
- data/lib/jasmine/headless/template_writer.rb +28 -4
- data/lib/jasmine/headless/unique_asset_list.rb +1 -1
- data/lib/jasmine/headless/version.rb +1 -1
- data/lib/jasmine/headless.rb +18 -0
- data/lib/jasmine-headless-webkit.rb +0 -4
- data/script/hooks/post-commit +4 -0
- data/script/hooks/pre-commit +2 -2
- data/script/initialize-environment +1 -1
- data/skel/template.html.erb +31 -2
- data/spec/jasmine/noisy/file.js.erb +0 -0
- data/spec/jasmine/noisy/noisy.yml +8 -0
- data/spec/jasmine/noisy/other_file.js +2 -0
- data/spec/jasmine/two_files_from_src_files/app/app-file.js +0 -0
- data/spec/jasmine/two_files_from_src_files/app/app.js +2 -0
- data/spec/jasmine/two_files_from_src_files/jasmine.yml +7 -0
- data/spec/jasmine/two_files_from_src_files/vendor/vendor-file.js +0 -0
- data/spec/jasmine/two_files_from_src_files/vendor/vendor.js +2 -0
- data/spec/jasmine/two_spec_files_same_basename/jasmine.yml +6 -0
- data/spec/jasmine/two_spec_files_same_basename/spec.coffee +4 -0
- data/spec/jasmine/two_spec_files_same_basename/spec.js +6 -0
- data/spec/jasmine/window_prompt/source.js +2 -0
- data/spec/jasmine/window_prompt/window_prompt.yml +4 -0
- data/spec/javascripts/headless_reporter_result_spec.coffee +22 -6
- data/spec/javascripts/helpers/spec_helper.coffee +2 -0
- data/spec/javascripts/{jasmine.HeadlessConsoleReporter_spec.coffee → jasmine-extensions_spec.coffee} +0 -35
- data/spec/javascripts/jasmine.HeadlessReporter.ConsoleBase_spec.coffee +35 -0
- data/spec/javascripts/jasmine.HeadlessReporter.Console_spec.coffee +3 -0
- data/spec/javascripts/jasmine.HeadlessReporter.Tap_spec.coffee +19 -0
- data/spec/javascripts/jasmine.HeadlessReporter_spec.coffee +27 -0
- data/spec/javascripts/support/jasmine.yml +6 -5
- data/spec/lib/jasmine/headless/file_checker_spec.rb +25 -9
- data/spec/lib/jasmine/headless/files_list_spec.rb +132 -158
- data/spec/lib/jasmine/headless/options_spec.rb +77 -0
- data/spec/lib/jasmine/headless/report_message/seed_spec.rb +18 -0
- data/spec/lib/jasmine/headless/report_spec.rb +16 -0
- data/spec/lib/jasmine/headless/runner_spec.rb +110 -33
- data/spec/lib/jasmine/headless/template_writer_spec.rb +31 -27
- data/spec/lib/jasmine/headless/unique_asset_list_spec.rb +3 -3
- data/spec/lib/jasmine/headless_spec.rb +36 -0
- data/spec/skel/template.html.erb_spec.rb +8 -0
- data/vendor/assets/coffeescripts/prolog.coffee +48 -21
- data/vendor/assets/javascripts/headless_reporter_result.js +3 -0
- data/vendor/assets/{coffeescripts → javascripts}/intense.coffee +0 -0
- data/vendor/assets/{coffeescripts → javascripts}/jasmine-extensions.coffee +4 -10
- data/vendor/assets/javascripts/jasmine.HeadlessReporter.Console.coffee +8 -0
- data/vendor/assets/javascripts/jasmine.HeadlessReporter.ConsoleBase.coffee +92 -0
- data/vendor/assets/javascripts/jasmine.HeadlessReporter.File.coffee +24 -0
- data/vendor/assets/javascripts/jasmine.HeadlessReporter.Tap.coffee +28 -0
- data/vendor/assets/javascripts/jasmine.HeadlessReporter.Verbose.coffee +64 -0
- data/vendor/assets/javascripts/jasmine.HeadlessReporter.coffee +58 -0
- data/vendor/assets/javascripts/prolog.js +44 -27
- metadata +157 -31
- data/ext/jasmine-webkit-specrunner/jasmine-webkit-specrunner.pro +0 -19
- data/lib/digest/jasmine_test.rb +0 -20
- data/spec/bin/jasmine-headless-webkit_spec.rb +0 -142
- data/vendor/assets/coffeescripts/jasmine.HeadlessConsoleReporter.coffee +0 -118
- data/vendor/assets/javascripts/intense.js +0 -44
- data/vendor/assets/javascripts/jasmine-extensions.js +0 -129
- data/vendor/assets/javascripts/jasmine.HeadlessConsoleReporter.js +0 -136
data/Gemfile
CHANGED
|
@@ -6,18 +6,26 @@ gemspec
|
|
|
6
6
|
gem 'rspec'
|
|
7
7
|
gem 'fakefs', :require => nil
|
|
8
8
|
gem 'guard'
|
|
9
|
+
|
|
9
10
|
gem 'guard-rspec'
|
|
10
11
|
gem 'guard-shell'
|
|
11
12
|
gem 'guard-coffeescript'
|
|
12
|
-
gem '
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
gem 'guard-cucumber'
|
|
14
|
+
|
|
15
|
+
require 'rbconfig'
|
|
16
|
+
case RbConfig::CONFIG['host_os']
|
|
17
|
+
when /darwin/
|
|
18
|
+
gem 'rb-fsevent'
|
|
19
|
+
when /linux/
|
|
20
|
+
gem 'libnotify'
|
|
21
|
+
end
|
|
17
22
|
|
|
18
|
-
gem '
|
|
23
|
+
gem 'mocha'
|
|
24
|
+
|
|
25
|
+
gem 'cucumber'
|
|
26
|
+
|
|
27
|
+
gem 'jquery-rails', '~> 1.0.0'
|
|
19
28
|
gem 'ejs'
|
|
20
29
|
|
|
21
|
-
gem '
|
|
22
|
-
#gem 'perftools.rb'
|
|
30
|
+
gem 'guard-jasmine-headless-webkit', :git => 'git://github.com/johnbintz/guard-jasmine-headless-webkit.git'
|
|
23
31
|
|
data/Guardfile
CHANGED
|
@@ -22,13 +22,18 @@ guard 'rspec', :version => 2, :all_on_start => false do
|
|
|
22
22
|
watch('spec/spec_helper.rb') { "spec" }
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
+
guard 'cucumber', :cli => '-r features --format pretty' do
|
|
26
|
+
watch(%r{^features/.+\.feature$})
|
|
27
|
+
watch(%r{^features/support/.+$}) { 'features' }
|
|
28
|
+
watch(%r{^features/steps/(.+)_steps\.rb$}) { 'features' }
|
|
29
|
+
end
|
|
30
|
+
|
|
25
31
|
guard 'jasmine-headless-webkit', :all_on_start => false do
|
|
26
32
|
watch(%r{^spec/javascripts/.+_spec\.coffee})
|
|
27
33
|
watch(%r{^jasmine/(.+)\.coffee$}) { |m| "spec/javascripts/#{m[1]}_spec.coffee" }
|
|
28
34
|
end
|
|
29
35
|
|
|
30
36
|
def compile
|
|
31
|
-
#system %{cd ext/jasmine-webkit-specrunner && ruby test.rb && ruby extconf.rb}
|
|
32
37
|
system %{cd ext/jasmine-webkit-specrunner && ruby extconf.rb}
|
|
33
38
|
end
|
|
34
39
|
|
data/Rakefile
CHANGED
|
@@ -14,7 +14,7 @@ require 'jasmine/headless/task'
|
|
|
14
14
|
|
|
15
15
|
Jasmine::Headless::Task.new
|
|
16
16
|
|
|
17
|
-
PLATFORMS = %w{1.8.7 1.9.2 ree 1.9.3
|
|
17
|
+
PLATFORMS = %w{1.8.7 1.9.2 ree 1.9.3}
|
|
18
18
|
|
|
19
19
|
def rvm_bundle(command = '')
|
|
20
20
|
Bundler.with_clean_env do
|
|
@@ -30,6 +30,7 @@ namespace :spec do
|
|
|
30
30
|
task :platforms do
|
|
31
31
|
rvm_bundle
|
|
32
32
|
rvm_bundle "exec rspec spec"
|
|
33
|
+
rvm_bundle "exec cucumber"
|
|
33
34
|
raise SpecError.new if $?.exitstatus != 0
|
|
34
35
|
end
|
|
35
36
|
end
|
data/config/cucumber.yml
ADDED
|
@@ -11,6 +11,5 @@ void Page::javaScriptConsoleMessage(const QString & message, int lineNumber, con
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
void Page::javaScriptAlert(QWebFrame *, const QString &) {}
|
|
14
|
-
bool Page::javaScriptConfirm(QWebFrame *, const QString &) {
|
|
15
|
-
|
|
16
|
-
}
|
|
14
|
+
bool Page::javaScriptConfirm(QWebFrame *, const QString &) { return false; }
|
|
15
|
+
bool Page::javaScriptPrompt(QWebFrame *, const QString &, const QString &, QString *) { return false; }
|
|
@@ -12,6 +12,7 @@ class Page: public QWebPage {
|
|
|
12
12
|
void javaScriptConsoleMessage(const QString & message, int lineNumber, const QString & sourceID);
|
|
13
13
|
void javaScriptAlert(QWebFrame *, const QString &);
|
|
14
14
|
bool javaScriptConfirm(QWebFrame *, const QString &);
|
|
15
|
+
bool javaScriptPrompt(QWebFrame *, const QString &, const QString &, QString *);
|
|
15
16
|
signals:
|
|
16
17
|
void handleError(const QString & message, int lineNumber, const QString & sourceID);
|
|
17
18
|
};
|
|
@@ -18,6 +18,7 @@ Runner::Runner() : QObject()
|
|
|
18
18
|
, usedConsole(false)
|
|
19
19
|
, isFinished(false)
|
|
20
20
|
, useColors(false)
|
|
21
|
+
, quiet(false)
|
|
21
22
|
{
|
|
22
23
|
page.settings()->enablePersistentStorage();
|
|
23
24
|
ticker.setInterval(TIMER_TICK);
|
|
@@ -62,17 +63,17 @@ void Runner::handleError(const QString &message, int lineNumber, const QString &
|
|
|
62
63
|
|
|
63
64
|
void Runner::loadSpec()
|
|
64
65
|
{
|
|
65
|
-
|
|
66
|
-
outputFile = 0;
|
|
67
|
-
ts = 0;
|
|
68
|
-
} else {
|
|
69
|
-
outputFile = new QFile(reportFileName);
|
|
70
|
-
outputFile->open(QIODevice::WriteOnly);
|
|
66
|
+
QVectorIterator<QString> iterator(reportFiles);
|
|
71
67
|
|
|
72
|
-
|
|
68
|
+
while (iterator.hasNext()) {
|
|
69
|
+
QFile *outputFile = new QFile(iterator.next());
|
|
70
|
+
outputFile->open(QIODevice::WriteOnly);
|
|
71
|
+
outputFiles.enqueue(outputFile);
|
|
73
72
|
}
|
|
74
73
|
|
|
75
|
-
|
|
74
|
+
QString runnerFile = runnerFiles.dequeue();
|
|
75
|
+
|
|
76
|
+
page.mainFrame()->load(runnerFile);
|
|
76
77
|
ticker.start();
|
|
77
78
|
}
|
|
78
79
|
|
|
@@ -104,8 +105,8 @@ void Runner::hasSpecFailure() {
|
|
|
104
105
|
_hasSpecFailure = true;
|
|
105
106
|
}
|
|
106
107
|
|
|
107
|
-
void Runner::
|
|
108
|
-
|
|
108
|
+
void Runner::setReportFiles(QStack<QString> &files) {
|
|
109
|
+
reportFiles = files;
|
|
109
110
|
}
|
|
110
111
|
|
|
111
112
|
void Runner::timerPause() {
|
|
@@ -120,6 +121,22 @@ void Runner::ping() {
|
|
|
120
121
|
runs = 0;
|
|
121
122
|
}
|
|
122
123
|
|
|
124
|
+
void Runner::setSeed(QString s) {
|
|
125
|
+
seed = s;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
void Runner::setQuiet(bool q) {
|
|
129
|
+
quiet = q;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
QString Runner::getSeed() {
|
|
133
|
+
return seed;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
bool Runner::isQuiet() {
|
|
137
|
+
return quiet;
|
|
138
|
+
}
|
|
139
|
+
|
|
123
140
|
void Runner::print(const QString &fh, const QString &content) {
|
|
124
141
|
if (fh == "stdout") {
|
|
125
142
|
std::cout << qPrintable(content);
|
|
@@ -131,14 +148,18 @@ void Runner::print(const QString &fh, const QString &content) {
|
|
|
131
148
|
std::cerr.flush();
|
|
132
149
|
}
|
|
133
150
|
|
|
134
|
-
if (fh
|
|
135
|
-
|
|
136
|
-
|
|
151
|
+
if (fh.contains("report")) {
|
|
152
|
+
int index = (int)fh.split(":").last().toUInt();
|
|
153
|
+
|
|
154
|
+
QTextStream ts(outputFiles.at(index));
|
|
155
|
+
ts << qPrintable(content);
|
|
156
|
+
ts.flush();
|
|
137
157
|
}
|
|
138
158
|
}
|
|
139
159
|
|
|
140
160
|
void Runner::finishSuite() {
|
|
141
161
|
isFinished = true;
|
|
162
|
+
runs = 0;
|
|
142
163
|
}
|
|
143
164
|
|
|
144
165
|
void Runner::timerEvent() {
|
|
@@ -147,9 +168,9 @@ void Runner::timerEvent() {
|
|
|
147
168
|
if (hasErrors && runs > 2)
|
|
148
169
|
QApplication::instance()->exit(1);
|
|
149
170
|
|
|
150
|
-
if (isFinished) {
|
|
151
|
-
|
|
152
|
-
|
|
171
|
+
if (isFinished && runs > 2) {
|
|
172
|
+
while (!outputFiles.isEmpty()) {
|
|
173
|
+
outputFiles.dequeue()->close();
|
|
153
174
|
}
|
|
154
175
|
|
|
155
176
|
int exitCode = 0;
|
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
#include <QTextStream>
|
|
8
8
|
#include <iostream>
|
|
9
9
|
#include <fstream>
|
|
10
|
+
#include <sstream>
|
|
10
11
|
#include <QQueue>
|
|
12
|
+
#include <QApplication>
|
|
11
13
|
|
|
12
14
|
#include "Page.h"
|
|
13
15
|
|
|
@@ -20,7 +22,10 @@ class Runner: public QObject {
|
|
|
20
22
|
|
|
21
23
|
Runner();
|
|
22
24
|
void setColors(bool colors);
|
|
23
|
-
void
|
|
25
|
+
void setReportFiles(QStack<QString> &files);
|
|
26
|
+
void setSeed(QString s);
|
|
27
|
+
void setQuiet(bool q);
|
|
28
|
+
|
|
24
29
|
void addFile(const QString &spec);
|
|
25
30
|
void go();
|
|
26
31
|
|
|
@@ -30,6 +35,10 @@ class Runner: public QObject {
|
|
|
30
35
|
void hasUsedConsole();
|
|
31
36
|
void hasError();
|
|
32
37
|
void hasSpecFailure();
|
|
38
|
+
|
|
39
|
+
bool isQuiet();
|
|
40
|
+
QString getSeed();
|
|
41
|
+
|
|
33
42
|
void print(const QString &fh, const QString &content);
|
|
34
43
|
void finishSuite();
|
|
35
44
|
void ping();
|
|
@@ -49,15 +58,16 @@ class Runner: public QObject {
|
|
|
49
58
|
bool usedConsole;
|
|
50
59
|
bool isFinished;
|
|
51
60
|
bool useColors;
|
|
61
|
+
bool quiet;
|
|
52
62
|
|
|
53
|
-
|
|
63
|
+
QString seed;
|
|
54
64
|
|
|
55
|
-
QString
|
|
65
|
+
QQueue<QString> runnerFiles;
|
|
66
|
+
QStack<QString> reportFiles;
|
|
56
67
|
|
|
57
68
|
void loadSpec();
|
|
58
69
|
|
|
59
|
-
QFile
|
|
60
|
-
QTextStream *ts;
|
|
70
|
+
QQueue<QFile *> outputFiles;
|
|
61
71
|
};
|
|
62
72
|
|
|
63
73
|
#endif
|
|
@@ -29,34 +29,44 @@
|
|
|
29
29
|
|
|
30
30
|
int main(int argc, char** argv)
|
|
31
31
|
{
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
bool showColors = false;
|
|
33
|
+
bool isQuiet = false;
|
|
34
|
+
QString seed;
|
|
35
|
+
QStack<QString> reporterFiles;
|
|
34
36
|
|
|
35
37
|
int c, index;
|
|
36
38
|
|
|
37
|
-
while ((c = getopt(argc, argv, "cr:")) != -1) {
|
|
39
|
+
while ((c = getopt(argc, argv, "cr:s:q")) != -1) {
|
|
38
40
|
switch(c) {
|
|
39
41
|
case 'c':
|
|
40
42
|
showColors = true;
|
|
41
43
|
break;
|
|
44
|
+
case 'q':
|
|
45
|
+
isQuiet = true;
|
|
46
|
+
break;
|
|
42
47
|
case 'r':
|
|
43
|
-
|
|
48
|
+
reporterFiles.push(QString(optarg));
|
|
49
|
+
break;
|
|
50
|
+
case 's':
|
|
51
|
+
seed = QString(optarg);
|
|
44
52
|
break;
|
|
45
53
|
}
|
|
46
54
|
}
|
|
47
55
|
|
|
48
56
|
if (optind == argc) {
|
|
49
57
|
std::cerr << "Run Jasmine's SpecRunner headlessly" << std::endl << std::endl;
|
|
50
|
-
std::cerr << " specrunner [-c] [-r
|
|
58
|
+
std::cerr << " specrunner [-c] [-s seed] [-r report file ...] specrunner.html ..." << std::endl;
|
|
51
59
|
return 1;
|
|
52
60
|
}
|
|
53
61
|
|
|
54
62
|
QApplication app(argc, argv);
|
|
55
63
|
app.setApplicationName("jasmine-headless-webkit");
|
|
56
64
|
Runner runner;
|
|
57
|
-
runner.setColors(showColors);
|
|
58
65
|
|
|
59
|
-
runner.
|
|
66
|
+
runner.setColors(showColors);
|
|
67
|
+
runner.setQuiet(isQuiet);
|
|
68
|
+
runner.setReportFiles(reporterFiles);
|
|
69
|
+
runner.setSeed(seed);
|
|
60
70
|
|
|
61
71
|
for (index = optind; index < argc; index++) {
|
|
62
72
|
runner.addFile(QString::fromLocal8Bit(argv[index]));
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Feature: Bin - Failure
|
|
2
|
+
Scenario: Run a failing test
|
|
3
|
+
Given there is no existing "spec/report.txt" file
|
|
4
|
+
When I run `bin/jasmine-headless-webkit -j spec/jasmine/failure/failure.yml -f File:spec/report.txt`
|
|
5
|
+
Then the exit status should be 1
|
|
6
|
+
And the report file "spec/report.txt" should have 1 total, 1 failure, no console usage
|
|
7
|
+
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Feature: Bin - Files
|
|
2
|
+
Scenario: List the files a test suite will use
|
|
3
|
+
Given I have a test suite
|
|
4
|
+
When I run `bin/jasmine-headless-webkit -j spec/jasmine/success/success.yml -l`
|
|
5
|
+
Then the exit status should be 0
|
|
6
|
+
And the output should include "spec/jasmine/success/success.js"
|
|
7
|
+
And the output should include "spec/jasmine/success/success_spec.js"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
Feature: Bin - Filtered Run - Both Runs
|
|
2
|
+
Background:
|
|
3
|
+
Given there is no existing "spec/report.txt" file
|
|
4
|
+
|
|
5
|
+
Scenario: Run one and fail
|
|
6
|
+
When I run `bin/jasmine-headless-webkit -j spec/jasmine/filtered_failure/filtered_failure.yml -f File:spec/report.txt ./spec/jasmine/filtered_failure/failure_spec.js`
|
|
7
|
+
Then the exit status should be 1
|
|
8
|
+
And the report file "spec/report.txt" should have 1 total, 1 failure, no console usage
|
|
9
|
+
|
|
10
|
+
Scenario: Run both and succeed
|
|
11
|
+
When I run `bin/jasmine-headless-webkit -j spec/jasmine/filtered_success/filtered_success.yml -f File:spec/report.txt ./spec/jasmine/filtered_success/success_one_spec.js`
|
|
12
|
+
Then the exit status should be 0
|
|
13
|
+
And the report file "spec/report.txt" should have 2 total, 0 failures, no console usage
|
|
14
|
+
|
|
15
|
+
Scenario: Run both with console.log
|
|
16
|
+
When I run `bin/jasmine-headless-webkit -j spec/jasmine/filtered_success_with_console/filtered_success.yml -f File:spec/report.txt ./spec/jasmine/filtered_success_with_console/success_one_spec.js`
|
|
17
|
+
Then the exit status should be 2
|
|
18
|
+
And the report file "spec/report.txt" should have 2 total, 0 failures, yes console usage
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
Feature: Bin - No Full Run
|
|
2
|
+
Background:
|
|
3
|
+
Given there is no existing "spec/report.txt" file
|
|
4
|
+
|
|
5
|
+
Scenario: Only run the filtered run
|
|
6
|
+
When I run `bin/jasmine-headless-webkit -j spec/jasmine/filtered_success/filtered_success.yml -f File:spec/report.txt --no-full-run ./spec/jasmine/filtered_success/success_one_spec.js`
|
|
7
|
+
Then the exit status should be 0
|
|
8
|
+
And the report file "spec/report.txt" should have 1 total, 0 failure, no console usage
|
|
9
|
+
|
|
10
|
+
Scenario: Use a file outside of the normal test run
|
|
11
|
+
When I run `bin/jasmine-headless-webkit -j spec/jasmine/filtered_success/filtered_success.yml -f File:spec/report.txt ./spec/jasmine/filtered_success/success_other_file.js`
|
|
12
|
+
Then the exit status should be 0
|
|
13
|
+
And the report file "spec/report.txt" should have 1 total, 0 failure, no console usage
|
|
14
|
+
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
Feature: Bin - Quiet Messages
|
|
2
|
+
Scenario: Run a test that would cause a lot of messages to be displayed and silence them all
|
|
3
|
+
Given I have a test suite
|
|
4
|
+
When I run `bin/jasmine-headless-webkit -q -j spec/jasmine/noisy/noisy.yml`
|
|
5
|
+
Then the exit status should be 0
|
|
6
|
+
And the output should not include "[Skipping File]"
|
|
7
|
+
And the output should not include "You should mock"
|
|
8
|
+
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
Feature: Bin - Runner Out
|
|
2
|
+
Scenario: Write out the runner to a specified file
|
|
3
|
+
Given I have a test suite
|
|
4
|
+
When I run `bin/jasmine-headless-webkit -j spec/jasmine/success/success.yml --runner-out spec/runner.html`
|
|
5
|
+
Then the exit status should be 0
|
|
6
|
+
And the file "spec/runner.html" should contain a JHW runner
|
|
7
|
+
When I delete the file "spec/runner.html"
|
|
8
|
+
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Feature: Bin - Two spec files with same basename
|
|
2
|
+
Scenario: Run both files
|
|
3
|
+
Given there is no existing "spec/report.txt" file
|
|
4
|
+
When I run `bin/jasmine-headless-webkit -j spec/jasmine/two_spec_files_same_basename/jasmine.yml -f File:spec/report.txt`
|
|
5
|
+
Then the exit status should be 0
|
|
6
|
+
And the report file "spec/report.txt" should have 2 total, 0 failures, no console usage
|
|
7
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Feature: Bin - Success
|
|
2
|
+
Scenario: Run a successful test with long format definition
|
|
3
|
+
Given there is no existing "spec/report.txt" file
|
|
4
|
+
When I run `bin/jasmine-headless-webkit --seed 1234 -j spec/jasmine/success/success.yml --format File --out spec/report.txt`
|
|
5
|
+
Then the exit status should be 0
|
|
6
|
+
And the report file "spec/report.txt" should have 1 total, 0 failures, no console usage
|
|
7
|
+
And the report file "spec/report.txt" should have seed 1234
|
|
8
|
+
|
|
9
|
+
Scenario: Run a successful test with legacy file reporting
|
|
10
|
+
Given there is no existing "spec/report.txt" file
|
|
11
|
+
When I run `bin/jasmine-headless-webkit -j spec/jasmine/success/success.yml --report spec/report.txt`
|
|
12
|
+
Then the exit status should be 0
|
|
13
|
+
And the report file "spec/report.txt" should have 1 total, 0 failures, no console usage
|
|
14
|
+
|
|
15
|
+
Scenario: Run a successful test with shortened format definition
|
|
16
|
+
Given there is no existing "spec/report.txt" file
|
|
17
|
+
When I run `bin/jasmine-headless-webkit -j spec/jasmine/success/success.yml -f File:spec/report.txt`
|
|
18
|
+
Then the exit status should be 0
|
|
19
|
+
And the report file "spec/report.txt" should have 1 total, 0 failures, no console usage
|
|
20
|
+
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Feature: Bin - Try to Leave Page
|
|
2
|
+
Scenario: Fail on trying to leave the page
|
|
3
|
+
Given there is no existing "spec/report.txt" file
|
|
4
|
+
When I run `bin/jasmine-headless-webkit -j spec/jasmine/leave_page/leave_page.yml -f File:spec/report.txt`
|
|
5
|
+
Then the exit status should be 1
|
|
6
|
+
And the report file "spec/report.txt" should exist
|
|
7
|
+
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Feature: Bin - Try to Click A Button
|
|
2
|
+
Scenario: Don't leave page when clicking a button
|
|
3
|
+
Given there is no existing "spec/report.txt" file
|
|
4
|
+
When I run `bin/jasmine-headless-webkit -j spec/jasmine/click_button/click_button.yml -f File:spec/report.txt`
|
|
5
|
+
Then the exit status should be 0
|
|
6
|
+
And the report file "spec/report.txt" should have 0 total, 0 failures, no console usage
|
|
7
|
+
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Feature: Two files from source files
|
|
2
|
+
Scenario: Files are ordered directly
|
|
3
|
+
Given I have a test suite
|
|
4
|
+
When I run `bin/jasmine-headless-webkit -j spec/jasmine/two_files_from_src_files/jasmine.yml -l`
|
|
5
|
+
Then the exit status should be 0
|
|
6
|
+
And the following files should be loaded in order:
|
|
7
|
+
| vendor/vendor-file.js |
|
|
8
|
+
| vendor/vendor.js |
|
|
9
|
+
| app/app-file.js |
|
|
10
|
+
| app/app.js |
|
|
11
|
+
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Feature: Bin - With CoffeeScript error
|
|
2
|
+
Scenario: Fail on CoffeeScript error
|
|
3
|
+
Given there is no existing "spec/report.txt" file
|
|
4
|
+
When I run `bin/jasmine-headless-webkit -j spec/jasmine/coffeescript_error/coffeescript_error.yml -f File:spec/report.txt`
|
|
5
|
+
Then the exit status should be 1
|
|
6
|
+
And the report file "spec/report.txt" should not exist
|
|
7
|
+
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Feature: Use console.log
|
|
2
|
+
Scenario: Run a successful test that uses console.log
|
|
3
|
+
Given there is no existing "spec/report.txt" file
|
|
4
|
+
When I run `bin/jasmine-headless-webkit -j spec/jasmine/console_log/console_log.yml -f File:spec/report.txt`
|
|
5
|
+
Then the exit status should be 2
|
|
6
|
+
And the report file "spec/report.txt" should have 1 total, 0 failures, yes console usage
|
|
7
|
+
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Feature: Bin - With Server
|
|
2
|
+
Scenario: Run using an HTTP server
|
|
3
|
+
Given there is no existing "spec/report.txt" file
|
|
4
|
+
When I run `bin/jasmine-headless-webkit --use-server -j spec/jasmine/success/success.yml -f File:spec/report.txt`
|
|
5
|
+
Then the exit status should be 0
|
|
6
|
+
And the report file "spec/report.txt" should have 1 total, 0 failures, no console usage
|
|
7
|
+
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Feature: Bin - With window.prompt()
|
|
2
|
+
Scenario: Alert the user that window.prompt() needs to be stubbed
|
|
3
|
+
Given I have a test suite
|
|
4
|
+
When I run `bin/jasmine-headless-webkit -j spec/jasmine/window_prompt/window_prompt.yml`
|
|
5
|
+
Then the exit status should be 0
|
|
6
|
+
And the output should include "You should mock window.prompt"
|
|
7
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
Feature: Reporters
|
|
2
|
+
In order to allow for multiple types of output
|
|
3
|
+
I should be able to
|
|
4
|
+
Manage reporters and decide which ones to use
|
|
5
|
+
|
|
6
|
+
Scenario: Use default reporters
|
|
7
|
+
Given I have the default runner options
|
|
8
|
+
When I get a runner
|
|
9
|
+
And I get a template writer
|
|
10
|
+
Then the template should use the "Console" reporter to "stdout"
|
|
11
|
+
And the command to run the runner should not include a report file
|
|
12
|
+
|
|
13
|
+
Scenario: Use a file reporter
|
|
14
|
+
Given I have the default runner options
|
|
15
|
+
And I have the following reporters:
|
|
16
|
+
| Name | File |
|
|
17
|
+
| Console | |
|
|
18
|
+
| File | file |
|
|
19
|
+
When I get a runner
|
|
20
|
+
And I get a template writer
|
|
21
|
+
Then the template should use the "Console" reporter to "stdout"
|
|
22
|
+
And the template should use the "File" reporter to "report:0"
|
|
23
|
+
And the command to run the runner should include the report file "file"
|
|
24
|
+
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
Feature: Using the Runner directly
|
|
2
|
+
Scenario: Succeed
|
|
3
|
+
Given I have the following runner options:
|
|
4
|
+
"""
|
|
5
|
+
:jasmine_config: spec/jasmine/success/success.yml
|
|
6
|
+
:reporters:
|
|
7
|
+
- [ 'File', 'spec/report.txt' ]
|
|
8
|
+
"""
|
|
9
|
+
When I get a runner
|
|
10
|
+
And I run the runner
|
|
11
|
+
Then the runner should have an exit status of 0
|
|
12
|
+
And the report file "spec/report.txt" should have 1 total, 0 failures, no console usage
|
|
13
|
+
|
|
14
|
+
Scenario: JavaScript Error
|
|
15
|
+
Given I have the following runner options:
|
|
16
|
+
"""
|
|
17
|
+
:jasmine_config: spec/jasmine/success_with_error/success_with_error.yml
|
|
18
|
+
"""
|
|
19
|
+
When I get a runner
|
|
20
|
+
And I run the runner
|
|
21
|
+
Then the runner should have an exit status of 1
|
|
22
|
+
|
|
23
|
+
Scenario: Failure
|
|
24
|
+
Given I have the following runner options:
|
|
25
|
+
"""
|
|
26
|
+
:jasmine_config: spec/jasmine/failure/failure.yml
|
|
27
|
+
:reporters:
|
|
28
|
+
- [ 'File', 'spec/report.txt' ]
|
|
29
|
+
"""
|
|
30
|
+
When I get a runner
|
|
31
|
+
And I run the runner
|
|
32
|
+
Then the runner should have an exit status of 1
|
|
33
|
+
And the report file "spec/report.txt" should have 1 total, 1 failure, no console usage
|
|
34
|
+
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Then /^the report file "(.*)" should have (\d+) total, (\d+) failures?, (no|yes) console usage$/ do |file, total, failures, console_usage|
|
|
2
|
+
report = Jasmine::Headless::Report.load(file)
|
|
3
|
+
|
|
4
|
+
report.total.should == total.to_i
|
|
5
|
+
report.failed.should == failures.to_i
|
|
6
|
+
report.has_used_console?.should == (console_usage == 'yes')
|
|
7
|
+
end
|