diff --git a/CHANGELOG.md b/CHANGELOG.md index bb6d2c7..7450f99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ -## 3.1.0-wip +## 3.1.0 * Add a `reason` argument to `Clock.waitFor`. +* Explicitly close http clients on quit. ## 3.0.4 diff --git a/lib/async_core.dart b/lib/async_core.dart index d87fff6..d4a0d09 100644 --- a/lib/async_core.dart +++ b/lib/async_core.dart @@ -62,6 +62,7 @@ Future createDriver( final session = await client.send( handler.session.buildCreateRequest(desired: desired), handler.session.parseCreateResponse); + client.close(); if (session.spec != WebDriverSpec.JsonWire && session.spec != WebDriverSpec.W3c) { @@ -90,6 +91,7 @@ Future fromExistingSession( final session = await client.send(handler.session.buildInfoRequest(sessionId), (response) => handler.session.parseInfoResponse(response, sessionId)); + client.close(); if (session.spec != WebDriverSpec.JsonWire && session.spec != WebDriverSpec.W3c) { diff --git a/lib/src/async/web_driver.dart b/lib/src/async/web_driver.dart index 06fb245..21480d0 100644 --- a/lib/src/async/web_driver.dart +++ b/lib/src/async/web_driver.dart @@ -126,10 +126,14 @@ class WebDriver implements SearchContext { _handler.core.parsePageSourceResponse); /// Quits the browser. - Future quit({bool closeSession = true}) => closeSession - ? _client.send(_handler.core.buildDeleteSessionRequest(), - _handler.core.parseDeleteSessionResponse) - : Future.value(); + Future quit({bool closeSession = true}) async { + if (!closeSession) { + return; + } + await _client.send(_handler.core.buildDeleteSessionRequest(), + _handler.core.parseDeleteSessionResponse); + _client.close(); + } /// Closes the current window. /// diff --git a/lib/src/common/request_client.dart b/lib/src/common/request_client.dart index bffbd24..1a0dde1 100644 --- a/lib/src/common/request_client.dart +++ b/lib/src/common/request_client.dart @@ -114,4 +114,6 @@ abstract class AsyncRequestClient extends RequestClient { } Future sendRaw(WebDriverRequest request); + + void close() {} } diff --git a/lib/src/request/async_io_request_client.dart b/lib/src/request/async_io_request_client.dart index dc8ebb8..18888c0 100644 --- a/lib/src/request/async_io_request_client.dart +++ b/lib/src/request/async_io_request_client.dart @@ -60,4 +60,7 @@ class AsyncIoRequestClient extends AsyncRequestClient { @override String toString() => 'AsyncIo'; + + @override + void close() => client.close(force: true); } diff --git a/pubspec.yaml b/pubspec.yaml index c932bec..776a516 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: webdriver -version: 3.1.0-wip +version: 3.1.0 description: >- Provides WebDriver bindings for Dart. Supports WebDriver JSON interface and W3C spec. Requires the use of WebDriver remote server.