diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 401c13e337b3b36deb730fd0c66e0c34cca1b9f8..ed70d56e6f1c9ae4f6d183fc39d29d8f0f33fe33 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -120,13 +120,13 @@ composer:
     - rm expand_composer_json.php
     - composer create-project --no-install drupal/recommended-project:$_TARGET_CORE ./composer/Template/RecommendedProject
     - composer create-project --no-install drupal/legacy-project:$_TARGET_CORE ./composer/Template/LegacyProject
-    - composer run core-convert --working-dir=./modules/contrib/automatic_updates -- $PWD --gitlabci
+    - composer run core-convert --working-dir=./modules/contrib/automatic_updates -- $PWD --gitlabci --core_target_branch=10.1.x
     - test -d ./core/modules/package_manager
     - test -d ./core/modules/auto_updates
     - rm -r -f ./modules/contrib
 
 phpunit:
-  extends: .phpunit-base
+  stage: test
   parallel:
     matrix:
       - MODULE:
@@ -135,9 +135,74 @@ phpunit:
         TEST_TYPE:
           - PHPUnit-Unit
           - PHPUnit-Kernel
+          - PHPUnit-Functional
+  rules:
+    - if: '$SKIP_PHPUNIT == "1"'
+      when: never
+    - when: on_success
+  needs: [ "composer" ]
+  extends:
+    - .test-variables
   variables:
-    COMPOSER_HOME: '$CI_PROJECT_DIR/.composer'
-    _PHPUNIT_CONCURRENT: '1'
-    _PHPUNIT_EXTRA: '--types $TEST_TYPE --module $MODULE'
+    SYMFONY_DEPRECATIONS_HELPER: weak
     _PHPUNIT_TESTGROUPS: '--verbose'
-    _WEB_ROOT: '$CI_PROJECT_DIR'
+    _PHPUNIT_EXTRA: '--types $TEST_TYPE --module $MODULE'
+    SIMPLETEST_BASE_URL: 'http://localhost'
+  services:
+    - name: $_CONFIG_DOCKERHUB_ROOT/$_TARGET_DB_TYPE-$_TARGET_DB_VERSION:production
+      alias: database
+    - name: $_CONFIG_DOCKERHUB_ROOT/chromedriver:production
+      alias: chrome
+      entrypoint:
+        - chromedriver
+        - "--no-sandbox"
+        - "--log-path=/tmp/chromedriver.log"
+        - "--verbose"
+        - "--whitelisted-ips="
+  script:
+    # Set up the web server. This is a copy of the &setup-websever anchor from the upstream template.
+    - mkdir -p $BROWSERTEST_OUTPUT_DIRECTORY
+    - mkdir -p $CI_PROJECT_DIR/sites/default/files/simpletest
+    - chmod -R 755 $BROWSERTEST_OUTPUT_DIRECTORY
+    - chmod -R 755 $CI_PROJECT_DIR/sites/default/files/simpletest
+    - sudo rm -r -f /var/www/html
+    - ln -s $CI_PROJECT_DIR /var/www/html
+    - chown -R www-data:www-data $CI_PROJECT_DIR
+    - service apache2 start
+    - curl $SIMPLETEST_BASE_URL
+    # Set up the database. This is a copy of the &simpletest-db anchor from the upstream template.
+    - |
+      [[ $_TARGET_DB_TYPE == "sqlite" ]] && export SIMPLETEST_DB=sqlite://localhost/sites/default/files/db.sqlite
+      [[ $_TARGET_DB_TYPE == "mysql" ]] && export SIMPLETEST_DB=mysql://$MYSQL_USER:$MYSQL_PASSWORD@database/$MYSQL_DATABASE
+      [[ $_TARGET_DB_TYPE == "pgsql" ]] && export SIMPLETEST_DB=pgsql://$POSTGRES_USER:$POSTGRES_PASSWORD@database/$POSTGRES_DB
+    # Provide some context on the test run.
+    - vendor/bin/drush status
+    # Remove all spaces from _PHPUNIT_TESTGROUPS for reliable checking and to
+    # ensure only one string is passed to bin/phpunit or run-tests.sh
+    - _PHPUNIT_TESTGROUPS=$(echo $_PHPUNIT_TESTGROUPS | sed -e 's/ //g')
+    # Execute tests.
+    - |
+      # if _PHPUNIT_TESTGROUPS is blank then do not add anything, because the test group will be handled by the matrix.
+      # if _PHPUNIT_TESTGROUPS is --all then add --directory modules/custom/$CI_PROJECT_NAME
+      # Otherwise add $_PHPUNIT_TESTGROUPS (without the --group)
+      WHAT_TO_RUN=$([[ "$_PHPUNIT_TESTGROUPS" == "" ]] && echo "" || ([[ "$_PHPUNIT_TESTGROUPS" == "--all" ]] && echo "--directory modules/custom/$CI_PROJECT_NAME" || echo "$_PHPUNIT_TESTGROUPS"))
+      echo "_PHPUNIT_CONCURRENT=$_PHPUNIT_CONCURRENT, _PHPUNIT_TESTGROUPS=$_PHPUNIT_TESTGROUPS, WHAT_TO_RUN=$WHAT_TO_RUN"
+      echo "executing: sudo SYMFONY_DEPRECATIONS_HELPER='$SYMFONY_DEPRECATIONS_HELPER' MINK_DRIVER_ARGS_WEBDRIVER='$MINK_DRIVER_ARGS_WEBDRIVER' -u www-data php $CI_PROJECT_DIR/core/scripts/run-tests.sh --color --keep-results --concurrency '32' --repeat '1' --sqlite 'sites/default/files/.sqlite' --dburl $SIMPLETEST_DB --url $SIMPLETEST_BASE_URL --verbose --non-html $WHAT_TO_RUN $_PHPUNIT_EXTRA"
+      sudo SYMFONY_DEPRECATIONS_HELPER="$SYMFONY_DEPRECATIONS_HELPER" MINK_DRIVER_ARGS_WEBDRIVER="$MINK_DRIVER_ARGS_WEBDRIVER" -u www-data php $CI_PROJECT_DIR/core/scripts/run-tests.sh --color --keep-results --concurrency "32" --repeat "1" --sqlite "sites/default/files/.sqlite" --dburl $SIMPLETEST_DB --url $SIMPLETEST_BASE_URL --xml $CI_PROJECT_DIR/sites/default/files/simpletest --verbose --non-html $WHAT_TO_RUN $_PHPUNIT_EXTRA || EXIT_CODE=$?
+    - cp /var/log/apache2/test.apache.access.log $CI_PROJECT_DIR/apache.access.log.txt
+    - cp /var/log/apache2/test.apache.error.log $CI_PROJECT_DIR/apache.error.log.txt
+    - exit $EXIT_CODE
+  artifacts:
+    expire_in: 6 mos
+    expose_as: 'junit-browser_output-apache_log'
+    when: always
+    reports:
+      junit:
+        - junit.xml
+        - $CI_PROJECT_DIR/$_WEB_ROOT/sites/default/files/simpletest/phpunit-*.xml
+    paths:
+      - junit.xml
+      - $CI_PROJECT_DIR/$_WEB_ROOT/sites/default/files/simpletest
+      - $BROWSERTEST_OUTPUT_DIRECTORY
+      - apache.access.log.txt
+      - apache.error.log.txt
diff --git a/package_manager/tests/src/Functional/FailureMarkerRequirementTest.php b/package_manager/tests/src/Functional/FailureMarkerRequirementTest.php
index 0d29d29340db491ec39476387b6d4d4eafb63355..13f4d52318528386da3af0a97ee61c33d0fc980d 100644
--- a/package_manager/tests/src/Functional/FailureMarkerRequirementTest.php
+++ b/package_manager/tests/src/Functional/FailureMarkerRequirementTest.php
@@ -67,7 +67,7 @@ class FailureMarkerRequirementTest extends BrowserTestBase {
     $this->drupalGet('/admin/reports/status');
     $assert_session = $this->assertSession();
     $assert_session->pageTextContains('Failed update detected');
-    $assert_session->pageTextContains($message);
+    $assert_session->pageTextContains($message->render());
   }
 
 }
diff --git a/scripts/src/ConverterCommand.php b/scripts/src/ConverterCommand.php
index 900d7f0e627d1e6a6a0fdf11deb32eb03c7347e4..5414896b72622ace679aca231b2d9ee0961f02c1 100644
--- a/scripts/src/ConverterCommand.php
+++ b/scripts/src/ConverterCommand.php
@@ -186,6 +186,12 @@ class ConverterCommand extends Command {
       // This allows line that only need to be in the core MR to be commented
       // out.
       '// CORE_MR_ONLY:' => '',
+      // Note this following line could leave 'CORE_MR_ONLY-10.1.x' comments in
+      // the core MR, but we currently do not have any. Leaving
+      // 'CORE_MR_ONLY-11.x' in is fine because we don't actually convert to
+      // 10.1.x for a core MR. We might want to just remove the whole line if
+      // it does not match the core target branch.
+      "// CORE_MR_ONLY-{$this->core_target_branch}:" => '',
       $old_machine_name => $new_machine_name,
       'AutomaticUpdates' => 'AutoUpdates',
       "__DIR__ . '/../../../package_manager/tests" => "__DIR__ . '/../../../../Xpackage_manager/tests",
diff --git a/tests/src/Functional/HelpPageTest.php b/tests/src/Functional/HelpPageTest.php
index 301804c2ee8a44b9df55f331f96eaa76d82df8fe..31d8df12bf061a3c7416fc3fee1822496541746a 100644
--- a/tests/src/Functional/HelpPageTest.php
+++ b/tests/src/Functional/HelpPageTest.php
@@ -33,7 +33,7 @@ class HelpPageTest extends AutomaticUpdatesFunctionalTestBase {
   public function testHelpPage(): void {
     $user = $this->createUser([
       'access administration pages',
-      // CORE_MR_ONLY:'access help pages',
+      // CORE_MR_ONLY-11.x:'access help pages',
     ]);
     $this->drupalLogin($user);
     $this->drupalGet('/admin/help/automatic_updates');
diff --git a/tests/src/Functional/PreUpdateTest.php b/tests/src/Functional/PreUpdateTest.php
index 41a9c235cef8cf55f0d7ce4fc553123895df1c66..b255e16b1f5148bab03c5515de36ea60e253784f 100644
--- a/tests/src/Functional/PreUpdateTest.php
+++ b/tests/src/Functional/PreUpdateTest.php
@@ -27,7 +27,7 @@ class PreUpdateTest extends UpdaterFormTestBase {
     $this->checkForUpdates();
     $this->drupalGet('/admin/reports/updates/update');
     $assert_session->pageTextContains('No update available');
-    $assert_session->pageTextContains($message);
+    $assert_session->pageTextContains($message->render());
   }
 
   /**
diff --git a/tests/src/Functional/StagedDatabaseUpdateTest.php b/tests/src/Functional/StagedDatabaseUpdateTest.php
index 071d404872228e195243c5f09fb04cb42a1b4895..555ee0c490e038be439af5a303eabecad63c1575 100644
--- a/tests/src/Functional/StagedDatabaseUpdateTest.php
+++ b/tests/src/Functional/StagedDatabaseUpdateTest.php
@@ -65,8 +65,8 @@ class StagedDatabaseUpdateTest extends UpdaterFormTestBase {
     $this->drupalGet('/admin/modules/update');
     // The warning should be visible.
     $assert_session = $this->assertSession();
-    $assert_session->pageTextContains(reset($messages));
-    $assert_session->pageTextNotContains($cached_message);
+    $assert_session->pageTextContains((reset($messages))->render());
+    $assert_session->pageTextNotContains($cached_message->render());
     $page->pressButton('Update to 9.8.1');
     $this->checkForMetaRefresh();
     $this->assertUpdateStagedTimes(1);
@@ -79,7 +79,7 @@ class StagedDatabaseUpdateTest extends UpdaterFormTestBase {
     // a warning about pending database updates. Once the staged changes have
     // been applied, we should be redirected to update.php, where neither
     // warning should be visible.
-    $assert_session->pageTextContains(reset($messages));
+    $assert_session->pageTextContains((reset($messages))->render());
 
     // Ensure that a list of pending database updates is visible, along with a
     // short explanation, in the warning messages.
@@ -92,7 +92,7 @@ class StagedDatabaseUpdateTest extends UpdaterFormTestBase {
     else {
       $assert_session->checkboxChecked('maintenance_mode');
     }
-    $assert_session->pageTextNotContains($cached_message);
+    $assert_session->pageTextNotContains($cached_message->render());
     $page->pressButton('Continue');
     $this->checkForMetaRefresh();
     // Confirm that the site was in maintenance before the update was applied.
@@ -109,8 +109,8 @@ class StagedDatabaseUpdateTest extends UpdaterFormTestBase {
     $assert_session->linkByHrefExists('/update.php');
     $page->clickLink('database update script');
     $assert_session->addressEquals('/update.php');
-    $assert_session->pageTextNotContains($cached_message);
-    $assert_session->pageTextNotContains(reset($messages));
+    $assert_session->pageTextNotContains($cached_message->render());
+    $assert_session->pageTextNotContains((reset($messages))->render());
     $assert_session->pageTextNotContains($possible_update_message);
     $this->assertTrue($state->get('system.maintenance_mode'));
     $page->clickLink('Continue');
@@ -121,7 +121,7 @@ class StagedDatabaseUpdateTest extends UpdaterFormTestBase {
     $assert_session->pageTextContains('Updates were attempted.');
     // Confirm the site was returned to the original maintenance module state.
     $this->assertSame($state->get('system.maintenance_mode'), $maintenance_mode_on);
-    $assert_session->pageTextNotContains($cached_message);
+    $assert_session->pageTextNotContains($cached_message->render());
   }
 
 }
diff --git a/tests/src/Functional/StatusCheckTest.php b/tests/src/Functional/StatusCheckTest.php
index f49707fbca50d67424f628e9e6609330cc7e98c4..a5acc96603ce493ef2f97eb9bf5914601cad8872 100644
--- a/tests/src/Functional/StatusCheckTest.php
+++ b/tests/src/Functional/StatusCheckTest.php
@@ -108,7 +108,7 @@ class StatusCheckTest extends AutomaticUpdatesFunctionalTestBase {
     // Cron Updates will always be disabled on installation as per
     // automatic_updates.settings.yml .
     $session = $this->assertSession();
-    $session->pageTextNotContains($expected_result->messages[0]);
+    $session->pageTextNotContains($expected_result->messages[0]->render());
     $session->linkExists('See status report for more details.');
   }
 
@@ -301,11 +301,11 @@ class StatusCheckTest extends AutomaticUpdatesFunctionalTestBase {
     // Confirm on admin pages that the summary will be displayed.
     $this->assertSame(SystemManager::REQUIREMENT_ERROR, $expected_results['1 error']->severity);
     $assert->pageTextContainsOnce((string) $expected_results['1 error']->summary);
-    $assert->pageTextNotContains($expected_results['1 error']->messages[0]);
+    $assert->pageTextNotContains($expected_results['1 error']->messages[0]->render());
     // Warnings are not displayed on admin pages if there are any errors.
     $this->assertSame(SystemManager::REQUIREMENT_WARNING, $expected_results['1 warning']->severity);
-    $assert->pageTextNotContains($expected_results['1 warning']->messages[0]);
-    $assert->pageTextNotContains($expected_results['1 warning']->summary);
+    $assert->pageTextNotContains($expected_results['1 warning']->messages[0]->render());
+    $assert->pageTextNotContains($expected_results['1 warning']->summary->render());
 
     // Confirm the status check event is not dispatched on every admin page
     // load.
@@ -315,10 +315,10 @@ class StatusCheckTest extends AutomaticUpdatesFunctionalTestBase {
     ];
     TestSubscriber1::setTestResult($unexpected_results, StatusCheckEvent::class);
     $this->drupalGet(Url::fromRoute($admin_route));
-    $assert->pageTextNotContains($unexpected_results['2 errors']->summary);
-    $assert->pageTextContainsOnce((string) $expected_results['1 error']->summary);
-    $assert->pageTextNotContains($unexpected_results['2 warnings']->summary);
-    $assert->pageTextNotContains($expected_results['1 warning']->messages[0]);
+    $assert->pageTextNotContains($unexpected_results['2 errors']->summary->render());
+    $assert->pageTextContainsOnce((string) $expected_results['1 error']->summary->render());
+    $assert->pageTextNotContains($unexpected_results['2 warnings']->summary->render());
+    $assert->pageTextNotContains($expected_results['1 warning']->messages[0]->render());
 
     // Confirm the updated results will be shown when status checks are run
     // again.
@@ -328,15 +328,15 @@ class StatusCheckTest extends AutomaticUpdatesFunctionalTestBase {
     // Confirm on admin pages only the error summary will be displayed if there
     // is more than 1 error.
     $this->assertSame(SystemManager::REQUIREMENT_ERROR, $expected_results['2 errors']->severity);
-    $assert->pageTextNotContains($expected_results['2 errors']->messages[0]);
-    $assert->pageTextNotContains($expected_results['2 errors']->messages[1]);
-    $assert->pageTextContainsOnce($expected_results['2 errors']->summary);
+    $assert->pageTextNotContains($expected_results['2 errors']->messages[0]->render());
+    $assert->pageTextNotContains($expected_results['2 errors']->messages[1]->render());
+    $assert->pageTextContainsOnce($expected_results['2 errors']->summary->render());
     $assert->pageTextContainsOnce(static::$errorsExplanation);
     // Warnings are not displayed on admin pages if there are any errors.
     $this->assertSame(SystemManager::REQUIREMENT_WARNING, $expected_results['2 warnings']->severity);
-    $assert->pageTextNotContains($expected_results['2 warnings']->messages[0]);
-    $assert->pageTextNotContains($expected_results['2 warnings']->messages[1]);
-    $assert->pageTextNotContains($expected_results['2 warnings']->summary);
+    $assert->pageTextNotContains($expected_results['2 warnings']->messages[0]->render());
+    $assert->pageTextNotContains($expected_results['2 warnings']->messages[1]->render());
+    $assert->pageTextNotContains($expected_results['2 warnings']->summary->render());
 
     $expected_results = [$this->createValidationResult(SystemManager::REQUIREMENT_WARNING, 2)];
     TestSubscriber1::setTestResult($expected_results, StatusCheckEvent::class);
@@ -346,10 +346,10 @@ class StatusCheckTest extends AutomaticUpdatesFunctionalTestBase {
     // are no errors.
     $assert->pageTextNotContains(static::$errorsExplanation);
     $this->assertSame(SystemManager::REQUIREMENT_WARNING, $expected_results[0]->severity);
-    $assert->pageTextNotContains($expected_results[0]->messages[0]);
-    $assert->pageTextNotContains($expected_results[0]->messages[1]);
+    $assert->pageTextNotContains($expected_results[0]->messages[0]->render());
+    $assert->pageTextNotContains($expected_results[0]->messages[1]->render());
     $assert->pageTextContainsOnce(static::$warningsExplanation);
-    $assert->pageTextContainsOnce($expected_results[0]->summary);
+    $assert->pageTextContainsOnce($expected_results[0]->summary->render());
 
     $expected_results = [$this->createValidationResult(SystemManager::REQUIREMENT_WARNING)];
     TestSubscriber1::setTestResult($expected_results, StatusCheckEvent::class);
@@ -360,8 +360,8 @@ class StatusCheckTest extends AutomaticUpdatesFunctionalTestBase {
     // pages if there is only 1 warning and there are no errors.
     $this->assertSame(SystemManager::REQUIREMENT_WARNING, $expected_results[0]->severity);
     $assert->pageTextContainsOnce(static::$warningsExplanation);
-    $assert->pageTextContainsOnce((string) $expected_results[0]->summary);
-    $assert->pageTextNotContains($expected_results[0]->messages[0]);
+    $assert->pageTextContainsOnce((string) $expected_results[0]->summary->render());
+    $assert->pageTextNotContains($expected_results[0]->messages[0]->render());
 
     // Confirm status check messages are not displayed when cron updates are
     // disabled.
@@ -371,7 +371,7 @@ class StatusCheckTest extends AutomaticUpdatesFunctionalTestBase {
     $this->drupalGet('admin/structure');
     $this->checkForMetaRefresh();
     $assert->pageTextNotContains(static::$warningsExplanation);
-    $assert->pageTextNotContains($expected_results[0]->messages[0]);
+    $assert->pageTextNotContains($expected_results[0]->messages[0]->render());
   }
 
   /**
@@ -399,7 +399,7 @@ class StatusCheckTest extends AutomaticUpdatesFunctionalTestBase {
     TestSubscriber2::setTestResult($expected_results, StatusCheckEvent::class);
     $this->container->get('module_installer')->install(['automatic_updates_test_status_checker']);
     $this->drupalGet('admin/structure');
-    $assert->pageTextContainsOnce((string) $expected_results[0]->summary);
+    $assert->pageTextContainsOnce((string) $expected_results[0]->summary->render());
 
     // Confirm that installing a module runs the checkers, even if the new
     // module does not provide any validators.
@@ -414,9 +414,9 @@ class StatusCheckTest extends AutomaticUpdatesFunctionalTestBase {
     // because validators will be run if needed on the status report.
     $this->drupalGet('admin/structure');
     // Confirm that new checker messages are displayed.
-    $assert->pageTextNotContains($previous_results[0]->messages[0]);
-    $assert->pageTextNotContains($expected_results['2 errors']->messages[0]);
-    $assert->pageTextContainsOnce($expected_results['2 errors']->summary);
+    $assert->pageTextNotContains($previous_results[0]->messages[0]->render());
+    $assert->pageTextNotContains($expected_results['2 errors']->messages[0]->render());
+    $assert->pageTextContainsOnce($expected_results['2 errors']->summary->render());
   }
 
   /**
@@ -438,22 +438,22 @@ class StatusCheckTest extends AutomaticUpdatesFunctionalTestBase {
     // Check for message on 'admin/structure' instead of the status report
     // because checkers will be run if needed on the status report.
     $this->drupalGet('admin/structure');
-    $assert->pageTextContainsOnce($expected_results_1[0]->summary);
-    $assert->pageTextContainsOnce($expected_results_2[0]->summary);
+    $assert->pageTextContainsOnce($expected_results_1[0]->summary->render());
+    $assert->pageTextContainsOnce($expected_results_2[0]->summary->render());
 
     // Confirm that when on of the module is uninstalled the other module's
     // checker result is still displayed.
     $this->container->get('module_installer')->uninstall(['automatic_updates_test_status_checker']);
     $this->drupalGet('admin/structure');
-    $assert->pageTextNotContains($expected_results_2[0]->summary);
-    $assert->pageTextContainsOnce($expected_results_1[0]->summary);
+    $assert->pageTextNotContains($expected_results_2[0]->summary->render());
+    $assert->pageTextContainsOnce($expected_results_1[0]->summary->render());
 
     // Confirm that when on of the module is uninstalled the other module's
     // checker result is still displayed.
     $this->container->get('module_installer')->uninstall(['automatic_updates_test']);
     $this->drupalGet('admin/structure');
-    $assert->pageTextNotContains($expected_results_2[0]->messages[0]);
-    $assert->pageTextNotContains($expected_results_1[0]->messages[0]);
+    $assert->pageTextNotContains($expected_results_2[0]->messages[0]->render());
+    $assert->pageTextNotContains($expected_results_1[0]->messages[0]->render());
   }
 
   /**
@@ -483,10 +483,10 @@ class StatusCheckTest extends AutomaticUpdatesFunctionalTestBase {
     // The error should be persistently visible, even after the checker stops
     // flagging it.
     $this->drupalGet('/admin/structure');
-    $assert_session->pageTextContains($message);
+    $assert_session->pageTextContains($message->render());
     TestSubscriber1::setTestResult(NULL, StatusCheckEvent::class);
     $this->getSession()->reload();
-    $assert_session->pageTextContains($message);
+    $assert_session->pageTextContains($message->render());
 
     // Do the update; we don't expect any errors or special conditions to appear
     // during it. The Update button is displayed because the form does its own
@@ -498,7 +498,7 @@ class StatusCheckTest extends AutomaticUpdatesFunctionalTestBase {
     // page, to confirm that the updater form is not discarding the previous
     // results by doing its checks.
     $this->drupalGet('/admin/structure');
-    $assert_session->pageTextContains($message);
+    $assert_session->pageTextContains($message->render());
     // Proceed with the update.
     $this->drupalGet('/admin/modules/update');
     $page->pressButton('Update to 9.8.1');
@@ -510,7 +510,7 @@ class StatusCheckTest extends AutomaticUpdatesFunctionalTestBase {
 
     // The warning should not be visible anymore.
     $this->drupalGet('/admin/structure');
-    $assert_session->pageTextNotContains($message);
+    $assert_session->pageTextNotContains($message->render());
   }
 
   /**
@@ -535,22 +535,22 @@ class StatusCheckTest extends AutomaticUpdatesFunctionalTestBase {
     // flagging it.
     $this->drupalGet('/admin/structure');
     $assert_session = $this->assertSession();
-    $assert_session->pageTextContains($message);
+    $assert_session->pageTextContains($message->render());
     TestSubscriber1::setTestResult(NULL, StatusCheckEvent::class);
     $session = $this->getSession();
     $session->reload();
-    $assert_session->pageTextContains($message);
+    $assert_session->pageTextContains($message->render());
 
     $config = $this->config('automatic_updates.settings');
     // If we disable notifications, stored results should not be cleared.
     $config->set('status_check_mail', StatusCheckMailer::DISABLED)->save();
     $session->reload();
-    $assert_session->pageTextContains($message);
+    $assert_session->pageTextContains($message->render());
 
     // If we re-enable them, though, they should be cleared.
     $config->set('status_check_mail', StatusCheckMailer::ERRORS_ONLY)->save();
     $session->reload();
-    $assert_session->pageTextNotContains($message);
+    $assert_session->pageTextNotContains($message->render());
     $no_results_message = 'Your site has not recently run an update readiness check.';
     $assert_session->pageTextContains($no_results_message);
 
@@ -559,10 +559,10 @@ class StatusCheckTest extends AutomaticUpdatesFunctionalTestBase {
     TestSubscriber1::setTestResult([$result], StatusCheckEvent::class);
     $session->getPage()->clickLink('Rerun readiness checks now');
     $this->drupalGet('/admin/structure');
-    $assert_session->pageTextContains($message);
+    $assert_session->pageTextContains($message->render());
     $config->set('status_check_mail', StatusCheckMailer::ALL)->save();
     $session->reload();
-    $assert_session->pageTextNotContains($message);
+    $assert_session->pageTextNotContains($message->render());
     $assert_session->pageTextContains($no_results_message);
   }
 
@@ -607,7 +607,7 @@ class StatusCheckTest extends AutomaticUpdatesFunctionalTestBase {
     $session->reload();
     $assert_session = $this->assertSession();
     $assert_session->pageTextContainsOnce('Unattended updates are configured to run via the console, but do not appear to have run recently.');
-    $assert_session->pageTextNotContains((string) $result->messages[0]);
+    $assert_session->pageTextNotContains((string) $result->messages[0]->render());
   }
 
   /**
diff --git a/tests/src/Functional/SuccessfulUpdateTest.php b/tests/src/Functional/SuccessfulUpdateTest.php
index eefbbfc2261d5849565e873c8aea8718deec2c18..ae2730ed7b9b22cb7625e26568439a48bd73eb11 100644
--- a/tests/src/Functional/SuccessfulUpdateTest.php
+++ b/tests/src/Functional/SuccessfulUpdateTest.php
@@ -61,7 +61,7 @@ class SuccessfulUpdateTest extends UpdaterFormTestBase {
     $cached_message = $this->setAndAssertCachedMessage();
 
     $this->drupalGet($update_form_url);
-    $assert_session->pageTextNotContains($cached_message);
+    $assert_session->pageTextNotContains($cached_message->render());
     $page->pressButton('Update to 9.8.1');
     $this->checkForMetaRefresh();
     $this->assertUpdateStagedTimes(1);
@@ -71,7 +71,7 @@ class SuccessfulUpdateTest extends UpdaterFormTestBase {
     $page->pressButton('Continue');
     $this->checkForMetaRefresh();
     $assert_session->addressEquals('/admin/reports/updates');
-    $assert_session->pageTextNotContains($cached_message);
+    $assert_session->pageTextNotContains($cached_message->render());
     // Confirm that the site was in maintenance before the update was applied.
     // @see \Drupal\package_manager_test_validation\EventSubscriber\TestSubscriber::handleEvent()
     $this->assertTrue($state->get(PreApplyEvent::class . '.system.maintenance_mode'));
diff --git a/tests/src/Functional/UpdateErrorTest.php b/tests/src/Functional/UpdateErrorTest.php
index 971573f863f4551212426d8e2fcc23ce8f1efa5d..02f520f849b78b3d89875e57eb2b3d61584db655 100644
--- a/tests/src/Functional/UpdateErrorTest.php
+++ b/tests/src/Functional/UpdateErrorTest.php
@@ -121,7 +121,7 @@ class UpdateErrorTest extends UpdaterFormTestBase {
     $this->assertStatusMessageContainsResult($expected_results[0]);
     $assert_session->pageTextContainsOnce(static::$errorsExplanation);
     $assert_session->pageTextNotContains(static::$warningsExplanation);
-    $assert_session->pageTextNotContains($cached_message);
+    $assert_session->pageTextNotContains($cached_message->render());
     TestSubscriber1::setTestResult(NULL, StatusCheckEvent::class);
 
     // Set up an error with one message and a summary. We should see both when
@@ -133,7 +133,7 @@ class UpdateErrorTest extends UpdaterFormTestBase {
     $this->assertStatusMessageContainsResult($expected_result);
     $assert_session->pageTextContainsOnce(static::$errorsExplanation);
     $assert_session->pageTextNotContains(static::$warningsExplanation);
-    $assert_session->pageTextNotContains($cached_message);
+    $assert_session->pageTextNotContains($cached_message->render());
     TestSubscriber1::setTestResult(NULL, StatusCheckEvent::class);
   }
 
diff --git a/tests/src/Functional/UpdaterFormTestBase.php b/tests/src/Functional/UpdaterFormTestBase.php
index 1b4b6e9b104fc16eec1da7765196d297eaf435e7..30b8cf851e2dac2130ac4dc9a78e1e95147526d8 100644
--- a/tests/src/Functional/UpdaterFormTestBase.php
+++ b/tests/src/Functional/UpdaterFormTestBase.php
@@ -53,7 +53,7 @@ abstract class UpdaterFormTestBase extends AutomaticUpdatesFunctionalTestBase {
       'administer modules',
       'access site reports',
       'view update notifications',
-      // CORE_MR_ONLY:'access help pages',
+      // CORE_MR_ONLY-11.x:'access help pages',
     ]);
     $this->drupalLogin($user);
     $this->checkForUpdates();
@@ -82,7 +82,7 @@ abstract class UpdaterFormTestBase extends AutomaticUpdatesFunctionalTestBase {
     $this->drupalGet('/admin/reports/status');
     $this->clickLink('Rerun readiness checks');
     $this->drupalGet('/admin');
-    $this->assertSession()->pageTextContains($message);
+    $this->assertSession()->pageTextContains($message->render());
     // Clear the results so the only way the message could appear on the pages
     // used for the update process is if they show the cached results.
     TestSubscriber1::setTestResult(NULL, StatusCheckEvent::class);