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);  | 
