Skip to content
This repository was archived by the owner on Jul 29, 2024. It is now read-only.

Commit 742f264

Browse files
cnishinasjelin
authored andcommitted
fix(driverProviders): quit forked instances w/ local driver provider (#3787)
- fix driver provider quit session to not throw error and quit - should fix sauce labs test, enabling expected conditions test with forked instance - checked that chromedriver does not persist in the background - add local driver test with forked instance to test suite - organize attach session and local specs to driverProviders directory closes #3780, closes #3779, closes #3772
1 parent 7d481d6 commit 742f264

File tree

8 files changed

+54
-13
lines changed

8 files changed

+54
-13
lines changed

lib/driverProviders/driverProvider.ts

+11-7
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,19 @@ export class DriverProvider {
6363
if (driver.getSession() === undefined) {
6464
deferred.resolve();
6565
} else {
66-
driver.getSession().then((session_) => {
67-
if (session_) {
68-
driver.quit().then(function() {
66+
driver.getSession()
67+
.then((session_) => {
68+
if (session_) {
69+
driver.quit().then(function() {
70+
deferred.resolve();
71+
});
72+
} else {
73+
deferred.resolve();
74+
}
75+
})
76+
.catch((err: Error) => {
6977
deferred.resolve();
7078
});
71-
} else {
72-
deferred.resolve();
73-
}
74-
});
7579
}
7680
return deferred.promise;
7781
}

scripts/attachSession.js scripts/driverProviderAttachSession.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ var checkSession = function() {
5151
res.on('end', function() {
5252
if (state === 'success') {
5353
var runProtractor = spawn('node',
54-
['bin/protractor', 'spec/attachSession.js', '--seleniumSessionId=' + sessionId]);
54+
['bin/protractor', 'spec/driverProviderAttachSessionConf.js',
55+
'--seleniumSessionId=' + sessionId]);
5556
console.log(runProtractor.stdout.toString());
5657
if (runProtractor.status !== 0) {
5758
throw new Error('Protractor did not run properly.');

scripts/test.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,14 @@ var passingTests = [
2828
'node built/cli.js spec/interactionConf.js',
2929
'node built/cli.js spec/directConnectConf.js',
3030
'node built/cli.js spec/restartBrowserBetweenTestsConf.js',
31+
'node built/cli.js spec/driverProviderLocalConf.js',
3132
'node built/cli.js spec/getCapabilitiesConf.js',
3233
'node built/cli.js spec/controlLockConf.js',
3334
'node built/cli.js spec/customFramework.js',
3435
'node built/cli.js spec/noGlobalsConf.js',
3536
'node built/cli.js spec/angular2Conf.js',
3637
'node built/cli.js spec/hybridConf.js',
37-
'node scripts/attachSession.js',
38+
'node scripts/driverProviderAttachSession.js',
3839
'node scripts/exitCodes.js',
3940
'node scripts/interactive_tests/interactive_test.js',
4041
'node scripts/interactive_tests/with_base_url.js',

spec/basic/expected_conditions_spec.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -177,9 +177,7 @@ describe('expected conditions', function() {
177177
expect(EC.or(EC.not(valid), EC.and(valid, invalid)).call()).toBe(false);
178178
});
179179

180-
// TODO(cnishina): enable test when local / sauce labs errors
181-
// are resolved.
182-
xdescribe('for forked browsers', function() {
180+
describe('for forked browsers', function() {
183181
// ensure that we can run EC on forked browser instances
184182
it('should have alertIsPresent', function() {
185183
var browser2 = browser.forkNewDriverInstance();

spec/attachSession.js spec/driverProviderAttachSessionConf.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ exports.config = {
66
framework: 'jasmine',
77

88
specs: [
9-
'attachSessionProvider/attachSession_spec.js'
9+
'driverProviders/attachSession/*_spec.js'
1010
],
1111

1212
capabilities: env.capabilities,

spec/driverProviderLocalConf.js

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
var env = require('./environment');
2+
3+
exports.config = {
4+
5+
framework: 'jasmine',
6+
7+
specs: [
8+
'driverProviders/local/*_spec.js'
9+
],
10+
11+
capabilities: env.capabilities,
12+
13+
baseUrl: env.baseUrl,
14+
15+
// Special option for Angular2, to test against all Angular2 applications
16+
// on the page. This means that Protractor will wait for every app to be
17+
// stable before each action, and search within all apps when finding
18+
// elements.
19+
useAllAngular2AppRoots: true
20+
};
+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
describe('local driver provider', function() {
2+
var URL = '/ng2/#/async';
3+
4+
it('should get a page and find an element', function() {
5+
browser.get(URL);
6+
var increment = $('#increment');
7+
expect(increment).toBeDefined();
8+
});
9+
10+
it('should get a forked instance, and find an element', function() {
11+
browser.get(URL);
12+
var browser2 = browser.forkNewDriverInstance();
13+
browser2.get(URL);
14+
var increment = browser2.$('#increment');
15+
expect(increment).toBeDefined();
16+
});
17+
});

0 commit comments

Comments
 (0)