diff --git a/composer.json b/composer.json
index 7dc01885f73c1e3f308082b5502865649947291f..112fc71514a7ecd60a82e827ebdafbb096996e04 100644
--- a/composer.json
+++ b/composer.json
@@ -33,7 +33,7 @@
         "phpstan/extension-installer": "^1.1",
         "phpstan/phpstan": "^1.10.38",
         "phpstan/phpstan-phpunit": "^1.3.11",
-        "phpunit/phpunit": "^9.5",
+        "phpunit/phpunit": "^9.6.13",
         "symfony/browser-kit": "^6.4",
         "symfony/css-selector": "^6.4",
         "symfony/dom-crawler": "^6.4",
diff --git a/composer.lock b/composer.lock
index 4d95103db564a5c087c7142de253ecb87a1b43b6..bfc1809bd7aeda372dc9a5085f7b5ed3ba16fc1e 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "85d5fa8a4ce88c6fa4890c7daddcb137",
+    "content-hash": "fe778796ff9b9494369cc53279f3d08f",
     "packages": [
         {
             "name": "asm89/stack-cors",
@@ -5784,16 +5784,16 @@
         },
         {
             "name": "nikic/php-parser",
-            "version": "v4.15.5",
+            "version": "v4.17.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/nikic/PHP-Parser.git",
-                "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e"
+                "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/11e2663a5bc9db5d714eedb4277ee300403b4a9e",
-                "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e",
+                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
+                "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
                 "shasum": ""
             },
             "require": {
@@ -5834,9 +5834,9 @@
             ],
             "support": {
                 "issues": "https://github.com/nikic/PHP-Parser/issues",
-                "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.5"
+                "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1"
             },
-            "time": "2023-05-19T20:20:00+00:00"
+            "time": "2023-08-13T19:53:39+00:00"
         },
         {
             "name": "open-telemetry/api",
@@ -7136,16 +7136,16 @@
         },
         {
             "name": "phpunit/php-code-coverage",
-            "version": "9.2.26",
+            "version": "9.2.29",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-                "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1"
+                "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/443bc6912c9bd5b409254a40f4b0f4ced7c80ea1",
-                "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76",
+                "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76",
                 "shasum": ""
             },
             "require": {
@@ -7201,7 +7201,8 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
-                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.26"
+                "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
+                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29"
             },
             "funding": [
                 {
@@ -7209,7 +7210,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2023-03-06T12:58:08+00:00"
+            "time": "2023-09-19T04:57:46+00:00"
         },
         {
             "name": "phpunit/php-file-iterator",
@@ -7454,16 +7455,16 @@
         },
         {
             "name": "phpunit/phpunit",
-            "version": "9.6.8",
+            "version": "9.6.13",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "17d621b3aff84d0c8b62539e269e87d8d5baa76e"
+                "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/17d621b3aff84d0c8b62539e269e87d8d5baa76e",
-                "reference": "17d621b3aff84d0c8b62539e269e87d8d5baa76e",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f3d767f7f9e191eab4189abe41ab37797e30b1be",
+                "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be",
                 "shasum": ""
             },
             "require": {
@@ -7478,7 +7479,7 @@
                 "phar-io/manifest": "^2.0.3",
                 "phar-io/version": "^3.0.2",
                 "php": ">=7.3",
-                "phpunit/php-code-coverage": "^9.2.13",
+                "phpunit/php-code-coverage": "^9.2.28",
                 "phpunit/php-file-iterator": "^3.0.5",
                 "phpunit/php-invoker": "^3.1.1",
                 "phpunit/php-text-template": "^2.0.3",
@@ -7537,7 +7538,7 @@
             "support": {
                 "issues": "https://github.com/sebastianbergmann/phpunit/issues",
                 "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
-                "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.8"
+                "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.13"
             },
             "funding": [
                 {
@@ -7553,7 +7554,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-05-11T05:14:45+00:00"
+            "time": "2023-09-19T05:39:22+00:00"
         },
         {
             "name": "react/promise",
@@ -8067,16 +8068,16 @@
         },
         {
             "name": "sebastian/global-state",
-            "version": "5.0.5",
+            "version": "5.0.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/global-state.git",
-                "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2"
+                "reference": "bde739e7565280bda77be70044ac1047bc007e34"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2",
-                "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2",
+                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34",
+                "reference": "bde739e7565280bda77be70044ac1047bc007e34",
                 "shasum": ""
             },
             "require": {
@@ -8119,7 +8120,7 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/global-state/issues",
-                "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5"
+                "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6"
             },
             "funding": [
                 {
@@ -8127,7 +8128,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2022-02-14T08:28:10+00:00"
+            "time": "2023-08-02T09:26:13+00:00"
         },
         {
             "name": "sebastian/lines-of-code",
diff --git a/composer/Metapackage/DevDependencies/composer.json b/composer/Metapackage/DevDependencies/composer.json
index b1f102aeb357581c35dba7a4e1e9faa121cb842b..4477001892858bf47cc653303d6f7b35aa8c2c8d 100644
--- a/composer/Metapackage/DevDependencies/composer.json
+++ b/composer/Metapackage/DevDependencies/composer.json
@@ -25,7 +25,7 @@
         "phpstan/extension-installer": "^1.1",
         "phpstan/phpstan": "^1.10.38",
         "phpstan/phpstan-phpunit": "^1.3.11",
-        "phpunit/phpunit": "^9.5",
+        "phpunit/phpunit": "^9.6.13",
         "symfony/browser-kit": "^6.4",
         "symfony/css-selector": "^6.4",
         "symfony/dom-crawler": "^6.4",
diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json
index 82a75ed78c0c9db2972ad65a419d13c32f390d72..968d50cbef175bdc3e5c48376c4be703ebdedf91 100644
--- a/composer/Metapackage/PinnedDevDependencies/composer.json
+++ b/composer/Metapackage/PinnedDevDependencies/composer.json
@@ -29,7 +29,7 @@
         "micheh/phpcs-gitlab": "1.1.0",
         "mikey179/vfsstream": "v1.6.11",
         "myclabs/deep-copy": "1.11.1",
-        "nikic/php-parser": "v4.15.5",
+        "nikic/php-parser": "v4.17.1",
         "open-telemetry/api": "1.0.0",
         "open-telemetry/context": "1.0.0",
         "open-telemetry/exporter-otlp": "1.0.0",
@@ -52,12 +52,12 @@
         "phpstan/phpstan": "1.10.38",
         "phpstan/phpstan-deprecation-rules": "1.1.4",
         "phpstan/phpstan-phpunit": "1.3.13",
-        "phpunit/php-code-coverage": "9.2.26",
+        "phpunit/php-code-coverage": "9.2.29",
         "phpunit/php-file-iterator": "3.0.6",
         "phpunit/php-invoker": "3.1.1",
         "phpunit/php-text-template": "2.0.4",
         "phpunit/php-timer": "5.0.3",
-        "phpunit/phpunit": "9.6.8",
+        "phpunit/phpunit": "9.6.13",
         "react/promise": "v2.10.0",
         "sebastian/cli-parser": "1.0.1",
         "sebastian/code-unit": "1.0.8",
@@ -66,7 +66,7 @@
         "sebastian/complexity": "2.0.2",
         "sebastian/environment": "5.1.5",
         "sebastian/exporter": "4.0.5",
-        "sebastian/global-state": "5.0.5",
+        "sebastian/global-state": "5.0.6",
         "sebastian/lines-of-code": "1.0.3",
         "sebastian/object-enumerator": "4.0.4",
         "sebastian/object-reflector": "2.0.4",
diff --git a/core/.deprecation-ignore.txt b/core/.deprecation-ignore.txt
index e461ad7594d2c9571eaf59beb97f28fb9496a77e..921a981e5c9bcab2768df7abaeb5befebbf7d38d 100644
--- a/core/.deprecation-ignore.txt
+++ b/core/.deprecation-ignore.txt
@@ -39,8 +39,6 @@
 # PHPUnit 9.6.
 %Expecting E_WARNING and E_USER_WARNING is deprecated and will no longer be possible in PHPUnit 10%
 %Expecting E_ERROR and E_USER_ERROR is deprecated and will no longer be possible in PHPUnit 10%
-%assertObjectHasAttribute\(\) is deprecated and will be removed in PHPUnit 10%
-%assertObjectNotHasAttribute\(\) is deprecated and will be removed in PHPUnit 10%
 
 # Skip deprecations for EditorMediaDialog, EditorImageDialog and EditorLinkDialog triggered by
 # \Drupal\Core\Entity\EntityResolverManager::setRouteOptions().
diff --git a/core/phpstan-baseline.neon b/core/phpstan-baseline.neon
index 14a6ccaa9524a37adf385434f6dcaf2483b32819..8392d70d6b472e9e00d399b743cf6c27031429d8 100644
--- a/core/phpstan-baseline.neon
+++ b/core/phpstan-baseline.neon
@@ -3573,43 +3573,11 @@ parameters:
 			count: 1
 			path: tests/Drupal/Tests/Core/Security/DoTrustedCallbackTraitTest.php
 
-		-
-			message: """
-				#^Call to deprecated method assertObjectHasAttribute\\(\\) of class PHPUnit\\\\Framework\\\\Assert\\:
-				https\\://github\\.com/sebastianbergmann/phpunit/issues/4601$#
-			"""
-			count: 2
-			path: tests/Drupal/Tests/Core/TempStore/PrivateTempStoreTest.php
-
-		-
-			message: """
-				#^Call to deprecated method assertObjectNotHasAttribute\\(\\) of class PHPUnit\\\\Framework\\\\Assert\\:
-				https\\://github\\.com/sebastianbergmann/phpunit/issues/4601$#
-			"""
-			count: 1
-			path: tests/Drupal/Tests/Core/TempStore/PrivateTempStoreTest.php
-
 		-
 			message: "#^Call to deprecated method withConsecutive\\(\\) of class PHPUnit\\\\Framework\\\\MockObject\\\\Builder\\\\InvocationMocker\\.$#"
 			count: 2
 			path: tests/Drupal/Tests/Core/TempStore/PrivateTempStoreTest.php
 
-		-
-			message: """
-				#^Call to deprecated method assertObjectHasAttribute\\(\\) of class PHPUnit\\\\Framework\\\\Assert\\:
-				https\\://github\\.com/sebastianbergmann/phpunit/issues/4601$#
-			"""
-			count: 1
-			path: tests/Drupal/Tests/Core/TempStore/SharedTempStoreTest.php
-
-		-
-			message: """
-				#^Call to deprecated method assertObjectNotHasAttribute\\(\\) of class PHPUnit\\\\Framework\\\\Assert\\:
-				https\\://github\\.com/sebastianbergmann/phpunit/issues/4601$#
-			"""
-			count: 1
-			path: tests/Drupal/Tests/Core/TempStore/SharedTempStoreTest.php
-
 		-
 			message: "#^Call to deprecated method withConsecutive\\(\\) of class PHPUnit\\\\Framework\\\\MockObject\\\\Builder\\\\InvocationMocker\\.$#"
 			count: 3
diff --git a/core/tests/Drupal/Tests/Core/TempStore/PrivateTempStoreTest.php b/core/tests/Drupal/Tests/Core/TempStore/PrivateTempStoreTest.php
index efc048cf368f31f2050fd0fb7ba966ffae584981..c0959e11e93a42e9fd37cdfd03024d52ac0ed476 100644
--- a/core/tests/Drupal/Tests/Core/TempStore/PrivateTempStoreTest.php
+++ b/core/tests/Drupal/Tests/Core/TempStore/PrivateTempStoreTest.php
@@ -175,10 +175,10 @@ public function testGetMetadata() {
 
     $metadata = $this->tempStore->getMetadata('test');
     $this->assertInstanceOf(Lock::class, $metadata);
-    $this->assertObjectHasAttribute('ownerId', $metadata);
-    $this->assertObjectHasAttribute('updated', $metadata);
+    $this->assertObjectHasProperty('ownerId', $metadata);
+    $this->assertObjectHasProperty('updated', $metadata);
     // Data should get removed.
-    $this->assertObjectNotHasAttribute('data', $metadata);
+    $this->assertObjectNotHasProperty('data', $metadata);
 
     $this->assertNull($this->tempStore->getMetadata('test'));
   }
diff --git a/core/tests/Drupal/Tests/Core/TempStore/SharedTempStoreTest.php b/core/tests/Drupal/Tests/Core/TempStore/SharedTempStoreTest.php
index 13833a2897d43347eac2c2c57556a58280208273..c4a67a85d154a2978c80bf620c6c0bd6bbe90368 100644
--- a/core/tests/Drupal/Tests/Core/TempStore/SharedTempStoreTest.php
+++ b/core/tests/Drupal/Tests/Core/TempStore/SharedTempStoreTest.php
@@ -264,9 +264,9 @@ public function testGetMetadata() {
 
     $metadata = $this->tempStore->getMetadata('test');
     $this->assertInstanceOf(Lock::class, $metadata);
-    $this->assertObjectHasAttribute('updated', $metadata);
+    $this->assertObjectHasProperty('updated', $metadata);
     // Data should get removed.
-    $this->assertObjectNotHasAttribute('data', $metadata);
+    $this->assertObjectNotHasProperty('data', $metadata);
 
     $this->assertNull($this->tempStore->getMetadata('test'));
   }
diff --git a/core/tests/Drupal/Tests/Traits/PhpUnitWarnings.php b/core/tests/Drupal/Tests/Traits/PhpUnitWarnings.php
index 98e310c3b53a5a45b3fe8d3f42e9ac4f4f086884..ba78874c4efa532ea91f556c5a733beb4556333a 100644
--- a/core/tests/Drupal/Tests/Traits/PhpUnitWarnings.php
+++ b/core/tests/Drupal/Tests/Traits/PhpUnitWarnings.php
@@ -37,8 +37,8 @@ trait PhpUnitWarnings {
     // PHPUnit 9.6.
     'Expecting E_WARNING and E_USER_WARNING is deprecated and will no longer be possible in PHPUnit 10.',
     'Expecting E_ERROR and E_USER_ERROR is deprecated and will no longer be possible in PHPUnit 10.',
-    'assertObjectHasAttribute() is deprecated and will be removed in PHPUnit 10. Refactor your test to use assertObjectHasProperty() (PHPUnit 10.1.0+) instead.',
-    'assertObjectNotHasAttribute() is deprecated and will be removed in PHPUnit 10. Refactor your test to use assertObjectNotHasProperty() (PHPUnit 10.1.0+) instead.',
+    'assertObjectHasAttribute() is deprecated and will be removed in PHPUnit 10. Refactor your test to use assertObjectHasProperty() instead.',
+    'assertObjectNotHasAttribute() is deprecated and will be removed in PHPUnit 10. Refactor your test to use assertObjectNotHasProperty() instead.',
   ];
 
   /**