diff --git a/lib/src/sync/web_element.dart b/lib/src/sync/web_element.dart
index 8f10170..9c8d9c8 100644
--- a/lib/src/sync/web_element.dart
+++ b/lib/src/sync/web_element.dart
@@ -61,11 +61,14 @@
       [this.context, this.locator, this.index]);
 
   WebElement get parent => WebElement(
-      driver,
-      _client,
-      _handler,
-      _client.send(_handler.element.buildPropertyRequest(id, 'parentElement'),
-          _handler.elementFinder.parseFindElementResponse));
+        driver,
+        _client,
+        _handler,
+        _client.send(
+          _handler.element.buildPropertyRequest(id, 'parentElement'),
+          _handler.elementFinder.parseFindElementResponse,
+        ),
+      );
 
   static final _parentCache = <String, String>{};
 
diff --git a/test/async_logs_test.dart b/test/async_logs_test.dart
index 2836b21..87875bb 100644
--- a/test/async_logs_test.dart
+++ b/test/async_logs_test.dart
@@ -26,6 +26,7 @@
 
     setUp(() async {
       Map<String, dynamic> capabilities = {
+        // ignore: deprecated_member_use_from_same_package
         Capabilities.loggingPrefs: {LogType.performance: LogLevel.info}
       };
 
diff --git a/test/async_web_driver_test.dart b/test/async_web_driver_test.dart
index 533045c..7a7de7f 100644
--- a/test/async_web_driver_test.dart
+++ b/test/async_web_driver_test.dart
@@ -151,6 +151,7 @@
       });
 
       test('captureScreenshot', () async {
+        // ignore: deprecated_member_use_from_same_package
         var screenshot = await driver.captureScreenshot().toList();
         expect(screenshot, hasLength(isPositive));
         expect(screenshot, everyElement(isA<int>()));
diff --git a/test/firefox_command_event.dart b/test/firefox_command_event.dart
index db4974d..5b0cd8d 100644
--- a/test/firefox_command_event.dart
+++ b/test/firefox_command_event.dart
@@ -13,7 +13,6 @@
 // limitations under the License.
 
 import 'sync/command_event.dart';
-import 'configs/sync_io_config.dart' as config;
 import 'package:webdriver/sync_core.dart';
 
 void main() {
diff --git a/test/support/firefox_profile_test.dart b/test/support/firefox_profile_test.dart
index f5864e3..5388404 100644
--- a/test/support/firefox_profile_test.dart
+++ b/test/support/firefox_profile_test.dart
@@ -125,26 +125,39 @@
 
     test('encode/decode "user.js" in-memory', () {
       var profile = FirefoxProfile();
+      // ignore: deprecated_member_use_from_same_package
       profile.setOption(PrefsOption(Capabilities.hasNativeEvents, true));
 
       var archive = unpackArchiveData(profile.toJson());
 
       var expectedFiles = ['prefs.js', 'user.js'];
       expect(archive.files.length, greaterThanOrEqualTo(expectedFiles.length));
-      expectedFiles.forEach((f) => expect(
-          archive.files, anyElement((ArchiveFile f) => f.name == 'prefs.js')));
+      expectedFiles.forEach(
+        (f) => expect(
+          archive.files,
+          anyElement((ArchiveFile f) => f.name == 'prefs.js'),
+        ),
+      );
 
-      var prefs = FirefoxProfile.loadPrefsFile(MockFile(String.fromCharCodes(
-          archive.files.firstWhere((f) => f.name == 'user.js').content)));
+      var prefs = FirefoxProfile.loadPrefsFile(MockFile(
+        String.fromCharCodes(
+          archive.files.firstWhere((f) => f.name == 'user.js').content,
+        ),
+      ));
       expect(
-          prefs,
-          anyElement((PrefsOption o) =>
-              o.name == Capabilities.hasNativeEvents && o.value == true));
+        prefs,
+        anyElement(
+          (PrefsOption o) =>
+              // ignore: deprecated_member_use_from_same_package
+              o.name == Capabilities.hasNativeEvents && o.value == true,
+        ),
+      );
     });
 
     test('encode/decode profile directory from disk', () {
       var profile = FirefoxProfile(
           profileDirectory: io.Directory('test/support/firefox_profile'));
+      // ignore: deprecated_member_use_from_same_package
       profile.setOption(PrefsOption(Capabilities.hasNativeEvents, true));
 
       var archive = unpackArchiveData(profile.toJson());
@@ -157,15 +170,28 @@
         'webapps/webapps.json'
       ];
       expect(archive.files.length, greaterThanOrEqualTo(expectedFiles.length));
-      expectedFiles.forEach((f) => expect(
-          archive.files, anyElement((ArchiveFile f) => f.name == 'prefs.js')));
+      expectedFiles.forEach(
+        (f) => expect(
+          archive.files,
+          anyElement((ArchiveFile f) => f.name == 'prefs.js'),
+        ),
+      );
 
-      var prefs = FirefoxProfile.loadPrefsFile(MockFile(String.fromCharCodes(
-          archive.files.firstWhere((f) => f.name == 'user.js').content)));
+      var prefs = FirefoxProfile.loadPrefsFile(
+        MockFile(
+          String.fromCharCodes(
+            archive.files.firstWhere((f) => f.name == 'user.js').content,
+          ),
+        ),
+      );
       expect(
-          prefs,
-          anyElement((PrefsOption o) =>
-              o.name == Capabilities.hasNativeEvents && o.value == true));
+        prefs,
+        anyElement(
+          (PrefsOption o) =>
+              // ignore: deprecated_member_use_from_same_package
+              o.name == Capabilities.hasNativeEvents && o.value == true,
+        ),
+      );
     });
   }, timeout: const Timeout(Duration(minutes: 2)));
 }
diff --git a/test/sync/logs.dart b/test/sync/logs.dart
index ad295dc..0cbbad4 100644
--- a/test/sync/logs.dart
+++ b/test/sync/logs.dart
@@ -26,6 +26,7 @@
 
     setUp(() async {
       Map<String, dynamic> capabilities = {
+        // ignore: deprecated_member_use_from_same_package
         Capabilities.loggingPrefs: {LogType.performance: LogLevel.info}
       };
 
