|
4 | 4 | * it down, and setting up the driver correctly.
|
5 | 5 | */
|
6 | 6 | import * as q from 'q';
|
7 |
| -import {Builder, Session, WebDriver} from 'selenium-webdriver'; |
| 7 | +import {Builder, promise as wdpromise, Session, WebDriver} from 'selenium-webdriver'; |
8 | 8 |
|
9 | 9 | import {BlockingProxyRunner} from '../bpRunner';
|
10 | 10 | import {Config} from '../config';
|
@@ -65,30 +65,44 @@ export abstract class DriverProvider {
|
65 | 65 | * @public
|
66 | 66 | * @param webdriver instance
|
67 | 67 | */
|
68 |
| - quitDriver(driver: WebDriver): q.Promise<WebDriver> { |
| 68 | + quitDriver(driver: WebDriver): wdpromise.Promise<void> { |
69 | 69 | let driverIndex = this.drivers_.indexOf(driver);
|
70 | 70 | if (driverIndex >= 0) {
|
71 | 71 | this.drivers_.splice(driverIndex, 1);
|
72 | 72 | }
|
73 | 73 |
|
74 |
| - let deferred = q.defer<WebDriver>(); |
75 | 74 | if (driver.getSession() === undefined) {
|
76 |
| - deferred.resolve(); |
| 75 | + return wdpromise.when(undefined); |
77 | 76 | } else {
|
78 |
| - driver.getSession() |
79 |
| - .then((session_: Session) => { |
| 77 | + return driver.getSession() |
| 78 | + .then<void>((session_: Session) => { |
80 | 79 | if (session_) {
|
81 |
| - driver.quit().then(function() { |
82 |
| - deferred.resolve(); |
83 |
| - }); |
84 |
| - } else { |
85 |
| - deferred.resolve(); |
| 80 | + return driver.quit(); |
86 | 81 | }
|
87 | 82 | })
|
88 |
| - .catch((err: Error) => { |
89 |
| - deferred.resolve(); |
90 |
| - }); |
| 83 | + .catch<void>(function(err: Error) {}); |
91 | 84 | }
|
| 85 | + } |
| 86 | + |
| 87 | + |
| 88 | + /** |
| 89 | + * Quits an array of drivers and returns a q promise instead of a webdriver one |
| 90 | + * |
| 91 | + * @param drivers {webdriver.WebDriver[]} The webdriver instances |
| 92 | + */ |
| 93 | + static quitDrivers(provider: DriverProvider, drivers: WebDriver[]): q.Promise<void> { |
| 94 | + let deferred = q.defer<void>(); |
| 95 | + wdpromise |
| 96 | + .all(drivers.map((driver: WebDriver) => { |
| 97 | + return provider.quitDriver(driver); |
| 98 | + })) |
| 99 | + .then( |
| 100 | + () => { |
| 101 | + deferred.resolve(); |
| 102 | + }, |
| 103 | + () => { |
| 104 | + deferred.resolve(); |
| 105 | + }); |
92 | 106 | return deferred.promise;
|
93 | 107 | }
|
94 | 108 |
|
@@ -123,12 +137,9 @@ export abstract class DriverProvider {
|
123 | 137 | * Shuts down the drivers.
|
124 | 138 | *
|
125 | 139 | * @public
|
126 |
| - * @return {q.promise} A promise which will resolve when the environment |
127 |
| - * is down. |
| 140 | + * @return {q.Promise<any>} A promise which will resolve when the environment is down. |
128 | 141 | */
|
129 |
| - teardownEnv(): q.Promise<q.Promise<WebDriver>[]> { |
130 |
| - return q.all<any>(this.drivers_.map((driver: WebDriver) => { |
131 |
| - return this.quitDriver(driver); |
132 |
| - })); |
| 142 | + teardownEnv(): q.Promise<any> { |
| 143 | + return DriverProvider.quitDrivers(this, this.drivers_); |
133 | 144 | }
|
134 | 145 | }
|
0 commit comments