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