aboutsummaryrefslogtreecommitdiffstats
path: root/test/scenario/RunnerSpec.js
diff options
context:
space:
mode:
authorElliott Sprehn2010-10-19 13:17:49 -0700
committerElliott Sprehn2010-10-20 14:38:00 -0700
commit2115db69035c5993533fe7a3825e64cf6e9068ad (patch)
tree796a502b28cd2bda8108a672eac0bf28c8bc21d4 /test/scenario/RunnerSpec.js
parent9c8b1800b90e14b643bab6ada8e96f8f850e84a6 (diff)
downloadangular.js-2115db69035c5993533fe7a3825e64cf6e9068ad.tar.bz2
Lots of stability and performance updates and UI polish too.
Polish the Scenario Runner UI to include: - a scroll pane that steps appear in since the list can be very long - Collapse successful tests - Show the line where the DSL statements were when there's an error (Chrome, Firefox) Also: - Remove lots angular.bind calls to reduce the amount of stack space used. - Use setTimeout(...,0) to schedule the next future to let the browser breathe and have it repaint the steps. Also prevents overflowing the stack when an it() creates many futures. - Run afterEach() handlers even if the it() block fails. - Make navigateTo() take a function as the second argument so you can compute a URL in the future. - Add wait() DSL statement to allow interactive debugging of tests. - Allow custom jQuery selectors with element(...).query(fn) DSL statement. Known Issues: - All afterEach() handlers run even if a beforeEach() handler fails. Only after handlers for the same level as the failure and above should run.
Diffstat (limited to 'test/scenario/RunnerSpec.js')
-rw-r--r--test/scenario/RunnerSpec.js22
1 files changed, 19 insertions, 3 deletions
diff --git a/test/scenario/RunnerSpec.js b/test/scenario/RunnerSpec.js
index 43d97257..d34a228c 100644
--- a/test/scenario/RunnerSpec.js
+++ b/test/scenario/RunnerSpec.js
@@ -3,16 +3,28 @@
*/
function MockSpecRunner() {}
MockSpecRunner.prototype.run = function(ui, spec, specDone) {
- spec.fn.call(this);
+ spec.before.call(this);
+ spec.body.call(this);
+ spec.after.call(this);
specDone();
};
+MockSpecRunner.prototype.addFuture = function(name, fn, line) {
+ return {name: name, fn: fn, line: line};
+};
+
describe('angular.scenario.Runner', function() {
var $window;
var runner;
beforeEach(function() {
// Trick to get the scope out of a DSL statement
+ angular.scenario.dsl('dslAddFuture', function() {
+ return function() {
+ return this.addFuture('future name', angular.noop);
+ };
+ });
+ // Trick to get the scope out of a DSL statement
angular.scenario.dsl('dslScope', function() {
var scope = this;
return function() { return scope; };
@@ -25,7 +37,9 @@ describe('angular.scenario.Runner', function() {
return this;
};
});
- $window = {};
+ $window = {
+ location: {}
+ };
runner = new angular.scenario.Runner($window);
});
@@ -63,7 +77,9 @@ describe('angular.scenario.Runner', function() {
});
});
var specs = runner.rootDescribe.getSpecs();
- specs[0].fn();
+ specs[0].before();
+ specs[0].body();
+ specs[0].after();
expect(before).toEqual(['A', 'B', 'C']);
expect(after).toEqual(['C', 'B', 'A']);
expect(specs[2].definition.parent).toEqual(runner.rootDescribe);