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

Commit 5f690fe

Browse files
authoredAug 4, 2016
fix(export): export selenium-webdriver (#3433)
- rename to ProtractorBrowser to be able to export selenium-webdriver Browser as Browser - export all selenium-webdriver items and subfolders in ptor - update dependency tests for selenium - add tests when protractor is installed closes #3427 closes #2092
1 parent 9182d58 commit 5f690fe

18 files changed

+303
-68
lines changed
 

‎globals.ts

+14-21
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,21 @@
11
import {
2-
Browser,
2+
ProtractorBrowser,
33
ElementArrayFinder,
44
ElementFinder,
55
ElementHelper,
66
ProtractorBy,
7-
ProtractorExpectedConditions
7+
ProtractorExpectedConditions,
8+
Ptor
89
} from 'protractor';
910

10-
export interface Protractor {
11-
browser: Browser;
12-
element: ElementHelper;
13-
by: ProtractorBy;
14-
By: ProtractorBy;
15-
$: (search: string) => ElementFinder;
16-
$$: (search: string) => ElementArrayFinder;
17-
ExpectedConditions: ProtractorExpectedConditions;
18-
}
19-
interface global {};
20-
export var protractor: Protractor = global['protractor'];
21-
export var browser: Browser = global['protractor']['browser'];
22-
export var element: ElementHelper = global['protractor']['element'];
23-
export var by: ProtractorBy = global['protractor']['by'];
24-
export var By: ProtractorBy = global['protractor']['By'];
25-
export var $: (search: string) => ElementFinder = global['protractor']['$'];
26-
export var $$: (search: string) => ElementArrayFinder = global['protractor']['$$'];
27-
export var ExpectedConditions: ProtractorExpectedConditions =
28-
global['protractor']['ExpectedConditions'];
11+
export let protractor: Ptor = global['protractor'];
12+
export let browser: ProtractorBrowser = protractor.browser;
13+
export let $: (search: string) => ElementFinder = protractor.$;
14+
export let $$: (search: string) => ElementArrayFinder = protractor.$$;
15+
export let element: ElementHelper = protractor.element;
16+
export let By: ProtractorBy = protractor.By;
17+
export let by: ProtractorBy = protractor.by;
18+
export let wrapDriver:
19+
(webdriver: any, baseUrl?: string, rootElement?: string,
20+
untrackOutstandingTimeouts?: boolean) => ProtractorBrowser = protractor.wrapDriver;
21+
export let ExpectedConditions: ProtractorExpectedConditions = protractor.ExpectedConditions;

‎gulpfile.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ gulp.task('webdriver:update', function(done) {
4343

4444
gulp.task('jshint', function(done) {
4545
runSpawn(done, 'node', ['node_modules/jshint/bin/jshint', 'lib', 'spec', 'scripts',
46-
'--exclude=lib/selenium-webdriver/**/*.js,spec/dependencyTest/*.js']);
46+
'--exclude=lib/selenium-webdriver/**/*.js,spec/dependencyTest/*.js,' +
47+
'spec/install/**/*.js']);
4748
});
4849

4950
gulp.task('format:enforce', () => {
@@ -89,7 +90,7 @@ gulp.task('default',['prepublish']);
8990
gulp.task('types', function(done) {
9091
var folder = 'built';
9192
var files = ['browser', 'element', 'locators', 'expectedConditions',
92-
'config', 'plugins'];
93+
'config', 'plugins', 'ptor'];
9394
var outputFile = path.resolve(folder, 'index.d.ts');
9495
var contents = '';
9596
files.forEach(file => {

‎lib/browser.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ export interface ElementHelper extends Function {
8080
* @param {Browser} browser A browser instance.
8181
* @returns {function(webdriver.Locator): ElementFinder}
8282
*/
83-
function buildElementHelper(browser: Browser): ElementHelper {
83+
function buildElementHelper(browser: ProtractorBrowser): ElementHelper {
8484
let element: ElementHelper = (locator: Locator) => {
8585
return new ElementArrayFinder(browser).all(locator).toElementFinder_();
8686
};
@@ -104,7 +104,7 @@ function buildElementHelper(browser: Browser): ElementHelper {
104104
* @param {boolean=} opt_untrackOutstandingTimeouts Whether Protractor should
105105
* stop tracking outstanding $timeouts.
106106
*/
107-
export class Browser extends Webdriver {
107+
export class ProtractorBrowser extends Webdriver {
108108
/**
109109
* @type {ProtractorBy}
110110
*/
@@ -329,7 +329,8 @@ export class Browser extends Webdriver {
329329
* @returns {Browser} A browser instance.
330330
*/
331331
forkNewDriverInstance(
332-
opt_useSameUrl?: boolean, opt_copyMockModules?: boolean): Browser {
332+
opt_useSameUrl?: boolean,
333+
opt_copyMockModules?: boolean): ProtractorBrowser {
333334
return null;
334335
}
335336

@@ -1242,8 +1243,8 @@ export class Browser extends Webdriver {
12421243
*/
12431244
static wrapDriver(
12441245
webdriver: webdriver.WebDriver, baseUrl?: string, rootElement?: string,
1245-
untrackOutstandingTimeouts?: boolean): Browser {
1246-
return new Browser(
1246+
untrackOutstandingTimeouts?: boolean): ProtractorBrowser {
1247+
return new ProtractorBrowser(
12471248
webdriver, baseUrl, rootElement, untrackOutstandingTimeouts);
12481249
}
12491250
}

‎lib/element.ts

+7-6
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ let webdriver = require('selenium-webdriver');
22
let clientSideScripts = require('./clientsidescripts');
33

44
import {Logger} from './logger';
5-
import {Browser} from './browser';
5+
import {ProtractorBrowser} from './browser';
66
import {Locator} from './locators';
77

88
let logger = new Logger('element');
@@ -83,7 +83,7 @@ export class WebdriverWebElement {
8383
* });
8484
*
8585
* @constructor
86-
* @param {Browser} browser A browser instance.
86+
* @param {ProtractorBrowser} browser A browser instance.
8787
* @param {function(): Array.<webdriver.WebElement>} getWebElements A function
8888
* that returns a list of the underlying Web Elements.
8989
* @param {webdriver.Locator} locator The most relevant locator. It is only
@@ -97,7 +97,7 @@ export class ElementArrayFinder extends WebdriverWebElement {
9797
getWebElements: Function;
9898

9999
constructor(
100-
public browser_: Browser, getWebElements?: Function,
100+
public browser_: ProtractorBrowser, getWebElements?: Function,
101101
public locator_?: any,
102102
public actionResults_: webdriver.promise.Promise<any> = null) {
103103
super();
@@ -703,7 +703,7 @@ export class ElementArrayFinder extends WebdriverWebElement {
703703
*
704704
* @constructor
705705
* @extends {webdriver.WebElement}
706-
* @param {Browser} browser_ A browser instance.
706+
* @param {ProtractorBrowser} browser_ A browser instance.
707707
* @param {ElementArrayFinder} elementArrayFinder The ElementArrayFinder
708708
* that this is branched from.
709709
* @returns {ElementFinder}
@@ -716,7 +716,8 @@ export class ElementFinder extends WebdriverWebElement {
716716
errorFn: Function) => webdriver.promise.Promise<any> = null;
717717

718718
constructor(
719-
public browser_: Browser, elementArrayFinder: ElementArrayFinder) {
719+
public browser_: ProtractorBrowser,
720+
elementArrayFinder: ElementArrayFinder) {
720721
super();
721722
if (!elementArrayFinder) {
722723
throw new Error('BUG: elementArrayFinder cannot be empty');
@@ -785,7 +786,7 @@ export class ElementFinder extends WebdriverWebElement {
785786
}
786787

787788
static fromWebElement_(
788-
browser: Browser, webElem: webdriver.WebElement,
789+
browser: ProtractorBrowser, webElem: webdriver.WebElement,
789790
locator: Locator): ElementFinder {
790791
let getWebElements =
791792
() => { return webdriver.promise.fulfilled([webElem]); };

‎lib/main.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
* namespace.
44
*/
55

6-
export = require('./ptor').protractor
6+
export = require('./ptor').protractor;

‎lib/ptor.ts

+42-22
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,56 @@
1-
import {Browser, ElementHelper} from './browser';
1+
import {ElementHelper, ProtractorBrowser} from './browser';
22
import {ElementArrayFinder, ElementFinder} from './element';
33
import {ProtractorExpectedConditions} from './expectedConditions';
44
import {ProtractorBy} from './locators';
55

66
let webdriver = require('selenium-webdriver');
77

8-
export namespace protractor {
8+
export class Ptor {
99
// Variables tied to the global namespace.
10-
export let browser: Browser;
11-
export let $ = function(search: string): ElementFinder { return null;};
12-
export let $$ = function(search: string): ElementArrayFinder { return null;};
13-
export let element: ElementHelper;
14-
export let By: ProtractorBy;
15-
export let by: ProtractorBy;
16-
export let wrapDriver:
10+
browser: ProtractorBrowser;
11+
$ = function(search: string): ElementFinder { return null; };
12+
$$ = function(search: string): ElementArrayFinder { return null; };
13+
element: ElementHelper;
14+
By: ProtractorBy;
15+
by: ProtractorBy;
16+
wrapDriver:
1717
(webdriver: webdriver.WebDriver, baseUrl?: string, rootElement?: string,
18-
untrackOutstandingTimeouts?: boolean) => Browser;
19-
export let ExpectedConditions: ProtractorExpectedConditions;
18+
untrackOutstandingTimeouts?: boolean) => ProtractorBrowser;
19+
ExpectedConditions: ProtractorExpectedConditions;
2020

2121
// Export protractor classes.
22-
export let Browser = require('./browser').Browser;
23-
export let ElementFinder = require('./element').ElementFinder;
24-
export let ElementArrayFinder = require('./element').ElementArrayFinder;
25-
export let ProtractorBy = require('./locators').ProtractorBy;
26-
export let ProtractorExpectedConditions =
22+
ProtractorBrowser = require('./browser').ProtractorBrowser;
23+
ElementFinder = require('./element').ElementFinder;
24+
ElementArrayFinder = require('./element').ElementArrayFinder;
25+
ProtractorBy = require('./locators').ProtractorBy;
26+
ProtractorExpectedConditions =
2727
require('./expectedConditions').ProtractorExpectedConditions;
2828

2929
// Export selenium webdriver.
30-
export let promise = webdriver.promise;
31-
export let WebElement = webdriver.WebElement;
32-
export let ActionSequence = webdriver.ActionSequence;
33-
export let Key = webdriver.Key;
34-
export let Command = require('selenium-webdriver/lib/command').Command;
35-
export let CommandName = require('selenium-webdriver/lib/command').Name;
30+
ActionSequence = webdriver.ActionSequence;
31+
Browser = webdriver.Browser;
32+
Builder = webdriver.Builder;
33+
Button = webdriver.Button;
34+
Capabilities = webdriver.Capabilities;
35+
Capability = webdriver.Capability;
36+
EventEmitter = webdriver.EventEmitter;
37+
FileDetector = webdriver.FileDetector;
38+
Key = webdriver.Key;
39+
Session = webdriver.Session;
40+
WebDriver = webdriver.WebDriver;
41+
WebElement = webdriver.WebElement;
42+
WebElementPromise = webdriver.WebElementPromise;
43+
error = webdriver.error;
44+
logging = webdriver.logging;
45+
promise = webdriver.promise;
46+
until = webdriver.until;
47+
Command = require('selenium-webdriver/lib/command').Command;
48+
CommandName = require('selenium-webdriver/lib/command').Name;
49+
utils = {
50+
firefox: require('selenium-webdriver/firefox'),
51+
http: require('selenium-webdriver/http'),
52+
remote: require('selenium-webdriver/remote')
53+
}
3654
}
55+
56+
export var protractor = new Ptor();

‎lib/runner.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {EventEmitter} from 'events';
22
import * as q from 'q';
33
import * as util from 'util';
44

5-
import {Browser} from './browser';
5+
import {ProtractorBrowser} from './browser';
66
import {Config} from './config';
77
import {AttachSession, BrowserStack, Direct, Hosted, Local, Mock, Sauce} from './driverProviders';
88
import {DriverProvider} from './driverProviders';
@@ -151,15 +151,15 @@ export class Runner extends EventEmitter {
151151
* Sets up convenience globals for test specs
152152
* @private
153153
*/
154-
setupGlobals_(browser_: Browser) {
154+
setupGlobals_(browser_: ProtractorBrowser) {
155155
// Keep $, $$, element, and by/By under the global protractor namespace
156156
protractor.browser = browser_;
157157
protractor.$ = browser_.$;
158158
protractor.$$ = browser_.$$;
159159
protractor.element = browser_.element;
160-
protractor.by = protractor.By = Browser.By;
161-
protractor.wrapDriver = Browser.wrapDriver;
162-
protractor.ExpectedConditions = Browser.ExpectedConditions;
160+
protractor.by = protractor.By = ProtractorBrowser.By;
161+
protractor.wrapDriver = ProtractorBrowser.wrapDriver;
162+
protractor.ExpectedConditions = ProtractorBrowser.ExpectedConditions;
163163

164164
if (!this.config_.noGlobals) {
165165
// Export protractor to the global namespace to be used in tests.
@@ -197,7 +197,7 @@ export class Runner extends EventEmitter {
197197
var config = this.config_;
198198
var driver = this.driverprovider_.getNewDriver();
199199

200-
var browser_ = Browser.wrapDriver(
200+
var browser_ = ProtractorBrowser.wrapDriver(
201201
driver, config.baseUrl, config.rootElement,
202202
config.untrackOutstandingTimeouts);
203203

‎scripts/test.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,9 @@ var passingTests = [
4141
// Unit tests
4242
'node node_modules/jasmine/bin/jasmine.js JASMINE_CONFIG_PATH=scripts/unit_test.json',
4343
// Dependency tests
44-
'node node_modules/jasmine/bin/jasmine.js JASMINE_CONFIG_PATH=scripts/dependency_test.json'
44+
'node node_modules/jasmine/bin/jasmine.js JASMINE_CONFIG_PATH=scripts/dependency_test.json',
4545
// Typings tests
46+
'node spec/install/test.js'
4647
// FIX THIS: 'node scripts/typings_tests/test_typings.js'
4748
];
4849

‎spec/dependencyTest/protractor_spec.js

+17-3
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,39 @@ describe('require(\'protractor\')', () => {
88

99
describe('exported protractor classes', () => {
1010
it('should be defined', () => {
11-
var protractorClasses = ['Browser', 'ElementFinder', 'ElementArrayFinder',
11+
var protractorClasses = ['ProtractorBrowser', 'ElementFinder', 'ElementArrayFinder',
1212
'ProtractorBy', 'ProtractorExpectedConditions'];
1313
for (var pos in protractorClasses) {
1414
var property = protractorClasses[pos];
1515
expect(typeof protractor[property]).toEqual('function');
1616
}
1717
});
18+
var seleniumClasses = ['ActionSequence', 'Browser', 'Builder', 'Button',
19+
'Capabilities', 'Capability', 'EventEmitter', 'FileDetector', 'Key',
20+
'Session', 'WebDriver', 'WebElement', 'WebElementPromise', 'Command',
21+
'CommandName'];
22+
for (var pos in seleniumClasses) {
23+
var propertyObj = seleniumClasses[pos];
24+
it('should have selenium-webdriver defined: ' + propertyObj, () => {
25+
expect(typeof protractor[propertyObj]).toEqual('object');
26+
});
27+
}
28+
29+
it('should have selenium-webdriver promise.Promise', function() {
30+
expect(typeof protractor['promise']['Promise']).toEqual('function');
31+
});
1832

1933
describe('browser class', () => {
2034
it('should have static method defined', () => {
2135
var staticMethod = 'wrapDriver';
22-
expect(typeof protractor.Browser['wrapDriver']).toEqual('function');
36+
expect(typeof protractor.ProtractorBrowser['wrapDriver']).toEqual('function');
2337
});
2438

2539
it('should have static variables defined', () => {
2640
var staticVariables = ['By', 'ExpectedConditions'];
2741
for (var pos in staticVariables) {
2842
var property = staticVariables[pos];
29-
expect(typeof protractor.Browser[property]).toEqual('object');
43+
expect(typeof protractor.ProtractorBrowser[property]).toEqual('object');
3044
}
3145
});
3246
});

‎spec/install/.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
node_modules
2+
typings
3+
conf.js
4+
typescript_spec.js

‎spec/install/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: ['*_spec.js'],
6+
framework: 'jasmine'
7+
}

‎spec/install/javascript_spec.js

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
describe('javascript', function () {
2+
it('should have global objects that match the protractor namespace', function () {
3+
expect(protractor.browser === browser).toBeTruthy();
4+
expect(protractor.by === by).toBeTruthy();
5+
expect(protractor.By === By).toBeTruthy();
6+
expect(protractor.$ === $).toBeTruthy();
7+
expect(protractor.$$ === $$).toBeTruthy();
8+
expect(protractor.ExpectedConditions === ExpectedConditions).toBeTruthy();
9+
});
10+
it('should have selenium-webdriver components for the protractor namespace', function () {
11+
expect(typeof protractor.promise.all).toEqual('function');
12+
expect(typeof protractor.promise.defer).toEqual('function');
13+
expect(typeof protractor.promise.Promise).toEqual('function');
14+
expect(typeof protractor.ActionSequence).toEqual('function');
15+
expect(typeof protractor.Browser).toEqual('object');
16+
expect(typeof protractor.Builder).toEqual('function');
17+
expect(typeof protractor.Capabilities).toEqual('function');
18+
expect(typeof protractor.Capability).toEqual('object');
19+
expect(typeof protractor.EventEmitter).toEqual('function');
20+
expect(typeof protractor.FileDetector).toEqual('function');
21+
expect(typeof protractor.Key).toEqual('object');
22+
expect(typeof protractor.Session).toEqual('function');
23+
expect(typeof protractor.WebDriver).toEqual('function');
24+
expect(typeof protractor.WebElement).toEqual('function');
25+
expect(typeof protractor.WebElementPromise).toEqual('function');
26+
expect(typeof protractor.error).toEqual('object');
27+
expect(typeof protractor.logging).toEqual('object');
28+
expect(typeof protractor.promise).toEqual('object');
29+
expect(typeof protractor.until).toEqual('object');
30+
expect(typeof protractor.Command).toEqual('function');
31+
expect(typeof protractor.CommandName).toEqual('object');
32+
expect(typeof protractor.utils.firefox).toEqual('object');
33+
expect(typeof protractor.utils.http).toEqual('object');
34+
expect(typeof protractor.utils.remote).toEqual('object');
35+
});
36+
it('should have protractor class definitions', function () {
37+
expect(typeof protractor.ProtractorBrowser).toBe('function');
38+
expect(typeof protractor.ElementFinder).toBe('function');
39+
expect(typeof protractor.ElementArrayFinder).toBe('function');
40+
expect(typeof protractor.ProtractorBy).toBe('function');
41+
expect(typeof protractor.ProtractorExpectedConditions).toBe('function');
42+
});
43+
});

‎spec/install/package.json

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"name": "protractor-install",
3+
"version": "1.0.0",
4+
"description": "e2e typescript => javascript => running",
5+
"main": "index.js",
6+
"scripts": {
7+
"postinstall": "npm run typings",
8+
"typings": "typings install",
9+
"tsc": "tsc",
10+
"test": "protractor conf.js"
11+
},
12+
"author": "",
13+
"license": "MIT",
14+
"dependencies": {
15+
"protractor": "file:../../",
16+
"rimraf": "^2.5.4"
17+
}
18+
}

‎spec/install/test.js

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
"use strict";
2+
var path = require('path');
3+
var child_process = require('child_process');
4+
var rimraf = require('rimraf');
5+
var spawnSync = child_process.spawnSync;
6+
7+
class TestUtils {
8+
static runCommand(task, args, options) {
9+
var child = spawnSync(task, args, options);
10+
return child.output;
11+
};
12+
};
13+
14+
function install() {
15+
rimraf.sync(path.resolve(__dirname, 'node_modules'));
16+
var options = {cwd: __dirname};
17+
var output = TestUtils.runCommand('npm', ['install'], options);
18+
if (output && output[1]) {
19+
console.log(output[1].toString());
20+
} else {
21+
throw new Error('Something went wrong in function install.')
22+
}
23+
}
24+
25+
function tsc() {
26+
var options = {cwd: __dirname};
27+
var output = TestUtils.runCommand('npm', ['run', 'tsc'], options);
28+
if (output && output[1]) {
29+
var options = {cwd: path.resolve('.')};
30+
console.log(output[1].toString());
31+
if (output[1].toString().indexOf('error') >= 0) {
32+
throw new Error('tsc failed.');
33+
}
34+
} else {
35+
throw new Error('Something went wrong in function tsc.')
36+
}
37+
}
38+
39+
function test() {
40+
var options = {cwd: __dirname};
41+
var output = TestUtils.runCommand('node',
42+
['node_modules/protractor/bin/protractor','conf.js'],
43+
options);
44+
if (output && output[1]) {
45+
console.log(output[1].toString());
46+
var lines = output[1].toString().split('\n');
47+
for (var pos in lines) {
48+
var line = lines[pos];
49+
if (line.indexOf(' specs, ') >= 0) {
50+
var failures = line.split(' specs, ')[1].charAt(0);
51+
if (failures !== '0') {
52+
throw new Error('Failed with ' + failures + ' failure(s).');
53+
}
54+
}
55+
}
56+
} else {
57+
throw new Error('Something went wrong in function test.')
58+
}
59+
}
60+
61+
install();
62+
tsc();
63+
test();

‎spec/install/tsconfig.json

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"compilerOptions": {
3+
"target": "es5",
4+
"module": "commonjs",
5+
"moduleResolution": "node",
6+
"sourceMap": false,
7+
"declaration": false,
8+
"noImplicitAny": false
9+
},
10+
"exclude": [
11+
"node_modules",
12+
"typings/globals"
13+
]
14+
}

‎spec/install/typescript_spec.ts

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import {browser, by, By, element, $, $$, ExpectedConditions, protractor} from 'protractor/globals';
2+
import {ProtractorBrowser} from 'protractor';
3+
describe('typescript imports', () => {
4+
it('should have global objects that match the protractor namespace', () => {
5+
expect(protractor.browser === browser).toBeTruthy();
6+
expect(protractor.by === by).toBeTruthy();
7+
expect(protractor.By === By).toBeTruthy();
8+
expect(protractor.$ === $).toBeTruthy();
9+
expect(protractor.$$ === $$).toBeTruthy();
10+
expect(protractor.ExpectedConditions === ExpectedConditions).toBeTruthy();
11+
expect(typeof protractor.wrapDriver).toEqual('function');
12+
});
13+
it('should have selenium-webdriver components for the protractor namespace', () => {
14+
expect(typeof protractor.promise.all).toEqual('function');
15+
expect(typeof protractor.promise.defer).toEqual('function');
16+
expect(typeof protractor.promise.Promise).toEqual('function');
17+
expect(typeof protractor.ActionSequence).toEqual('function');
18+
expect(typeof protractor.Browser).toEqual('object');
19+
expect(typeof protractor.Builder).toEqual('function');
20+
expect(typeof protractor.Capabilities).toEqual('function');
21+
expect(typeof protractor.Capability).toEqual('object');
22+
expect(typeof protractor.EventEmitter).toEqual('function');
23+
expect(typeof protractor.FileDetector).toEqual('function');
24+
expect(typeof protractor.Key).toEqual('object');
25+
expect(typeof protractor.Session).toEqual('function');
26+
expect(typeof protractor.WebDriver).toEqual('function');
27+
expect(typeof protractor.WebElement).toEqual('function');
28+
expect(typeof protractor.WebElementPromise).toEqual('function');
29+
expect(typeof protractor.error).toEqual('object');
30+
expect(typeof protractor.logging).toEqual('object');
31+
expect(typeof protractor.promise).toEqual('object');
32+
expect(typeof protractor.until).toEqual('object');
33+
expect(typeof protractor.Command).toEqual('function');
34+
expect(typeof protractor.CommandName).toEqual('object');
35+
expect(typeof protractor.utils.firefox).toEqual('object');
36+
expect(typeof protractor.utils.http).toEqual('object');
37+
expect(typeof protractor.utils.remote).toEqual('object');
38+
});
39+
it('should have protractor class definitions', () => {
40+
expect(typeof protractor.ProtractorBrowser).toBe('function');
41+
expect(typeof protractor.ElementFinder).toBe('function');
42+
expect(typeof protractor.ElementArrayFinder).toBe('function');
43+
expect(typeof protractor.ProtractorBy).toBe('function');
44+
expect(typeof protractor.ProtractorExpectedConditions).toBe('function');
45+
});
46+
});

‎spec/install/typings.json

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"name": "protractor-install",
3+
"dependencies": {},
4+
"globalDependencies": {
5+
"jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
6+
"node": "registry:dt/node#6.0.0+20160802155038"
7+
}
8+
}

‎tsconfig.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"typings/globals",
1818
"scripts",
1919
"globals.ts",
20-
"exampleTypescript"
20+
"exampleTypescript",
21+
"spec"
2122
]
2223
}

0 commit comments

Comments
 (0)
This repository has been archived.