expose e2e test results

This commit is contained in:
Andres Ornelas 2010-06-22 17:15:14 -07:00
parent b129a1094e
commit 70c3dc8166
2 changed files with 44 additions and 4 deletions

View file

@ -5,6 +5,7 @@ angular.scenario.Runner = function(scope, jQuery){
var self = scope.$scenario = this;
this.scope = scope;
this.jQuery = jQuery;
this.scope.$testrun = {done: false, results: []};
var specs = this.specs = {};
var path = [];
@ -40,7 +41,7 @@ angular.scenario.Runner = function(scope, jQuery){
self.currentSpec = null;
};
this.logger = function returnNoop(){
return extend(returnNoop, {close:noop, fail:noop});;
return extend(returnNoop, {close:noop, fail:noop});
};
};
@ -99,6 +100,8 @@ angular.scenario.Runner.prototype = {
var next = specNames.shift();
if(next) {
self.execute(next, callback);
} else {
self.scope.$testrun.done = true;
}
};
callback();
@ -111,6 +114,7 @@ angular.scenario.Runner.prototype = {
execute: function(name, callback) {
var spec = this.specs[name],
self = this,
stepsDone = [],
result = {
passed: false,
failed: false,
@ -143,15 +147,23 @@ angular.scenario.Runner.prototype = {
if (step) {
spec.nextStepIndex ++;
result.log = stepLogger('step', step.name);
stepsDone.push(step.name);
try {
step.fn.call(specThis, next);
} catch (e) {
console.error(e);
result.fail(e);
self.scope.$testrun.results.push(
{name: name, passed: false, error: e, steps: stepsDone});
done();
}
} else {
result.passed = !result.failed;
self.scope.$testrun.results.push({
name: name,
passed: !result.failed,
error: result.error,
steps: stepsDone});
done();
}
};

View file

@ -148,8 +148,14 @@ describe('Runner', function(){
it('should handle exceptions in a step', function(){
$scenario.specs['spec'] = {
steps: [
{name: 'first step', fn: function(done) {
done();
}},
{name:'error', fn:function(done) {
throw "MyError";
}},
{name: 'should not execute', fn: function(done) {
done();
}}
]
};
@ -160,12 +166,17 @@ describe('Runner', function(){
expect(spec.result.failed).toEqual(true);
expect(spec.result.finished).toEqual(true);
expect(spec.result.error).toEqual("MyError");
expect(scenario.$testrun.results).toEqual([{
name: 'spec',
passed: false,
error: 'MyError',
steps: ['first step', 'error']}]);
});
});
describe('run', function(){
var next;
it('should execute all specs', function(){
beforeEach(function() {
Describe('d1', function(){
It('it1', function(){ $scenario.addStep('s1', logger('s1,')); });
It('it2', function(){
@ -177,13 +188,30 @@ describe('Runner', function(){
It('it3', function(){ $scenario.addStep('s3', logger('s3,')); });
It('it4', function(){ $scenario.addStep('s4', logger('s4,')); });
});
});
it('should execute all specs', function(){
$scenario.run(body);
expect(log).toEqual('s1,s2,');
next();
expect(log).toEqual('s1,s2,s3,s4,');
});
it('should publish done state and results as tests are run', function() {
expect(scenario.$testrun.done).toBeFalsy();
expect(scenario.$testrun.results).toEqual([]);
$scenario.run(body);
expect(scenario.$testrun.done).toBeFalsy();
expect(scenario.$testrun.results).toEqual([
{name: 'd1: it it1', passed: true, steps: ['s1']}
]);
next();
expect(scenario.$testrun.done).toBeTruthy();
expect(scenario.$testrun.results).toEqual([
{name: 'd1: it it1', passed: true, steps: ['s1']},
{name: 'd1: it it2', passed: true, steps: ['s2', 's2.2']},
{name: 'd2: it it3', passed: true, steps: ['s3']},
{name: 'd2: it it4', passed: true, steps: ['s4']}
]);
});
});