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

Commit f979c0c

Browse files
committed
chore(promises): move locator wdpromise to native Promise
1 parent 149a2ac commit f979c0c

File tree

1 file changed

+84
-65
lines changed

1 file changed

+84
-65
lines changed

lib/locators.ts

+84-65
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ export type WebDriverLocator = By | ByHash | Function;
2121
// Protractor locator strategy
2222
export interface ProtractorLocator {
2323
findElementsOverride:
24-
(driver: WebDriver, using: WebElement,
25-
rootSelector: string) => wdpromise.Promise<WebElement[]>;
24+
(driver: WebDriver, using: WebElement, rootSelector: string) => Promise<WebElement[]>;
2625
row?: (index: number) => Locator;
2726
column?: (index: string) => Locator;
2827
toString?: () => string;
@@ -79,19 +78,21 @@ export class ProtractorBy extends WebdriverBy {
7978
*/
8079
addLocator(name: string, script: Function|string) {
8180
this[name] = (...args: any[]): ProtractorLocator => {
82-
let locatorArguments = args;
81+
const locatorArguments = args;
8382
return {
8483
findElementsOverride: (driver: WebDriver, using: WebElement, rootSelector: string):
85-
wdpromise.Promise<WebElement[]> => {
86-
let findElementArguments: any[] = [script];
87-
for (let i = 0; i < locatorArguments.length; i++) {
88-
findElementArguments.push(locatorArguments[i]);
89-
}
90-
findElementArguments.push(using);
91-
findElementArguments.push(rootSelector);
84+
Promise<WebElement[]> => {
85+
let findElementArguments: any[] = [script];
86+
for (let i = 0; i < locatorArguments.length; i++) {
87+
findElementArguments.push(locatorArguments[i]);
88+
}
89+
findElementArguments.push(using);
90+
findElementArguments.push(rootSelector);
9291

93-
return driver.findElements(By.js.apply(By, findElementArguments));
94-
},
92+
// TODO(selenium4): clean up cast to native Promise.
93+
return driver.findElements(By.js.apply(By, findElementArguments)) as
94+
Promise<WebElement[]>;
95+
},
9596
toString: (): string => {
9697
return 'by.' + name + '("' + Array.prototype.join.call(locatorArguments, '", "') + '")';
9798
}
@@ -132,10 +133,12 @@ export class ProtractorBy extends WebdriverBy {
132133
binding(bindingDescriptor: string): ProtractorLocator {
133134
return {
134135
findElementsOverride: (driver: WebDriver, using: WebElement, rootSelector: string):
135-
wdpromise.Promise<WebElement[]> => {
136-
return driver.findElements(
137-
By.js(clientSideScripts.findBindings, bindingDescriptor, false, using, rootSelector));
138-
},
136+
Promise<WebElement[]> => {
137+
// TODO(selenium4): clean up cast to native Promise.
138+
return driver.findElements(By.js(
139+
clientSideScripts.findBindings, bindingDescriptor, false, using,
140+
rootSelector)) as Promise<WebElement[]>;
141+
},
139142
toString: (): string => {
140143
return 'by.binding("' + bindingDescriptor + '")';
141144
}
@@ -163,10 +166,12 @@ export class ProtractorBy extends WebdriverBy {
163166
*/
164167
exactBinding(bindingDescriptor: string): ProtractorLocator {
165168
return {
166-
findElementsOverride: (driver: WebDriver, using: WebElement, rootSelector: string):
167-
wdpromise.Promise<WebElement[]> => {
168-
return driver.findElements(
169-
By.js(clientSideScripts.findBindings, bindingDescriptor, true, using, rootSelector));
169+
findElementsOverride: (
170+
driver: WebDriver, using: WebElement, rootSelector: string): Promise<WebElement[]> => {
171+
// TODO(selenium4): clean up cast to native Promise.
172+
return driver.findElements(By.js(
173+
clientSideScripts.findBindings, bindingDescriptor, true, using, rootSelector)) as
174+
Promise<WebElement[]>;
170175
},
171176
toString: (): string => {
172177
return 'by.exactBinding("' + bindingDescriptor + '")';
@@ -192,10 +197,12 @@ export class ProtractorBy extends WebdriverBy {
192197
model(model: string): ProtractorLocator {
193198
return {
194199
findElementsOverride: (driver: WebDriver, using: WebElement, rootSelector: string):
195-
wdpromise.Promise<WebElement[]> => {
196-
return driver.findElements(
197-
By.js(clientSideScripts.findByModel, model, using, rootSelector));
198-
},
200+
Promise<WebElement[]> => {
201+
// TODO(selenium4): clean up cast to native Promise.
202+
return driver.findElements(
203+
By.js(clientSideScripts.findByModel, model, using, rootSelector)) as
204+
Promise<WebElement[]>;
205+
},
199206
toString: (): string => {
200207
return 'by.model("' + model + '")';
201208
}
@@ -217,10 +224,12 @@ export class ProtractorBy extends WebdriverBy {
217224
buttonText(searchText: string): ProtractorLocator {
218225
return {
219226
findElementsOverride: (driver: WebDriver, using: WebElement, rootSelector: string):
220-
wdpromise.Promise<WebElement[]> => {
221-
return driver.findElements(
222-
By.js(clientSideScripts.findByButtonText, searchText, using, rootSelector));
223-
},
227+
Promise<WebElement[]> => {
228+
// TODO(selenium4): clean up cast to native Promise.
229+
return driver.findElements(By.js(
230+
clientSideScripts.findByButtonText, searchText, using, rootSelector)) as
231+
Promise<WebElement[]>;
232+
},
224233
toString: (): string => {
225234
return 'by.buttonText("' + searchText + '")';
226235
}
@@ -241,10 +250,12 @@ export class ProtractorBy extends WebdriverBy {
241250
*/
242251
partialButtonText(searchText: string): ProtractorLocator {
243252
return {
244-
findElementsOverride: (driver: WebDriver, using: WebElement, rootSelector: string):
245-
wdpromise.Promise<WebElement[]> => {
246-
return driver.findElements(
247-
By.js(clientSideScripts.findByPartialButtonText, searchText, using, rootSelector));
253+
findElementsOverride: (
254+
driver: WebDriver, using: WebElement, rootSelector: string): Promise<WebElement[]> => {
255+
// TODO(selenium4): clean up cast to native Promise.
256+
return driver.findElements(By.js(
257+
clientSideScripts.findByPartialButtonText, searchText, using, rootSelector)) as
258+
Promise<WebElement[]>;
248259
},
249260
toString: (): string => {
250261
return 'by.partialButtonText("' + searchText + '")';
@@ -257,32 +268,35 @@ export class ProtractorBy extends WebdriverBy {
257268
let name = 'by.' + (exact ? 'exactR' : 'r') + 'epeater';
258269
return {
259270
findElementsOverride: (driver: WebDriver, using: WebElement, rootSelector: string):
260-
wdpromise.Promise<WebElement[]> => {
261-
return driver.findElements(By.js(
262-
clientSideScripts.findAllRepeaterRows, repeatDescriptor, exact, using, rootSelector));
263-
},
271+
Promise<WebElement[]> => {
272+
// TODO(selenium4): clean up cast to native Promise.
273+
return driver.findElements(By.js(
274+
clientSideScripts.findAllRepeaterRows, repeatDescriptor, exact, using,
275+
rootSelector)) as Promise<WebElement[]>;
276+
},
264277
toString: (): string => {
265278
return name + '("' + repeatDescriptor + '")';
266279
},
267280
row: (index: number): ProtractorLocator => {
268281
return {
269282
findElementsOverride: (driver: WebDriver, using: WebElement, rootSelector: string):
270-
wdpromise.Promise<WebElement[]> => {
271-
return driver.findElements(By.js(
272-
clientSideScripts.findRepeaterRows, repeatDescriptor, exact, index, using,
273-
rootSelector));
274-
},
283+
Promise<WebElement[]> => {
284+
return driver.findElements(By.js(
285+
clientSideScripts.findRepeaterRows, repeatDescriptor, exact, index,
286+
using, rootSelector)) as Promise<WebElement[]>;
287+
},
275288
toString: (): string => {
276289
return name + '(' + repeatDescriptor + '").row("' + index + '")"';
277290
},
278291
column: (binding: string): ProtractorLocator => {
279292
return {
280293
findElementsOverride: (driver: WebDriver, using: WebElement, rootSelector: string):
281-
wdpromise.Promise<WebElement[]> => {
282-
return driver.findElements(By.js(
283-
clientSideScripts.findRepeaterElement, repeatDescriptor, exact, index, binding,
284-
using, rootSelector));
285-
},
294+
Promise<WebElement[]> => {
295+
// TODO(selenium4): clean up cast to native Promise.
296+
return driver.findElements(By.js(
297+
clientSideScripts.findRepeaterElement, repeatDescriptor, exact,
298+
index, binding, using, rootSelector)) as Promise<WebElement[]>;
299+
},
286300
toString: (): string => {
287301
return name + '("' + repeatDescriptor + '").row("' + index + '").column("' +
288302
binding + '")';
@@ -294,22 +308,24 @@ export class ProtractorBy extends WebdriverBy {
294308
column: (binding: string): ProtractorLocator => {
295309
return {
296310
findElementsOverride: (driver: WebDriver, using: WebElement, rootSelector: string):
297-
wdpromise.Promise<WebElement[]> => {
298-
return driver.findElements(By.js(
299-
clientSideScripts.findRepeaterColumn, repeatDescriptor, exact, binding, using,
300-
rootSelector));
301-
},
311+
Promise<WebElement[]> => {
312+
// TODO(selenium4): clean up cast to native Promise.
313+
return driver.findElements(By.js(
314+
clientSideScripts.findRepeaterColumn, repeatDescriptor, exact, binding,
315+
using, rootSelector)) as Promise<WebElement[]>;
316+
},
302317
toString: (): string => {
303318
return name + '("' + repeatDescriptor + '").column("' + binding + '")';
304319
},
305320
row: (index: number): ProtractorLocator => {
306321
return {
307322
findElementsOverride: (driver: WebDriver, using: WebElement, rootSelector: string):
308-
wdpromise.Promise<WebElement[]> => {
309-
return driver.findElements(By.js(
310-
clientSideScripts.findRepeaterElement, repeatDescriptor, exact, index, binding,
311-
using, rootSelector));
312-
},
323+
Promise<WebElement[]> => {
324+
// TODO(selenium4): clean up cast to native Promise.
325+
return driver.findElements(By.js(
326+
clientSideScripts.findRepeaterElement, repeatDescriptor, exact,
327+
index, binding, using, rootSelector)) as Promise<WebElement[]>;
328+
},
313329
toString: (): string => {
314330
return name + '("' + repeatDescriptor + '").column("' + binding + '").row("' +
315331
index + '")';
@@ -422,11 +438,12 @@ export class ProtractorBy extends WebdriverBy {
422438
searchText = (searchText instanceof RegExp) ? '__REGEXP__' + searchText.toString() : searchText;
423439
return {
424440
findElementsOverride: (driver: WebDriver, using: WebElement, rootSelector: string):
425-
wdpromise.Promise<WebElement[]> => {
426-
return driver.findElements(By.js(
427-
clientSideScripts.findByCssContainingText, cssSelector, searchText, using,
428-
rootSelector));
429-
},
441+
Promise<WebElement[]> => {
442+
// TODO(selenium4): clean up cast to native Promise.
443+
return driver.findElements(By.js(
444+
clientSideScripts.findByCssContainingText, cssSelector, searchText, using,
445+
rootSelector)) as Promise<WebElement[]>;
446+
},
430447
toString: (): string => {
431448
return 'by.cssContainingText("' + cssSelector + '", "' + searchText + '")';
432449
}
@@ -455,10 +472,12 @@ export class ProtractorBy extends WebdriverBy {
455472
options(optionsDescriptor: string): ProtractorLocator {
456473
return {
457474
findElementsOverride: (driver: WebDriver, using: WebElement, rootSelector: string):
458-
wdpromise.Promise<WebElement[]> => {
459-
return driver.findElements(
460-
By.js(clientSideScripts.findByOptions, optionsDescriptor, using, rootSelector));
461-
},
475+
Promise<WebElement[]> => {
476+
// TODO(selenium4): clean up cast to native Promise.
477+
return driver.findElements(By.js(
478+
clientSideScripts.findByOptions, optionsDescriptor, using, rootSelector)) as
479+
Promise<WebElement[]>;
480+
},
462481
toString: (): string => {
463482
return 'by.option("' + optionsDescriptor + '")';
464483
}

0 commit comments

Comments
 (0)