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

Commit b67d8eb

Browse files
cnishinaheathkit
authored andcommitted
fix(restart): typescript fix for browser.restart (#3658)
closes #3648
1 parent 456bc96 commit b67d8eb

File tree

7 files changed

+92
-7
lines changed

7 files changed

+92
-7
lines changed

lib/runner.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,13 @@ export class Runner extends EventEmitter {
258258
// calls here are not guaranteed to complete before the tests resume.
259259
this.driverprovider_.quitDriver(browser_.driver);
260260
// Copy mock modules, but do not navigate to previous URL.
261-
browser_ = browser_.forkNewDriverInstance(false, true);
261+
let forkBrowser = browser_.forkNewDriverInstance(false, true);
262+
263+
// Replace the items in browser_ but do not create a new object
264+
// since this will break typescript imports
265+
for (let item in forkBrowser) {
266+
browser_[item] = forkBrowser[item];
267+
}
262268
this.setupGlobals_(browser_);
263269
};
264270

spec/install/.gitignore

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
node_modules
22
typings
33
conf.js
4+
browserts_spec.js
5+
typescript_conf.js
46
typescript_spec.js
5-
npm-debug.log
7+
npm-debug.log

spec/install/browserjs_spec.js

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
describe('browser', () => {
2+
let session1;
3+
let session2;
4+
5+
afterEach(() => {
6+
browser.restart();
7+
});
8+
9+
it('should load a browser session', (done) => {
10+
browser.get('http://angularjs.org');
11+
browser.getSession().then(session => {
12+
session1 = session.getId();
13+
expect(session1).not.toBeUndefined();
14+
}).catch(err => {
15+
done.fail('session should be defined');
16+
});
17+
done();
18+
});
19+
it('should have a new browser session', (done) => {
20+
browser.get('http://angularjs.org');
21+
browser.getSession().then(session => {
22+
session2 = session.getId();
23+
expect(session2).not.toBeUndefined();
24+
expect(session1).not.toEqual(session2);
25+
}).catch(err => {
26+
done.fail('session should be defined');
27+
});
28+
done();
29+
});
30+
});

spec/install/browserts_spec.ts

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import {browser} from 'protractor';
2+
import {WebDriver} from 'selenium-webdriver';
3+
4+
describe('browser', () => {
5+
let session1: string;
6+
let session2: string;
7+
8+
afterEach(() => {
9+
browser.restart();
10+
});
11+
12+
it('should load a browser session', (done) => {
13+
browser.get('http://angularjs.org');
14+
browser.getSession().then(session => {
15+
session1 = session.getId();
16+
expect(session1).not.toBeUndefined();
17+
}).catch(err => {
18+
done.fail('session should be defined');
19+
});
20+
done();
21+
});
22+
it('should have a new browser session', (done) => {
23+
browser.get('http://angularjs.org');
24+
browser.getSession().then(session => {
25+
session2 = session.getId();
26+
expect(session2).not.toBeUndefined();
27+
expect(session1).not.toEqual(session2);
28+
}).catch(err => {
29+
done.fail('session should be defined');
30+
});
31+
done();
32+
});
33+
});

spec/install/conf.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
import {Config} from 'protractor';
22

3+
var env = require('../environment');
4+
35
export let config: Config = {
4-
mockSelenium: true,
5-
specs: ['*_spec.js'],
6+
seleniumAddress: env.seleniumAddress,
7+
capabilities: env.capabilities,
8+
specs: [
9+
'browserts_spec.js',
10+
'browserjs_spec.js'
11+
],
612
framework: 'jasmine'
713
}

spec/install/test.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ function tsc() {
3636
}
3737
}
3838

39-
function test() {
39+
function test(file) {
4040
var options = {cwd: __dirname};
4141
var output = TestUtils.runCommand('node',
42-
['node_modules/protractor/bin/protractor','conf.js'],
42+
['node_modules/protractor/bin/protractor',file],
4343
options);
4444
if (output && output[1]) {
4545
console.log(output[1].toString());
@@ -60,4 +60,5 @@ function test() {
6060

6161
install();
6262
tsc();
63-
test();
63+
test('conf.js');
64+
test('typescript_conf.js');

spec/install/typescript_conf.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import {Config} from 'protractor';
2+
3+
export let config: Config = {
4+
mockSelenium: true,
5+
specs: ['typescript_spec.js'],
6+
framework: 'jasmine'
7+
}

0 commit comments

Comments
 (0)