Skip to content

Commit d45aa6e

Browse files
committed
chore(promises): Wait for promises explicitly
See #68 for details
1 parent e05cd3c commit d45aa6e

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

index.js

+11-5
Original file line numberDiff line numberDiff line change
@@ -78,20 +78,26 @@ function wrapInControlFlow(flow, globalFn, fnName) {
7878

7979
flow.execute(function controlFlowExecute() {
8080
return new webdriver.promise.Promise(function(fulfill, reject) {
81+
function wrappedReject(err) {
82+
var wrappedErr = new Error(err);
83+
reject(wrappedErr);
84+
}
8185
if (async) {
8286
// If testFn is async (it expects a done callback), resolve the promise of this
8387
// test whenever that callback says to. Any promises returned from testFn are
8488
// ignored.
8589
var proxyDone = fulfill;
86-
proxyDone.fail = function(err) {
87-
var wrappedErr = new Error(err);
88-
reject(wrappedErr);
89-
};
90+
proxyDone.fail = wrappedReject;
9091
testFn(proxyDone);
9192
} else {
9293
// Without a callback, testFn can return a promise, or it will
9394
// be assumed to have completed synchronously.
94-
fulfill(testFn());
95+
var ret = testFn();
96+
if (webdriver.promise.isPromise(ret)) {
97+
ret.then(fulfill, wrappedReject);
98+
} else {
99+
fulfill(ret);
100+
}
95101
}
96102
}, flow);
97103
}, 'Run ' + fnName + description + ' in control flow').then(seal(done), function(err) {

spec/adapterSpec.js

+20
Original file line numberDiff line numberDiff line change
@@ -242,4 +242,24 @@ describe('webdriverJS Jasmine adapter', function() {
242242
expect(spec3.description).toBe('test3');
243243
});
244244
});
245+
246+
describe('should handle returning native promises', () => {
247+
var currentTest = null;
248+
249+
it('test A', () => {
250+
currentTest = 'A';
251+
return new Promise((resolve) => {
252+
setTimeout(() => {
253+
fakeDriver.sleep(100).then(() => {
254+
expect(currentTest).toBe('A');
255+
});
256+
resolve();
257+
}, 100);
258+
});
259+
});
260+
261+
it('test B', () => {
262+
currentTest = 'B';
263+
});
264+
});
245265
});

0 commit comments

Comments
 (0)