diff --git a/core/modules/path/tests/src/Functional/PathLanguageTest.php b/core/modules/path/tests/src/Functional/PathLanguageTest.php
index eaeb08a834f9a8f4677bceca410ba21683d821b6..1067b2d011183b103285000919472b5112e66909 100644
--- a/core/modules/path/tests/src/Functional/PathLanguageTest.php
+++ b/core/modules/path/tests/src/Functional/PathLanguageTest.php
@@ -4,6 +4,10 @@
 
 namespace Drupal\Tests\path\Functional;
 
+use Drupal\Core\Language\LanguageInterface;
+use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl;
+use Drupal\user\Entity\User;
+use Drupal\user\Plugin\LanguageNegotiation\LanguageNegotiationUser;
 use Drupal\Tests\content_translation\Traits\ContentTranslationTestTrait;
 
 /**
@@ -65,9 +69,7 @@ protected function setUp(): void {
     static::createLanguageFromLangcode('fr');
 
     // Enable URL language detection and selection.
-    $edit = ['language_interface[enabled][language-url]' => 1];
-    $this->drupalGet('admin/config/regional/language/detection');
-    $this->submitForm($edit, 'Save settings');
+    $this->container->get('language_negotiator')->saveConfiguration(LanguageInterface::TYPE_URL, [LanguageNegotiationUrl::METHOD_ID => 1]);
 
     // Enable translation for page node.
     static::enableContentTranslation('node', 'page');
@@ -135,19 +137,13 @@ public function testAliasTranslation(): void {
 
     // Confirm that the alias works even when changing language negotiation
     // options. Enable User language detection and selection over URL one.
-    $edit = [
-      'language_interface[enabled][language-user]' => 1,
-      'language_interface[weight][language-user]' => -9,
-      'language_interface[enabled][language-url]' => 1,
-      'language_interface[weight][language-url]' => -8,
-    ];
-    $this->drupalGet('admin/config/regional/language/detection');
-    $this->submitForm($edit, 'Save settings');
+    $this->container->get('language_negotiator')->saveConfiguration(LanguageInterface::TYPE_INTERFACE, [LanguageNegotiationUser::METHOD_ID => 1]);
+    $this->container->get('language_negotiator')->saveConfiguration(LanguageInterface::TYPE_URL, [LanguageNegotiationUrl::METHOD_ID => 1]);
 
     // Change user language preference.
-    $edit = ['preferred_langcode' => 'fr'];
-    $this->drupalGet("user/" . $this->webUser->id() . "/edit");
-    $this->submitForm($edit, 'Save');
+    $user = User::load($this->webUser->id());
+    $user->set('preferred_langcode', 'fr');
+    $user->save();
 
     // Check that the English alias works. In this situation French is the
     // current UI and content language, while URL language is English (since we
@@ -165,9 +161,7 @@ public function testAliasTranslation(): void {
     $this->assertSession()->pageTextContains($english_node_french_translation->body->value);
 
     // Disable URL language negotiation.
-    $edit = ['language_interface[enabled][language-url]' => FALSE];
-    $this->drupalGet('admin/config/regional/language/detection');
-    $this->submitForm($edit, 'Save settings');
+    $this->container->get('language_negotiator')->saveConfiguration(LanguageInterface::TYPE_URL, [LanguageNegotiationUrl::METHOD_ID => FALSE]);
 
     // Check that the English alias still works.
     $this->drupalGet($english_alias);