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 /src/scenario/Future.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 'src/scenario/Future.js')
| -rw-r--r-- | src/scenario/Future.js | 18 | 
1 files changed, 12 insertions, 6 deletions
diff --git a/src/scenario/Future.js b/src/scenario/Future.js index 30c2d902..8853aa3f 100644 --- a/src/scenario/Future.js +++ b/src/scenario/Future.js @@ -1,12 +1,17 @@  /**   * A future action in a spec. + * + * @param {String} name of the future action + * @param {Function} future callback(error, result) + * @param {String} Optional. function that returns the file/line number.   */ -angular.scenario.Future = function(name, behavior) { +angular.scenario.Future = function(name, behavior, line) {    this.name = name;    this.behavior = behavior;    this.fulfilled = false;    this.value = undefined;    this.parser = angular.identity; +  this.line = line || function() { return ''; };  };  /** @@ -15,18 +20,19 @@ angular.scenario.Future = function(name, behavior) {   * @param {Function} Callback function(error, result)   */  angular.scenario.Future.prototype.execute = function(doneFn) { -  this.behavior(angular.bind(this, function(error, result) { -    this.fulfilled = true; +  var self = this; +  this.behavior(function(error, result) { +    self.fulfilled = true;      if (result) {        try { -        result = this.parser(result); +        result = self.parser(result);        } catch(e) {          error = e;        }      } -    this.value = error || result; +    self.value = error || result;      doneFn(error, result); -  })); +  });  };  /**  | 
