diff --git a/composer.json b/composer.json
index 91d78aeb451147aeffe754aee3065cb36fbd3690..71cb3adfe669a551d617430b03db3a731ba55981 100644
--- a/composer.json
+++ b/composer.json
@@ -9,7 +9,7 @@
     ],
     "minimum-stability": "dev",
     "require": {
-        "php": "^7.2",
+        "php": "^7.2|^8",
         "league/oauth2-client": "^2"
     },
     "suggest": {
diff --git a/modules/box/box_token_manager.info.yml b/modules/box/box_token_manager.info.yml
index de5f2da617f6110ec4bc706e1b09b506edfa3a61..25cd073d7f58ad7c60eef3eb223af21803b94896 100644
--- a/modules/box/box_token_manager.info.yml
+++ b/modules/box/box_token_manager.info.yml
@@ -1,8 +1,7 @@
 name: 'Box Token Manager'
 type: module
 description: 'OAuth2 Token Manager for Box'
-core: 8.x
-core_version_requirement: ^8 || ^9
+core_version_requirement: ^9.3 || ^10
 package: 'Security'
 dependencies:
   - oauth2_token_manager:oauth2_token_manager
diff --git a/modules/box/composer.json b/modules/box/composer.json
index 607e1a3f0e666ed993f80a9dc22c580e68cb607d..659d9c441d56f37332f8370cc2b102a94471df95 100644
--- a/modules/box/composer.json
+++ b/modules/box/composer.json
@@ -15,7 +15,7 @@
     "extra": {
         "drush": {
             "services": {
-                "drush.services.yml": "^9 || ^10"
+                "drush.services.yml": "^10 || ^11 || ^12"
             }
         }
     }
diff --git a/modules/quip/composer.json b/modules/quip/composer.json
index 75ac90aeb50f01979d12ddd51294fefa9d765a4e..4690ee473420f3cf9bc1d01ba1ec3d46275693cc 100644
--- a/modules/quip/composer.json
+++ b/modules/quip/composer.json
@@ -12,7 +12,7 @@
     "extra": {
         "drush": {
             "services": {
-                "drush.services.yml": "^9 || ^10"
+                "drush.services.yml": "^10 || ^11 || ^12"
             }
         }
     }
diff --git a/modules/quip/quip_token_manager.info.yml b/modules/quip/quip_token_manager.info.yml
index fd9510bc3fee7d2007e9485b05ec246801b6bf5f..3e2f6b799fdaa9be420fc5df0d50d7269cd1c738 100644
--- a/modules/quip/quip_token_manager.info.yml
+++ b/modules/quip/quip_token_manager.info.yml
@@ -1,8 +1,7 @@
 name: 'Quip Token Manager'
 type: module
 description: 'OAuth2 Token Manager for Quip'
-core: 8.x
-core_version_requirement: ^8 || ^9
+core_version_requirement: ^9.3 || ^10
 package: 'Security'
 dependencies:
   - oauth2_token_manager:oauth2_token_manager
diff --git a/modules/slack/composer.json b/modules/slack/composer.json
index 94f884b56f00557aca911ae46d9e035802479b19..2a968ab6b70127e1cb62b776a5912794e5f6e169 100644
--- a/modules/slack/composer.json
+++ b/modules/slack/composer.json
@@ -15,7 +15,7 @@
     "extra": {
         "drush": {
             "services": {
-                "drush.services.yml": "^9 || ^10"
+                "drush.services.yml": "^10 || ^11 || ^12"
             }
         }
     }
diff --git a/modules/slack/slack_token_manager.info.yml b/modules/slack/slack_token_manager.info.yml
index 6daaeb3fc763dd098261d4f22cba420a62b1a2fc..cca873f44cfb62f38992f5b0d942aa4b334d9823 100644
--- a/modules/slack/slack_token_manager.info.yml
+++ b/modules/slack/slack_token_manager.info.yml
@@ -1,8 +1,7 @@
 name: 'Slack Token Manager'
 type: module
 description: 'OAuth2 Token Manager for Slack'
-core: 8.x
-core_version_requirement: ^8 || ^9
+core_version_requirement: ^9.3 || ^10
 package: 'Security'
 dependencies:
   - oauth2_token_manager:oauth2_token_manager
diff --git a/oauth2_token_manager.info.yml b/oauth2_token_manager.info.yml
index 5b1f179ae598708f8b5fabdb83a5a371bda40a30..7c63c7858f398c9159805e45b7731d8d306578df 100644
--- a/oauth2_token_manager.info.yml
+++ b/oauth2_token_manager.info.yml
@@ -1,6 +1,5 @@
 name: 'OAuth2 Token Manager'
 type: module
 description: 'OAuth2 Token Manager'
-core: 8.x
-core_version_requirement: ^8 || ^9
+core_version_requirement: ^9.3 || ^10
 package: 'Security'
diff --git a/src/Commands/TokenGeneratorCommandsBase.php b/src/Commands/TokenGeneratorCommandsBase.php
index f553df3721f45392520daeb424c536cc26974ae2..9d4d813ea66902d17eac85bff1821bc4984566ab 100644
--- a/src/Commands/TokenGeneratorCommandsBase.php
+++ b/src/Commands/TokenGeneratorCommandsBase.php
@@ -35,7 +35,7 @@ class TokenGeneratorCommandsBase extends DrushCommands {
    *
    * @throws \Exception
    */
-  public function setRefreshToken($refresh_token) {
+  public function setRefreshToken($refresh_token): void {
     if (!$this->tokenManager->setSystemRefreshToken($refresh_token)) {
       throw new \Exception('Using refresh token failed.');
     }
@@ -46,7 +46,7 @@ class TokenGeneratorCommandsBase extends DrushCommands {
   /**
    * Initializes a new refresh token.
    */
-  public function initRefreshToken() {
+  public function initRefreshToken(): void {
     $authUrl = $this->tokenManager->initSystemAccessToken();
     $this->logger()->success(dt('Please visit the following URL to initialize the system token: {url}', ['url' => $authUrl]));
   }
diff --git a/tests/src/Functional/LoadTest.php b/tests/src/Functional/LoadTest.php
index 9d9d6ceda5d2b987f675e1f9c0c55a25e4e01950..488c0e04ffd0f81f838e2cf3da416219e1bdf082 100644
--- a/tests/src/Functional/LoadTest.php
+++ b/tests/src/Functional/LoadTest.php
@@ -22,7 +22,7 @@ class LoadTest extends BrowserTestBase {
    *
    * @var array
    */
-  public static $modules = [
+  protected static $modules = [
     'oauth2_token_manager',
     'box_token_manager',
     'quip_token_manager',
@@ -39,7 +39,7 @@ class LoadTest extends BrowserTestBase {
   /**
    * {@inheritdoc}
    */
-  protected function setUp() {
+  protected function setUp(): void {
     parent::setUp();
     $this->user = $this->drupalCreateUser(['administer site configuration']);
     $this->drupalLogin($this->user);
@@ -48,9 +48,9 @@ class LoadTest extends BrowserTestBase {
   /**
    * Tests that the home page loads with a 200 response.
    */
-  public function testLoad() {
+  public function testLoad(): void {
     $this->drupalGet(Url::fromRoute('<front>'));
-    $this->assertResponse(200);
+    $this->assertSession()->statusCodeEquals(200);
   }
 
 }