Run this with mocha for an example of execution order:
describe('first', function() {
console.log('>> first describe (parent)');
before(function(done) {
console.log('>> first describe before');
setTimeout(function() {
console.log('>> first describe before done (async)');
done();
}, 5);
});
describe('second', function() {
console.log('>> second describe');
console.log('>>> second describe random code WITHOUT before statement');
it('', function(done) {
setTimeout(function() {
console.log('>> second describe it done (async)');
done();
}, 5);
});
});
describe('third', function() {
console.log('>> third describe');
before(function(done) {
console.log('>>> third describe random code WITH before statement');
done();
});
it('', function(done) {
console.log('>> third describe it done (sync)');
done();
});
});
});