diff options
| author | Elliott Sprehn | 2010-10-19 13:17:49 -0700 |
|---|---|---|
| committer | Elliott Sprehn | 2010-10-20 14:38:00 -0700 |
| commit | 2115db69035c5993533fe7a3825e64cf6e9068ad (patch) | |
| tree | 796a502b28cd2bda8108a672eac0bf28c8bc21d4 /test/scenario/RunnerSpec.js | |
| parent | 9c8b1800b90e14b643bab6ada8e96f8f850e84a6 (diff) | |
| download | angular.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.js | 22 |
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); |
