Enable and fix remaining lints (#234)
Enable full null-safety
Closes https://github.com/google/webdriver.dart/pull/233
PiperOrigin-RevId: 353123127
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 4fba63d..b6a3092 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -13,8 +13,6 @@
PUB_ENVIRONMENT: bot.github
jobs:
- # Check code formatting and static analysis on a single OS (linux)
- # against Dart dev.
analyze:
runs-on: ubuntu-latest
strategy:
@@ -33,19 +31,14 @@
run: dart format --output=none --set-exit-if-changed .
if: always() && steps.install.outcome == 'success'
- name: Analyze code
- run: dart analyze # More cleanup-needed --fatal-infos
+ run: dart analyze --fatal-infos
if: always() && steps.install.outcome == 'success'
- # Run tests on a matrix consisting of two dimensions:
- # 1. OS: ubuntu-latest, (macos-latest, windows-latest)
- # 2. release channel: dev
- test:
- #needs: analyze
+ test_chrome:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
- # Add macos-latest and/or windows-latest if relevant for this package.
os: [ubuntu-latest]
sdk: [dev]
steps:
@@ -54,7 +47,6 @@
with:
sdk: ${{ matrix.sdk }}
- uses: nanasess/setup-chromedriver@v1.0.1
- - uses: browser-actions/setup-geckodriver@v0.0.0
- id: install
name: Install dependencies
run: dart pub get
@@ -62,11 +54,32 @@
run: |
export DISPLAY=:99
chromedriver --port=4444 --url-base=/wd/hub &
- geckodriver --port=4445 &
sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 &
- pub run test -j 1
+ pub run test --exclude-tags ff
if: always() && steps.install.outcome == 'success'
env:
- # until sync_http is migrated to null safety
- DART_VM_OPTIONS: "--no-sound-null-safety"
CHROMEDRIVER_ARGS: '--no-sandbox --headless'
+
+ test_firefox:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ubuntu-latest]
+ sdk: [dev]
+ steps:
+ - uses: actions/checkout@v2
+ - uses: dart-lang/setup-dart@v0.3
+ with:
+ sdk: ${{ matrix.sdk }}
+ - uses: browser-actions/setup-geckodriver@v0.0.0
+ - id: install
+ name: Install dependencies
+ run: dart pub get
+ - name: test
+ run: |
+ export DISPLAY=:99
+ geckodriver --port=4445 &
+ sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 &
+ pub run test --tags ff
+ if: always() && steps.install.outcome == 'success'
diff --git a/analysis_options.yaml b/analysis_options.yaml
index 6f8b463..a5a3a99 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -1,15 +1,22 @@
+include: package:pedantic/analysis_options.yaml
+
+analyzer:
+ strong-mode:
+ implicit-casts: false
+
linter:
rules:
- - always_declare_return_types
- - always_require_non_null_named_parameters
- - annotate_overrides
- avoid_empty_else
- avoid_init_to_null
- avoid_null_checks_in_equality_operators
- - avoid_return_types_on_setters
+ - avoid_unused_constructor_parameters
- await_only_futures
+ - camel_case_types
- cancel_subscriptions
+ - constant_identifier_names
- control_flow_in_finally
+ - directives_ordering
+ - empty_catches
- empty_constructor_bodies
- empty_statements
- hash_and_equals
@@ -18,37 +25,23 @@
- library_names
- library_prefixes
- list_remove_unrelated_type
- - no_adjacent_strings_in_list
- - no_duplicate_case_values
- non_constant_identifier_names
- - one_member_abstracts
- overridden_fields
- package_api_docs
- package_names
- package_prefixed_library_names
- - prefer_asserts_in_initializer_lists
- - prefer_collection_literals
- - prefer_conditional_assignment
- - prefer_const_constructors
- - prefer_const_constructors_in_immutables
- - prefer_contains
+ - prefer_equal_for_default_values
+ - prefer_expression_function_bodies
- prefer_final_fields
- - prefer_initializing_formals
- - prefer_is_empty
+ - prefer_generic_function_type_aliases
- prefer_is_not_empty
- - prefer_single_quotes
- - prefer_typing_uninitialized_variables
- - recursive_getters
+ - prefer_relative_imports
- slash_for_doc_comments
- test_types_in_equals
- throw_in_finally
- type_init_formals
- - unawaited_futures
- unnecessary_brace_in_string_interps
- - unnecessary_getters_setters
- - unnecessary_lambdas
- - unnecessary_null_aware_assignments
- - unnecessary_null_in_if_null_operators
- - unnecessary_overrides
- - unnecessary_statements
+ - unnecessary_const
+ - unnecessary_new
- unrelated_type_equality_checks
+ - valid_regexps
diff --git a/dart_test.yaml b/dart_test.yaml
new file mode 100644
index 0000000..6c3da2b
--- /dev/null
+++ b/dart_test.yaml
@@ -0,0 +1,3 @@
+# See https://github.com/dart-lang/test/blob/master/pkgs/test/doc/configuration.md
+tags:
+ ff: # tests that run on Firefox. Others tests are assumed to run on Chrome
diff --git a/lib/async_core.dart b/lib/async_core.dart
index 37be98b..b33067d 100644
--- a/lib/async_core.dart
+++ b/lib/async_core.dart
@@ -17,11 +17,11 @@
import 'dart:async' show Future;
import 'dart:collection' show UnmodifiableMapView;
-import 'package:webdriver/src/async/web_driver.dart';
-import 'package:webdriver/src/common/capabilities.dart';
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/spec.dart';
-import 'package:webdriver/src/common/utils.dart';
+import 'src/async/web_driver.dart';
+import 'src/common/capabilities.dart';
+import 'src/common/request_client.dart';
+import 'src/common/spec.dart';
+import 'src/common/utils.dart';
export 'package:webdriver/src/async/alert.dart';
export 'package:webdriver/src/async/common.dart';
diff --git a/lib/async_html.dart b/lib/async_html.dart
index ad83a6f..21f86b0 100644
--- a/lib/async_html.dart
+++ b/lib/async_html.dart
@@ -16,10 +16,10 @@
import 'dart:async' show Future;
-import 'package:webdriver/async_core.dart' as core
+import 'async_core.dart' as core
show createDriver, fromExistingSession, fromExistingSessionSync, WebDriver;
-import 'package:webdriver/src/common/spec.dart';
-import 'package:webdriver/src/request/async_xhr_request_client.dart';
+import 'src/common/spec.dart';
+import 'src/request/async_xhr_request_client.dart';
export 'package:webdriver/async_core.dart'
hide createDriver, fromExistingSession, fromExistingSessionSync;
diff --git a/lib/async_io.dart b/lib/async_io.dart
index d14cf90..0001692 100644
--- a/lib/async_io.dart
+++ b/lib/async_io.dart
@@ -16,14 +16,14 @@
import 'dart:async' show Future;
-import 'package:webdriver/async_core.dart' as core
+import 'async_core.dart' as core
show
createDriver,
fromExistingSession,
fromExistingSessionSync,
WebDriver,
WebDriverSpec;
-import 'package:webdriver/src/request/async_io_request_client.dart';
+import 'src/request/async_io_request_client.dart';
export 'package:webdriver/async_core.dart'
hide createDriver, fromExistingSession, fromExistingSessionSync;
diff --git a/lib/src/async/alert.dart b/lib/src/async/alert.dart
index 18b9190..2f6c526 100644
--- a/lib/src/async/alert.dart
+++ b/lib/src/async/alert.dart
@@ -14,8 +14,8 @@
import 'dart:async';
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
+import '../common/request_client.dart';
+import '../common/webdriver_handler.dart';
/// A JavaScript alert(), confirm(), or prompt() dialog
class Alert {
diff --git a/lib/src/async/common.dart b/lib/src/async/common.dart
index 52ddc55..4d6d6f1 100644
--- a/lib/src/async/common.dart
+++ b/lib/src/async/common.dart
@@ -14,9 +14,9 @@
import 'dart:async';
-import 'package:webdriver/src/common/by.dart';
-import 'package:webdriver/src/async/web_driver.dart';
-import 'package:webdriver/src/async/web_element.dart';
+import '../common/by.dart';
+import 'web_driver.dart';
+import 'web_element.dart';
typedef GetAttribute = Future<String?> Function(String name);
diff --git a/lib/src/async/common_io.dart b/lib/src/async/common_io.dart
index 941cc18..e3d3909 100644
--- a/lib/src/async/common_io.dart
+++ b/lib/src/async/common_io.dart
@@ -1,6 +1,6 @@
-import 'package:webdriver/src/async/web_driver.dart';
-import 'package:webdriver/src/request/sync_http_request_client.dart';
-import 'package:webdriver/sync_core.dart' as sync_core;
+import '../../sync_core.dart' as sync_core;
+import '../request/sync_http_request_client.dart';
+import 'web_driver.dart';
/// Returns a [sync_core.WebDriver] with the same URI + session ID.
sync_core.WebDriver createSyncWebDriver(WebDriver driver) =>
diff --git a/lib/src/async/common_stub.dart b/lib/src/async/common_stub.dart
index 004a39a..ce29249 100644
--- a/lib/src/async/common_stub.dart
+++ b/lib/src/async/common_stub.dart
@@ -1,5 +1,5 @@
-import 'package:webdriver/src/async/web_driver.dart';
-import 'package:webdriver/sync_core.dart' as sync_core;
+import '../../sync_core.dart' as sync_core;
+import 'web_driver.dart';
/// Returns a [sync_core.WebDriver] with the same URI + session ID.
sync_core.WebDriver createSyncWebDriver(WebDriver driver) =>
diff --git a/lib/src/async/cookies.dart b/lib/src/async/cookies.dart
index 082e36b..1b34be3 100644
--- a/lib/src/async/cookies.dart
+++ b/lib/src/async/cookies.dart
@@ -14,9 +14,9 @@
import 'dart:async';
-import 'package:webdriver/src/common/cookie.dart';
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
+import '../common/cookie.dart';
+import '../common/request_client.dart';
+import '../common/webdriver_handler.dart';
class Cookies {
final AsyncRequestClient _client;
diff --git a/lib/src/async/logs.dart b/lib/src/async/logs.dart
index 3611d14..e7a26fc 100644
--- a/lib/src/async/logs.dart
+++ b/lib/src/async/logs.dart
@@ -14,10 +14,10 @@
import 'dart:async';
-import 'package:webdriver/src/common/exception.dart';
-import 'package:webdriver/src/common/log.dart';
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
+import '../common/exception.dart';
+import '../common/log.dart';
+import '../common/request_client.dart';
+import '../common/webdriver_handler.dart';
class Logs {
final AsyncRequestClient _client;
diff --git a/lib/src/async/mouse.dart b/lib/src/async/mouse.dart
index 1e6b0c7..d72647b 100644
--- a/lib/src/async/mouse.dart
+++ b/lib/src/async/mouse.dart
@@ -14,12 +14,12 @@
import 'dart:async';
-import 'package:webdriver/src/async/web_element.dart';
-import 'package:webdriver/src/common/mouse.dart';
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/json_wire_handler.dart';
-import 'package:webdriver/src/handler/w3c_handler.dart';
+import '../common/mouse.dart';
+import '../common/request_client.dart';
+import '../common/webdriver_handler.dart';
+import '../handler/json_wire_handler.dart';
+import '../handler/w3c_handler.dart';
+import 'web_element.dart';
class Mouse {
final AsyncRequestClient _client;
diff --git a/lib/src/async/target_locator.dart b/lib/src/async/target_locator.dart
index ac87651..cfe07ca 100644
--- a/lib/src/async/target_locator.dart
+++ b/lib/src/async/target_locator.dart
@@ -14,9 +14,9 @@
import 'dart:async';
-import 'package:webdriver/async_core.dart';
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
+import '../../async_core.dart';
+import '../common/request_client.dart';
+import '../common/webdriver_handler.dart';
class TargetLocator {
final WebDriver _driver;
@@ -36,7 +36,7 @@
///
/// Throws [NoSuchFrameException] if the specified frame can't be found.
Future<void> frame([/* int | WebElement | String */ frame]) async {
- if (frame == null || frame is int) {
+ if (frame is int?) {
await _client.send(_handler.frame.buildSwitchByIdRequest(frame),
_handler.frame.parseSwitchByIdResponse);
} else if (frame is WebElement) {
diff --git a/lib/src/async/timeouts.dart b/lib/src/async/timeouts.dart
index be1f416..7f48fe4 100644
--- a/lib/src/async/timeouts.dart
+++ b/lib/src/async/timeouts.dart
@@ -14,8 +14,8 @@
import 'dart:async';
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
+import '../common/request_client.dart';
+import '../common/webdriver_handler.dart';
class Timeouts {
final AsyncRequestClient _client;
diff --git a/lib/src/async/web_driver.dart b/lib/src/async/web_driver.dart
index 566a906..5a29d51 100644
--- a/lib/src/async/web_driver.dart
+++ b/lib/src/async/web_driver.dart
@@ -15,30 +15,29 @@
import 'dart:async';
import 'dart:convert';
-import 'package:webdriver/src/async/common.dart';
-
-import 'package:webdriver/src/async/cookies.dart';
-import 'package:webdriver/src/async/keyboard.dart';
-import 'package:webdriver/src/async/mouse.dart';
-import 'package:webdriver/src/async/logs.dart';
-import 'package:webdriver/src/async/stepper.dart' show Stepper;
-import 'package:webdriver/src/async/target_locator.dart';
-import 'package:webdriver/src/async/timeouts.dart';
-import 'package:webdriver/src/async/web_element.dart';
-import 'package:webdriver/src/async/window.dart';
-import 'package:webdriver/src/common/by.dart';
-import 'package:webdriver/src/common/command_event.dart';
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/spec.dart';
-import 'package:webdriver/src/common/utils.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/sync_core.dart' as sync_core;
+import '../../sync_core.dart' as sync_core;
+import '../common/by.dart';
+import '../common/command_event.dart';
+import '../common/request.dart';
+import '../common/request_client.dart';
+import '../common/spec.dart';
+import '../common/utils.dart';
+import '../common/webdriver_handler.dart';
+import 'common.dart';
// ignore: uri_does_not_exist
import 'common_stub.dart'
- // ignore: uri_does_not_exist
+// ignore: uri_does_not_exist
if (dart.library.io) 'common_io.dart';
+import 'cookies.dart';
+import 'keyboard.dart';
+import 'logs.dart';
+import 'mouse.dart';
+import 'stepper.dart' show Stepper;
+import 'target_locator.dart';
+import 'timeouts.dart';
+import 'web_element.dart';
+import 'window.dart';
class WebDriver implements SearchContext {
final WebDriverSpec spec;
@@ -57,7 +56,7 @@
final AsyncRequestClient _client;
WebDriver(this.uri, this.id, this.capabilities, this._client, this.spec)
- : this._handler = getHandler(spec);
+ : _handler = getHandler(spec);
/// Produces a [sync_core.WebDriver] with the same session ID. Allows
/// forwards compatibility with other frameworks.
@@ -77,8 +76,9 @@
/// Navigates to the specified url
Future<void> get(/* Uri | String */ url) => _client.send(
- _handler.navigation
- .buildNavigateToRequest((url is Uri) ? url.toString() : url),
+ _handler.navigation.buildNavigateToRequest(
+ (url is Uri) ? url.toString() : url as String,
+ ),
_handler.navigation.parseNavigateToResponse);
/// Navigates forwards in the browser history, if possible.
@@ -105,7 +105,7 @@
final ids = await _client.send(
_handler.elementFinder.buildFindElementsRequest(by),
_handler.elementFinder.parseFindElementsResponse);
- int i = 0;
+ var i = 0;
for (var id in ids) {
yield getElement(id, this, by, i);
@@ -169,8 +169,7 @@
return null;
}
- TargetLocator get switchTo =>
- TargetLocator(this, this._client, this._handler);
+ TargetLocator get switchTo => TargetLocator(this, _client, _handler);
Cookies get cookies => Cookies(_client, _handler);
@@ -184,9 +183,9 @@
Timeouts get timeouts => Timeouts(_client, _handler);
- Keyboard get keyboard => Keyboard(this._client, this._handler);
+ Keyboard get keyboard => Keyboard(_client, _handler);
- Mouse get mouse => Mouse(this._client, this._handler);
+ Mouse get mouse => Mouse(_client, _handler);
/// Take a screenshot of the current page as PNG and return it as
/// base64-encoded string.
@@ -258,26 +257,43 @@
/// the corresponding DOM element. Likewise, any DOM Elements in the script
/// result will be converted to WebElements.
Future<dynamic> execute(String script, List args) => _client.send(
- _handler.core.buildExecuteRequest(script, args),
- (response) => _handler.core.parseExecuteResponse(
- response, (elementId) => getElement(elementId, this, 'javascript')));
+ _handler.core.buildExecuteRequest(script, args),
+ (response) => _handler.core.parseExecuteResponse(
+ response,
+ (elementId) => getElement(elementId, this, 'javascript'),
+ ),
+ );
Future<dynamic> postRequest(String command, [params]) => _client.send(
- _handler.buildGeneralRequest(HttpMethod.httpPost, command, params),
- (response) => _handler.parseGeneralResponse(
- response, (elementId) => getElement(elementId, this)));
+ _handler.buildGeneralRequest(HttpMethod.httpPost, command, params),
+ (response) => _handler.parseGeneralResponse(
+ response,
+ (elementId) => getElement(elementId, this),
+ ),
+ );
Future<dynamic> getRequest(String command) => _client.send(
- _handler.buildGeneralRequest(HttpMethod.httpGet, command),
- (response) => _handler.parseGeneralResponse(
- response, (elementId) => getElement(elementId, this)));
+ _handler.buildGeneralRequest(HttpMethod.httpGet, command),
+ (response) => _handler.parseGeneralResponse(
+ response,
+ (elementId) => getElement(elementId, this),
+ ),
+ );
Future<dynamic> deleteRequest(String command) => _client.send(
- _handler.buildGeneralRequest(HttpMethod.httpDelete, command),
- (response) => _handler.parseGeneralResponse(
- response, (elementId) => getElement(elementId, this)));
+ _handler.buildGeneralRequest(HttpMethod.httpDelete, command),
+ (response) => _handler.parseGeneralResponse(
+ response,
+ (elementId) => getElement(elementId, this),
+ ),
+ );
- WebElement getElement(String elementId, [context, locator, index]) =>
+ WebElement getElement(
+ String elementId, [
+ SearchContext? context,
+ locator,
+ int? index,
+ ]) =>
WebElement(this, _client, _handler, elementId, context, locator, index);
@override
diff --git a/lib/src/async/web_element.dart b/lib/src/async/web_element.dart
index e5b9a6d..7eb1211 100644
--- a/lib/src/async/web_element.dart
+++ b/lib/src/async/web_element.dart
@@ -15,12 +15,12 @@
import 'dart:async';
import 'dart:math';
-import 'package:webdriver/src/async/common.dart';
-import 'package:webdriver/src/async/web_driver.dart';
-import 'package:webdriver/src/common/by.dart';
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/web_element.dart' as common;
-import 'package:webdriver/src/common/webdriver_handler.dart';
+import '../common/by.dart';
+import '../common/request_client.dart';
+import '../common/web_element.dart' as common;
+import '../common/webdriver_handler.dart';
+import 'common.dart';
+import 'web_driver.dart';
class WebElement extends common.WebElement implements SearchContext {
@override
@@ -115,7 +115,7 @@
_handler.elementFinder.buildFindElementsRequest(by, id),
_handler.elementFinder.parseFindElementsResponse);
- int i = 0;
+ var i = 0;
for (var id in ids) {
yield driver.getElement(id, this, by, i);
i++;
@@ -151,14 +151,14 @@
_handler.element.parseCssPropertyResponse));
Future<bool> equals(WebElement other) async =>
- other is WebElement && other.driver == this.driver && other.id == this.id;
+ other is WebElement && other.driver == driver && other.id == id;
@override
int get hashCode => driver.hashCode * 3 + id.hashCode;
@override
bool operator ==(other) =>
- other is WebElement && other.driver == this.driver && other.id == this.id;
+ other is WebElement && other.driver == driver && other.id == id;
@override
String toString() {
diff --git a/lib/src/async/window.dart b/lib/src/async/window.dart
index 60cb0ac..436e7a8 100644
--- a/lib/src/async/window.dart
+++ b/lib/src/async/window.dart
@@ -15,8 +15,8 @@
import 'dart:async';
import 'dart:math';
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
+import '../common/request_client.dart';
+import '../common/webdriver_handler.dart';
class Window {
final AsyncRequestClient _client;
@@ -104,9 +104,9 @@
@override
bool operator ==(other) =>
other is Window &&
- other._client == this._client &&
- other._handler == this._handler &&
- other.id == this.id;
+ other._client == _client &&
+ other._handler == _handler &&
+ other.id == id;
@override
String toString() => '$_handler.windows($_client)[$id]';
diff --git a/lib/src/common/by.dart b/lib/src/common/by.dart
index d5c1a11..87e05ab 100644
--- a/lib/src/common/by.dart
+++ b/lib/src/common/by.dart
@@ -61,5 +61,5 @@
@override
bool operator ==(other) =>
- other is By && other.using == this.using && other.value == this.value;
+ other is By && other.using == using && other.value == value;
}
diff --git a/lib/src/common/command_event.dart b/lib/src/common/command_event.dart
index 2f57aa1..fa66a48 100644
--- a/lib/src/common/command_event.dart
+++ b/lib/src/common/command_event.dart
@@ -34,5 +34,5 @@
@override
String toString() => '[$startTime - $endTime] $method $endPoint($params) => '
- '${exception != null ? exception : result}';
+ '${exception ?? result}';
}
diff --git a/lib/src/common/cookie.dart b/lib/src/common/cookie.dart
index 6e2b29d..0207c11 100644
--- a/lib/src/common/cookie.dart
+++ b/lib/src/common/cookie.dart
@@ -32,21 +32,31 @@
/// (Optional) When the cookie expires.
final DateTime? expiry;
- Cookie(this.name, this.value,
- {this.path, this.domain, this.secure, this.expiry});
+ Cookie(
+ this.name,
+ this.value, {
+ this.path,
+ this.domain,
+ this.secure,
+ this.expiry,
+ });
factory Cookie.fromJson(Map<String, dynamic> json) {
DateTime? expiry;
if (json['expiry'] is num) {
expiry = DateTime.fromMillisecondsSinceEpoch(
- json['expiry'].toInt() * 1000,
- isUtc: true);
+ (json['expiry'] as num).toInt() * 1000,
+ isUtc: true,
+ );
}
- return Cookie(json['name'], json['value'],
- path: json['path'],
- domain: json['domain'],
- secure: json['secure'],
- expiry: expiry);
+ return Cookie(
+ json['name'] as String?,
+ json['value'] as String?,
+ path: json['path'] as String?,
+ domain: json['domain'] as String?,
+ secure: json['secure'] as bool?,
+ expiry: expiry,
+ );
}
Map<String, dynamic> toJson() {
diff --git a/lib/src/common/exception.dart b/lib/src/common/exception.dart
index 9faf7cf..961f967 100644
--- a/lib/src/common/exception.dart
+++ b/lib/src/common/exception.dart
@@ -283,18 +283,27 @@
}
/// Temporary method to emulate the original w3c exception parsing logic.
-WebDriverException getExceptionFromW3cResponse(
- {int? httpStatusCode, String? httpReasonPhrase, dynamic jsonResp}) {
+WebDriverException getExceptionFromW3cResponse({
+ int? httpStatusCode,
+ String? httpReasonPhrase,
+ dynamic jsonResp,
+}) {
if (jsonResp is Map && jsonResp.keys.contains('value')) {
final value = jsonResp['value'];
switch (value['error']) {
case 'invalid argument':
- return InvalidArgumentException(httpStatusCode, value['message']);
+ return InvalidArgumentException(
+ httpStatusCode,
+ value['message'] as String?,
+ );
case 'no such element':
- return NoSuchElementException(httpStatusCode, value['message']);
+ return NoSuchElementException(
+ httpStatusCode,
+ value['message'] as String?,
+ );
default:
- return WebDriverException(httpStatusCode, value['message']);
+ return WebDriverException(httpStatusCode, value['message'] as String?);
}
}
diff --git a/lib/src/common/log.dart b/lib/src/common/log.dart
index c06badd..0322a51 100644
--- a/lib/src/common/log.dart
+++ b/lib/src/common/log.dart
@@ -7,10 +7,12 @@
LogEntry.fromMap(Map map)
: this(
- map['message'],
- DateTime.fromMillisecondsSinceEpoch(map['timestamp'].toInt(),
- isUtc: true),
- map['level']);
+ map['message'] as String?,
+ DateTime.fromMillisecondsSinceEpoch(
+ (map['timestamp'] as num).toInt(),
+ isUtc: true,
+ ),
+ map['level'] as String?);
@override
String toString() => '$level[$timestamp]: $message';
diff --git a/lib/src/common/request.dart b/lib/src/common/request.dart
index c68ac00..d310520 100644
--- a/lib/src/common/request.dart
+++ b/lib/src/common/request.dart
@@ -29,24 +29,24 @@
WebDriverRequest(this.method, this.uri, this.body);
WebDriverRequest.postRequest(this.uri, [params])
- : this.method = HttpMethod.httpPost,
- this.body = params == null ? '{}' : json.encode(params);
+ : method = HttpMethod.httpPost,
+ body = params == null ? '{}' : json.encode(params);
WebDriverRequest.getRequest(this.uri)
- : this.method = HttpMethod.httpGet,
- this.body = null;
+ : method = HttpMethod.httpGet,
+ body = null;
WebDriverRequest.deleteRequest(this.uri)
- : this.method = HttpMethod.httpDelete,
- this.body = null;
+ : method = HttpMethod.httpDelete,
+ body = null;
/// Represents request that has no http request to make.
///
/// Useful when the endpoint is not supported but can be inferred in some
/// degree locally.
WebDriverRequest.nullRequest(this.body)
- : this.method = null,
- this.uri = null;
+ : method = null,
+ uri = null;
@override
String toString() => '${method!.name} $uri: $body';
diff --git a/lib/src/common/request_client.dart b/lib/src/common/request_client.dart
index 6ca12d0..31ff9d9 100644
--- a/lib/src/common/request_client.dart
+++ b/lib/src/common/request_client.dart
@@ -1,7 +1,7 @@
import 'dart:async';
import 'package:stack_trace/stack_trace.dart';
-import 'package:webdriver/src/common/command_event.dart';
+import 'command_event.dart';
import 'request.dart';
diff --git a/lib/src/common/session.dart b/lib/src/common/session.dart
index afa5840..d4cdccc 100644
--- a/lib/src/common/session.dart
+++ b/lib/src/common/session.dart
@@ -1,4 +1,4 @@
-import 'package:webdriver/src/common/spec.dart';
+import 'spec.dart';
class SessionInfo {
/// Id of the session.
diff --git a/lib/src/common/spec.dart b/lib/src/common/spec.dart
index 061845c..f5e7903 100644
--- a/lib/src/common/spec.dart
+++ b/lib/src/common/spec.dart
@@ -1,3 +1,5 @@
+// ignore_for_file: constant_identifier_names
+
/// Defines the WebDriver spec to use. Auto = try to infer the spec based on
/// the response during session creation.
enum WebDriverSpec { Auto, JsonWire, W3c }
diff --git a/lib/src/common/utils.dart b/lib/src/common/utils.dart
index 1221929..0046085 100644
--- a/lib/src/common/utils.dart
+++ b/lib/src/common/utils.dart
@@ -1,8 +1,8 @@
-import 'package:webdriver/src/common/spec.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/infer_handler.dart';
-import 'package:webdriver/src/handler/json_wire_handler.dart';
-import 'package:webdriver/src/handler/w3c_handler.dart';
+import '../handler/infer_handler.dart';
+import '../handler/json_wire_handler.dart';
+import '../handler/w3c_handler.dart';
+import 'spec.dart';
+import 'webdriver_handler.dart';
WebDriverHandler getHandler(WebDriverSpec spec) {
switch (spec) {
diff --git a/lib/src/common/webdriver_handler.dart b/lib/src/common/webdriver_handler.dart
index 58a6c0b..62f6306 100644
--- a/lib/src/common/webdriver_handler.dart
+++ b/lib/src/common/webdriver_handler.dart
@@ -1,9 +1,8 @@
import 'dart:math';
-import 'package:webdriver/async_core.dart';
-import 'package:webdriver/src/common/session.dart';
-
+import '../../async_core.dart';
import 'request.dart';
+import 'session.dart';
/// Handler for spec related request building and response parsing.
///
diff --git a/lib/src/handler/infer_handler.dart b/lib/src/handler/infer_handler.dart
index 3cb5270..3ccdb2a 100644
--- a/lib/src/handler/infer_handler.dart
+++ b/lib/src/handler/infer_handler.dart
@@ -1,13 +1,13 @@
import 'dart:convert';
-import 'package:webdriver/src/common/capabilities.dart';
-import 'package:webdriver/src/common/exception.dart';
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/session.dart';
-import 'package:webdriver/src/common/spec.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/json_wire/session.dart';
-import 'package:webdriver/src/handler/w3c/session.dart';
+import '../common/capabilities.dart';
+import '../common/exception.dart';
+import '../common/request.dart';
+import '../common/session.dart';
+import '../common/spec.dart';
+import '../common/webdriver_handler.dart';
+import 'json_wire/session.dart';
+import 'w3c/session.dart';
/// A [WebDriverHandler] that is only used when creating new session /
/// getting existing session info without given the spec.
@@ -84,9 +84,9 @@
@override
SessionInfo parseCreateResponse(WebDriverResponse response) {
- Map responseBody;
+ Map<String, dynamic> responseBody;
try {
- responseBody = json.decode(response.body!);
+ responseBody = json.decode(response.body!) as Map<String, dynamic>;
} catch (e) {
final rawBody = response.body == null || response.body!.isEmpty
? '<empty response>'
@@ -104,7 +104,9 @@
}
throw WebDriverException(
- response.statusCode, 'Unexpected response structure: ${response.body}');
+ response.statusCode,
+ 'Unexpected response structure: ${response.body}',
+ );
}
@override
@@ -116,24 +118,27 @@
[String? sessionId]) {
if (response.statusCode == 404) {
// May be W3C, as it will throw an unknown command exception.
- Map? body;
+ Map<String, dynamic>? body;
try {
- body = json.decode(response.body!)['value'];
+ body = json.decode(response.body!)['value'] as Map<String, dynamic>?;
} catch (e) {
final rawBody = response.body?.isEmpty != false
? '<empty response>'
: response.body;
throw WebDriverException(
- response.statusCode, 'Error parsing response body: $rawBody');
+ response.statusCode,
+ 'Error parsing response body: $rawBody',
+ );
}
if (body == null ||
body['error'] != 'unknown command' ||
body['message'] is! String) {
throw WebDriverException(
- response.statusCode,
- 'Unexpected response body (expecting `unexpected command error` '
- 'produced by W3C WebDriver): ${response.body}');
+ response.statusCode,
+ 'Unexpected response body (expecting `unexpected command error` '
+ 'produced by W3C WebDriver): ${response.body}',
+ );
}
return SessionInfo(sessionId!, WebDriverSpec.W3c, Capabilities.empty);
diff --git a/lib/src/handler/json_wire/alert.dart b/lib/src/handler/json_wire/alert.dart
index a9f8873..fd95ab4 100644
--- a/lib/src/handler/json_wire/alert.dart
+++ b/lib/src/handler/json_wire/alert.dart
@@ -12,9 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/json_wire/utils.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class JsonWireAlertHandler implements AlertHandler {
@override
@@ -23,7 +23,7 @@
@override
String parseGetTextResponse(WebDriverResponse response) =>
- parseJsonWireResponse(response);
+ parseJsonWireResponse(response) as String;
@override
WebDriverRequest buildAcceptRequest() =>
diff --git a/lib/src/handler/json_wire/cookies.dart b/lib/src/handler/json_wire/cookies.dart
index 51a8461..8e50b05 100644
--- a/lib/src/handler/json_wire/cookies.dart
+++ b/lib/src/handler/json_wire/cookies.dart
@@ -12,11 +12,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import 'package:webdriver/src/common/cookie.dart';
-import 'package:webdriver/src/common/exception.dart';
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/json_wire/utils.dart';
+import '../../common/cookie.dart';
+import '../../common/exception.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class JsonWireCookiesHandler extends CookiesHandler {
@override
@@ -64,7 +64,9 @@
@override
List<Cookie> parseGetAllCookiesResponse(WebDriverResponse response) =>
- parseJsonWireResponse(response).map<Cookie>(_deserialize).toList();
+ (parseJsonWireResponse(response) as List)
+ .map<Cookie>(_deserialize)
+ .toList();
/// Serializes the cookie to json object according to the spec.
///
@@ -74,5 +76,6 @@
/// Deserializes the json object to get the cookie according to the spec.
///
/// The spec is deserializing the same we do in [Cookie.fromJson].
- Cookie _deserialize(dynamic content) => Cookie.fromJson(content);
+ Cookie _deserialize(dynamic content) =>
+ Cookie.fromJson(content as Map<String, dynamic>);
}
diff --git a/lib/src/handler/json_wire/core.dart b/lib/src/handler/json_wire/core.dart
index 4de1af5..72ca850 100644
--- a/lib/src/handler/json_wire/core.dart
+++ b/lib/src/handler/json_wire/core.dart
@@ -1,6 +1,6 @@
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/json_wire/utils.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class JsonWireCoreHandler extends CoreHandler {
@override
@@ -9,14 +9,14 @@
@override
String parseCurrentUrlResponse(WebDriverResponse response) =>
- parseJsonWireResponse(response);
+ parseJsonWireResponse(response) as String;
@override
WebDriverRequest buildTitleRequest() => WebDriverRequest.getRequest('title');
@override
String parseTitleResponse(WebDriverResponse response) =>
- parseJsonWireResponse(response);
+ parseJsonWireResponse(response) as String;
@override
WebDriverRequest buildPageSourceRequest() =>
@@ -24,7 +24,7 @@
@override
String parsePageSourceResponse(WebDriverResponse response) =>
- parseJsonWireResponse(response);
+ parseJsonWireResponse(response) as String;
@override
WebDriverRequest buildScreenshotRequest() =>
@@ -32,11 +32,11 @@
@override
WebDriverRequest buildElementScreenshotRequest(String elementId) =>
- new WebDriverRequest.getRequest('${elementPrefix(elementId)}screenshot');
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}screenshot');
@override
String parseScreenshotResponse(WebDriverResponse response) =>
- parseJsonWireResponse(response);
+ parseJsonWireResponse(response) as String;
@override
WebDriverRequest buildExecuteAsyncRequest(String script, List args) =>
diff --git a/lib/src/handler/json_wire/element.dart b/lib/src/handler/json_wire/element.dart
index aa363e0..54b1438 100644
--- a/lib/src/handler/json_wire/element.dart
+++ b/lib/src/handler/json_wire/element.dart
@@ -1,15 +1,14 @@
import 'dart:math';
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
import 'utils.dart';
class JsonWireElementHandler extends ElementHandler {
@override
- WebDriverRequest buildClickRequest(String elementId) {
- return WebDriverRequest.postRequest('${elementPrefix(elementId)}click');
- }
+ WebDriverRequest buildClickRequest(String elementId) =>
+ WebDriverRequest.postRequest('${elementPrefix(elementId)}click');
@override
void parseClickResponse(WebDriverResponse response) {
@@ -17,11 +16,10 @@
}
@override
- WebDriverRequest buildSendKeysRequest(String elementId, String keysToSend) {
- return WebDriverRequest.postRequest('${elementPrefix(elementId)}value', {
- 'value': [keysToSend]
- });
- }
+ WebDriverRequest buildSendKeysRequest(String elementId, String keysToSend) =>
+ WebDriverRequest.postRequest('${elementPrefix(elementId)}value', {
+ 'value': [keysToSend]
+ });
@override
void parseSendKeysResponse(WebDriverResponse response) {
@@ -29,9 +27,8 @@
}
@override
- WebDriverRequest buildClearRequest(String elementId) {
- return WebDriverRequest.postRequest('${elementPrefix(elementId)}clear');
- }
+ WebDriverRequest buildClearRequest(String elementId) =>
+ WebDriverRequest.postRequest('${elementPrefix(elementId)}clear');
@override
void parseClearResponse(WebDriverResponse response) {
@@ -39,81 +36,74 @@
}
@override
- WebDriverRequest buildSelectedRequest(String elementId) {
- return WebDriverRequest.getRequest('${elementPrefix(elementId)}selected');
- }
+ WebDriverRequest buildSelectedRequest(String elementId) =>
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}selected');
@override
- bool parseSelectedResponse(WebDriverResponse response) {
- return parseJsonWireResponse(response);
- }
+ bool parseSelectedResponse(WebDriverResponse response) =>
+ parseJsonWireResponse(response) as bool;
@override
- WebDriverRequest buildEnabledRequest(String elementId) {
- return WebDriverRequest.getRequest('${elementPrefix(elementId)}enabled');
- }
+ WebDriverRequest buildEnabledRequest(String elementId) =>
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}enabled');
@override
- bool parseEnabledResponse(WebDriverResponse response) {
- return parseJsonWireResponse(response);
- }
+ bool parseEnabledResponse(WebDriverResponse response) =>
+ parseJsonWireResponse(response) as bool;
@override
- WebDriverRequest buildDisplayedRequest(String elementId) {
- return WebDriverRequest.getRequest('${elementPrefix(elementId)}displayed');
- }
+ WebDriverRequest buildDisplayedRequest(String elementId) =>
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}displayed');
@override
- bool parseDisplayedResponse(WebDriverResponse response) {
- return parseJsonWireResponse(response);
- }
+ bool parseDisplayedResponse(WebDriverResponse response) =>
+ parseJsonWireResponse(response) as bool;
@override
- WebDriverRequest buildLocationRequest(String elementId) {
- return WebDriverRequest.getRequest('${elementPrefix(elementId)}location');
- }
+ WebDriverRequest buildLocationRequest(String elementId) =>
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}location');
@override
Point<int> parseLocationResponse(WebDriverResponse response) {
final point = parseJsonWireResponse(response);
- return Point(point['x'].toInt(), point['y'].toInt());
+ return Point((point['x'] as num).toInt(), (point['y'] as num).toInt());
}
@override
- WebDriverRequest buildSizeRequest(String elementId) {
- return WebDriverRequest.getRequest('${elementPrefix(elementId)}size');
- }
+ WebDriverRequest buildSizeRequest(String elementId) =>
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}size');
@override
Rectangle<int> parseSizeResponse(WebDriverResponse response) {
final size = parseJsonWireResponse(response);
- return Rectangle<int>(0, 0, size['width'].toInt(), size['height'].toInt());
+ return Rectangle<int>(
+ 0,
+ 0,
+ (size['width'] as num).toInt(),
+ (size['height'] as num).toInt(),
+ );
}
@override
- WebDriverRequest buildNameRequest(String elementId) {
- return WebDriverRequest.getRequest('${elementPrefix(elementId)}name');
- }
+ WebDriverRequest buildNameRequest(String elementId) =>
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}name');
@override
- String parseNameResponse(WebDriverResponse response) {
- return parseJsonWireResponse(response);
- }
+ String parseNameResponse(WebDriverResponse response) =>
+ parseJsonWireResponse(response) as String;
@override
- WebDriverRequest buildTextRequest(String elementId) {
- return WebDriverRequest.getRequest('${elementPrefix(elementId)}text');
- }
+ WebDriverRequest buildTextRequest(String elementId) =>
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}text');
@override
- String parseTextResponse(WebDriverResponse response) {
- return parseJsonWireResponse(response);
- }
+ String parseTextResponse(WebDriverResponse response) =>
+ parseJsonWireResponse(response) as String;
@override
- WebDriverRequest buildAttributeRequest(String elementId, String name) {
- return WebDriverRequest.postRequest('execute', {
- 'script': '''
+ WebDriverRequest buildAttributeRequest(String elementId, String name) =>
+ WebDriverRequest.postRequest('execute', {
+ 'script': '''
var attr = arguments[0].attributes["$name"];
if(attr) {
return attr.value;
@@ -121,61 +111,52 @@
return null;
''',
- 'args': [
- {jsonWireElementStr: elementId}
- ]
- });
- }
+ 'args': [
+ {jsonWireElementStr: elementId}
+ ]
+ });
@override
- String? parseAttributeResponse(WebDriverResponse response) {
- return parseJsonWireResponse(response)?.toString();
- }
+ String? parseAttributeResponse(WebDriverResponse response) =>
+ parseJsonWireResponse(response)?.toString();
@override
@deprecated
WebDriverRequest buildSeleniumAttributeRequest(
- String elementId, String name) {
- return WebDriverRequest.getRequest(
- '${elementPrefix(elementId)}attribute/$name');
- }
+ String elementId, String name) =>
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}attribute/$name');
@override
@deprecated
- String? parseSeleniumAttributeResponse(WebDriverResponse response) {
- return parseJsonWireResponse(response)?.toString();
- }
+ String? parseSeleniumAttributeResponse(WebDriverResponse response) =>
+ parseJsonWireResponse(response)?.toString();
@override
- WebDriverRequest buildCssPropertyRequest(String elementId, String name) {
- return WebDriverRequest.postRequest('execute', {
- 'script':
- 'return window.getComputedStyle(arguments[0]).${_cssPropName(name)};',
- 'args': [
- {jsonWireElementStr: elementId}
- ]
- });
- }
+ WebDriverRequest buildCssPropertyRequest(String elementId, String name) =>
+ WebDriverRequest.postRequest('execute', {
+ 'script':
+ 'return window.getComputedStyle(arguments[0]).${_cssPropName(name)};',
+ 'args': [
+ {jsonWireElementStr: elementId}
+ ]
+ });
@override
- String? parseCssPropertyResponse(WebDriverResponse response) {
- return parseJsonWireResponse(response)?.toString();
- }
+ String? parseCssPropertyResponse(WebDriverResponse response) =>
+ parseJsonWireResponse(response)?.toString();
@override
- WebDriverRequest buildPropertyRequest(String elementId, String name) {
- return WebDriverRequest.postRequest('execute', {
- 'script': 'return arguments[0]["$name"];',
- 'args': [
- {jsonWireElementStr: elementId}
- ]
- });
- }
+ WebDriverRequest buildPropertyRequest(String elementId, String name) =>
+ WebDriverRequest.postRequest('execute', {
+ 'script': 'return arguments[0]["$name"];',
+ 'args': [
+ {jsonWireElementStr: elementId}
+ ]
+ });
@override
- String? parsePropertyResponse(WebDriverResponse response) {
- return parseJsonWireResponse(response)?.toString();
- }
+ String? parsePropertyResponse(WebDriverResponse response) =>
+ parseJsonWireResponse(response)?.toString();
/// Convert hyphenated-properties to camelCase.
String _cssPropName(String name) => name.splitMapJoin(RegExp(r'-(\w)'),
diff --git a/lib/src/handler/json_wire/element_finder.dart b/lib/src/handler/json_wire/element_finder.dart
index c340dff..d35add5 100644
--- a/lib/src/handler/json_wire/element_finder.dart
+++ b/lib/src/handler/json_wire/element_finder.dart
@@ -1,7 +1,7 @@
-import 'package:webdriver/src/common/by.dart';
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/json_wire/utils.dart';
+import '../../common/by.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class JsonWireElementFinder extends ElementFinder {
/// Converts [By] instances into JSON params.
@@ -10,40 +10,36 @@
@override
WebDriverRequest buildFindElementsRequest(By by, [String? contextElementId]) {
- String uri = contextElementId == null
+ var uri = contextElementId == null
? 'elements'
: 'element/$contextElementId/elements';
return WebDriverRequest.postRequest(uri, _byToJson(by));
}
@override
- List<String> parseFindElementsResponse(WebDriverResponse response) {
- return parseJsonWireResponse(response)
- .map((e) => e[jsonWireElementStr])
- .toList()
- .cast<String>();
- }
+ List<String> parseFindElementsResponse(WebDriverResponse response) =>
+ (parseJsonWireResponse(response) as List)
+ .map((e) => e[jsonWireElementStr])
+ .toList()
+ .cast<String>();
@override
WebDriverRequest buildFindElementRequest(By by, [String? contextElementId]) {
- String uri = contextElementId == null
+ var uri = contextElementId == null
? 'element'
: 'element/$contextElementId/element';
return WebDriverRequest.postRequest(uri, _byToJson(by));
}
@override
- String? parseFindActiveElementResponse(WebDriverResponse response) {
- return parseJsonWireResponse(response)[jsonWireElementStr];
- }
+ String? parseFindActiveElementResponse(WebDriverResponse response) =>
+ (parseJsonWireResponse(response) as Map)[jsonWireElementStr] as String?;
@override
- WebDriverRequest buildFindActiveElementRequest() {
- return WebDriverRequest.getRequest('element/active');
- }
+ WebDriverRequest buildFindActiveElementRequest() =>
+ WebDriverRequest.getRequest('element/active');
@override
- String parseFindElementResponse(WebDriverResponse response) {
- return (parseJsonWireResponse(response) ?? {})[jsonWireElementStr];
- }
+ String parseFindElementResponse(WebDriverResponse response) =>
+ (parseJsonWireResponse(response) ?? {})[jsonWireElementStr] as String;
}
diff --git a/lib/src/handler/json_wire/frame.dart b/lib/src/handler/json_wire/frame.dart
index 1b1da10..b17558b 100644
--- a/lib/src/handler/json_wire/frame.dart
+++ b/lib/src/handler/json_wire/frame.dart
@@ -12,9 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/json_wire/utils.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class JsonWireFrameHandler extends FrameHandler {
@override
diff --git a/lib/src/handler/json_wire/keyboard.dart b/lib/src/handler/json_wire/keyboard.dart
index b4f3a93..95ff6eb 100644
--- a/lib/src/handler/json_wire/keyboard.dart
+++ b/lib/src/handler/json_wire/keyboard.dart
@@ -6,16 +6,14 @@
static const String nullChar = '\uE000';
@override
- WebDriverRequest buildSendChordRequest(Iterable<String> chordToSend) {
- return buildSendKeysRequest(_createChord(chordToSend));
- }
+ WebDriverRequest buildSendChordRequest(Iterable<String> chordToSend) =>
+ buildSendKeysRequest(_createChord(chordToSend));
@override
- WebDriverRequest buildSendKeysRequest(String keysToSend) {
- return WebDriverRequest.postRequest('keys', {
- 'value': [keysToSend]
- });
- }
+ WebDriverRequest buildSendKeysRequest(String keysToSend) =>
+ WebDriverRequest.postRequest('keys', {
+ 'value': [keysToSend]
+ });
@override
void parseSendKeysResponse(WebDriverResponse response) {
@@ -23,8 +21,8 @@
}
String _createChord(Iterable<String> chord) {
- StringBuffer chordString = StringBuffer();
- for (String s in chord) {
+ var chordString = StringBuffer();
+ for (var s in chord) {
chordString.write(s);
}
chordString.write(nullChar);
diff --git a/lib/src/handler/json_wire/logs.dart b/lib/src/handler/json_wire/logs.dart
index 55f743a..eece349 100644
--- a/lib/src/handler/json_wire/logs.dart
+++ b/lib/src/handler/json_wire/logs.dart
@@ -12,10 +12,10 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import 'package:webdriver/src/common/log.dart';
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/json_wire/utils.dart';
+import '../../common/log.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class JsonWireLogsHandler extends LogsHandler {
@override
@@ -24,7 +24,7 @@
@override
List<LogEntry> parseGetLogsResponse(WebDriverResponse response) =>
- parseJsonWireResponse(response)
- .map<LogEntry>((e) => LogEntry.fromMap(e))
+ (parseJsonWireResponse(response) as List)
+ .map<LogEntry>((e) => LogEntry.fromMap(e as Map))
.toList();
}
diff --git a/lib/src/handler/json_wire/mouse.dart b/lib/src/handler/json_wire/mouse.dart
index 20c83fa..ed0fe25 100644
--- a/lib/src/handler/json_wire/mouse.dart
+++ b/lib/src/handler/json_wire/mouse.dart
@@ -1,8 +1,8 @@
-import 'package:webdriver/src/common/exception.dart';
-import 'package:webdriver/src/common/mouse.dart';
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/json_wire/utils.dart';
+import '../../common/exception.dart';
+import '../../common/mouse.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class JsonWireMouseHandler extends MouseHandler {
@override
diff --git a/lib/src/handler/json_wire/navigation.dart b/lib/src/handler/json_wire/navigation.dart
index e481405..b02eabb 100644
--- a/lib/src/handler/json_wire/navigation.dart
+++ b/lib/src/handler/json_wire/navigation.dart
@@ -12,9 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/json_wire/utils.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class JsonWireNavigationHandler extends NavigationHandler {
@override
diff --git a/lib/src/handler/json_wire/session.dart b/lib/src/handler/json_wire/session.dart
index f87a61b..5954ec5 100644
--- a/lib/src/handler/json_wire/session.dart
+++ b/lib/src/handler/json_wire/session.dart
@@ -1,9 +1,9 @@
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/session.dart';
-import 'package:webdriver/src/common/spec.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/common/capabilities.dart';
-import 'package:webdriver/src/handler/json_wire/utils.dart';
+import '../../common/capabilities.dart';
+import '../../common/request.dart';
+import '../../common/session.dart';
+import '../../common/spec.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class JsonWireSessionHandler extends SessionHandler {
@override
@@ -26,6 +26,9 @@
[String? sessionId]) {
final session = parseJsonWireResponse(response, valueOnly: false);
return SessionInfo(
- session['sessionId'], WebDriverSpec.JsonWire, session['value']);
+ session['sessionId'] as String,
+ WebDriverSpec.JsonWire,
+ session['value'] as Map<String, dynamic>?,
+ );
}
}
diff --git a/lib/src/handler/json_wire/timeouts.dart b/lib/src/handler/json_wire/timeouts.dart
index 9ae177c..ee3b7e4 100644
--- a/lib/src/handler/json_wire/timeouts.dart
+++ b/lib/src/handler/json_wire/timeouts.dart
@@ -12,9 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/json_wire/utils.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class JsonWireTimeoutsHandler extends TimeoutsHandler {
WebDriverRequest _buildSetTimeoutRequest(String type, Duration timeout) =>
diff --git a/lib/src/handler/json_wire/utils.dart b/lib/src/handler/json_wire/utils.dart
index aedafdf..8d4cd56 100644
--- a/lib/src/handler/json_wire/utils.dart
+++ b/lib/src/handler/json_wire/utils.dart
@@ -1,9 +1,8 @@
import 'dart:convert';
-import 'package:webdriver/src/common/web_element.dart';
-
import '../../common/exception.dart';
import '../../common/request.dart';
+import '../../common/web_element.dart';
/// Magic constants -- identifiers indicating a value is an element.
/// Source: https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol
@@ -11,9 +10,9 @@
dynamic parseJsonWireResponse(WebDriverResponse response,
{bool valueOnly = true}) {
- Map? responseBody;
+ Map<String, dynamic> responseBody;
try {
- responseBody = json.decode(response.body!);
+ responseBody = json.decode(response.body!) as Map<String, dynamic>;
} catch (e) {
final rawBody = response.body == null || response.body!.isEmpty
? '<empty response>'
@@ -27,7 +26,7 @@
(responseBody is Map &&
responseBody['status'] != null &&
responseBody['status'] != 0)) {
- final status = responseBody!['status'] as int?;
+ final status = responseBody['status'] as int?;
final message = responseBody['value']['message'] as String?;
switch (status) {
@@ -105,7 +104,7 @@
dynamic deserialize(result, dynamic Function(String) createElement) {
if (result is Map) {
if (result.containsKey(jsonWireElementStr)) {
- return createElement(result[jsonWireElementStr]);
+ return createElement(result[jsonWireElementStr] as String);
} else {
final newResult = {};
result.forEach((key, value) {
@@ -128,7 +127,7 @@
if (obj is Map) {
final newResult = <String, dynamic>{};
for (final item in obj.entries) {
- newResult[item.key] = serialize(item.value);
+ newResult[item.key as String] = serialize(item.value);
}
return newResult;
diff --git a/lib/src/handler/json_wire/window.dart b/lib/src/handler/json_wire/window.dart
index 323d2ce..cb307a2 100644
--- a/lib/src/handler/json_wire/window.dart
+++ b/lib/src/handler/json_wire/window.dart
@@ -14,9 +14,9 @@
import 'dart:math';
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/json_wire/utils.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class JsonWireWindowHandler extends WindowHandler {
@override
@@ -25,7 +25,7 @@
@override
List<String> parseGetWindowsResponse(WebDriverResponse response) =>
- parseJsonWireResponse(response).cast<String>();
+ (parseJsonWireResponse(response) as List).cast<String>();
@override
WebDriverRequest buildGetActiveWindowRequest() =>
@@ -33,7 +33,7 @@
@override
String parseGetActiveWindowResponse(WebDriverResponse response) =>
- parseJsonWireResponse(response);
+ parseJsonWireResponse(response) as String;
@override
WebDriverRequest buildSetActiveRequest(String windowId) =>
@@ -51,7 +51,10 @@
@override
Point<int> parseLocationResponse(WebDriverResponse response) {
final point = parseJsonWireResponse(response);
- return Point(point['x'].toInt(), point['y'].toInt());
+ return Point(
+ (point['x'] as num).toInt(),
+ (point['y'] as num).toInt(),
+ );
}
@override
@@ -61,7 +64,12 @@
@override
Rectangle<int> parseSizeResponse(WebDriverResponse response) {
final size = parseJsonWireResponse(response);
- return Rectangle<int>(0, 0, size['width'].toInt(), size['height'].toInt());
+ return Rectangle<int>(
+ 0,
+ 0,
+ (size['width'] as num).toInt(),
+ (size['height'] as num).toInt(),
+ );
}
@override
@@ -140,6 +148,6 @@
@override
Rectangle<int> parseInnerSizeResponse(WebDriverResponse response) {
final size = parseJsonWireResponse(response);
- return Rectangle(0, 0, size['width'], size['height']);
+ return Rectangle(0, 0, size['width'] as int, size['height'] as int);
}
}
diff --git a/lib/src/handler/json_wire_handler.dart b/lib/src/handler/json_wire_handler.dart
index 4bcd061..c29f337 100644
--- a/lib/src/handler/json_wire_handler.dart
+++ b/lib/src/handler/json_wire_handler.dart
@@ -1,21 +1,21 @@
import 'dart:convert';
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/json_wire/alert.dart';
-import 'package:webdriver/src/handler/json_wire/cookies.dart';
-import 'package:webdriver/src/handler/json_wire/core.dart';
-import 'package:webdriver/src/handler/json_wire/element.dart';
-import 'package:webdriver/src/handler/json_wire/element_finder.dart';
-import 'package:webdriver/src/handler/json_wire/frame.dart';
-import 'package:webdriver/src/handler/json_wire/keyboard.dart';
-import 'package:webdriver/src/handler/json_wire/logs.dart';
-import 'package:webdriver/src/handler/json_wire/mouse.dart';
-import 'package:webdriver/src/handler/json_wire/navigation.dart';
-import 'package:webdriver/src/handler/json_wire/session.dart';
-import 'package:webdriver/src/handler/json_wire/timeouts.dart';
-import 'package:webdriver/src/handler/json_wire/utils.dart';
-import 'package:webdriver/src/handler/json_wire/window.dart';
+import '../common/request.dart';
+import '../common/webdriver_handler.dart';
+import 'json_wire/alert.dart';
+import 'json_wire/cookies.dart';
+import 'json_wire/core.dart';
+import 'json_wire/element.dart';
+import 'json_wire/element_finder.dart';
+import 'json_wire/frame.dart';
+import 'json_wire/keyboard.dart';
+import 'json_wire/logs.dart';
+import 'json_wire/mouse.dart';
+import 'json_wire/navigation.dart';
+import 'json_wire/session.dart';
+import 'json_wire/timeouts.dart';
+import 'json_wire/utils.dart';
+import 'json_wire/window.dart';
class JsonWireWebDriverHandler extends WebDriverHandler {
@override
diff --git a/lib/src/handler/w3c/alert.dart b/lib/src/handler/w3c/alert.dart
index 74c2580..850bcae 100644
--- a/lib/src/handler/w3c/alert.dart
+++ b/lib/src/handler/w3c/alert.dart
@@ -12,9 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/w3c/utils.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class W3cAlertHandler implements AlertHandler {
@override
@@ -23,7 +23,7 @@
@override
String parseGetTextResponse(WebDriverResponse response) =>
- parseW3cResponse(response);
+ parseW3cResponse(response) as String;
@override
WebDriverRequest buildAcceptRequest() =>
diff --git a/lib/src/handler/w3c/cookies.dart b/lib/src/handler/w3c/cookies.dart
index c4d1185..33c254a 100644
--- a/lib/src/handler/w3c/cookies.dart
+++ b/lib/src/handler/w3c/cookies.dart
@@ -12,10 +12,10 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import 'package:webdriver/src/common/cookie.dart';
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/w3c/utils.dart';
+import '../../common/cookie.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class W3cCookiesHandler extends CookiesHandler {
@override
@@ -59,7 +59,7 @@
@override
List<Cookie> parseGetAllCookiesResponse(WebDriverResponse response) =>
- parseW3cResponse(response).map<Cookie>(_deserialize).toList();
+ (parseW3cResponse(response) as List).map<Cookie>(_deserialize).toList();
/// Serializes the cookie to json object according to the spec.
///
@@ -69,5 +69,6 @@
/// Deserializes the json object to get the cookie according to the spec.
///
/// The spec is deserializing the same we do in [Cookie.fromJson].
- Cookie _deserialize(dynamic content) => Cookie.fromJson(content);
+ Cookie _deserialize(dynamic content) =>
+ Cookie.fromJson(content as Map<String, dynamic>);
}
diff --git a/lib/src/handler/w3c/core.dart b/lib/src/handler/w3c/core.dart
index bf852e8..9a54954 100644
--- a/lib/src/handler/w3c/core.dart
+++ b/lib/src/handler/w3c/core.dart
@@ -1,6 +1,6 @@
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/w3c/utils.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class W3cCoreHandler extends CoreHandler {
@override
@@ -9,14 +9,14 @@
@override
String parseCurrentUrlResponse(WebDriverResponse response) =>
- parseW3cResponse(response);
+ parseW3cResponse(response) as String;
@override
WebDriverRequest buildTitleRequest() => WebDriverRequest.getRequest('title');
@override
String parseTitleResponse(WebDriverResponse response) =>
- parseW3cResponse(response);
+ parseW3cResponse(response) as String;
@override
WebDriverRequest buildPageSourceRequest() =>
@@ -24,7 +24,7 @@
@override
String parsePageSourceResponse(WebDriverResponse response) =>
- parseW3cResponse(response);
+ parseW3cResponse(response) as String;
@override
WebDriverRequest buildScreenshotRequest() =>
@@ -32,11 +32,11 @@
@override
WebDriverRequest buildElementScreenshotRequest(String elementId) =>
- new WebDriverRequest.getRequest('${elementPrefix(elementId)}screenshot');
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}screenshot');
@override
String parseScreenshotResponse(WebDriverResponse response) =>
- parseW3cResponse(response);
+ parseW3cResponse(response) as String;
@override
WebDriverRequest buildExecuteAsyncRequest(String script, List args) =>
diff --git a/lib/src/handler/w3c/element.dart b/lib/src/handler/w3c/element.dart
index 9d84e21..13f21e8 100644
--- a/lib/src/handler/w3c/element.dart
+++ b/lib/src/handler/w3c/element.dart
@@ -1,15 +1,14 @@
import 'dart:math';
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
import 'utils.dart';
class W3cElementHandler extends ElementHandler {
@override
- WebDriverRequest buildClickRequest(String elementId) {
- return WebDriverRequest.postRequest('${elementPrefix(elementId)}click');
- }
+ WebDriverRequest buildClickRequest(String elementId) =>
+ WebDriverRequest.postRequest('${elementPrefix(elementId)}click');
@override
void parseClickResponse(WebDriverResponse response) {
@@ -17,12 +16,11 @@
}
@override
- WebDriverRequest buildSendKeysRequest(String elementId, String keysToSend) {
- return WebDriverRequest.postRequest('${elementPrefix(elementId)}value', {
- 'text': keysToSend, // What geckodriver really wants.
- 'value': keysToSend // Actual W3C spec.
- });
- }
+ WebDriverRequest buildSendKeysRequest(String elementId, String keysToSend) =>
+ WebDriverRequest.postRequest('${elementPrefix(elementId)}value', {
+ 'text': keysToSend, // What geckodriver really wants.
+ 'value': keysToSend // Actual W3C spec.
+ });
@override
void parseSendKeysResponse(WebDriverResponse response) {
@@ -30,9 +28,8 @@
}
@override
- WebDriverRequest buildClearRequest(String elementId) {
- return WebDriverRequest.postRequest('${elementPrefix(elementId)}clear');
- }
+ WebDriverRequest buildClearRequest(String elementId) =>
+ WebDriverRequest.postRequest('${elementPrefix(elementId)}clear');
@override
void parseClearResponse(WebDriverResponse response) {
@@ -40,49 +37,40 @@
}
@override
- WebDriverRequest buildSelectedRequest(String elementId) {
- return WebDriverRequest.getRequest('${elementPrefix(elementId)}selected');
- }
+ WebDriverRequest buildSelectedRequest(String elementId) =>
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}selected');
@override
- bool parseSelectedResponse(WebDriverResponse response) {
- return parseW3cResponse(response);
- }
+ bool parseSelectedResponse(WebDriverResponse response) =>
+ parseW3cResponse(response) as bool;
@override
- WebDriverRequest buildEnabledRequest(String elementId) {
- return WebDriverRequest.getRequest('${elementPrefix(elementId)}enabled');
- }
+ WebDriverRequest buildEnabledRequest(String elementId) =>
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}enabled');
@override
- bool parseEnabledResponse(WebDriverResponse response) {
- return parseW3cResponse(response);
- }
+ bool parseEnabledResponse(WebDriverResponse response) =>
+ parseW3cResponse(response) as bool;
@override
- WebDriverRequest buildDisplayedRequest(String elementId) {
- return WebDriverRequest.getRequest('${elementPrefix(elementId)}displayed');
- }
+ WebDriverRequest buildDisplayedRequest(String elementId) =>
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}displayed');
@override
- bool parseDisplayedResponse(WebDriverResponse response) {
- return parseW3cResponse(response);
- }
+ bool parseDisplayedResponse(WebDriverResponse response) =>
+ parseW3cResponse(response) as bool;
@override
- WebDriverRequest buildLocationRequest(String elementId) {
- return _buildRectRequest(elementId);
- }
+ WebDriverRequest buildLocationRequest(String elementId) =>
+ _buildRectRequest(elementId);
@override
- Point<int> parseLocationResponse(WebDriverResponse response) {
- return _parseRectResponse(response).topLeft;
- }
+ Point<int> parseLocationResponse(WebDriverResponse response) =>
+ _parseRectResponse(response).topLeft;
@override
- WebDriverRequest buildSizeRequest(String elementId) {
- return _buildRectRequest(elementId);
- }
+ WebDriverRequest buildSizeRequest(String elementId) =>
+ _buildRectRequest(elementId);
@override
Rectangle<int> parseSizeResponse(WebDriverResponse response) {
@@ -90,79 +78,67 @@
return Rectangle(0, 0, rect.width, rect.height);
}
- WebDriverRequest _buildRectRequest(String elementId) {
- return WebDriverRequest.getRequest('${elementPrefix(elementId)}rect');
- }
+ WebDriverRequest _buildRectRequest(String elementId) =>
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}rect');
Rectangle<int> _parseRectResponse(WebDriverResponse response) {
final rect = parseW3cResponse(response);
- return Rectangle(rect['x'].toInt(), rect['y'].toInt(),
- rect['width'].toInt(), rect['height'].toInt());
+ return Rectangle(
+ (rect['x'] as num).toInt(),
+ (rect['y'] as num).toInt(),
+ (rect['width'] as num).toInt(),
+ (rect['height'] as num).toInt(),
+ );
}
@override
- WebDriverRequest buildNameRequest(String elementId) {
- return WebDriverRequest.getRequest('${elementPrefix(elementId)}name');
- }
+ WebDriverRequest buildNameRequest(String elementId) =>
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}name');
@override
- String parseNameResponse(WebDriverResponse response) {
- return parseW3cResponse(response);
- }
+ String parseNameResponse(WebDriverResponse response) =>
+ parseW3cResponse(response) as String;
@override
- WebDriverRequest buildTextRequest(String elementId) {
- return WebDriverRequest.getRequest('${elementPrefix(elementId)}text');
- }
+ WebDriverRequest buildTextRequest(String elementId) =>
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}text');
@override
- String parseTextResponse(WebDriverResponse response) {
- return parseW3cResponse(response);
- }
+ String parseTextResponse(WebDriverResponse response) =>
+ parseW3cResponse(response) as String;
@override
- WebDriverRequest buildAttributeRequest(String elementId, String name) {
- return WebDriverRequest.getRequest(
- '${elementPrefix(elementId)}attribute/$name');
- }
+ WebDriverRequest buildAttributeRequest(String elementId, String name) =>
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}attribute/$name');
@override
- String? parseAttributeResponse(WebDriverResponse response) {
- return parseW3cResponse(response)?.toString();
- }
+ String? parseAttributeResponse(WebDriverResponse response) =>
+ parseW3cResponse(response)?.toString();
@override
@deprecated
WebDriverRequest buildSeleniumAttributeRequest(
- String elementId, String name) {
- return WebDriverRequest.getRequest(
- '${elementPrefix(elementId)}attribute/$name');
- }
+ String elementId, String name) =>
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}attribute/$name');
@override
@deprecated
- String? parseSeleniumAttributeResponse(WebDriverResponse response) {
- return parseW3cResponse(response)?.toString();
- }
+ String? parseSeleniumAttributeResponse(WebDriverResponse response) =>
+ parseW3cResponse(response)?.toString();
@override
- WebDriverRequest buildCssPropertyRequest(String elementId, String name) {
- return WebDriverRequest.getRequest('${elementPrefix(elementId)}css/$name');
- }
+ WebDriverRequest buildCssPropertyRequest(String elementId, String name) =>
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}css/$name');
@override
- String? parseCssPropertyResponse(WebDriverResponse response) {
- return parseW3cResponse(response)?.toString();
- }
+ String? parseCssPropertyResponse(WebDriverResponse response) =>
+ parseW3cResponse(response)?.toString();
@override
- WebDriverRequest buildPropertyRequest(String elementId, String name) {
- return WebDriverRequest.getRequest(
- '${elementPrefix(elementId)}property/$name');
- }
+ WebDriverRequest buildPropertyRequest(String elementId, String name) =>
+ WebDriverRequest.getRequest('${elementPrefix(elementId)}property/$name');
@override
- String? parsePropertyResponse(WebDriverResponse response) {
- return parseW3cResponse(response)?.toString();
- }
+ String? parsePropertyResponse(WebDriverResponse response) =>
+ parseW3cResponse(response)?.toString();
}
diff --git a/lib/src/handler/w3c/element_finder.dart b/lib/src/handler/w3c/element_finder.dart
index 5ce6769..02578b5 100644
--- a/lib/src/handler/w3c/element_finder.dart
+++ b/lib/src/handler/w3c/element_finder.dart
@@ -1,7 +1,7 @@
-import 'package:webdriver/src/common/by.dart';
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/w3c/utils.dart';
+import '../../common/by.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class W3cElementFinder extends ElementFinder {
/// Here we massage [By] instances into viable W3C /element requests.
@@ -40,35 +40,31 @@
@override
WebDriverRequest buildFindElementsRequest(By by, [String? contextElementId]) {
- String uri = '${elementPrefix(contextElementId)}elements';
+ var uri = '${elementPrefix(contextElementId)}elements';
return WebDriverRequest.postRequest(uri, _byToJson(by));
}
@override
- List<String> parseFindElementsResponse(WebDriverResponse response) {
- return (parseW3cResponse(response) as List)
- .map<String>((e) => e[w3cElementStr]!)
- .toList();
- }
+ List<String> parseFindElementsResponse(WebDriverResponse response) =>
+ (parseW3cResponse(response) as List)
+ .map<String>((e) => e[w3cElementStr] as String)
+ .toList();
@override
WebDriverRequest buildFindElementRequest(By by, [String? contextElementId]) {
- String uri = '${elementPrefix(contextElementId)}element';
+ var uri = '${elementPrefix(contextElementId)}element';
return WebDriverRequest.postRequest(uri, _byToJson(by));
}
@override
- String? parseFindActiveElementResponse(WebDriverResponse response) {
- return parseW3cResponse(response)[w3cElementStr];
- }
+ String? parseFindActiveElementResponse(WebDriverResponse response) =>
+ parseW3cResponse(response)[w3cElementStr] as String;
@override
- WebDriverRequest buildFindActiveElementRequest() {
- return WebDriverRequest.getRequest('element/active');
- }
+ WebDriverRequest buildFindActiveElementRequest() =>
+ WebDriverRequest.getRequest('element/active');
@override
- String parseFindElementResponse(WebDriverResponse response) {
- return (parseW3cResponse(response) ?? {})[w3cElementStr];
- }
+ String parseFindElementResponse(WebDriverResponse response) =>
+ (parseW3cResponse(response) ?? {})[w3cElementStr] as String;
}
diff --git a/lib/src/handler/w3c/frame.dart b/lib/src/handler/w3c/frame.dart
index 19ab343..3449987 100644
--- a/lib/src/handler/w3c/frame.dart
+++ b/lib/src/handler/w3c/frame.dart
@@ -12,9 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/w3c/utils.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class W3cFrameHandler extends FrameHandler {
@override
diff --git a/lib/src/handler/w3c/keyboard.dart b/lib/src/handler/w3c/keyboard.dart
index e957e18..cf27de6 100644
--- a/lib/src/handler/w3c/keyboard.dart
+++ b/lib/src/handler/w3c/keyboard.dart
@@ -7,7 +7,7 @@
WebDriverRequest buildSendChordRequest(Iterable<String> chordToSend) {
final keyDownActions = <Map<String, String>>[];
final keyUpActions = <Map<String, String>>[];
- for (String s in chordToSend) {
+ for (var s in chordToSend) {
keyDownActions.add({'type': 'keyDown', 'value': s});
keyUpActions.add({'type': 'keyUp', 'value': s});
}
@@ -32,7 +32,7 @@
@override
WebDriverRequest buildSendKeysRequest(String keysToSend) {
final keyActions = <Map<String, String>>[];
- for (int i = 0; i < keysToSend.length; ++i) {
+ for (var i = 0; i < keysToSend.length; ++i) {
keyActions.add({'type': 'keyDown', 'value': keysToSend[i]});
keyActions.add({'type': 'keyUp', 'value': keysToSend[i]});
}
diff --git a/lib/src/handler/w3c/mouse.dart b/lib/src/handler/w3c/mouse.dart
index 58de698..ecdfa87 100644
--- a/lib/src/handler/w3c/mouse.dart
+++ b/lib/src/handler/w3c/mouse.dart
@@ -1,7 +1,7 @@
-import 'package:webdriver/src/common/mouse.dart';
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/w3c/utils.dart';
+import '../../common/mouse.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class W3cMouseHandler extends MouseHandler {
@override
diff --git a/lib/src/handler/w3c/navigation.dart b/lib/src/handler/w3c/navigation.dart
index 12c3b1b..7deba88 100644
--- a/lib/src/handler/w3c/navigation.dart
+++ b/lib/src/handler/w3c/navigation.dart
@@ -12,9 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/w3c/utils.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class W3cNavigationHandler extends NavigationHandler {
@override
diff --git a/lib/src/handler/w3c/session.dart b/lib/src/handler/w3c/session.dart
index cd3e239..ba36d77 100644
--- a/lib/src/handler/w3c/session.dart
+++ b/lib/src/handler/w3c/session.dart
@@ -1,9 +1,9 @@
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/session.dart';
-import 'package:webdriver/src/common/spec.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/common/capabilities.dart';
-import 'package:webdriver/src/handler/w3c/utils.dart';
+import '../../common/capabilities.dart';
+import '../../common/request.dart';
+import '../../common/session.dart';
+import '../../common/spec.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class W3cSessionHandler extends SessionHandler {
@override
@@ -18,7 +18,10 @@
SessionInfo parseCreateResponse(WebDriverResponse response) {
final session = parseW3cResponse(response);
return SessionInfo(
- session['sessionId'], WebDriverSpec.W3c, session['capabilities']);
+ session['sessionId'] as String,
+ WebDriverSpec.W3c,
+ session['capabilities'] as Map<String, dynamic>,
+ );
}
/// Requesting existing session info is not supported in W3c.
@@ -27,7 +30,9 @@
WebDriverRequest.nullRequest(id);
@override
- SessionInfo parseInfoResponse(WebDriverResponse response,
- [String? sessionId]) =>
+ SessionInfo parseInfoResponse(
+ WebDriverResponse response, [
+ String? sessionId,
+ ]) =>
SessionInfo(response.body!, WebDriverSpec.W3c, Capabilities.empty);
}
diff --git a/lib/src/handler/w3c/timeouts.dart b/lib/src/handler/w3c/timeouts.dart
index 7efff02..724d277 100644
--- a/lib/src/handler/w3c/timeouts.dart
+++ b/lib/src/handler/w3c/timeouts.dart
@@ -12,9 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/w3c/utils.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class W3cTimeoutsHandler extends TimeoutsHandler {
WebDriverRequest _buildSetTimeoutRequest(String type, Duration timeout) =>
diff --git a/lib/src/handler/w3c/utils.dart b/lib/src/handler/w3c/utils.dart
index 2d367a0..3e72081 100644
--- a/lib/src/handler/w3c/utils.dart
+++ b/lib/src/handler/w3c/utils.dart
@@ -1,18 +1,17 @@
import 'dart:convert';
-import 'package:webdriver/src/common/web_element.dart';
-
import '../../common/exception.dart';
import '../../common/request.dart';
+import '../../common/web_element.dart';
// Source: https://www.w3.org/TR/webdriver/#elements
const String w3cElementStr = 'element-6066-11e4-a52e-4f735466cecf';
dynamic parseW3cResponse(WebDriverResponse response) {
- final int statusCode = response.statusCode!;
- Map? responseBody;
+ final statusCode = response.statusCode!;
+ Map responseBody;
try {
- responseBody = json.decode(response.body!);
+ responseBody = json.decode(response.body!) as Map;
} catch (e) {
final rawBody = response.body == null || response.body!.isEmpty
? '<empty response>'
@@ -22,8 +21,8 @@
}
if (statusCode < 200 || statusCode > 299) {
- final Map value = responseBody!['value'];
- final String? message = value['message'];
+ final value = responseBody['value'] as Map;
+ final message = value['message'] as String?;
// See https://www.w3.org/TR/webdriver/#handling-errors
switch (value['error']) {
@@ -110,7 +109,7 @@
}
}
- return responseBody == null ? null : responseBody['value'];
+ return responseBody['value'];
}
/// Prefix to represent element in webdriver uri.
@@ -122,7 +121,7 @@
dynamic deserialize(result, dynamic Function(String) createElement) {
if (result is Map) {
if (result.containsKey(w3cElementStr)) {
- return createElement(result[w3cElementStr]);
+ return createElement(result[w3cElementStr] as String);
} else {
final newResult = {};
result.forEach((key, value) {
@@ -145,7 +144,7 @@
if (obj is Map) {
final newResult = <String, dynamic>{};
for (final item in obj.entries) {
- newResult[item.key] = serialize(item.value);
+ newResult[item.key as String] = serialize(item.value);
}
return newResult;
diff --git a/lib/src/handler/w3c/window.dart b/lib/src/handler/w3c/window.dart
index 9b1829a..f4802e6 100644
--- a/lib/src/handler/w3c/window.dart
+++ b/lib/src/handler/w3c/window.dart
@@ -14,9 +14,9 @@
import 'dart:math';
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/w3c/utils.dart';
+import '../../common/request.dart';
+import '../../common/webdriver_handler.dart';
+import 'utils.dart';
class W3cWindowHandler extends WindowHandler {
@override
@@ -25,7 +25,7 @@
@override
List<String> parseGetWindowsResponse(WebDriverResponse response) =>
- parseW3cResponse(response).cast<String>();
+ (parseW3cResponse(response) as List).cast<String>();
@override
WebDriverRequest buildGetActiveWindowRequest() =>
@@ -33,7 +33,7 @@
@override
String parseGetActiveWindowResponse(WebDriverResponse response) =>
- parseW3cResponse(response);
+ parseW3cResponse(response) as String;
@override
WebDriverRequest buildSetActiveRequest(String windowId) =>
@@ -67,14 +67,20 @@
@override
Rectangle<int> parseRectResponse(WebDriverResponse response) {
final rect = parseW3cResponse(response);
- return Rectangle(rect['x'].toInt(), rect['y'].toInt(),
- rect['width'].toInt(), rect['height'].toInt());
+ return Rectangle(
+ (rect['x'] as num).toInt(),
+ (rect['y'] as num).toInt(),
+ (rect['width'] as num).toInt(),
+ (rect['height'] as num).toInt(),
+ );
}
@override
WebDriverRequest buildSetLocationRequest(Point<int> location) =>
- WebDriverRequest.postRequest(
- 'window/rect', {'x': location.x, 'y': location.y});
+ WebDriverRequest.postRequest('window/rect', {
+ 'x': location.x,
+ 'y': location.y,
+ });
@override
void parseSetLocationResponse(WebDriverResponse response) {
@@ -143,6 +149,6 @@
@override
Rectangle<int> parseInnerSizeResponse(WebDriverResponse response) {
final size = parseW3cResponse(response);
- return Rectangle(0, 0, size['width'], size['height']);
+ return Rectangle(0, 0, size['width'] as int, size['height'] as int);
}
}
diff --git a/lib/src/handler/w3c_handler.dart b/lib/src/handler/w3c_handler.dart
index 913a778..82c94c8 100644
--- a/lib/src/handler/w3c_handler.dart
+++ b/lib/src/handler/w3c_handler.dart
@@ -1,21 +1,21 @@
import 'dart:convert';
-import 'package:webdriver/src/common/log.dart';
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/w3c/alert.dart';
-import 'package:webdriver/src/handler/w3c/cookies.dart';
-import 'package:webdriver/src/handler/w3c/core.dart';
-import 'package:webdriver/src/handler/w3c/element.dart';
-import 'package:webdriver/src/handler/w3c/element_finder.dart';
-import 'package:webdriver/src/handler/w3c/frame.dart';
-import 'package:webdriver/src/handler/w3c/keyboard.dart';
-import 'package:webdriver/src/handler/w3c/mouse.dart';
-import 'package:webdriver/src/handler/w3c/navigation.dart';
-import 'package:webdriver/src/handler/w3c/session.dart';
-import 'package:webdriver/src/handler/w3c/timeouts.dart';
-import 'package:webdriver/src/handler/w3c/utils.dart';
-import 'package:webdriver/src/handler/w3c/window.dart';
+import '../common/log.dart';
+import '../common/request.dart';
+import '../common/webdriver_handler.dart';
+import 'w3c/alert.dart';
+import 'w3c/cookies.dart';
+import 'w3c/core.dart';
+import 'w3c/element.dart';
+import 'w3c/element_finder.dart';
+import 'w3c/frame.dart';
+import 'w3c/keyboard.dart';
+import 'w3c/mouse.dart';
+import 'w3c/navigation.dart';
+import 'w3c/session.dart';
+import 'w3c/timeouts.dart';
+import 'w3c/utils.dart';
+import 'w3c/window.dart';
class W3cWebDriverHandler extends WebDriverHandler {
@override
@@ -79,7 +79,7 @@
@override
List<LogEntry> parseGetLogsResponse(WebDriverResponse response) =>
- parseW3cResponse(response)
- .map<LogEntry>((e) => LogEntry.fromMap(e))
+ (parseW3cResponse(response) as List)
+ .map<LogEntry>((e) => LogEntry.fromMap(e as Map))
.toList();
}
diff --git a/lib/src/request/async_io_request_client.dart b/lib/src/request/async_io_request_client.dart
index a14850f..02bd2c2 100644
--- a/lib/src/request/async_io_request_client.dart
+++ b/lib/src/request/async_io_request_client.dart
@@ -2,7 +2,7 @@
import 'dart:convert';
import 'dart:io' show ContentType, HttpClient, HttpHeaders, HttpClientRequest;
-import 'package:webdriver/support/async.dart';
+import '../../support/async.dart';
import '../common/request.dart';
import '../common/request_client.dart';
diff --git a/lib/src/request/async_xhr_request_client.dart b/lib/src/request/async_xhr_request_client.dart
index 41d18ca..f3464b2 100644
--- a/lib/src/request/async_xhr_request_client.dart
+++ b/lib/src/request/async_xhr_request_client.dart
@@ -1,7 +1,7 @@
import 'dart:async';
import 'dart:html';
-import 'package:webdriver/support/async.dart';
+import '../../support/async.dart';
import '../common/request.dart';
import '../common/request_client.dart';
@@ -42,7 +42,10 @@
}
return WebDriverResponse(
- httpRequest.status, httpRequest.statusText, httpRequest.response);
+ httpRequest.status,
+ httpRequest.statusText,
+ httpRequest.response as String?,
+ );
}
@override
diff --git a/lib/src/sync/alert.dart b/lib/src/sync/alert.dart
index c2e62ab..6d7d7c4 100644
--- a/lib/src/sync/alert.dart
+++ b/lib/src/sync/alert.dart
@@ -12,8 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
+import '../common/request_client.dart';
+import '../common/webdriver_handler.dart';
/// A JavaScript alert(), confirm(), or prompt() dialog.
class Alert {
diff --git a/lib/src/sync/common.dart b/lib/src/sync/common.dart
index 0255a44..fb3a0da 100644
--- a/lib/src/sync/common.dart
+++ b/lib/src/sync/common.dart
@@ -12,8 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import 'package:webdriver/async_core.dart' as async_core;
-import 'package:webdriver/src/common/by.dart';
+import '../../async_core.dart' as async_core;
+import '../common/by.dart';
import 'web_driver.dart';
import 'web_element.dart';
diff --git a/lib/src/sync/common_io.dart b/lib/src/sync/common_io.dart
index 0467982..ee3b008 100644
--- a/lib/src/sync/common_io.dart
+++ b/lib/src/sync/common_io.dart
@@ -1,6 +1,5 @@
-import 'package:webdriver/src/request/async_io_request_client.dart';
-import 'package:webdriver/async_core.dart' as async_core;
-
+import '../../async_core.dart' as async_core;
+import '../request/async_io_request_client.dart';
import 'web_driver.dart';
import 'web_element.dart';
diff --git a/lib/src/sync/common_stub.dart b/lib/src/sync/common_stub.dart
index 59c1a93..834bbbb 100644
--- a/lib/src/sync/common_stub.dart
+++ b/lib/src/sync/common_stub.dart
@@ -1,4 +1,4 @@
-import 'package:webdriver/async_core.dart' as async_core;
+import '../../async_core.dart' as async_core;
import 'web_driver.dart';
import 'web_element.dart';
diff --git a/lib/src/sync/cookies.dart b/lib/src/sync/cookies.dart
index a5586ee..0653070 100644
--- a/lib/src/sync/cookies.dart
+++ b/lib/src/sync/cookies.dart
@@ -12,9 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import 'package:webdriver/src/common/cookie.dart';
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
+import '../common/cookie.dart';
+import '../common/request_client.dart';
+import '../common/webdriver_handler.dart';
/// Interacts with browser's cookies.
class Cookies {
diff --git a/lib/src/sync/logs.dart b/lib/src/sync/logs.dart
index 4a51473..c00ad2d 100644
--- a/lib/src/sync/logs.dart
+++ b/lib/src/sync/logs.dart
@@ -12,10 +12,10 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import 'package:webdriver/src/common/exception.dart';
-import 'package:webdriver/src/common/log.dart';
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
+import '../common/exception.dart';
+import '../common/log.dart';
+import '../common/request_client.dart';
+import '../common/webdriver_handler.dart';
class Logs {
final SyncRequestClient _client;
diff --git a/lib/src/sync/mouse.dart b/lib/src/sync/mouse.dart
index 481a2b0..77b9a2f 100644
--- a/lib/src/sync/mouse.dart
+++ b/lib/src/sync/mouse.dart
@@ -12,11 +12,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import 'package:webdriver/src/common/mouse.dart';
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/handler/json_wire_handler.dart';
-import 'package:webdriver/src/handler/w3c_handler.dart';
+import '../common/mouse.dart';
+import '../common/request_client.dart';
+import '../common/webdriver_handler.dart';
+import '../handler/json_wire_handler.dart';
+import '../handler/w3c_handler.dart';
import 'web_element.dart';
diff --git a/lib/src/sync/target_locator.dart b/lib/src/sync/target_locator.dart
index 9926f1b..1ecb7bf 100644
--- a/lib/src/sync/target_locator.dart
+++ b/lib/src/sync/target_locator.dart
@@ -12,9 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import 'package:webdriver/src/common/by.dart';
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
+import '../common/by.dart';
+import '../common/request_client.dart';
+import '../common/webdriver_handler.dart';
import 'alert.dart';
import 'web_driver.dart';
@@ -39,7 +39,7 @@
///
/// Throws [NoSuchFrameException] if the specified frame can't be found.
void frame([/* int | WebElement | String */ frame]) {
- if (frame == null || frame is int) {
+ if (frame is int?) {
_client.send(_handler.frame.buildSwitchByIdRequest(frame),
_handler.frame.parseSwitchByIdResponse);
} else if (frame is WebElement) {
diff --git a/lib/src/sync/timeouts.dart b/lib/src/sync/timeouts.dart
index 8587722..bd35e1f 100644
--- a/lib/src/sync/timeouts.dart
+++ b/lib/src/sync/timeouts.dart
@@ -12,8 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
+import '../common/request_client.dart';
+import '../common/webdriver_handler.dart';
/// Sets WebDriver timeouts.
class Timeouts {
diff --git a/lib/src/sync/web_driver.dart b/lib/src/sync/web_driver.dart
index 5cee3df..004e306 100644
--- a/lib/src/sync/web_driver.dart
+++ b/lib/src/sync/web_driver.dart
@@ -14,27 +14,27 @@
import 'dart:convert' show base64;
-import 'package:webdriver/async_core.dart' as async_core;
-import 'package:webdriver/src/common/by.dart';
-import 'package:webdriver/src/common/request.dart';
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/spec.dart';
-import 'package:webdriver/src/common/utils.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/sync/common.dart';
-import 'package:webdriver/src/sync/cookies.dart';
-import 'package:webdriver/src/sync/keyboard.dart';
-import 'package:webdriver/src/sync/logs.dart';
-import 'package:webdriver/src/sync/mouse.dart';
-import 'package:webdriver/src/sync/target_locator.dart';
-import 'package:webdriver/src/sync/timeouts.dart';
-import 'package:webdriver/src/sync/web_element.dart';
-import 'package:webdriver/src/sync/window.dart';
+import '../../async_core.dart' as async_core;
+import '../common/by.dart';
+import '../common/request.dart';
+import '../common/request_client.dart';
+import '../common/spec.dart';
+import '../common/utils.dart';
+import '../common/webdriver_handler.dart';
+import 'common.dart';
// ignore: uri_does_not_exist
import 'common_stub.dart'
- // ignore: uri_does_not_exist
+// ignore: uri_does_not_exist
if (dart.library.io) 'common_io.dart';
+import 'cookies.dart';
+import 'keyboard.dart';
+import 'logs.dart';
+import 'mouse.dart';
+import 'target_locator.dart';
+import 'timeouts.dart';
+import 'web_element.dart';
+import 'window.dart';
/// Interacts with WebDriver.
class WebDriver implements SearchContext {
@@ -51,7 +51,7 @@
final Uri uri;
WebDriver(this.uri, this.id, this.capabilities, this._client, this.spec)
- : this._handler = getHandler(spec);
+ : _handler = getHandler(spec);
/// Produces a [async_core.WebDriver] with the same session ID. Allows
/// backwards compatibility with other frameworks.
@@ -73,8 +73,9 @@
/// Navigates to the specified url
void get(/* Uri | String */ url) {
_client.send(
- _handler.navigation
- .buildNavigateToRequest((url is Uri) ? url.toString() : url),
+ _handler.navigation.buildNavigateToRequest(
+ (url is Uri) ? url.toString() : url as String,
+ ),
_handler.navigation.parseNavigateToResponse);
}
@@ -108,7 +109,7 @@
_handler.elementFinder.parseFindElementsResponse);
final elements = <WebElement>[];
- int i = 0;
+ var i = 0;
for (final id in ids) {
elements.add(WebElement(this, _client, _handler, id, this, by, i++));
}
@@ -288,12 +289,28 @@
///
/// For use by supporting WebDriver packages.
dynamic deleteRequest(String command) => _client.send(
- _handler.buildGeneralRequest(HttpMethod.httpDelete, command),
- (response) => _handler.parseGeneralResponse(
- response, (elementId) => getElement(elementId, this)));
+ _handler.buildGeneralRequest(HttpMethod.httpDelete, command),
+ (response) => _handler.parseGeneralResponse(
+ response,
+ (elementId) => getElement(elementId, this),
+ ),
+ );
- WebElement getElement(String elementId, [context, locator, index]) =>
- WebElement(this, _client, _handler, elementId, context, locator, index);
+ WebElement getElement(
+ String elementId, [
+ SearchContext? context,
+ locator,
+ int? index,
+ ]) =>
+ WebElement(
+ this,
+ _client,
+ _handler,
+ elementId,
+ context,
+ locator,
+ index,
+ );
@override
WebDriver get driver => this;
diff --git a/lib/src/sync/web_element.dart b/lib/src/sync/web_element.dart
index 9c8d9c8..5f3ffe5 100644
--- a/lib/src/sync/web_element.dart
+++ b/lib/src/sync/web_element.dart
@@ -14,19 +14,18 @@
import 'dart:math' show Point, Rectangle;
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
-import 'package:webdriver/src/common/web_element.dart' as common;
-
import '../../async_core.dart' as async_core;
import '../common/by.dart';
+import '../common/request_client.dart';
+import '../common/web_element.dart' as common;
+import '../common/webdriver_handler.dart';
import 'common.dart';
-import 'web_driver.dart';
// ignore: uri_does_not_exist
import 'common_stub.dart'
// ignore: uri_does_not_exist
if (dart.library.io) 'common_io.dart';
+import 'web_driver.dart';
/// WebDriver representation and interactions with an HTML element.
class WebElement extends common.WebElement implements SearchContext {
@@ -57,8 +56,15 @@
/// used to find this element always returns one element, then this is null.
final int? index;
- WebElement(this.driver, this._client, this._handler, this.id,
- [this.context, this.locator, this.index]);
+ WebElement(
+ this.driver,
+ this._client,
+ this._handler,
+ this.id, [
+ this.context,
+ this.locator,
+ this.index,
+ ]);
WebElement get parent => WebElement(
driver,
@@ -74,7 +80,7 @@
/// Gets a chain of parent elements, including the element itself.
List<String> get parents {
- WebElement p = this;
+ var p = this;
final result = <String>[];
while (p.id != null) {
var id = p.id;
@@ -175,7 +181,7 @@
_handler.elementFinder.parseFindElementsResponse);
final elements = <WebElement>[];
- int i = 0;
+ var i = 0;
for (final id in ids) {
elements.add(WebElement(driver, _client, _handler, id, this, by, i++));
}
@@ -200,14 +206,14 @@
/// Are these two elements the same underlying element in the DOM.
bool equals(WebElement other) =>
- other is WebElement && other.driver == this.driver && other.id == this.id;
+ other is WebElement && other.driver == driver && other.id == id;
@override
int get hashCode => driver.hashCode * 3 + id.hashCode;
@override
bool operator ==(other) =>
- other is WebElement && other.driver == this.driver && other.id == this.id;
+ other is WebElement && other.driver == driver && other.id == id;
@override
String toString() {
diff --git a/lib/src/sync/window.dart b/lib/src/sync/window.dart
index 3cdfba3..1002f7e 100644
--- a/lib/src/sync/window.dart
+++ b/lib/src/sync/window.dart
@@ -14,8 +14,8 @@
import 'dart:math' show Point, Rectangle;
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/webdriver_handler.dart';
+import '../common/request_client.dart';
+import '../common/webdriver_handler.dart';
/// Handle to window.
///
@@ -65,7 +65,7 @@
///
/// TODO(jingbian): Remove this, prefer setter.
void setLocation(Point<int> point) {
- this.location = point;
+ location = point;
}
/// Sets the window location.
@@ -127,9 +127,9 @@
@override
bool operator ==(other) =>
other is Window &&
- other._client == this._client &&
- other._handler == this._handler &&
- other.id == this.id;
+ other._client == _client &&
+ other._handler == _handler &&
+ other.id == id;
@override
String toString() => '$_handler.windows($_client)[$id]';
diff --git a/lib/support/async.dart b/lib/support/async.dart
index 2f71642..5111713 100644
--- a/lib/support/async.dart
+++ b/lib/support/async.dart
@@ -24,7 +24,7 @@
const clock = Clock();
-Future<T?> waitFor<T>(FutureOr<T> condition(),
+Future<T?> waitFor<T>(FutureOr<T> Function() condition,
{matcher,
Duration timeout = defaultTimeout,
Duration interval = defaultInterval}) =>
@@ -49,15 +49,15 @@
/// is returned. Otherwise, if [condition] throws, then that exception is
/// rethrown. If [condition] doesn't throw then an [expect] exception is
/// thrown.
- Future<T?> waitFor<T>(FutureOr<T>? condition(),
+ Future<T?> waitFor<T>(FutureOr<T>? Function() condition,
{matcher,
Duration timeout = defaultTimeout,
Duration interval = defaultInterval}) async {
- m.Matcher? mMatcher = matcher == null ? null : m.wrapMatcher(matcher);
+ var mMatcher = matcher == null ? null : m.wrapMatcher(matcher);
var endTime = now.add(timeout);
while (true) {
try {
- T? value = await condition();
+ var value = await condition();
if (mMatcher != null) {
_matcherExpect(value, mMatcher);
}
diff --git a/lib/support/firefox_profile.dart b/lib/support/firefox_profile.dart
index ed3b4ff..370c7a0 100644
--- a/lib/support/firefox_profile.dart
+++ b/lib/support/firefox_profile.dart
@@ -12,10 +12,6 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-// We should migrate this file to Null Safety once package:archive is migrated,
-// but for now annotate it with the older language version.
-// @dart = 2.9
-
library webdriver.support.firefox_profile;
import 'dart:collection';
@@ -103,7 +99,7 @@
/// Creates a Firefox profile in a format so it can be passed using the
/// `desired` capabilities map.
class FirefoxProfile {
- final io.Directory profileDirectory;
+ final io.Directory? profileDirectory;
Set<PrefsOption> _prefs = <PrefsOption>{};
@@ -135,13 +131,13 @@
_userPrefs.addAll(defaultUserPrefs);
if (profileDirectory != null) {
final prefsFile =
- io.File(path.join(profileDirectory.absolute.path, 'prefs.js'));
+ io.File(path.join(profileDirectory!.absolute.path, 'prefs.js'));
if (prefsFile.existsSync()) {
_prefs = loadPrefsFile(prefsFile);
}
final userPrefsFile =
- io.File(path.join(profileDirectory.absolute.path, 'user.js'));
+ io.File(path.join(profileDirectory!.absolute.path, 'user.js'));
if (userPrefsFile.existsSync()) {
_userPrefs = loadPrefsFile(userPrefsFile)
.where((option) => !lockedPrefs.contains(option))
@@ -181,7 +177,6 @@
/// Helper for [loadPrefsFile]
static bool _ignoreLine(String line) {
- line ??= '';
line = line.trim();
if (line.isEmpty ||
line.startsWith('//') ||
@@ -202,7 +197,7 @@
final prefs = <PrefsOption>{};
final lines = LineSplitter.split(file.readAsStringSync())
.where((line) => !_ignoreLine(line));
- bool canNotParseCaption = true;
+ var canNotParseCaption = true;
for (final line in lines) {
final option = PrefsOption.parse(line);
@@ -227,11 +222,11 @@
/// It can be uses like
/// `var desired = Capabilities.firefox..addAll(firefoxProfile.toJson()}`
Map<String, dynamic> toJson() {
- Archive archive = Archive();
+ var archive = Archive();
if (profileDirectory != null) {
- profileDirectory.listSync(recursive: true).forEach((f) {
+ profileDirectory!.listSync(recursive: true).forEach((f) {
ArchiveFile archiveFile;
- final name = path.relative(f.path, from: profileDirectory.path);
+ final name = path.relative(f.path, from: profileDirectory!.path);
if (f is io.Directory) {
archiveFile = ArchiveFile('$name/', 0, <int>[]);
} else if (f is io.File) {
@@ -257,7 +252,7 @@
archive
.addFile(ArchiveFile('user.js', userJsContent.length, userJsContent));
- final zipData = ZipEncoder().encode(archive);
+ final zipData = ZipEncoder().encode(archive)!;
return {'firefox_profile': base64.encode(zipData)};
}
}
@@ -274,7 +269,7 @@
RegExp(r'user_pref\("([^"]+)", ("?.+?"?)\);');
final String name;
- final T value;
+ final T? value;
factory PrefsOption(String name, T value) {
if (value is bool) {
@@ -294,8 +289,8 @@
return InvalidOption('Not a valid prefs option: "$prefs".')
as PrefsOption<T>;
}
- final name = match.group(1);
- final valueString = match.group(2);
+ final name = match.group(1)!;
+ final valueString = match.group(2)!;
if (valueString.startsWith('"') && valueString.endsWith('"')) {
final value = valueString
.substring(1, valueString.length - 1)
@@ -309,7 +304,7 @@
return BooleanOption(name, false) as PrefsOption<T>;
}
try {
- int value = int.parse(valueString);
+ var value = int.parse(valueString);
return IntegerOption(name, value) as PrefsOption<T>;
} catch (_) {}
return InvalidOption('Not a valid prefs option: "$prefs".')
@@ -323,7 +318,7 @@
if (identical(this, other)) {
return true;
}
- return other is PrefsOption && this.name == other.name;
+ return other is PrefsOption && name == other.name;
}
@override
@@ -368,7 +363,5 @@
value.replaceAll(r'\', r'\\').replaceAll('"', r'\"');
@override
- String get _valueAsPrefString {
- return '"${_escape(value)}"';
- }
+ String get _valueAsPrefString => '"${_escape(value!)}"';
}
diff --git a/lib/support/stdio_stepper.dart b/lib/support/stdio_stepper.dart
index b2cb904..0d262b9 100644
--- a/lib/support/stdio_stepper.dart
+++ b/lib/support/stdio_stepper.dart
@@ -18,7 +18,7 @@
import 'dart:convert' show Encoding, json;
import 'dart:io' show exit, Stdin, stdin, systemEncoding;
-import 'package:webdriver/src/async/stepper.dart';
+import '../src/async/stepper.dart';
LineReader? _stdinLineReader;
@@ -80,8 +80,8 @@
/// Converts a Stream<List<int> | int> to Stream<String> that fires an event
/// for every line of data in the original Stream.
class LineReader {
- static const CR = 13;
- static const LF = 10;
+ static const cr = 13;
+ static const lf = 10;
bool _crPrevious = false;
final _bytes = <int>[];
@@ -104,17 +104,17 @@
if (data is List<int>) {
data.forEach(_addByte);
} else {
- _addByte(data);
+ _addByte(data as int);
}
}
void _addByte(int byte) {
- if (_crPrevious && byte == LF) {
+ if (_crPrevious && byte == lf) {
_crPrevious = false;
return;
}
- _crPrevious = byte == CR;
- if (byte == CR || byte == LF) {
+ _crPrevious = byte == cr;
+ if (byte == cr || byte == lf) {
_controller.add(encoding.decode(_bytes));
_bytes.clear();
} else {
diff --git a/lib/sync_core.dart b/lib/sync_core.dart
index 51ffe4b..5de6f1c 100644
--- a/lib/sync_core.dart
+++ b/lib/sync_core.dart
@@ -16,11 +16,11 @@
import 'dart:collection' show UnmodifiableMapView;
-import 'package:webdriver/src/common/request_client.dart';
-import 'package:webdriver/src/common/session.dart';
-import 'package:webdriver/src/common/spec.dart';
-import 'package:webdriver/src/common/utils.dart';
-import 'package:webdriver/src/sync/web_driver.dart' show WebDriver;
+import 'src/common/request_client.dart';
+import 'src/common/session.dart';
+import 'src/common/spec.dart';
+import 'src/common/utils.dart';
+import 'src/sync/web_driver.dart' show WebDriver;
export 'package:webdriver/src/common/by.dart';
export 'package:webdriver/src/common/capabilities.dart';
diff --git a/lib/sync_io.dart b/lib/sync_io.dart
index cb32e56..a2bb6fb 100644
--- a/lib/sync_io.dart
+++ b/lib/sync_io.dart
@@ -14,9 +14,9 @@
library webdriver.sync_io;
-import 'package:webdriver/src/request/sync_http_request_client.dart';
+import 'src/request/sync_http_request_client.dart';
-import 'package:webdriver/sync_core.dart' as core
+import 'sync_core.dart' as core
show createDriver, fromExistingSession, WebDriver, WebDriverSpec;
export 'package:webdriver/sync_core.dart'
diff --git a/pubspec.yaml b/pubspec.yaml
index a8ba465..48d7f72 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -15,8 +15,13 @@
archive: ^3.0.0-nullsafety.0
matcher: ^0.12.10-nullsafety.0
path: ^1.8.0-nullsafety.0
+ pedantic: ^1.10.0-nullsafety.0
stack_trace: ^1.10.0-nullsafety.0
sync_http: '>=0.1.1 <0.3.0'
dev_dependencies:
test: ^1.16.0-nullsafety.0
+
+dependency_overrides:
+ sync_http:
+ git: https://github.com/dart-lang/sync_http
diff --git a/test/async_alert_test.dart b/test/async_alert_test.dart
index 7988041..e877821 100644
--- a/test/async_alert_test.dart
+++ b/test/async_alert_test.dart
@@ -66,7 +66,7 @@
test('sendKeys', () async {
await button.click();
- Alert alert = driver.switchTo.alert;
+ var alert = driver.switchTo.alert;
await alert.sendKeys('some keys');
await alert.accept();
expect(await output.text, endsWith('some keys'));
diff --git a/test/async_command_event_test.dart b/test/async_command_event_test.dart
index 52ab877..f27cac6 100644
--- a/test/async_command_event_test.dart
+++ b/test/async_command_event_test.dart
@@ -43,7 +43,9 @@
test('handles exceptions', () async {
try {
await driver.switchTo.alert.text;
- } catch (e) {}
+ } catch (e) {
+ // noop
+ }
expect(events, hasLength(2));
expect(events[1].method, 'GET');
expect(events[1].endPoint, contains('alert'));
diff --git a/test/async_cookies_test.dart b/test/async_cookies_test.dart
index 1403973..02fe5cf 100644
--- a/test/async_cookies_test.dart
+++ b/test/async_cookies_test.dart
@@ -58,7 +58,7 @@
secure: false,
expiry: _expiryDate));
- bool found = false;
+ var found = false;
await for (var cookie in driver.cookies.all) {
if (cookie.name == 'mycookie') {
found = true;
@@ -85,7 +85,7 @@
test('delete cookie', () async {
await driver.cookies.add(Cookie('mycookie', 'myvalue'));
await driver.cookies.delete('mycookie');
- bool found = false;
+ var found = false;
await for (var cookie in driver.cookies.all) {
if (cookie.name == 'mycookie') {
found = true;
diff --git a/test/async_keyboard_test.dart b/test/async_keyboard_test.dart
index c030884..130ff74 100644
--- a/test/async_keyboard_test.dart
+++ b/test/async_keyboard_test.dart
@@ -26,7 +26,7 @@
group('Keyboard', () {
late WebDriver driver;
late WebElement textInput;
- String ctrlCmdKey = '';
+ var ctrlCmdKey = '';
setUp(() async {
if (Platform.isMacOS) {
diff --git a/test/async_logs_test.dart b/test/async_logs_test.dart
index 87875bb..c301dce 100644
--- a/test/async_logs_test.dart
+++ b/test/async_logs_test.dart
@@ -25,7 +25,7 @@
late WebDriver driver;
setUp(() async {
- Map<String, dynamic> capabilities = {
+ var capabilities = <String, dynamic>{
// ignore: deprecated_member_use_from_same_package
Capabilities.loggingPrefs: {LogType.performance: LogLevel.info}
};
@@ -36,7 +36,7 @@
});
test('get logs', () async {
- List<LogEntry> logs = await driver.logs.get(LogType.performance).toList();
+ var logs = await driver.logs.get(LogType.performance).toList();
if (driver.capabilities['browserName'] == 'firefox') {
expect(logs, isEmpty);
return;
diff --git a/test/async_web_driver_test.dart b/test/async_web_driver_test.dart
index 7a7de7f..6303f05 100644
--- a/test/async_web_driver_test.dart
+++ b/test/async_web_driver_test.dart
@@ -26,7 +26,7 @@
group('WebDriver', () {
group('create', () {
test('default', () async {
- WebDriver driver = await config.createTestDriver();
+ var driver = await config.createTestDriver();
await config.createTestServerAndGoToTestPage(driver);
var element = await driver.findElement(const By.tagName('button'));
expect(await element.name, 'button');
@@ -60,7 +60,9 @@
try {
await driver.findElement(const By.id('non-existent-id'));
throw 'expected NoSuchElementException';
- } on NoSuchElementException {}
+ } on NoSuchElementException {
+ // noop
+ }
});
test('findElements -- 1 found', () async {
@@ -89,7 +91,7 @@
});
test('close/windows', () async {
- int numHandles = (await driver.windows.toList()).length;
+ var numHandles = (await driver.windows.toList()).length;
await (await driver.findElement(const By.partialLinkText('Open copy')))
.click();
expect(await driver.windows.toList(), hasLength(numHandles + 1));
@@ -98,7 +100,7 @@
});
test('window', () async {
- Window orig = await driver.window;
+ var orig = await driver.window;
Window? next;
await (await driver.findElement(const By.partialLinkText('Open copy')))
@@ -131,9 +133,8 @@
});
test('execute', () async {
- WebElement button =
- await driver.findElement(const By.tagName('button'));
- String script = '''
+ var button = await driver.findElement(const By.tagName('button'));
+ var script = '''
arguments[1].textContent = arguments[0];
return arguments[1];''';
var e = await driver.execute(script, ['new text', button]);
@@ -141,9 +142,8 @@
});
test('executeAsync', () async {
- WebElement button =
- await driver.findElement(const By.tagName('button'));
- String script = '''
+ var button = await driver.findElement(const By.tagName('button'));
+ var script = '''
arguments[1].textContent = arguments[0];
arguments[2](arguments[1]);''';
var e = await driver.executeAsync(script, ['new text', button]);
@@ -184,13 +184,11 @@
});
test('future based event listeners work with script timeouts', () async {
- driver.addEventListener((WebDriverCommandEvent e) async {
- return await Future.delayed(
- const Duration(milliseconds: 1000), (() {}));
- });
+ driver.addEventListener((WebDriverCommandEvent e) async =>
+ await Future.delayed(const Duration(milliseconds: 1000), (() {})));
try {
- driver.timeouts.setScriptTimeout(const Duration(seconds: 1));
+ await driver.timeouts.setScriptTimeout(const Duration(seconds: 1));
await driver.executeAsync('', []);
fail('Did not throw timeout as expected');
} catch (e) {
@@ -200,20 +198,19 @@
test('future based event listeners ordered appropriately', () async {
var eventList = <int>[];
- int millisDelay = 2000;
- int current = 0;
- driver.addEventListener((WebDriverCommandEvent e) async {
- return await Future.delayed(Duration(milliseconds: millisDelay), (() {
- eventList.add(current++);
- millisDelay = (millisDelay / 2).round();
- }));
- });
+ var millisDelay = 2000;
+ var current = 0;
+ driver.addEventListener((WebDriverCommandEvent e) async =>
+ await Future.delayed(Duration(milliseconds: millisDelay), (() {
+ eventList.add(current++);
+ millisDelay = (millisDelay / 2).round();
+ })));
- for (int i = 0; i < 10; i++) {
+ for (var i = 0; i < 10; i++) {
await driver.title; // GET request.
}
expect(eventList, hasLength(10));
- for (int i = 0; i < 10; i++) {
+ for (var i = 0; i < 10; i++) {
expect(eventList[i], i);
}
});
diff --git a/test/async_web_element_test.dart b/test/async_web_element_test.dart
index 9a85aff..1247278 100644
--- a/test/async_web_element_test.dart
+++ b/test/async_web_element_test.dart
@@ -145,7 +145,9 @@
try {
await button.findElement(const By.tagName('tr'));
throw 'Expected NoSuchElementException';
- } on NoSuchElementException {}
+ } on NoSuchElementException {
+ // noop
+ }
});
test('findElements -- 1 found', () async {
diff --git a/test/configs/async_io_config.dart b/test/configs/async_io_config.dart
index d4141e0..fd45010 100644
--- a/test/configs/async_io_config.dart
+++ b/test/configs/async_io_config.dart
@@ -52,8 +52,8 @@
final server = await createLocalServer();
server.listen((request) {
if (request.method == 'GET' && request.uri.path.endsWith('.html')) {
- String testPagePath = '$testHomePath${request.uri.path}';
- File file = File(testPagePath);
+ var testPagePath = '$testHomePath${request.uri.path}';
+ var file = File(testPagePath);
if (file.existsSync()) {
request.response
..statusCode = HttpStatus.ok
diff --git a/test/configs/common_config.dart b/test/configs/common_config.dart
index 9b07f6c..c292065 100644
--- a/test/configs/common_config.dart
+++ b/test/configs/common_config.dart
@@ -54,7 +54,7 @@
var capabilities = Capabilities.chrome;
Map env = Platform.environment;
- Map chromeOptions = {};
+ var chromeOptions = {};
if (env['CHROMEDRIVER_BINARY'] != null) {
chromeOptions['binary'] = env['CHROMEDRIVER_BINARY'];
diff --git a/test/configs/sync_io_config.dart b/test/configs/sync_io_config.dart
index 46abb5c..3fdef80 100644
--- a/test/configs/sync_io_config.dart
+++ b/test/configs/sync_io_config.dart
@@ -51,8 +51,8 @@
final server = await createLocalServer();
server.listen((request) {
if (request.method == 'GET' && request.uri.path.endsWith('.html')) {
- String testPagePath = '$testHomePath${request.uri.path}';
- File file = File(testPagePath);
+ var testPagePath = '$testHomePath${request.uri.path}';
+ var file = File(testPagePath);
if (file.existsSync()) {
request.response
..statusCode = HttpStatus.ok
diff --git a/test/firefox_alert_test.dart b/test/firefox_alert_test.dart
index a5cf1de..312b196 100644
--- a/test/firefox_alert_test.dart
+++ b/test/firefox_alert_test.dart
@@ -12,6 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+@Tags(['ff'])
+import 'package:test/test.dart';
import 'package:webdriver/sync_core.dart';
import 'sync/alert.dart';
diff --git a/test/firefox_command_event.dart b/test/firefox_command_event.dart
index 5b0cd8d..e41fb44 100644
--- a/test/firefox_command_event.dart
+++ b/test/firefox_command_event.dart
@@ -12,9 +12,12 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import 'sync/command_event.dart';
+@Tags(['ff'])
+import 'package:test/test.dart';
import 'package:webdriver/sync_core.dart';
+import 'sync/command_event.dart';
+
void main() {
runTests(spec: WebDriverSpec.W3c);
}
diff --git a/test/firefox_cookies_test.dart b/test/firefox_cookies_test.dart
index 23cd5f2..a9bfcc9 100644
--- a/test/firefox_cookies_test.dart
+++ b/test/firefox_cookies_test.dart
@@ -12,6 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+@Tags(['ff'])
+import 'package:test/test.dart';
import 'package:webdriver/sync_core.dart';
import 'sync/cookies.dart';
diff --git a/test/firefox_navigation_test.dart b/test/firefox_navigation_test.dart
index 647287a..34677a5 100644
--- a/test/firefox_navigation_test.dart
+++ b/test/firefox_navigation_test.dart
@@ -12,6 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+@Tags(['ff'])
+import 'package:test/test.dart';
import 'package:webdriver/sync_core.dart';
import 'sync/navigation.dart';
diff --git a/test/firefox_target_locator_test.dart b/test/firefox_target_locator_test.dart
index aca29ad..37dde4e 100644
--- a/test/firefox_target_locator_test.dart
+++ b/test/firefox_target_locator_test.dart
@@ -12,6 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+@Tags(['ff'])
+import 'package:test/test.dart';
import 'package:webdriver/sync_core.dart';
import 'sync/target_locator.dart';
diff --git a/test/firefox_timeouts_test.dart b/test/firefox_timeouts_test.dart
index ea690f8..a86d475 100644
--- a/test/firefox_timeouts_test.dart
+++ b/test/firefox_timeouts_test.dart
@@ -12,6 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+@Tags(['ff'])
+import 'package:test/test.dart';
import 'package:webdriver/sync_core.dart';
import 'sync/timeouts.dart';
diff --git a/test/firefox_w3c_basic_sync_test.dart b/test/firefox_w3c_basic_sync_test.dart
index caada3a..5546038 100644
--- a/test/firefox_w3c_basic_sync_test.dart
+++ b/test/firefox_w3c_basic_sync_test.dart
@@ -12,6 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+@Tags(['ff'])
+import 'package:test/test.dart';
import 'package:webdriver/sync_core.dart';
import 'sync/basic_sync.dart';
diff --git a/test/firefox_w3c_keyboard_test.dart b/test/firefox_w3c_keyboard_test.dart
index e53df2d..cdb6f42 100644
--- a/test/firefox_w3c_keyboard_test.dart
+++ b/test/firefox_w3c_keyboard_test.dart
@@ -12,6 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+@Tags(['ff'])
+import 'package:test/test.dart';
import 'package:webdriver/sync_core.dart';
import 'sync/keyboard.dart';
diff --git a/test/firefox_w3c_mouse_test.dart b/test/firefox_w3c_mouse_test.dart
index b0ef673..d73164d 100644
--- a/test/firefox_w3c_mouse_test.dart
+++ b/test/firefox_w3c_mouse_test.dart
@@ -12,6 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+@Tags(['ff'])
+import 'package:test/test.dart';
import 'package:webdriver/sync_core.dart';
import 'sync/mouse.dart';
diff --git a/test/firefox_web_driver_test.dart b/test/firefox_web_driver_test.dart
index 3e3ff1e..fe36d6b 100644
--- a/test/firefox_web_driver_test.dart
+++ b/test/firefox_web_driver_test.dart
@@ -12,6 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+@Tags(['ff'])
+import 'package:test/test.dart';
import 'package:webdriver/sync_core.dart';
import 'sync/web_driver.dart';
diff --git a/test/firefox_web_element_test.dart b/test/firefox_web_element_test.dart
index 1ca9eec..5a73c55 100644
--- a/test/firefox_web_element_test.dart
+++ b/test/firefox_web_element_test.dart
@@ -12,6 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+@Tags(['ff'])
+import 'package:test/test.dart';
import 'package:webdriver/sync_core.dart';
import 'sync/web_element.dart';
diff --git a/test/firefox_window_test.dart b/test/firefox_window_test.dart
index 1a87cbd..517b858 100644
--- a/test/firefox_window_test.dart
+++ b/test/firefox_window_test.dart
@@ -12,6 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+@Tags(['ff'])
+import 'package:test/test.dart';
+
import 'package:webdriver/sync_core.dart';
import 'sync/window.dart';
diff --git a/test/support/async_test.dart b/test/support/async_test.dart
index c851ec3..5c9d78e 100644
--- a/test/support/async_test.dart
+++ b/test/support/async_test.dart
@@ -16,6 +16,7 @@
import 'dart:async' show Future;
+import 'package:pedantic/pedantic.dart';
import 'package:test/test.dart';
import 'package:webdriver/support/async.dart';
@@ -42,7 +43,7 @@
var lock = Lock();
var secondLockAcquired = false;
await lock.acquire();
- lock.acquire().then((_) => secondLockAcquired = true);
+ unawaited(lock.acquire().then((_) => secondLockAcquired = true));
// Make sure that lock is not unacquired just because of timing
await Future.delayed(const Duration(seconds: 1));
expect(secondLockAcquired, isFalse);
diff --git a/test/support/firefox_profile_test.dart b/test/support/firefox_profile_test.dart
index 5388404..587cee0 100644
--- a/test/support/firefox_profile_test.dart
+++ b/test/support/firefox_profile_test.dart
@@ -12,6 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+@Tags(['ff'])
@TestOn('vm')
library webdriver.support.firefox_profile_test;
@@ -141,7 +142,8 @@
var prefs = FirefoxProfile.loadPrefsFile(MockFile(
String.fromCharCodes(
- archive.files.firstWhere((f) => f.name == 'user.js').content,
+ archive.files.firstWhere((f) => f.name == 'user.js').content
+ as List<int>,
),
));
expect(
@@ -180,7 +182,8 @@
var prefs = FirefoxProfile.loadPrefsFile(
MockFile(
String.fromCharCodes(
- archive.files.firstWhere((f) => f.name == 'user.js').content,
+ archive.files.firstWhere((f) => f.name == 'user.js').content
+ as List<int>,
),
),
);
@@ -197,7 +200,7 @@
}
Archive unpackArchiveData(Map profileData) {
- var zipArchive = base64.decode(profileData['firefox_profile']);
+ var zipArchive = base64.decode(profileData['firefox_profile'] as String);
return ZipDecoder().decodeBytes(zipArchive, verify: true);
}
diff --git a/test/sync/alert.dart b/test/sync/alert.dart
index d85dbc3..e2a6ace 100644
--- a/test/sync/alert.dart
+++ b/test/sync/alert.dart
@@ -66,7 +66,7 @@
test('sendKeys', () {
button.click();
- Alert alert = driver.switchTo.alert;
+ var alert = driver.switchTo.alert;
alert.sendKeys('some keys');
alert.accept();
expect(output.text, endsWith('some keys'));
diff --git a/test/sync/command_event.dart b/test/sync/command_event.dart
index 631d509..8bad594 100644
--- a/test/sync/command_event.dart
+++ b/test/sync/command_event.dart
@@ -42,7 +42,9 @@
try {
driver.switchTo.alert.text;
fail('Expected exception on no alert');
- } catch (NoSuchAlertException) {}
+ } on NoSuchAlertException {
+ // noop
+ }
// TODO(b/140553567): There should be two events.
expect(events, hasLength(1));
expect(events[0].method, 'GET');
diff --git a/test/sync/cookies.dart b/test/sync/cookies.dart
index b19e47a..fda6d8e 100644
--- a/test/sync/cookies.dart
+++ b/test/sync/cookies.dart
@@ -58,7 +58,7 @@
secure: false,
expiry: _expiryDate));
- bool found = false;
+ var found = false;
for (var cookie in driver.cookies.all) {
if (cookie.name == 'mycookie') {
found = true;
@@ -84,7 +84,7 @@
test('delete cookie', () {
driver.cookies.add(Cookie('mycookie', 'myvalue'));
driver.cookies.delete('mycookie');
- bool found = false;
+ var found = false;
for (var cookie in driver.cookies.all) {
if (cookie.name == 'mycookie') {
found = true;
diff --git a/test/sync/keyboard.dart b/test/sync/keyboard.dart
index fca001e..0a4b299 100644
--- a/test/sync/keyboard.dart
+++ b/test/sync/keyboard.dart
@@ -26,7 +26,7 @@
group('Keyboard', () {
late WebDriver driver;
late WebElement textInput;
- String ctrlCmdKey = '';
+ var ctrlCmdKey = '';
setUp(() async {
if (Platform.isMacOS) {
diff --git a/test/sync/logs.dart b/test/sync/logs.dart
index 0cbbad4..d5f3bcd 100644
--- a/test/sync/logs.dart
+++ b/test/sync/logs.dart
@@ -25,7 +25,7 @@
late WebDriver driver;
setUp(() async {
- Map<String, dynamic> capabilities = {
+ var capabilities = <String, dynamic>{
// ignore: deprecated_member_use_from_same_package
Capabilities.loggingPrefs: {LogType.performance: LogLevel.info}
};
@@ -38,7 +38,7 @@
});
test('get logs', () {
- List<LogEntry> logs = driver.logs.get(LogType.performance).toList();
+ var logs = driver.logs.get(LogType.performance).toList();
if (driver.capabilities['browserName'] == 'firefox') {
expect(logs, isEmpty);
return;
diff --git a/test/sync/spec_inference_test.dart b/test/sync/spec_inference_test.dart
index 2120943..156edf4 100644
--- a/test/sync/spec_inference_test.dart
+++ b/test/sync/spec_inference_test.dart
@@ -22,12 +22,12 @@
void main() {
group('Spec inference', () {
- WebDriver? driver;
+ late WebDriver driver;
test('chrome works', () async {
driver = config.createTestDriver(spec: WebDriverSpec.W3c);
- await config.createTestServerAndGoToTestPage(driver!);
- final button = driver!.findElement(const By.tagName('button'));
+ await config.createTestServerAndGoToTestPage(driver);
+ final button = driver.findElement(const By.tagName('button'));
try {
button.findElement(const By.tagName('tr'));
throw 'Expected NoSuchElementException';
@@ -35,12 +35,12 @@
expect(e, const TypeMatcher<NoSuchElementException>());
expect(e.toString(), contains('Unable to locate element'));
}
- });
+ }, tags: ['ff']);
test('firefox work', () async {
driver = config.createTestDriver(spec: WebDriverSpec.JsonWire);
- await config.createTestServerAndGoToTestPage(driver!);
- final button = driver!.findElement(const By.tagName('button'));
+ await config.createTestServerAndGoToTestPage(driver);
+ final button = driver.findElement(const By.tagName('button'));
try {
button.findElement(const By.tagName('tr'));
throw 'Expected W3cWebDriverException';
diff --git a/test/sync/web_driver.dart b/test/sync/web_driver.dart
index ad9317b..10c3b37 100644
--- a/test/sync/web_driver.dart
+++ b/test/sync/web_driver.dart
@@ -26,7 +26,7 @@
group('WebDriver', () {
group('create', () {
test('default', () async {
- WebDriver driver = config.createTestDriver(spec: spec);
+ var driver = config.createTestDriver(spec: spec);
await config.createTestServerAndGoToTestPage(driver);
var element = driver.findElement(const By.tagName('button'));
expect(element.name, 'button');
@@ -95,7 +95,7 @@
});
test('close/windows', () {
- int numHandles = (driver.windows.toList()).length;
+ var numHandles = (driver.windows.toList()).length;
(driver.findElement(const By.partialLinkText('Open copy'))).click();
sleep(const Duration(milliseconds: 500)); // Bit slow on Firefox.
expect(driver.windows.toList(), hasLength(numHandles + 1));
@@ -104,7 +104,7 @@
});
test('window', () {
- Window orig = driver.window;
+ var orig = driver.window;
Window? next;
(driver.findElement(const By.partialLinkText('Open copy'))).click();
@@ -135,8 +135,8 @@
});
test('execute', () {
- WebElement button = driver.findElement(const By.tagName('button'));
- String script = '''
+ var button = driver.findElement(const By.tagName('button'));
+ var script = '''
arguments[1].textContent = arguments[0];
return arguments[1];''';
var e = driver.execute(script, ['new text', button]);
@@ -144,8 +144,8 @@
});
test('executeAsync', () {
- WebElement button = driver.findElement(const By.tagName('button'));
- String script = '''
+ var button = driver.findElement(const By.tagName('button'));
+ var script = '''
arguments[1].textContent = arguments[0];
arguments[2](arguments[1]);''';
var e = driver.executeAsync(script, ['new text', button]);
@@ -196,16 +196,16 @@
test('event listeners ordered appropriately', () {
var eventList = <int>[];
- int current = 0;
+ var current = 0;
driver.addEventListener((e) {
eventList.add(current++);
});
- for (int i = 0; i < 10; i++) {
+ for (var i = 0; i < 10; i++) {
driver.title; // GET request.
}
expect(eventList, hasLength(10));
- for (int i = 0; i < 10; i++) {
+ for (var i = 0; i < 10; i++) {
expect(eventList[i], i);
}
});