diff --git a/browsertest-convert.php b/browsertest-convert.php
new file mode 100644
index 0000000..65c0dbe
--- /dev/null
+++ b/browsertest-convert.php
@@ -0,0 +1,617 @@
+<?php
+
+$modules = [
+'action',
+'content_translation',
+'language',
+'serialization',
+'aggregator',
+'contextual',
+'link',
+'shortcut',
+'automated_cron',
+'datetime',
+'locale',
+'simpletest',
+'ban',
+'datetime_range',
+'menu_link_content',
+'statistics',
+'basic_auth',
+'dblog',
+'menu_ui',
+'syslog',
+'big_pipe',
+'dynamic_page_cache',
+'migrate',
+'system',
+'block',
+'editor',
+'migrate_drupal',
+'taxonomy',
+'block_content',
+'entity_reference',
+'migrate_drupal_ui',
+'telephone',
+'block_place',
+'field',
+'node',
+'text',
+'book',
+'field_ui',
+'options ',
+'toolbar',
+'breakpoint',
+'file',
+'outside_in',
+'tour',
+'ckeditor',
+'filter',
+'page_cache',
+'tracker',
+'color',
+'forum',
+'path',
+'update',
+'comment',
+'hal',
+'quickedit',
+'user',
+'config',
+'help',
+'rdf',
+'views',
+'config_translation',
+'history',
+'responsive_image',
+'views_ui',
+'contact',
+'image',
+'rest',
+'content_moderation',
+'inline_form_errors',
+'search',
+];
+
+$excluded_tests = [
+  // Exclude some manual ones.
+  'FilterFormatAccessTest',
+  'AddFeedTest',
+  'AggregatorAdminTest',
+  'AggregatorCronTest',
+  'AggregatorRenderingTest',
+  // https://www.drupal.org/node/2795049
+  'HistoryTest',
+  // https://www.drupal.org/node/2795051
+  'ImageFieldDefaultImagesTest',
+  'NodeEntityViewModeAlterTest',
+  'SummaryLengthTest',
+  // https://www.drupal.org/node/2795041
+  'DisplayBlockTest',
+  'ConfigTranslationUiTest',
+  'ContextualDynamicContextTest',
+  'EditorSecurityTest',
+  'QuickEditAutocompleteTermTest',
+  'QuickEditLoadingTest',
+  'DisplayTest',
+  // https://www.drupal.org/node/2795037
+  'AggregatorCronTest',
+  'FeedLanguageTest',
+  'DbLogTest',
+  'reEnableModuleFieldTest',
+  'LocaleUpdateCronTest',
+  'SearchCommentTest',
+  'SearchNumberMatchingTest',
+  'SearchNumbersTest',
+  'SearchRankingTest',
+  'StatisticsAdminTest',
+  'CronRunTest',
+  'FloodTest',
+  'SearchIntegrationTest',
+  'SearchMultilingualTest',
+  // https://www.drupal.org/node/2795071
+  'NodeAccessBaseTableTest',
+  'BlockTest',
+  'BlockUiTest',
+  'BookBreadcrumbTest',
+  'BookTest',
+  'ContentTranslationEnableTest',
+  'LanguageSelectorTranslatableTest',
+  'NodeAdminTest',
+  'NodeViewTest',
+  'ShortcutLinksTest',
+  'TermTest',
+  'UserAccountLinksTest',
+
+  // @todo ... there are more
+
+  // https://www.drupal.org/node/2795073
+  'VocabularyUiTest',
+  'SimpleTestBrowserTest',
+  // https://www.drupal.org/node/2738567
+  'CommentPreviewTest',
+  'ConfigImportUploadTest',
+  'ContentTranslationSyncImageTest',
+  'EditorUploadImageScaleTest',
+  'EntityReferenceFileUploadTest',
+  'FileFieldDisplayTest',
+  'FileOnTranslatedEntityTest',
+  'PrivateFileOnTranslatedEntityTest',
+  'SaveUploadTest',
+  'FilterHtmlImageSecureTest',
+  'ImageFieldDefaultImagesTest',
+  'ImageFieldDisplayTest',
+  'FileMoveTest',
+  'ImageAdminStylesTest',
+  'ImageDimensionsTest',
+  'ImageFieldValidateTest',
+  'ImageOnTranslatedEntityTest',
+  'ImageStyleFlushTest',
+  'ImageStylesPathAndUrlTest',
+  'ImageThemeFunctionTest',
+  'PagePreviewTest',
+  'QuickEditLoadingTest',
+  'ImageFieldAttributesTest',
+  'ResponsiveImageFieldDisplayTest',
+  'StateValuesCleanAdvancedTest',
+  'ThemeTest',
+  'TaxonomyImageTest',
+  'TextFieldTest',
+  'UpdateUploadTest',
+  'UserPasswordResetTest',
+  'UserPictureTest',
+  'ToolkitTest',
+
+  // https://www.drupal.org/node/2795085
+  'BlockInstallTest',
+  'PageCacheTest',
+  'SearchPageCacheTagsTest',
+  'EarlyRenderingControllerTest',
+  'CacheabilityMetadataConfigOverrideIntegrationTest',
+  'ContactPersonalTest',
+  'ContentTranslationWorkflowsTest',
+  'MenuNodeTest',
+  'NodeAccessAutoBubblingTest',
+  'NodeTypeTest',
+  'UrlBubbleableMetadataBubblingTest',
+  'AccessDeniedTest',
+  'PageNotFoundTest',
+
+
+  // Error tests, are tricky
+  'UncaughtExceptionTest',
+
+  // https://www.drupal.org/node/2796223
+  'ThemeTest',
+  'FunctionsTest',
+
+
+  // https://www.drupal.org/node/2795093
+  'CKEditorAdminTest',
+  'CommentPagerTest',
+  'ConfigEntityTest',
+  'DateTimeFieldTest',
+  'DateRangeFieldTest',
+  'EditorAdminTest',
+  'BooleanFieldTest',
+  'BooleanFormatterSettingsTest',
+  'EntityReferenceAdminTest',
+  'NumberFieldTest',
+  'FormTest',
+  'NestedFormTest',
+  'ManageDisplayTest',
+  'FileFieldWidgetTest',
+  'FileManagedFileElementTest',
+  'ImageAdminStylesTest',
+  'ImageFieldDisplayTest',
+  'ResponsiveImageFieldUiTest',
+  'WebTestBase',
+  'AjaxFormCacheTest',
+  'AjaxFormPageCacheTest',
+  'AjaxInGroupTest',
+  'CommandsTest',
+  'DialogTest',
+  'ElementValidationTest',
+  'FormValuesTest',
+  'FrameworkTest',
+  'MultiFormTest',
+  'ElementsTableSelectTest',
+  'RebuildTest',
+  'UserPasswordResetTest',
+  'UserRegistrationTest',
+  'BasicTest',
+  'PreviewTest',
+  'RowUITest',
+  // https://www.drupal.org/node/2795111
+
+  'AddFeedTest',
+  'BigPipeTest',
+  'BlockRenderOrderTest',
+  'CommentBlockTest',
+  'CommentPreviewTest',
+  'CommentTestBase',
+  'CommentNonNodeTest',
+  'CommentTestBase',
+  'CommentRestExportTest',
+  'CommentUserNameTest',
+  'ConfigExportImportUITest',
+  'ConfigExportUITest',
+  'EditorAdminTest',
+  'EditorLoadingTest',
+  'ManageDisplayTest',
+  'FileListingTest',
+  'NumberFieldRdfaTest',
+  'StyleSerializerTest',
+  'FormTest',
+  'ThemeTest',
+  'RenderWebTest',
+  'SelectPagerDefaultTest',
+  'SelectTableSortDefaultTest',
+  'TemporaryQueryTest',
+  'LanguageSelectElementTest',
+  'DestinationTest',
+  'SessionAuthenticationTest',
+  'SessionTest',
+  'ShutdownFunctionsTest',
+  'EngineTwigTest',
+  'ThemeSuggestionsAlterTest',
+  'UpdateContribTest',
+  'UserBlocksTest',
+  'ViewsFormTest',
+  'ItemsPerPageTest',
+  'SortingTest',
+  'PreviewTest',
+
+  // https://www.drupal.org/node/2795543
+  'UserRoleAdminTest',
+
+  // Ignore batch tests, @todo issue
+  'Batch',
+  // https://www.drupal.org/node/2795579
+  'DisplayBlockTest',
+  'CommentRssTest',
+  'NodeTranslationUITest',
+  'BlockContentTranslationUITest',
+  'TermTranslationUITest',
+  'ShortcutTranslationUITest',
+  'CommentTranslationUITest',
+  'MenuLinkContentTranslationUITest',
+  'UserTranslationUITest',
+  'NodeBlockFunctionalTest',
+  'StyleSerializerTest',
+  'StatisticsReportsTest',
+  'TokenReplaceWebTest',
+  'ToolbarCacheContextsTest',
+  'TrackerTest',
+  'FieldWebTest',
+  'DisplayPageWebTest',
+  'ExposedFormTest',
+  'PagerTest',
+  'FrontPageTest',
+  'PageCacheTagsIntegrationTest',
+
+  // The conversion script has some issues with 'CommentTestBase'
+  'comment',
+  'CommentAttributesTest',
+
+  // https://www.drupal.org/node/2795601
+  'FormatDateTest',
+  // https://www.drupal.org/node/2795611
+  'ContainerRebuildWebTest',
+  'HtmlResponseAttachmentsTest',
+
+  // https://www.drupal.org/node/2795615
+  'LanguageUILanguageNegotiationTest',
+
+  // migrate_drupal_ui :  ¯\_(ツ)_/¯
+  'migrate_drupal_ui',
+
+  // Crazy tests
+  'InstallUninstallTest',
+  'PrepareUninstallTest',
+
+  // https://www.drupal.org/node/1841474
+  'rest',
+
+  // https://www.drupal.org/node/2796213
+  'basic_auth',
+
+
+
+  // Exclude update tests, they are their own beast.
+  'Update',
+  // Exclude views, as their test base needs adaption.
+  'views',
+  'views_ui',
+  // Exclude big_pipe, because its doing curl magic
+  'big_pipe',
+  // No web tests in serialization module.
+  'serialization',
+
+  // All other kind of issues
+  'BlockLanguageCacheTest',
+  'BlockSystemBrandingTest',
+  'BlockXssTest',
+  'BlockContentCreationTest',
+  'BlockContentListTest',
+  'BlockContentListViewsTest',
+  'BlockContentTypeTest',
+  'SessionExistsCacheContextTest',
+  'NoJavaScriptAnonymousTest',
+  'SimpleTestErrorCollectorTest',
+  'ConfigEntityFormOverrideTest',
+  'ConfigEntityListTest',
+  'ConfigFormOverrideTest',
+  'ConfigImportInstallProfileTest',
+  'ConfigImportUITest',
+  'ConfigInstallWebTest',
+  'ConfigSingleImportExportTest',
+  'LanguageNegotiationFormOverrideTest',
+  'ConfigTranslationOverviewTest',
+  'ContactSitewideTest',
+  'ContactStorageTest',
+  'ModerationStateNodeTest',
+  'ContentTestTranslationUITest',
+  'ContentTranslationContextualLinksTest',
+  'ContentTranslationSettingsTest',
+  'QuickEditIntegrationLoadingTest',
+  'EmailFieldTest',
+  'FieldDefaultValueCallbackTest',
+  'FieldImportDeleteUninstallUiTest',
+  'FieldUIDeleteTest',
+  'ManageFieldsTest',
+  'DownloadTest',
+  'FileFieldAnonymousSubmissionTest',
+  'FileFieldFormatterAccessTest',
+  'FileFieldPathTest',
+  'FileFieldRevisionTest',
+  'FileFieldRSSContentTest',
+  'FileFieldValidateTest',
+  'FilePrivateTest',
+  'FileTokenReplaceTest',
+  'FilterAdminTest',
+  'ElementsTableSelectTest',
+  'FormTest',
+  'AlterTest',
+  'CheckboxTest',
+  'ElementsLabelsTest',
+  'ElementsVerticalTabsTest',
+  'ElementTest',
+  'EmailTest',
+  'ProgrammaticTest',
+  'ResponseTest',
+  'StateValuesCleanTest',
+  'StorageTest',
+  'TriggeringElementTest',
+  'UrlTest',
+  'ValidationTest',
+  'ForumTest',
+  'ForumUninstallTest',
+  'TourHelpPageTest',
+  'LanguageConfigurationTest',
+  'LanguageListTest',
+  'LanguageLocaleListTest',
+  'LanguageSwitchingTest',
+  'LanguageUrlRewritingTest',
+  'LinkFieldTest',
+  'LocaleConfigTranslationImportTest',
+  'LocaleConfigTranslationTest',
+  'LocaleExportTest',
+  'LocaleImportFunctionalTest',
+  'LocaleJavascriptTranslationTest',
+  'LocalePluralFormatTest',
+  'LocaleTranslationUiTest',
+  'BreadcrumbTest',
+  'LocalActionTest',
+  'LocalTasksTest',
+  'MenuLanguageTest',
+  'MenuTest',
+  'VersionTest',
+  'NodeAccessRebuildNodeGrantsTest',
+  'NodeFieldMultilingualTest',
+  'NodeFormButtonsTest',
+  'NodeRevisionPermissionsTest',
+  'NodeRevisionsTest',
+  'NodeTitleTest',
+  'NodeTitleXSSTest',
+  'DefaultMetatagsTest',
+  'FieldRdfaDatatypeCallbackTest',
+  'ResponsiveImageAdminUITest',
+  'Routing\RouterTest',
+  'SearchLanguageTest',
+  'SearchPageTextTest',
+  'SearchPreprocessLangcodeTest',
+  'SessionHttpsTest',
+  'StackSessionHandlerIntegrationTest',
+  'ShortcutSetsTest',
+  'SimpleTestBrowserTest',
+  'BrokenSetUpTest',
+  'BrowserTest',
+  'InstallationProfileModuleTestsTest',
+  'MissingCheckedRequirementsTest',
+  'SimpleTestTest',
+  'TimeZoneTest',
+  'StatisticsLoggingTest',
+  'SyslogTest',
+  'UncaughtExceptionTest',
+  'AdminTest',
+  'DefaultMobileMetaTagsTest',
+  'ErrorHandlerTest',
+  'HtaccessTest',
+  'PageTitleTest',
+  'SiteMaintenanceTest',
+  'RssTest',
+  'TaxonomyTermIndentationTest',
+  'TermTranslationTest',
+  'StringFieldTest',
+  'TextFieldTest',
+  'HtmlAttributesTest',
+  'TwigDebugMarkupTest',
+  'TwigFilterTest',
+  'TwigNamespaceTest',
+  'TwigRawTest',
+  'TwigTransTest',
+  'ToolbarAdminMenuTest',
+  'ToolbarMenuTranslationTest',
+  'TourTest',
+  'TrackerUserUidTest',
+  'UserAdminLanguageTest',
+  'UserAdminListingTest',
+  'UserAdminTest',
+  'UserCancelTest',
+  'UserCreateTest',
+  'UserEditTest',
+  'UserLanguageCreationTest',
+  'UserLoginTest',
+  'UserPermissionsTest',
+  'UncaughtExceptionTest',
+  'GetNamespacesTest',
+
+  // https://www.drupal.org/node/2795611
+  'RouterTest',
+
+  // Skip tests using the Views base class, not converted yet.
+  '/src/Tests/Views/',
+  // Do not copy traits, reuse them.
+  'Trait.php',
+
+  // Fixtures staying with Simpletest for now.
+  'TestDataConverter.php',
+  'ErrorContainer.php',
+  'ExceptionContainer.php',
+  'StubForm.php',
+  'FieldDefaultValueCallbackProvider.php',
+  'FakeRecord.php',
+  'UrlAliasFixtures.php',
+  'MockRouteProvider.php',
+  'MockAliasManager.php',
+
+  // Unused base classes.
+  'ShortcutTestBase',
+  'AjaxTestBase',
+  'EntityUnitTestBase',
+  'EntityWithUriCacheTagsTestBase',
+  'ConfigAfterInstallerTestBase',
+  'NormalizerTestBase',
+  'GenericCacheBackendUnitTestBase',
+
+  // Installer tests
+  'ConfigInstallProfileUnmetDependenciesTest',
+  '/Installer/',
+];
+
+function isTestExcluded($test_name, array $excluded_tests) {
+  foreach ($excluded_tests as $excluded_test) {
+    if (strpos($test_name, $excluded_test) !== FALSE) {
+      return TRUE;
+    }
+  }
+  return FALSE;
+}
+
+if (!function_exists('glob_recursive')) {
+  // Does not support flag GLOB_BRACE
+
+  function glob_recursive($pattern, $flags = 0) {
+    $files = glob($pattern, $flags);
+
+    foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) {
+      $files = array_merge($files, glob_recursive($dir.'/'.basename($pattern), $flags));
+    }
+
+    return $files;
+  }
+}
+
+foreach ($modules as $module_name) {
+  $simpletest_dir = "core/modules/$module_name/src/Tests";
+  $browsertest_dir = "core/modules/$module_name/tests/src/Functional";
+
+  if (!file_exists($simpletest_dir)) {
+    continue;
+    print "SimpleTest directory $simpletest_dir does not exist.\n";
+  }
+
+  $test_files = glob_recursive("$simpletest_dir/*.php");
+
+  if (!file_exists($browsertest_dir)) {
+    mkdir($browsertest_dir, 0777, TRUE);
+  }
+
+  foreach ($test_files as $simpletest_file_path) {
+    if (isTestExcluded($simpletest_file_path, $excluded_tests)) {
+      continue;
+    }
+
+    $file_name = str_replace('core/modules/' . $module_name . '/src/Tests/', '', $simpletest_file_path);
+    $file_content = file_get_contents($simpletest_file_path);
+
+    // Views tests are not converted yet.
+    if (strpos($file_content, ' extends ViewTestBase {') !== FALSE) {
+      continue;
+    }
+    // Installer tests are not converted yet.
+    if (strpos($file_content, ' extends InstallerTestBase {') !== FALSE) {
+      continue;
+    }
+    // REST tests are not converted yet.
+    if (strpos($file_content, ' extends RestTestBase {') !== FALSE) {
+      continue;
+    }
+    // Module tests should be refactored into kernel and browser tests.
+    if (strpos($file_content, ' extends ModuleTestBase {') !== FALSE) {
+      continue;
+    }
+    // We surely don't want to move kernel tests around.
+    if (strpos($file_content, ' extends KernelTestBase {') !== FALSE) {
+      continue;
+    }
+
+    // Add @deprecated to old test base files.
+    if (strpos($simpletest_file_path, 'TestBase.php') !== FALSE) {
+      $class_name = str_replace('/', "\\", substr($file_name, 0, -4));
+      $simpletest_file_content = str_replace("*/\nabstract class ", "*\n * @deprecated Scheduled for removal in Drupal 9.0.0.\n *   Use \\Drupal\\Tests\\$module_name\\Functional\\$class_name instead.\n */\nabstract class ", $file_content);
+      file_put_contents($simpletest_file_path, $simpletest_file_content);
+    }
+
+    $file_content = str_replace("namespace Drupal\\$module_name\\Tests", "namespace Drupal\\Tests\\$module_name\\Functional", $file_content);
+    $file_content = str_replace("use Drupal\\simpletest\\WebTestBase;", "use Drupal\\Tests\\BrowserTestBase;", $file_content);
+    $file_content = str_replace(" extends WebTestBase {", " extends BrowserTestBase {", $file_content);
+
+    // Fix use statements for traits.
+    if (strpos($file_content, 'use EntityReferenceTestTrait;') !== FALSE
+      && strpos($file_content, "use Drupal\\field\\Tests\\EntityReference\\EntityReferenceTestTrait;") === FALSE
+    ) {
+      $file_content = str_replace("use Drupal\\Tests\\BrowserTestBase;", "use Drupal\\Tests\\BrowserTestBase;\nuse Drupal\\field\\Tests\\EntityReference\\EntityReferenceTestTrait;", $file_content);
+    }
+    if (strpos($file_content, 'use TaxonomyTestTrait;') !== FALSE
+      && strpos($file_content, "use Drupal\\taxonomy\\Tests\\TaxonomyTestTrait;") === FALSE
+    ) {
+      $file_content = str_replace("use Drupal\\Tests\\BrowserTestBase;", "use Drupal\\Tests\\BrowserTestBase;\nuse Drupal\\taxonomy\\Tests\\TaxonomyTestTrait;", $file_content);
+    }
+    if (strpos($file_content, 'use TaxonomyTranslationTestTrait;') !== FALSE
+      && strpos($file_content, "use Drupal\\taxonomy\\Tests\\TaxonomyTranslationTestTrait;") === FALSE
+    ) {
+      $file_content = str_replace("use Drupal\\node\\Entity\\Node;", "use Drupal\\node\\Entity\\Node;\nuse Drupal\\taxonomy\\Tests\\TaxonomyTranslationTestTrait;", $file_content);
+    }
+
+    // Fix use statements for base classes.
+    str_replace("use Drupal\\system\\Tests\\Cache\\PageCacheTagsTestBase;", "use Drupal\\Tests\\system\\Functional\\Cache\\PageCacheTagsTestBase;", $file_content);
+
+    $test_dir = dirname("$browsertest_dir/$file_name");
+    if (!file_exists($test_dir)) {
+      mkdir($test_dir, 0777, TRUE);
+    }
+
+    file_put_contents("$browsertest_dir/$file_name", $file_content);
+
+
+    // Keep existing base classes.
+    if (strpos($simpletest_file_path, 'Base.php') === FALSE) {
+      unlink($simpletest_file_path);
+    }
+  }
+
+
+  print "Tests converted for module $module_name.\n";
+}
diff --git a/core/modules/action/src/Tests/ActionListTest.php b/core/modules/action/tests/src/Functional/ActionListTest.php
similarity index 87%
rename from core/modules/action/src/Tests/ActionListTest.php
rename to core/modules/action/tests/src/Functional/ActionListTest.php
index f533cdf..2510e86 100644
--- a/core/modules/action/src/Tests/ActionListTest.php
+++ b/core/modules/action/tests/src/Functional/ActionListTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\action\Tests;
+namespace Drupal\Tests\action\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Test behaviors when visiting the action listing page.
  *
  * @group action
  */
-class ActionListTest extends WebTestBase {
+class ActionListTest extends BrowserTestBase {
 
   /**
    * Modules to install.
diff --git a/core/modules/aggregator/src/Tests/AggregatorTestBase.php b/core/modules/aggregator/src/Tests/AggregatorTestBase.php
index 15be144..30184d2 100644
--- a/core/modules/aggregator/src/Tests/AggregatorTestBase.php
+++ b/core/modules/aggregator/src/Tests/AggregatorTestBase.php
@@ -9,6 +9,9 @@
 
 /**
  * Defines a base class for testing the Aggregator module.
+ *
+ * @deprecated Scheduled for removal in Drupal 9.0.0.
+ *   Use \Drupal\Tests\aggregator\Functional\AggregatorTestBase instead.
  */
 abstract class AggregatorTestBase extends WebTestBase {
 
diff --git a/core/modules/aggregator/src/Tests/AggregatorTestBase.php b/core/modules/aggregator/tests/src/Functional/AggregatorTestBase.php
similarity index 98%
copy from core/modules/aggregator/src/Tests/AggregatorTestBase.php
copy to core/modules/aggregator/tests/src/Functional/AggregatorTestBase.php
index 15be144..a6c9c32 100644
--- a/core/modules/aggregator/src/Tests/AggregatorTestBase.php
+++ b/core/modules/aggregator/tests/src/Functional/AggregatorTestBase.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\aggregator\Tests;
+namespace Drupal\Tests\aggregator\Functional;
 
 use Drupal\aggregator\Entity\Feed;
 use Drupal\Component\Utility\Html;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\aggregator\FeedInterface;
 
 /**
  * Defines a base class for testing the Aggregator module.
  */
-abstract class AggregatorTestBase extends WebTestBase {
+abstract class AggregatorTestBase extends BrowserTestBase {
 
   /**
    * A user with permission to administer feeds and create content.
diff --git a/core/modules/aggregator/src/Tests/DeleteFeedItemTest.php b/core/modules/aggregator/tests/src/Functional/DeleteFeedItemTest.php
similarity index 96%
rename from core/modules/aggregator/src/Tests/DeleteFeedItemTest.php
rename to core/modules/aggregator/tests/src/Functional/DeleteFeedItemTest.php
index 0261ed5..95202b8 100644
--- a/core/modules/aggregator/src/Tests/DeleteFeedItemTest.php
+++ b/core/modules/aggregator/tests/src/Functional/DeleteFeedItemTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\aggregator\Tests;
+namespace Drupal\Tests\aggregator\Functional;
 
 /**
  * Delete feed items from a feed.
diff --git a/core/modules/aggregator/src/Tests/DeleteFeedTest.php b/core/modules/aggregator/tests/src/Functional/DeleteFeedTest.php
similarity index 97%
rename from core/modules/aggregator/src/Tests/DeleteFeedTest.php
rename to core/modules/aggregator/tests/src/Functional/DeleteFeedTest.php
index 4cde81a..5bf5bd3 100644
--- a/core/modules/aggregator/src/Tests/DeleteFeedTest.php
+++ b/core/modules/aggregator/tests/src/Functional/DeleteFeedTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\aggregator\Tests;
+namespace Drupal\Tests\aggregator\Functional;
 
 /**
  * Delete feed test.
diff --git a/core/modules/aggregator/src/Tests/FeedCacheTagsTest.php b/core/modules/aggregator/tests/src/Functional/FeedCacheTagsTest.php
similarity index 95%
rename from core/modules/aggregator/src/Tests/FeedCacheTagsTest.php
rename to core/modules/aggregator/tests/src/Functional/FeedCacheTagsTest.php
index 2b85c19..1a30720 100644
--- a/core/modules/aggregator/src/Tests/FeedCacheTagsTest.php
+++ b/core/modules/aggregator/tests/src/Functional/FeedCacheTagsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\aggregator\Tests;
+namespace Drupal\Tests\aggregator\Functional;
 
 use Drupal\aggregator\Entity\Feed;
 use Drupal\system\Tests\Entity\EntityWithUriCacheTagsTestBase;
diff --git a/core/modules/aggregator/src/Tests/FeedFetcherPluginTest.php b/core/modules/aggregator/tests/src/Functional/FeedFetcherPluginTest.php
similarity index 95%
rename from core/modules/aggregator/src/Tests/FeedFetcherPluginTest.php
rename to core/modules/aggregator/tests/src/Functional/FeedFetcherPluginTest.php
index 4aac851..1a03186 100644
--- a/core/modules/aggregator/src/Tests/FeedFetcherPluginTest.php
+++ b/core/modules/aggregator/tests/src/Functional/FeedFetcherPluginTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\aggregator\Tests;
+namespace Drupal\Tests\aggregator\Functional;
 
 /**
  * Tests the fetcher plugins functionality and discoverability.
diff --git a/core/modules/aggregator/src/Tests/FeedParserTest.php b/core/modules/aggregator/tests/src/Functional/FeedParserTest.php
similarity index 99%
rename from core/modules/aggregator/src/Tests/FeedParserTest.php
rename to core/modules/aggregator/tests/src/Functional/FeedParserTest.php
index 6c4a04d..00c7b70 100644
--- a/core/modules/aggregator/src/Tests/FeedParserTest.php
+++ b/core/modules/aggregator/tests/src/Functional/FeedParserTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\aggregator\Tests;
+namespace Drupal\Tests\aggregator\Functional;
 
 use Drupal\Core\Url;
 use Drupal\aggregator\Entity\Feed;
diff --git a/core/modules/aggregator/src/Tests/FeedProcessorPluginTest.php b/core/modules/aggregator/tests/src/Functional/FeedProcessorPluginTest.php
similarity index 97%
rename from core/modules/aggregator/src/Tests/FeedProcessorPluginTest.php
rename to core/modules/aggregator/tests/src/Functional/FeedProcessorPluginTest.php
index 8a7ade0..5527d95 100644
--- a/core/modules/aggregator/src/Tests/FeedProcessorPluginTest.php
+++ b/core/modules/aggregator/tests/src/Functional/FeedProcessorPluginTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\aggregator\Tests;
+namespace Drupal\Tests\aggregator\Functional;
 
 use Drupal\aggregator\Entity\Feed;
 use Drupal\aggregator\Entity\Item;
diff --git a/core/modules/aggregator/src/Tests/ImportOpmlTest.php b/core/modules/aggregator/tests/src/Functional/ImportOpmlTest.php
similarity index 99%
rename from core/modules/aggregator/src/Tests/ImportOpmlTest.php
rename to core/modules/aggregator/tests/src/Functional/ImportOpmlTest.php
index 1f1e90d..8994e3f 100644
--- a/core/modules/aggregator/src/Tests/ImportOpmlTest.php
+++ b/core/modules/aggregator/tests/src/Functional/ImportOpmlTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\aggregator\Tests;
+namespace Drupal\Tests\aggregator\Functional;
 
 /**
  * Tests OPML import.
diff --git a/core/modules/aggregator/src/Tests/ItemCacheTagsTest.php b/core/modules/aggregator/tests/src/Functional/ItemCacheTagsTest.php
similarity index 97%
rename from core/modules/aggregator/src/Tests/ItemCacheTagsTest.php
rename to core/modules/aggregator/tests/src/Functional/ItemCacheTagsTest.php
index 1986cea..46b076c 100644
--- a/core/modules/aggregator/src/Tests/ItemCacheTagsTest.php
+++ b/core/modules/aggregator/tests/src/Functional/ItemCacheTagsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\aggregator\Tests;
+namespace Drupal\Tests\aggregator\Functional;
 
 use Drupal\aggregator\Entity\Feed;
 use Drupal\aggregator\Entity\Item;
diff --git a/core/modules/block/src/Tests/BlockCacheTest.php b/core/modules/block/tests/src/Functional/BlockCacheTest.php
similarity index 98%
rename from core/modules/block/src/Tests/BlockCacheTest.php
rename to core/modules/block/tests/src/Functional/BlockCacheTest.php
index 8988580..9285c64 100644
--- a/core/modules/block/src/Tests/BlockCacheTest.php
+++ b/core/modules/block/tests/src/Functional/BlockCacheTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\block\Tests;
+namespace Drupal\Tests\block\Functional;
 
 use Drupal\Core\Cache\Cache;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests block caching.
  *
  * @group block
  */
-class BlockCacheTest extends WebTestBase {
+class BlockCacheTest extends BrowserTestBase {
 
   /**
    * Modules to install.
diff --git a/core/modules/block/src/Tests/BlockHiddenRegionTest.php b/core/modules/block/tests/src/Functional/BlockHiddenRegionTest.php
similarity index 93%
rename from core/modules/block/src/Tests/BlockHiddenRegionTest.php
rename to core/modules/block/tests/src/Functional/BlockHiddenRegionTest.php
index b7d44ad..e2965dc 100644
--- a/core/modules/block/src/Tests/BlockHiddenRegionTest.php
+++ b/core/modules/block/tests/src/Functional/BlockHiddenRegionTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\block\Tests;
+namespace Drupal\Tests\block\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests that a newly installed theme does not inherit blocks to its hidden
@@ -10,7 +10,7 @@
  *
  * @group block
  */
-class BlockHiddenRegionTest extends WebTestBase {
+class BlockHiddenRegionTest extends BrowserTestBase {
 
   /**
    * An administrative user to configure the test environment.
diff --git a/core/modules/block/src/Tests/BlockHookOperationTest.php b/core/modules/block/tests/src/Functional/BlockHookOperationTest.php
similarity index 90%
rename from core/modules/block/src/Tests/BlockHookOperationTest.php
rename to core/modules/block/tests/src/Functional/BlockHookOperationTest.php
index 91ea843..9cb2272 100644
--- a/core/modules/block/src/Tests/BlockHookOperationTest.php
+++ b/core/modules/block/tests/src/Functional/BlockHookOperationTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\block\Tests;
+namespace Drupal\Tests\block\Functional;
 
 use Drupal\Component\Utility\Unicode;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests for Block module regarding hook_entity_operations_alter().
  *
  * @group block
  */
-class BlockHookOperationTest extends WebTestBase {
+class BlockHookOperationTest extends BrowserTestBase {
 
   /**
    * Modules to install.
diff --git a/core/modules/block/src/Tests/BlockHtmlTest.php b/core/modules/block/tests/src/Functional/BlockHtmlTest.php
similarity index 92%
rename from core/modules/block/src/Tests/BlockHtmlTest.php
rename to core/modules/block/tests/src/Functional/BlockHtmlTest.php
index baf5d4b..89bbcf9 100644
--- a/core/modules/block/src/Tests/BlockHtmlTest.php
+++ b/core/modules/block/tests/src/Functional/BlockHtmlTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\block\Tests;
+namespace Drupal\Tests\block\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests block HTML ID validity.
  *
  * @group block
  */
-class BlockHtmlTest extends WebTestBase {
+class BlockHtmlTest extends BrowserTestBase {
 
   /**
    * Modules to install.
diff --git a/core/modules/block/src/Tests/BlockInvalidRegionTest.php b/core/modules/block/tests/src/Functional/BlockInvalidRegionTest.php
similarity index 94%
rename from core/modules/block/src/Tests/BlockInvalidRegionTest.php
rename to core/modules/block/tests/src/Functional/BlockInvalidRegionTest.php
index 99ef06d..b0e08b9 100644
--- a/core/modules/block/src/Tests/BlockInvalidRegionTest.php
+++ b/core/modules/block/tests/src/Functional/BlockInvalidRegionTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\block\Tests;
+namespace Drupal\Tests\block\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\block\Entity\Block;
 
 /**
@@ -11,7 +11,7 @@
  *
  * @group block
  */
-class BlockInvalidRegionTest extends WebTestBase {
+class BlockInvalidRegionTest extends BrowserTestBase {
 
   /**
    * Modules to install.
diff --git a/core/modules/block/src/Tests/BlockLanguageTest.php b/core/modules/block/tests/src/Functional/BlockLanguageTest.php
similarity index 98%
rename from core/modules/block/src/Tests/BlockLanguageTest.php
rename to core/modules/block/tests/src/Functional/BlockLanguageTest.php
index a2bf249..7e0a0e1 100644
--- a/core/modules/block/src/Tests/BlockLanguageTest.php
+++ b/core/modules/block/tests/src/Functional/BlockLanguageTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\block\Tests;
+namespace Drupal\Tests\block\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\block\Entity\Block;
 
 /**
@@ -11,7 +11,7 @@
  *
  * @group block
  */
-class BlockLanguageTest extends WebTestBase {
+class BlockLanguageTest extends BrowserTestBase {
 
   /**
    * An administrative user to configure the test environment.
diff --git a/core/modules/block/src/Tests/BlockTemplateSuggestionsTest.php b/core/modules/block/tests/src/Functional/BlockTemplateSuggestionsTest.php
similarity index 91%
rename from core/modules/block/src/Tests/BlockTemplateSuggestionsTest.php
rename to core/modules/block/tests/src/Functional/BlockTemplateSuggestionsTest.php
index d5ce8e6..ca13c58 100644
--- a/core/modules/block/src/Tests/BlockTemplateSuggestionsTest.php
+++ b/core/modules/block/tests/src/Functional/BlockTemplateSuggestionsTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\block\Tests;
+namespace Drupal\Tests\block\Functional;
 
 use Drupal\block\Entity\Block;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the block_theme_suggestions_block() function.
  *
  * @group block
  */
-class BlockTemplateSuggestionsTest extends WebTestBase {
+class BlockTemplateSuggestionsTest extends BrowserTestBase {
 
   /**
    * Modules to install.
diff --git a/core/modules/block/src/Tests/NewDefaultThemeBlocksTest.php b/core/modules/block/tests/src/Functional/NewDefaultThemeBlocksTest.php
similarity index 95%
rename from core/modules/block/src/Tests/NewDefaultThemeBlocksTest.php
rename to core/modules/block/tests/src/Functional/NewDefaultThemeBlocksTest.php
index 9442df5..60d132e 100644
--- a/core/modules/block/src/Tests/NewDefaultThemeBlocksTest.php
+++ b/core/modules/block/tests/src/Functional/NewDefaultThemeBlocksTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\block\Tests;
+namespace Drupal\Tests\block\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests that the new default theme gets blocks.
  *
  * @group block
  */
-class NewDefaultThemeBlocksTest extends WebTestBase {
+class NewDefaultThemeBlocksTest extends BrowserTestBase {
 
   /**
    * Modules to install.
diff --git a/core/modules/block_content/src/Tests/BlockContentTestBase.php b/core/modules/block_content/src/Tests/BlockContentTestBase.php
index 16df855..28c6e22 100644
--- a/core/modules/block_content/src/Tests/BlockContentTestBase.php
+++ b/core/modules/block_content/src/Tests/BlockContentTestBase.php
@@ -8,6 +8,9 @@
 
 /**
  * Sets up block content types.
+ *
+ * @deprecated Scheduled for removal in Drupal 9.0.0.
+ *   Use \Drupal\Tests\block_content\Functional\BlockContentTestBase instead.
  */
 abstract class BlockContentTestBase extends WebTestBase {
 
diff --git a/core/modules/block_content/src/Tests/BlockContentCacheTagsTest.php b/core/modules/block_content/tests/src/Functional/BlockContentCacheTagsTest.php
similarity index 98%
rename from core/modules/block_content/src/Tests/BlockContentCacheTagsTest.php
rename to core/modules/block_content/tests/src/Functional/BlockContentCacheTagsTest.php
index 7eefdc7..f44a773 100644
--- a/core/modules/block_content/src/Tests/BlockContentCacheTagsTest.php
+++ b/core/modules/block_content/tests/src/Functional/BlockContentCacheTagsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\block_content\Tests;
+namespace Drupal\Tests\block_content\Functional;
 
 use Drupal\block_content\Entity\BlockContent;
 use Drupal\block_content\Entity\BlockContentType;
diff --git a/core/modules/block_content/src/Tests/BlockContentPageViewTest.php b/core/modules/block_content/tests/src/Functional/BlockContentPageViewTest.php
similarity index 94%
rename from core/modules/block_content/src/Tests/BlockContentPageViewTest.php
rename to core/modules/block_content/tests/src/Functional/BlockContentPageViewTest.php
index 46c19cb..8c55da3 100644
--- a/core/modules/block_content/src/Tests/BlockContentPageViewTest.php
+++ b/core/modules/block_content/tests/src/Functional/BlockContentPageViewTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\block_content\Tests;
+namespace Drupal\Tests\block_content\Functional;
 
 /**
  * Create a block and test block access by attempting to view the block.
diff --git a/core/modules/block_content/src/Tests/BlockContentRevisionsTest.php b/core/modules/block_content/tests/src/Functional/BlockContentRevisionsTest.php
similarity index 98%
rename from core/modules/block_content/src/Tests/BlockContentRevisionsTest.php
rename to core/modules/block_content/tests/src/Functional/BlockContentRevisionsTest.php
index 7c4a8f2..33f75ed 100644
--- a/core/modules/block_content/src/Tests/BlockContentRevisionsTest.php
+++ b/core/modules/block_content/tests/src/Functional/BlockContentRevisionsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\block_content\Tests;
+namespace Drupal\Tests\block_content\Functional;
 
 use Drupal\block_content\Entity\BlockContent;
 use Drupal\user\Entity\User;
diff --git a/core/modules/block_content/src/Tests/BlockContentSaveTest.php b/core/modules/block_content/tests/src/Functional/BlockContentSaveTest.php
similarity index 98%
rename from core/modules/block_content/src/Tests/BlockContentSaveTest.php
rename to core/modules/block_content/tests/src/Functional/BlockContentSaveTest.php
index aabf7b6..a68f423 100644
--- a/core/modules/block_content/src/Tests/BlockContentSaveTest.php
+++ b/core/modules/block_content/tests/src/Functional/BlockContentSaveTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\block_content\Tests;
+namespace Drupal\Tests\block_content\Functional;
 
 use Drupal\block_content\Entity\BlockContent;
 
diff --git a/core/modules/block_content/src/Tests/BlockContentTestBase.php b/core/modules/block_content/tests/src/Functional/BlockContentTestBase.php
similarity index 94%
copy from core/modules/block_content/src/Tests/BlockContentTestBase.php
copy to core/modules/block_content/tests/src/Functional/BlockContentTestBase.php
index 16df855..e5e7736 100644
--- a/core/modules/block_content/src/Tests/BlockContentTestBase.php
+++ b/core/modules/block_content/tests/src/Functional/BlockContentTestBase.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\block_content\Tests;
+namespace Drupal\Tests\block_content\Functional;
 
 use Drupal\block_content\Entity\BlockContent;
 use Drupal\block_content\Entity\BlockContentType;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Sets up block content types.
  */
-abstract class BlockContentTestBase extends WebTestBase {
+abstract class BlockContentTestBase extends BrowserTestBase {
 
   /**
    * Profile to use.
diff --git a/core/modules/block_content/src/Tests/PageEditTest.php b/core/modules/block_content/tests/src/Functional/PageEditTest.php
similarity index 98%
rename from core/modules/block_content/src/Tests/PageEditTest.php
rename to core/modules/block_content/tests/src/Functional/PageEditTest.php
index 4a3fb90..bab2a29 100644
--- a/core/modules/block_content/src/Tests/PageEditTest.php
+++ b/core/modules/block_content/tests/src/Functional/PageEditTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\block_content\Tests;
+namespace Drupal\Tests\block_content\Functional;
 
 use Drupal\block_content\Entity\BlockContent;
 use Drupal\Component\Utility\Unicode;
diff --git a/core/modules/ckeditor/src/Tests/CKEditorToolbarButtonTest.php b/core/modules/ckeditor/tests/src/Functional/CKEditorToolbarButtonTest.php
similarity index 93%
rename from core/modules/ckeditor/src/Tests/CKEditorToolbarButtonTest.php
rename to core/modules/ckeditor/tests/src/Functional/CKEditorToolbarButtonTest.php
index 22874b7..e8d0e2d 100644
--- a/core/modules/ckeditor/src/Tests/CKEditorToolbarButtonTest.php
+++ b/core/modules/ckeditor/tests/src/Functional/CKEditorToolbarButtonTest.php
@@ -1,11 +1,11 @@
 <?php
 
-namespace Drupal\ckeditor\Tests;
+namespace Drupal\Tests\ckeditor\Functional;
 
 
 use Drupal\filter\Entity\FilterFormat;
 use Drupal\editor\Entity\Editor;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\Component\Serialization\Json;
 
 /**
@@ -13,7 +13,7 @@
  *
  * @group ckeditor
  */
-class CKEditorToolbarButtonTest extends WebTestBase {
+class CKEditorToolbarButtonTest extends BrowserTestBase {
 
   /**
    * Modules to enable for this test.
diff --git a/core/modules/config/src/Tests/ConfigDependencyWebTest.php b/core/modules/config/tests/src/Functional/ConfigDependencyWebTest.php
similarity index 97%
rename from core/modules/config/src/Tests/ConfigDependencyWebTest.php
rename to core/modules/config/tests/src/Functional/ConfigDependencyWebTest.php
index 5eb5206..c243e9a 100644
--- a/core/modules/config/src/Tests/ConfigDependencyWebTest.php
+++ b/core/modules/config/tests/src/Functional/ConfigDependencyWebTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\config\Tests;
+namespace Drupal\Tests\config\Functional;
 
 use Drupal\Core\Config\Entity\ConfigEntityStorage;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests configuration entities.
  *
  * @group config
  */
-class ConfigDependencyWebTest extends WebTestBase {
+class ConfigDependencyWebTest extends BrowserTestBase {
 
   /**
    * The maximum length for the entity storage used in this test.
diff --git a/core/modules/config/src/Tests/ConfigEntityListMultilingualTest.php b/core/modules/config/tests/src/Functional/ConfigEntityListMultilingualTest.php
similarity index 92%
rename from core/modules/config/src/Tests/ConfigEntityListMultilingualTest.php
rename to core/modules/config/tests/src/Functional/ConfigEntityListMultilingualTest.php
index f5c12d8..6c40ded 100644
--- a/core/modules/config/src/Tests/ConfigEntityListMultilingualTest.php
+++ b/core/modules/config/tests/src/Functional/ConfigEntityListMultilingualTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\config\Tests;
+namespace Drupal\Tests\config\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\language\Entity\ConfigurableLanguage;
 
 /**
@@ -10,7 +10,7 @@
  *
  * @group config
  */
-class ConfigEntityListMultilingualTest extends WebTestBase {
+class ConfigEntityListMultilingualTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/config/src/Tests/ConfigEntityStatusUITest.php b/core/modules/config/tests/src/Functional/ConfigEntityStatusUITest.php
similarity index 89%
rename from core/modules/config/src/Tests/ConfigEntityStatusUITest.php
rename to core/modules/config/tests/src/Functional/ConfigEntityStatusUITest.php
index 95dd9da..9ae9412 100644
--- a/core/modules/config/src/Tests/ConfigEntityStatusUITest.php
+++ b/core/modules/config/tests/src/Functional/ConfigEntityStatusUITest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\config\Tests;
+namespace Drupal\Tests\config\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests configuration entity status UI functionality.
  *
  * @group config
  */
-class ConfigEntityStatusUITest extends WebTestBase {
+class ConfigEntityStatusUITest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/config/src/Tests/ConfigInstallProfileOverrideTest.php b/core/modules/config/tests/src/Functional/ConfigInstallProfileOverrideTest.php
similarity index 97%
rename from core/modules/config/src/Tests/ConfigInstallProfileOverrideTest.php
rename to core/modules/config/tests/src/Functional/ConfigInstallProfileOverrideTest.php
index c2cea6d..31de4b7 100644
--- a/core/modules/config/src/Tests/ConfigInstallProfileOverrideTest.php
+++ b/core/modules/config/tests/src/Functional/ConfigInstallProfileOverrideTest.php
@@ -1,10 +1,10 @@
 <?php
 
-namespace Drupal\config\Tests;
+namespace Drupal\Tests\config\Functional;
 
 use Drupal\Component\Utility\Crypt;
 use Drupal\Core\Config\InstallStorage;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\Core\Config\FileStorage;
 use Drupal\system\Entity\Action;
 use Drupal\tour\Entity\Tour;
@@ -15,7 +15,7 @@
  *
  * @group config
  */
-class ConfigInstallProfileOverrideTest extends WebTestBase {
+class ConfigInstallProfileOverrideTest extends BrowserTestBase {
 
   /**
    * The profile to install as a basis for testing.
diff --git a/core/modules/config/src/Tests/ConfigLanguageOverrideWebTest.php b/core/modules/config/tests/src/Functional/ConfigLanguageOverrideWebTest.php
similarity index 95%
rename from core/modules/config/src/Tests/ConfigLanguageOverrideWebTest.php
rename to core/modules/config/tests/src/Functional/ConfigLanguageOverrideWebTest.php
index f966e5f..5aa194e 100644
--- a/core/modules/config/src/Tests/ConfigLanguageOverrideWebTest.php
+++ b/core/modules/config/tests/src/Functional/ConfigLanguageOverrideWebTest.php
@@ -1,17 +1,17 @@
 <?php
 
-namespace Drupal\config\Tests;
+namespace Drupal\Tests\config\Functional;
 
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\language\Entity\ConfigurableLanguage;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests language overrides applied through the website.
  *
  * @group config
  */
-class ConfigLanguageOverrideWebTest extends WebTestBase {
+class ConfigLanguageOverrideWebTest extends BrowserTestBase {
 
   /**
    * Modules to install.
diff --git a/core/modules/config/src/Tests/ConfigOtherModuleTest.php b/core/modules/config/tests/src/Functional/ConfigOtherModuleTest.php
similarity index 97%
rename from core/modules/config/src/Tests/ConfigOtherModuleTest.php
rename to core/modules/config/tests/src/Functional/ConfigOtherModuleTest.php
index 56c4b31..7834bc8 100644
--- a/core/modules/config/src/Tests/ConfigOtherModuleTest.php
+++ b/core/modules/config/tests/src/Functional/ConfigOtherModuleTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\config\Tests;
+namespace Drupal\Tests\config\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests default configuration provided by a module that does not own it.
  *
  * @group config
  */
-class ConfigOtherModuleTest extends WebTestBase {
+class ConfigOtherModuleTest extends BrowserTestBase {
 
   /**
    * Tests enabling the provider of the default configuration first.
diff --git a/core/modules/config/src/Tests/SchemaConfigListenerWebTest.php b/core/modules/config/tests/src/Functional/SchemaConfigListenerWebTest.php
similarity index 93%
rename from core/modules/config/src/Tests/SchemaConfigListenerWebTest.php
rename to core/modules/config/tests/src/Functional/SchemaConfigListenerWebTest.php
index 45aabc8..4104606 100644
--- a/core/modules/config/src/Tests/SchemaConfigListenerWebTest.php
+++ b/core/modules/config/tests/src/Functional/SchemaConfigListenerWebTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\config\Tests;
+namespace Drupal\Tests\config\Functional;
 
 use Drupal\Core\Config\Schema\SchemaIncompleteException;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the functionality of ConfigSchemaChecker in WebTestBase tests.
  *
  * @group config
  */
-class SchemaConfigListenerWebTest extends WebTestBase {
+class SchemaConfigListenerWebTest extends BrowserTestBase {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/config_translation/src/Tests/ConfigTranslationDateFormatUiTest.php b/core/modules/config_translation/tests/src/Functional/ConfigTranslationDateFormatUiTest.php
similarity index 91%
rename from core/modules/config_translation/src/Tests/ConfigTranslationDateFormatUiTest.php
rename to core/modules/config_translation/tests/src/Functional/ConfigTranslationDateFormatUiTest.php
index ceb69d0..9ddbdf3 100644
--- a/core/modules/config_translation/src/Tests/ConfigTranslationDateFormatUiTest.php
+++ b/core/modules/config_translation/tests/src/Functional/ConfigTranslationDateFormatUiTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\config_translation\Tests;
+namespace Drupal\Tests\config_translation\Functional;
 
 use Drupal\language\Entity\ConfigurableLanguage;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the content translation behaviours on date formats.
  *
  * @group config_translation
  */
-class ConfigTranslationDateFormatUiTest extends WebTestBase {
+class ConfigTranslationDateFormatUiTest extends BrowserTestBase {
 
   public static $modules = array(
     'language',
diff --git a/core/modules/config_translation/src/Tests/ConfigTranslationListUiTest.php b/core/modules/config_translation/tests/src/Functional/ConfigTranslationListUiTest.php
similarity index 99%
rename from core/modules/config_translation/src/Tests/ConfigTranslationListUiTest.php
rename to core/modules/config_translation/tests/src/Functional/ConfigTranslationListUiTest.php
index 8bd3d71..db4af56 100644
--- a/core/modules/config_translation/src/Tests/ConfigTranslationListUiTest.php
+++ b/core/modules/config_translation/tests/src/Functional/ConfigTranslationListUiTest.php
@@ -1,13 +1,13 @@
 <?php
 
-namespace Drupal\config_translation\Tests;
+namespace Drupal\Tests\config_translation\Functional;
 
 use Drupal\block_content\Entity\BlockContentType;
 use Drupal\Component\Utility\Unicode;
 use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\language\Entity\ConfigurableLanguage;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\shortcut\Entity\ShortcutSet;
 use Drupal\contact\Entity\ContactForm;
 use Drupal\filter\Entity\FilterFormat;
@@ -19,7 +19,7 @@
  * @group config_translation
  * @see \Drupal\config_translation\Tests\ConfigTranslationViewListUiTest
  */
-class ConfigTranslationListUiTest extends WebTestBase {
+class ConfigTranslationListUiTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/config_translation/src/Tests/ConfigTranslationViewListUiTest.php b/core/modules/config_translation/tests/src/Functional/ConfigTranslationViewListUiTest.php
similarity index 96%
rename from core/modules/config_translation/src/Tests/ConfigTranslationViewListUiTest.php
rename to core/modules/config_translation/tests/src/Functional/ConfigTranslationViewListUiTest.php
index bccbd88..9a9aee3 100644
--- a/core/modules/config_translation/src/Tests/ConfigTranslationViewListUiTest.php
+++ b/core/modules/config_translation/tests/src/Functional/ConfigTranslationViewListUiTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\config_translation\Tests;
+namespace Drupal\Tests\config_translation\Functional;
 
 use Drupal\views_ui\Tests\UITestBase;
 
diff --git a/core/modules/contact/src/Tests/ContactAuthenticatedUserTest.php b/core/modules/contact/tests/src/Functional/ContactAuthenticatedUserTest.php
similarity index 84%
rename from core/modules/contact/src/Tests/ContactAuthenticatedUserTest.php
rename to core/modules/contact/tests/src/Functional/ContactAuthenticatedUserTest.php
index eb7c527..4b4a520 100644
--- a/core/modules/contact/src/Tests/ContactAuthenticatedUserTest.php
+++ b/core/modules/contact/tests/src/Functional/ContactAuthenticatedUserTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\contact\Tests;
+namespace Drupal\Tests\contact\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests contact form textfields are present if authenticated.
  *
  * @group contact
  */
-class ContactAuthenticatedUserTest extends WebTestBase {
+class ContactAuthenticatedUserTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/contact/src/Tests/ContactLanguageTest.php b/core/modules/contact/tests/src/Functional/ContactLanguageTest.php
similarity index 92%
rename from core/modules/contact/src/Tests/ContactLanguageTest.php
rename to core/modules/contact/tests/src/Functional/ContactLanguageTest.php
index 4623bda..47d1533 100644
--- a/core/modules/contact/src/Tests/ContactLanguageTest.php
+++ b/core/modules/contact/tests/src/Functional/ContactLanguageTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\contact\Tests;
+namespace Drupal\Tests\contact\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests contact messages with language module.
@@ -13,7 +13,7 @@
  *
  * @group contact
  */
-class ContactLanguageTest extends WebTestBase {
+class ContactLanguageTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/content_moderation/src/Tests/ModerationStateTestBase.php b/core/modules/content_moderation/src/Tests/ModerationStateTestBase.php
index ddd275e..a2999e5 100644
--- a/core/modules/content_moderation/src/Tests/ModerationStateTestBase.php
+++ b/core/modules/content_moderation/src/Tests/ModerationStateTestBase.php
@@ -9,6 +9,9 @@
 
 /**
  * Defines a base class for moderation state tests.
+ *
+ * @deprecated Scheduled for removal in Drupal 9.0.0.
+ *   Use \Drupal\Tests\content_moderation\Functional\ModerationStateTestBase instead.
  */
 abstract class ModerationStateTestBase extends WebTestBase {
 
diff --git a/core/modules/content_moderation/src/Tests/ModerationLocaleTest.php b/core/modules/content_moderation/tests/src/Functional/ModerationLocaleTest.php
similarity index 99%
rename from core/modules/content_moderation/src/Tests/ModerationLocaleTest.php
rename to core/modules/content_moderation/tests/src/Functional/ModerationLocaleTest.php
index 0d40356..77dae1b 100644
--- a/core/modules/content_moderation/src/Tests/ModerationLocaleTest.php
+++ b/core/modules/content_moderation/tests/src/Functional/ModerationLocaleTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\content_moderation\Tests;
+namespace Drupal\Tests\content_moderation\Functional;
 
 /**
  * Test content_moderation functionality with localization and translation.
diff --git a/core/modules/content_moderation/src/Tests/ModerationStateStatesTest.php b/core/modules/content_moderation/tests/src/Functional/ModerationStateStatesTest.php
similarity index 97%
rename from core/modules/content_moderation/src/Tests/ModerationStateStatesTest.php
rename to core/modules/content_moderation/tests/src/Functional/ModerationStateStatesTest.php
index 1b394f9..d9ae74c 100644
--- a/core/modules/content_moderation/src/Tests/ModerationStateStatesTest.php
+++ b/core/modules/content_moderation/tests/src/Functional/ModerationStateStatesTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\content_moderation\Tests;
+namespace Drupal\Tests\content_moderation\Functional;
 
 /**
  * Tests moderation state config entity.
diff --git a/core/modules/content_moderation/src/Tests/ModerationStateTestBase.php b/core/modules/content_moderation/tests/src/Functional/ModerationStateTestBase.php
similarity index 96%
copy from core/modules/content_moderation/src/Tests/ModerationStateTestBase.php
copy to core/modules/content_moderation/tests/src/Functional/ModerationStateTestBase.php
index ddd275e..985e091 100644
--- a/core/modules/content_moderation/src/Tests/ModerationStateTestBase.php
+++ b/core/modules/content_moderation/tests/src/Functional/ModerationStateTestBase.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\content_moderation\Tests;
+namespace Drupal\Tests\content_moderation\Functional;
 
 use Drupal\Core\Session\AccountInterface;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\user\Entity\Role;
 use Drupal\content_moderation\Entity\ModerationState;
 
 /**
  * Defines a base class for moderation state tests.
  */
-abstract class ModerationStateTestBase extends WebTestBase {
+abstract class ModerationStateTestBase extends BrowserTestBase {
 
   /**
    * Profile to use.
diff --git a/core/modules/content_moderation/src/Tests/ModerationStateTransitionsTest.php b/core/modules/content_moderation/tests/src/Functional/ModerationStateTransitionsTest.php
similarity index 98%
rename from core/modules/content_moderation/src/Tests/ModerationStateTransitionsTest.php
rename to core/modules/content_moderation/tests/src/Functional/ModerationStateTransitionsTest.php
index 0495e48..e7b0842 100644
--- a/core/modules/content_moderation/src/Tests/ModerationStateTransitionsTest.php
+++ b/core/modules/content_moderation/tests/src/Functional/ModerationStateTransitionsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\content_moderation\Tests;
+namespace Drupal\Tests\content_moderation\Functional;
 
 /**
  * Tests moderation state transition config entity.
diff --git a/core/modules/content_moderation/src/Tests/NodeAccessTest.php b/core/modules/content_moderation/tests/src/Functional/NodeAccessTest.php
similarity index 98%
rename from core/modules/content_moderation/src/Tests/NodeAccessTest.php
rename to core/modules/content_moderation/tests/src/Functional/NodeAccessTest.php
index 1b05406..40e4bd8 100644
--- a/core/modules/content_moderation/src/Tests/NodeAccessTest.php
+++ b/core/modules/content_moderation/tests/src/Functional/NodeAccessTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\content_moderation\Tests;
+namespace Drupal\Tests\content_moderation\Functional;
 
 /**
  * Tests permission access control around nodes.
diff --git a/core/modules/content_translation/src/Tests/ContentTranslationTestBase.php b/core/modules/content_translation/src/Tests/ContentTranslationTestBase.php
index 5d9a8d0..96921c0 100644
--- a/core/modules/content_translation/src/Tests/ContentTranslationTestBase.php
+++ b/core/modules/content_translation/src/Tests/ContentTranslationTestBase.php
@@ -10,6 +10,9 @@
 
 /**
  * Base class for content translation tests.
+ *
+ * @deprecated Scheduled for removal in Drupal 9.0.0.
+ *   Use \Drupal\Tests\content_translation\Functional\ContentTranslationTestBase instead.
  */
 abstract class ContentTranslationTestBase extends WebTestBase {
 
diff --git a/core/modules/content_translation/src/Tests/ContentTranslationUITestBase.php b/core/modules/content_translation/src/Tests/ContentTranslationUITestBase.php
index 3c50983..5eac032 100644
--- a/core/modules/content_translation/src/Tests/ContentTranslationUITestBase.php
+++ b/core/modules/content_translation/src/Tests/ContentTranslationUITestBase.php
@@ -13,6 +13,9 @@
 
 /**
  * Tests the Content Translation UI.
+ *
+ * @deprecated Scheduled for removal in Drupal 9.0.0.
+ *   Use \Drupal\Tests\content_translation\Functional\ContentTranslationUITestBase instead.
  */
 abstract class ContentTranslationUITestBase extends ContentTranslationTestBase {
 
diff --git a/core/modules/content_translation/src/Tests/ContentTranslationEntityBundleUITest.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationEntityBundleUITest.php
similarity index 91%
rename from core/modules/content_translation/src/Tests/ContentTranslationEntityBundleUITest.php
rename to core/modules/content_translation/tests/src/Functional/ContentTranslationEntityBundleUITest.php
index 03f30a1..c735716 100644
--- a/core/modules/content_translation/src/Tests/ContentTranslationEntityBundleUITest.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationEntityBundleUITest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\content_translation\Tests;
+namespace Drupal\Tests\content_translation\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the content translation behaviours on entity bundle UI.
  *
  * @group content_translation
  */
-class ContentTranslationEntityBundleUITest extends WebTestBase {
+class ContentTranslationEntityBundleUITest extends BrowserTestBase {
 
   public static $modules = array('language', 'content_translation', 'node', 'comment', 'field_ui');
 
diff --git a/core/modules/content_translation/src/Tests/ContentTranslationMetadataFieldsTest.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationMetadataFieldsTest.php
similarity index 99%
rename from core/modules/content_translation/src/Tests/ContentTranslationMetadataFieldsTest.php
rename to core/modules/content_translation/tests/src/Functional/ContentTranslationMetadataFieldsTest.php
index a45fda4..0f13079 100644
--- a/core/modules/content_translation/src/Tests/ContentTranslationMetadataFieldsTest.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationMetadataFieldsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\content_translation\Tests;
+namespace Drupal\Tests\content_translation\Functional;
 
 /**
  * Tests the Content Translation metadata fields handling.
diff --git a/core/modules/content_translation/src/Tests/ContentTranslationOperationsTest.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationOperationsTest.php
similarity index 98%
rename from core/modules/content_translation/src/Tests/ContentTranslationOperationsTest.php
rename to core/modules/content_translation/tests/src/Functional/ContentTranslationOperationsTest.php
index 90449da..611d5d9 100644
--- a/core/modules/content_translation/src/Tests/ContentTranslationOperationsTest.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationOperationsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\content_translation\Tests;
+namespace Drupal\Tests\content_translation\Functional;
 
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\node\Tests\NodeTestBase;
diff --git a/core/modules/content_translation/src/Tests/ContentTranslationStandardFieldsTest.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationStandardFieldsTest.php
similarity index 93%
rename from core/modules/content_translation/src/Tests/ContentTranslationStandardFieldsTest.php
rename to core/modules/content_translation/tests/src/Functional/ContentTranslationStandardFieldsTest.php
index 8d2ec13..37178ca 100644
--- a/core/modules/content_translation/src/Tests/ContentTranslationStandardFieldsTest.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationStandardFieldsTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\content_translation\Tests;
+namespace Drupal\Tests\content_translation\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the Content translation settings using the standard profile.
  *
  * @group content_translation
  */
-class ContentTranslationStandardFieldsTest extends WebTestBase {
+class ContentTranslationStandardFieldsTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/content_translation/src/Tests/ContentTranslationTestBase.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationTestBase.php
similarity index 97%
copy from core/modules/content_translation/src/Tests/ContentTranslationTestBase.php
copy to core/modules/content_translation/tests/src/Functional/ContentTranslationTestBase.php
index 5d9a8d0..822cbdd 100644
--- a/core/modules/content_translation/src/Tests/ContentTranslationTestBase.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationTestBase.php
@@ -1,17 +1,17 @@
 <?php
 
-namespace Drupal\content_translation\Tests;
+namespace Drupal\Tests\content_translation\Functional;
 
 use Drupal\Core\Entity\Sql\SqlContentEntityStorage;
 use Drupal\field\Entity\FieldConfig;
 use Drupal\language\Entity\ConfigurableLanguage;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\field\Entity\FieldStorageConfig;
 
 /**
  * Base class for content translation tests.
  */
-abstract class ContentTranslationTestBase extends WebTestBase {
+abstract class ContentTranslationTestBase extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/content_translation/src/Tests/ContentTranslationUISkipTest.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationUISkipTest.php
similarity index 85%
rename from core/modules/content_translation/src/Tests/ContentTranslationUISkipTest.php
rename to core/modules/content_translation/tests/src/Functional/ContentTranslationUISkipTest.php
index 2f8be23..74d5de5 100644
--- a/core/modules/content_translation/src/Tests/ContentTranslationUISkipTest.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationUISkipTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\content_translation\Tests;
+namespace Drupal\Tests\content_translation\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the content translation UI check skip.
  *
  * @group content_translation
  */
-class ContentTranslationUISkipTest extends WebTestBase {
+class ContentTranslationUISkipTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/content_translation/src/Tests/ContentTranslationUITestBase.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationUITestBase.php
similarity index 99%
copy from core/modules/content_translation/src/Tests/ContentTranslationUITestBase.php
copy to core/modules/content_translation/tests/src/Functional/ContentTranslationUITestBase.php
index 3c50983..636acc4 100644
--- a/core/modules/content_translation/src/Tests/ContentTranslationUITestBase.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationUITestBase.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\content_translation\Tests;
+namespace Drupal\Tests\content_translation\Functional;
 
 use Drupal\Core\Cache\Cache;
 use Drupal\Core\Entity\EntityInterface;
diff --git a/core/modules/datetime/src/Tests/DateTestBase.php b/core/modules/datetime/src/Tests/DateTestBase.php
index 0f1277e..5654c33 100644
--- a/core/modules/datetime/src/Tests/DateTestBase.php
+++ b/core/modules/datetime/src/Tests/DateTestBase.php
@@ -13,6 +13,9 @@
 
 /**
  * Provides a base class for testing Datetime field functionality.
+ *
+ * @deprecated Scheduled for removal in Drupal 9.0.0.
+ *   Use \Drupal\Tests\datetime\Functional\DateTestBase instead.
  */
 abstract class DateTestBase extends WebTestBase {
 
diff --git a/core/modules/datetime/src/Tests/DateTestBase.php b/core/modules/datetime/tests/src/Functional/DateTestBase.php
similarity index 97%
copy from core/modules/datetime/src/Tests/DateTestBase.php
copy to core/modules/datetime/tests/src/Functional/DateTestBase.php
index 0f1277e..9bf329d 100644
--- a/core/modules/datetime/src/Tests/DateTestBase.php
+++ b/core/modules/datetime/tests/src/Functional/DateTestBase.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\datetime\Tests;
+namespace Drupal\Tests\datetime\Functional;
 
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\Entity\Entity\EntityFormDisplay;
@@ -9,12 +9,12 @@
 use Drupal\entity_test\Entity\EntityTest;
 use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Provides a base class for testing Datetime field functionality.
  */
-abstract class DateTestBase extends WebTestBase {
+abstract class DateTestBase extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/dblog/src/Tests/ConnectionFailureTest.php b/core/modules/dblog/tests/src/Functional/ConnectionFailureTest.php
similarity index 91%
rename from core/modules/dblog/src/Tests/ConnectionFailureTest.php
rename to core/modules/dblog/tests/src/Functional/ConnectionFailureTest.php
index d800224..df088a3 100644
--- a/core/modules/dblog/src/Tests/ConnectionFailureTest.php
+++ b/core/modules/dblog/tests/src/Functional/ConnectionFailureTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\dblog\Tests;
+namespace Drupal\Tests\dblog\Functional;
 
 use Drupal\Core\Database\Database;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests logging of connection failures.
  *
  * @group dblog
  */
-class ConnectionFailureTest extends WebTestBase {
+class ConnectionFailureTest extends BrowserTestBase {
 
   public static $modules = array('dblog');
 
diff --git a/core/modules/dblog/src/Tests/Rest/DbLogResourceTest.php b/core/modules/dblog/tests/src/Functional/Rest/DbLogResourceTest.php
similarity index 98%
rename from core/modules/dblog/src/Tests/Rest/DbLogResourceTest.php
rename to core/modules/dblog/tests/src/Functional/Rest/DbLogResourceTest.php
index 279d202..ad75e63 100644
--- a/core/modules/dblog/src/Tests/Rest/DbLogResourceTest.php
+++ b/core/modules/dblog/tests/src/Functional/Rest/DbLogResourceTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\dblog\Tests\Rest;
+namespace Drupal\Tests\dblog\Functional\Rest;
 
 use Drupal\Component\Serialization\Json;
 use Drupal\Core\Url;
diff --git a/core/modules/dynamic_page_cache/src/Tests/DynamicPageCacheIntegrationTest.php b/core/modules/dynamic_page_cache/tests/src/Functional/DynamicPageCacheIntegrationTest.php
similarity index 97%
rename from core/modules/dynamic_page_cache/src/Tests/DynamicPageCacheIntegrationTest.php
rename to core/modules/dynamic_page_cache/tests/src/Functional/DynamicPageCacheIntegrationTest.php
index 067a104..5b8e5d7 100644
--- a/core/modules/dynamic_page_cache/src/Tests/DynamicPageCacheIntegrationTest.php
+++ b/core/modules/dynamic_page_cache/tests/src/Functional/DynamicPageCacheIntegrationTest.php
@@ -1,11 +1,11 @@
 <?php
 
-namespace Drupal\dynamic_page_cache\Tests;
+namespace Drupal\Tests\dynamic_page_cache\Functional;
 
 use Drupal\Core\EventSubscriber\MainContentViewSubscriber;
 use Drupal\Core\Url;
 use Drupal\dynamic_page_cache\EventSubscriber\DynamicPageCacheSubscriber;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Enables the Dynamic Page Cache and tests it in various scenarios.
@@ -20,7 +20,7 @@
  *
  * @see \Drupal\dynamic_page_cache\EventSubscriber\DynamicPageCacheSubscriber
  */
-class DynamicPageCacheIntegrationTest extends WebTestBase {
+class DynamicPageCacheIntegrationTest extends BrowserTestBase {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/field/src/Tests/FieldTestBase.php b/core/modules/field/src/Tests/FieldTestBase.php
index 4fe944f..30c80df 100644
--- a/core/modules/field/src/Tests/FieldTestBase.php
+++ b/core/modules/field/src/Tests/FieldTestBase.php
@@ -8,6 +8,9 @@
 
 /**
  * Parent class for Field API tests.
+ *
+ * @deprecated Scheduled for removal in Drupal 9.0.0.
+ *   Use \Drupal\Tests\field\Functional\FieldTestBase instead.
  */
 abstract class FieldTestBase extends WebTestBase {
 
diff --git a/core/modules/field/src/Tests/EntityReference/EntityReferenceAutoCreateTest.php b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceAutoCreateTest.php
similarity index 97%
rename from core/modules/field/src/Tests/EntityReference/EntityReferenceAutoCreateTest.php
rename to core/modules/field/tests/src/Functional/EntityReference/EntityReferenceAutoCreateTest.php
index 0f35fde..b2a1655 100644
--- a/core/modules/field/src/Tests/EntityReference/EntityReferenceAutoCreateTest.php
+++ b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceAutoCreateTest.php
@@ -1,11 +1,12 @@
 <?php
 
-namespace Drupal\field\Tests\EntityReference;
+namespace Drupal\Tests\field\Functional\EntityReference;
 
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\field\Entity\FieldConfig;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
+use Drupal\field\Tests\EntityReference\EntityReferenceTestTrait;
 use Drupal\taxonomy\Entity\Vocabulary;
 use Drupal\node\Entity\Node;
 use Drupal\field\Entity\FieldStorageConfig;
@@ -15,7 +16,7 @@
  *
  * @group entity_reference
  */
-class EntityReferenceAutoCreateTest extends WebTestBase {
+class EntityReferenceAutoCreateTest extends BrowserTestBase {
 
   use EntityReferenceTestTrait;
 
diff --git a/core/modules/field/src/Tests/EntityReference/EntityReferenceFieldDefaultValueTest.php b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFieldDefaultValueTest.php
similarity index 97%
rename from core/modules/field/src/Tests/EntityReference/EntityReferenceFieldDefaultValueTest.php
rename to core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFieldDefaultValueTest.php
index 6433958..0e08f90 100644
--- a/core/modules/field/src/Tests/EntityReference/EntityReferenceFieldDefaultValueTest.php
+++ b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFieldDefaultValueTest.php
@@ -1,20 +1,20 @@
 <?php
 
-namespace Drupal\field\Tests\EntityReference;
+namespace Drupal\Tests\field\Functional\EntityReference;
 
 use Drupal\Component\Utility\Unicode;
 use Drupal\config\Tests\SchemaCheckTestTrait;
 use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\node\Entity\Node;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests entity reference field default values storage in CMI.
  *
  * @group entity_reference
  */
-class EntityReferenceFieldDefaultValueTest extends WebTestBase {
+class EntityReferenceFieldDefaultValueTest extends BrowserTestBase {
 
   use SchemaCheckTestTrait;
 
diff --git a/core/modules/field/src/Tests/EntityReference/EntityReferenceFieldTranslatedReferenceViewTest.php b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFieldTranslatedReferenceViewTest.php
similarity index 98%
rename from core/modules/field/src/Tests/EntityReference/EntityReferenceFieldTranslatedReferenceViewTest.php
rename to core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFieldTranslatedReferenceViewTest.php
index f0856d3..52dde09 100644
--- a/core/modules/field/src/Tests/EntityReference/EntityReferenceFieldTranslatedReferenceViewTest.php
+++ b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceFieldTranslatedReferenceViewTest.php
@@ -1,11 +1,11 @@
 <?php
 
-namespace Drupal\field\Tests\EntityReference;
+namespace Drupal\Tests\field\Functional\EntityReference;
 
 use Drupal\field\Entity\FieldConfig;
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\field\Entity\FieldStorageConfig;
 
 /**
@@ -13,7 +13,7 @@
  *
  * @group entity_reference
  */
-class EntityReferenceFieldTranslatedReferenceViewTest extends WebTestBase {
+class EntityReferenceFieldTranslatedReferenceViewTest extends BrowserTestBase {
 
   /**
    * Flag indicating whether the field is translatable.
diff --git a/core/modules/field/src/Tests/EntityReference/EntityReferenceIntegrationTest.php b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceIntegrationTest.php
similarity index 97%
rename from core/modules/field/src/Tests/EntityReference/EntityReferenceIntegrationTest.php
rename to core/modules/field/tests/src/Functional/EntityReference/EntityReferenceIntegrationTest.php
index 4c099fe..cb54d15 100644
--- a/core/modules/field/src/Tests/EntityReference/EntityReferenceIntegrationTest.php
+++ b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceIntegrationTest.php
@@ -1,19 +1,20 @@
 <?php
 
-namespace Drupal\field\Tests\EntityReference;
+namespace Drupal\Tests\field\Functional\EntityReference;
 
 use Drupal\Component\Utility\SafeMarkup;
 use Drupal\config\Tests\AssertConfigEntityImportTrait;
 use Drupal\entity_test\Entity\EntityTest;
 use Drupal\field\Entity\FieldConfig;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
+use Drupal\field\Tests\EntityReference\EntityReferenceTestTrait;
 
 /**
  * Tests various Entity reference UI components.
  *
  * @group entity_reference
  */
-class EntityReferenceIntegrationTest extends WebTestBase {
+class EntityReferenceIntegrationTest extends BrowserTestBase {
 
   use AssertConfigEntityImportTrait;
   use EntityReferenceTestTrait;
diff --git a/core/modules/field/src/Tests/EntityReference/EntityReferenceXSSTest.php b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceXSSTest.php
similarity index 91%
rename from core/modules/field/src/Tests/EntityReference/EntityReferenceXSSTest.php
rename to core/modules/field/tests/src/Functional/EntityReference/EntityReferenceXSSTest.php
index f72312f..46986ec 100644
--- a/core/modules/field/src/Tests/EntityReference/EntityReferenceXSSTest.php
+++ b/core/modules/field/tests/src/Functional/EntityReference/EntityReferenceXSSTest.php
@@ -1,17 +1,18 @@
 <?php
 
-namespace Drupal\field\Tests\EntityReference;
+namespace Drupal\Tests\field\Functional\EntityReference;
 
 use Drupal\Core\Entity\Entity\EntityFormDisplay;
 use Drupal\Core\Entity\Entity\EntityViewDisplay;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
+use Drupal\field\Tests\EntityReference\EntityReferenceTestTrait;
 
 /**
  * Tests possible XSS security issues in entity references.
  *
  * @group entity_reference
  */
-class EntityReferenceXSSTest extends WebTestBase {
+class EntityReferenceXSSTest extends BrowserTestBase {
 
   use EntityReferenceTestTrait;
 
diff --git a/core/modules/field/src/Tests/EntityReference/Views/SelectionTest.php b/core/modules/field/tests/src/Functional/EntityReference/Views/SelectionTest.php
similarity index 96%
rename from core/modules/field/src/Tests/EntityReference/Views/SelectionTest.php
rename to core/modules/field/tests/src/Functional/EntityReference/Views/SelectionTest.php
index e677dbc..4ccf8cf 100644
--- a/core/modules/field/src/Tests/EntityReference/Views/SelectionTest.php
+++ b/core/modules/field/tests/src/Functional/EntityReference/Views/SelectionTest.php
@@ -1,9 +1,9 @@
 <?php
 
-namespace Drupal\field\Tests\EntityReference\Views;
+namespace Drupal\Tests\field\Functional\EntityReference\Views;
 
 use Drupal\field\Entity\FieldConfig;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\views\Views;
 use Drupal\field\Entity\FieldStorageConfig;
 
@@ -12,7 +12,7 @@
  *
  * @group entity_reference
  */
-class SelectionTest extends WebTestBase {
+class SelectionTest extends BrowserTestBase {
 
   public static $modules = ['node', 'views', 'entity_reference_test', 'entity_test'];
 
diff --git a/core/modules/field/src/Tests/FieldAccessTest.php b/core/modules/field/tests/src/Functional/FieldAccessTest.php
similarity index 98%
rename from core/modules/field/src/Tests/FieldAccessTest.php
rename to core/modules/field/tests/src/Functional/FieldAccessTest.php
index 0553406..a9af836 100644
--- a/core/modules/field/src/Tests/FieldAccessTest.php
+++ b/core/modules/field/tests/src/Functional/FieldAccessTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\field\Tests;
+namespace Drupal\Tests\field\Functional;
 
 use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
diff --git a/core/modules/field/src/Tests/FieldHelpTest.php b/core/modules/field/tests/src/Functional/FieldHelpTest.php
similarity index 93%
rename from core/modules/field/src/Tests/FieldHelpTest.php
rename to core/modules/field/tests/src/Functional/FieldHelpTest.php
index 1103320..76affaa 100644
--- a/core/modules/field/src/Tests/FieldHelpTest.php
+++ b/core/modules/field/tests/src/Functional/FieldHelpTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\field\Tests;
+namespace Drupal\Tests\field\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests help display for the Field module.
  *
  * @group field
  */
-class FieldHelpTest extends WebTestBase {
+class FieldHelpTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/field/src/Tests/FieldTestBase.php b/core/modules/field/tests/src/Functional/FieldTestBase.php
similarity index 94%
copy from core/modules/field/src/Tests/FieldTestBase.php
copy to core/modules/field/tests/src/Functional/FieldTestBase.php
index 4fe944f..40cffac 100644
--- a/core/modules/field/src/Tests/FieldTestBase.php
+++ b/core/modules/field/tests/src/Functional/FieldTestBase.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\field\Tests;
+namespace Drupal\Tests\field\Functional;
 
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Language\LanguageInterface;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Parent class for Field API tests.
  */
-abstract class FieldTestBase extends WebTestBase {
+abstract class FieldTestBase extends BrowserTestBase {
 
   /**
    * Generate random values for a field_test field.
diff --git a/core/modules/field/src/Tests/TranslationWebTest.php b/core/modules/field/tests/src/Functional/TranslationWebTest.php
similarity index 99%
rename from core/modules/field/src/Tests/TranslationWebTest.php
rename to core/modules/field/tests/src/Functional/TranslationWebTest.php
index eed78a2..3e0f849 100644
--- a/core/modules/field/src/Tests/TranslationWebTest.php
+++ b/core/modules/field/tests/src/Functional/TranslationWebTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\field\Tests;
+namespace Drupal\Tests\field\Functional;
 
 use Drupal\Component\Utility\Unicode;
 use Drupal\field\Entity\FieldStorageConfig;
diff --git a/core/modules/field_ui/src/Tests/EntityDisplayModeTest.php b/core/modules/field_ui/tests/src/Functional/EntityDisplayModeTest.php
similarity index 97%
rename from core/modules/field_ui/src/Tests/EntityDisplayModeTest.php
rename to core/modules/field_ui/tests/src/Functional/EntityDisplayModeTest.php
index f808a1e..1d2cab0 100644
--- a/core/modules/field_ui/src/Tests/EntityDisplayModeTest.php
+++ b/core/modules/field_ui/tests/src/Functional/EntityDisplayModeTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\field_ui\Tests;
+namespace Drupal\Tests\field_ui\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the entity display modes UI.
  *
  * @group field_ui
  */
-class EntityDisplayModeTest extends WebTestBase {
+class EntityDisplayModeTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/field_ui/src/Tests/FieldUIIndentationTest.php b/core/modules/field_ui/tests/src/Functional/FieldUIIndentationTest.php
similarity index 85%
rename from core/modules/field_ui/src/Tests/FieldUIIndentationTest.php
rename to core/modules/field_ui/tests/src/Functional/FieldUIIndentationTest.php
index 898b417..528f2c4 100644
--- a/core/modules/field_ui/src/Tests/FieldUIIndentationTest.php
+++ b/core/modules/field_ui/tests/src/Functional/FieldUIIndentationTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\field_ui\Tests;
+namespace Drupal\Tests\field_ui\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests indentation on Field UI.
  *
  * @group field_ui
  */
-class FieldUIIndentationTest extends WebTestBase {
+class FieldUIIndentationTest extends BrowserTestBase {
 
   /**
    * Modules to install.
diff --git a/core/modules/field_ui/src/Tests/FieldUIRouteTest.php b/core/modules/field_ui/tests/src/Functional/FieldUIRouteTest.php
similarity index 96%
rename from core/modules/field_ui/src/Tests/FieldUIRouteTest.php
rename to core/modules/field_ui/tests/src/Functional/FieldUIRouteTest.php
index 6533f09..1e954e5 100644
--- a/core/modules/field_ui/src/Tests/FieldUIRouteTest.php
+++ b/core/modules/field_ui/tests/src/Functional/FieldUIRouteTest.php
@@ -1,17 +1,17 @@
 <?php
 
-namespace Drupal\field_ui\Tests;
+namespace Drupal\Tests\field_ui\Functional;
 
 use Drupal\Core\Entity\Entity\EntityFormMode;
 use Drupal\Core\Entity\Entity\EntityViewMode;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the functionality of the Field UI route subscriber.
  *
  * @group field_ui
  */
-class FieldUIRouteTest extends WebTestBase {
+class FieldUIRouteTest extends BrowserTestBase {
 
   /**
    * Modules to install.
diff --git a/core/modules/file/src/Tests/FileFieldTestBase.php b/core/modules/file/src/Tests/FileFieldTestBase.php
index 307eb4d..9ec9c75 100644
--- a/core/modules/file/src/Tests/FileFieldTestBase.php
+++ b/core/modules/file/src/Tests/FileFieldTestBase.php
@@ -10,6 +10,9 @@
 
 /**
  * Provides methods specifically for testing File module's field handling.
+ *
+ * @deprecated Scheduled for removal in Drupal 9.0.0.
+ *   Use \Drupal\Tests\file\Functional\FileFieldTestBase instead.
  */
 abstract class FileFieldTestBase extends WebTestBase {
 
diff --git a/core/modules/file/src/Tests/FileManagedTestBase.php b/core/modules/file/src/Tests/FileManagedTestBase.php
index a6e94fa..711d8a4 100644
--- a/core/modules/file/src/Tests/FileManagedTestBase.php
+++ b/core/modules/file/src/Tests/FileManagedTestBase.php
@@ -9,6 +9,9 @@
 /**
  * Base class for file tests that use the file_test module to test uploads and
  * hooks.
+ *
+ * @deprecated Scheduled for removal in Drupal 9.0.0.
+ *   Use \Drupal\Tests\file\Functional\FileManagedTestBase instead.
  */
 abstract class FileManagedTestBase extends WebTestBase {
 
diff --git a/core/modules/file/src/Tests/FileFieldTestBase.php b/core/modules/file/tests/src/Functional/FileFieldTestBase.php
similarity index 98%
copy from core/modules/file/src/Tests/FileFieldTestBase.php
copy to core/modules/file/tests/src/Functional/FileFieldTestBase.php
index 307eb4d..d2f3bee 100644
--- a/core/modules/file/src/Tests/FileFieldTestBase.php
+++ b/core/modules/file/tests/src/Functional/FileFieldTestBase.php
@@ -1,17 +1,17 @@
 <?php
 
-namespace Drupal\file\Tests;
+namespace Drupal\Tests\file\Functional;
 
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\field\Entity\FieldConfig;
 use Drupal\file\FileInterface;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\file\Entity\File;
 
 /**
  * Provides methods specifically for testing File module's field handling.
  */
-abstract class FileFieldTestBase extends WebTestBase {
+abstract class FileFieldTestBase extends BrowserTestBase {
 
   /**
   * Modules to enable.
diff --git a/core/modules/file/src/Tests/FileManagedAccessTest.php b/core/modules/file/tests/src/Functional/FileManagedAccessTest.php
similarity index 98%
rename from core/modules/file/src/Tests/FileManagedAccessTest.php
rename to core/modules/file/tests/src/Functional/FileManagedAccessTest.php
index 391f91a..97f77b6 100644
--- a/core/modules/file/src/Tests/FileManagedAccessTest.php
+++ b/core/modules/file/tests/src/Functional/FileManagedAccessTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\file\Tests;
+namespace Drupal\Tests\file\Functional;
 
 use Drupal\file\Entity\File;
 
diff --git a/core/modules/file/src/Tests/FileManagedTestBase.php b/core/modules/file/tests/src/Functional/FileManagedTestBase.php
similarity index 98%
copy from core/modules/file/src/Tests/FileManagedTestBase.php
copy to core/modules/file/tests/src/Functional/FileManagedTestBase.php
index a6e94fa..6bd57dd 100644
--- a/core/modules/file/src/Tests/FileManagedTestBase.php
+++ b/core/modules/file/tests/src/Functional/FileManagedTestBase.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\file\Tests;
+namespace Drupal\Tests\file\Functional;
 
 use Drupal\file\Entity\File;
 use Drupal\file\FileInterface;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Base class for file tests that use the file_test module to test uploads and
  * hooks.
  */
-abstract class FileManagedTestBase extends WebTestBase {
+abstract class FileManagedTestBase extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/filter/src/Tests/FilterCaptionTwigDebugTest.php b/core/modules/filter/tests/src/Functional/FilterCaptionTwigDebugTest.php
similarity index 95%
rename from core/modules/filter/src/Tests/FilterCaptionTwigDebugTest.php
rename to core/modules/filter/tests/src/Functional/FilterCaptionTwigDebugTest.php
index cd5e8e2..ef520c7 100644
--- a/core/modules/filter/src/Tests/FilterCaptionTwigDebugTest.php
+++ b/core/modules/filter/tests/src/Functional/FilterCaptionTwigDebugTest.php
@@ -1,9 +1,9 @@
 <?php
 
-namespace Drupal\filter\Tests;
+namespace Drupal\Tests\filter\Functional;
 
 use Drupal\Core\Render\RenderContext;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\filter\FilterPluginCollection;
 
 /**
@@ -11,7 +11,7 @@
  *
  * @group filter
  */
-class FilterCaptionTwigDebugTest extends WebTestBase {
+class FilterCaptionTwigDebugTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/filter/src/Tests/FilterDefaultFormatTest.php b/core/modules/filter/tests/src/Functional/FilterDefaultFormatTest.php
similarity index 95%
rename from core/modules/filter/src/Tests/FilterDefaultFormatTest.php
rename to core/modules/filter/tests/src/Functional/FilterDefaultFormatTest.php
index 39a6295..6014c10 100644
--- a/core/modules/filter/src/Tests/FilterDefaultFormatTest.php
+++ b/core/modules/filter/tests/src/Functional/FilterDefaultFormatTest.php
@@ -1,17 +1,17 @@
 <?php
 
-namespace Drupal\filter\Tests;
+namespace Drupal\Tests\filter\Functional;
 
 use Drupal\Component\Utility\Unicode;
 use Drupal\filter\Entity\FilterFormat;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the default text formats for different users.
  *
  * @group filter
  */
-class FilterDefaultFormatTest extends WebTestBase {
+class FilterDefaultFormatTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/filter/src/Tests/FilterHooksTest.php b/core/modules/filter/tests/src/Functional/FilterHooksTest.php
similarity index 95%
rename from core/modules/filter/src/Tests/FilterHooksTest.php
rename to core/modules/filter/tests/src/Functional/FilterHooksTest.php
index 5353ccb..c499f23 100644
--- a/core/modules/filter/src/Tests/FilterHooksTest.php
+++ b/core/modules/filter/tests/src/Functional/FilterHooksTest.php
@@ -1,9 +1,9 @@
 <?php
 
-namespace Drupal\filter\Tests;
+namespace Drupal\Tests\filter\Functional;
 
 use Drupal\Component\Utility\Unicode;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\user\RoleInterface;
 
 /**
@@ -11,7 +11,7 @@
  *
  * @group filter
  */
-class FilterHooksTest extends WebTestBase {
+class FilterHooksTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/filter/src/Tests/FilterNoFormatTest.php b/core/modules/filter/tests/src/Functional/FilterNoFormatTest.php
similarity index 88%
rename from core/modules/filter/src/Tests/FilterNoFormatTest.php
rename to core/modules/filter/tests/src/Functional/FilterNoFormatTest.php
index 3dcc9f6..1139947 100644
--- a/core/modules/filter/src/Tests/FilterNoFormatTest.php
+++ b/core/modules/filter/tests/src/Functional/FilterNoFormatTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\filter\Tests;
+namespace Drupal\Tests\filter\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the behavior of check_markup() when it is called without text format.
  *
  * @group filter
  */
-class FilterNoFormatTest extends WebTestBase {
+class FilterNoFormatTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/filter/src/Tests/FilterSecurityTest.php b/core/modules/filter/tests/src/Functional/FilterSecurityTest.php
similarity index 96%
rename from core/modules/filter/src/Tests/FilterSecurityTest.php
rename to core/modules/filter/tests/src/Functional/FilterSecurityTest.php
index 12cd97a..4055159 100644
--- a/core/modules/filter/src/Tests/FilterSecurityTest.php
+++ b/core/modules/filter/tests/src/Functional/FilterSecurityTest.php
@@ -1,9 +1,9 @@
 <?php
 
-namespace Drupal\filter\Tests;
+namespace Drupal\Tests\filter\Functional;
 
 use Drupal\filter\Entity\FilterFormat;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\filter\Plugin\FilterInterface;
 use Drupal\user\RoleInterface;
 
@@ -14,7 +14,7 @@
  *
  * @group filter
  */
-class FilterSecurityTest extends WebTestBase {
+class FilterSecurityTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/forum/src/Tests/ForumIndexTest.php b/core/modules/forum/tests/src/Functional/ForumIndexTest.php
similarity index 95%
rename from core/modules/forum/src/Tests/ForumIndexTest.php
rename to core/modules/forum/tests/src/Functional/ForumIndexTest.php
index 8ead34f..8bcb482 100644
--- a/core/modules/forum/src/Tests/ForumIndexTest.php
+++ b/core/modules/forum/tests/src/Functional/ForumIndexTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\forum\Tests;
+namespace Drupal\Tests\forum\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the forum index listing.
  *
  * @group forum
  */
-class ForumIndexTest extends WebTestBase {
+class ForumIndexTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/forum/src/Tests/ForumNodeAccessTest.php b/core/modules/forum/tests/src/Functional/ForumNodeAccessTest.php
similarity index 95%
rename from core/modules/forum/src/Tests/ForumNodeAccessTest.php
rename to core/modules/forum/tests/src/Functional/ForumNodeAccessTest.php
index 8eda252..59a1192 100644
--- a/core/modules/forum/src/Tests/ForumNodeAccessTest.php
+++ b/core/modules/forum/tests/src/Functional/ForumNodeAccessTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\forum\Tests;
+namespace Drupal\Tests\forum\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\node\Entity\NodeType;
 
 /**
@@ -10,7 +10,7 @@
  *
  * @group forum
  */
-class ForumNodeAccessTest extends WebTestBase {
+class ForumNodeAccessTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/hal/src/Tests/FileDenormalizeTest.php b/core/modules/hal/tests/src/Functional/FileDenormalizeTest.php
similarity index 95%
rename from core/modules/hal/src/Tests/FileDenormalizeTest.php
rename to core/modules/hal/tests/src/Functional/FileDenormalizeTest.php
index f160634..36f8762 100644
--- a/core/modules/hal/src/Tests/FileDenormalizeTest.php
+++ b/core/modules/hal/tests/src/Functional/FileDenormalizeTest.php
@@ -1,9 +1,9 @@
 <?php
 
-namespace Drupal\hal\Tests;
+namespace Drupal\Tests\hal\Functional;
 
 use Drupal\file\Entity\File;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests that file entities can be denormalized in HAL.
@@ -11,7 +11,7 @@
  * @group hal
  * @see \Drupal\hal\Normalizer\FileEntityNormalizer
  */
-class FileDenormalizeTest extends WebTestBase {
+class FileDenormalizeTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/image/src/Tests/ImageFieldTestBase.php b/core/modules/image/src/Tests/ImageFieldTestBase.php
index 6081d32..da18236 100644
--- a/core/modules/image/src/Tests/ImageFieldTestBase.php
+++ b/core/modules/image/src/Tests/ImageFieldTestBase.php
@@ -21,6 +21,9 @@
 
 /**
  * This class provides methods specifically for testing Image's field handling.
+ *
+ * @deprecated Scheduled for removal in Drupal 9.0.0.
+ *   Use \Drupal\Tests\image\Functional\ImageFieldTestBase instead.
  */
 abstract class ImageFieldTestBase extends WebTestBase {
 
diff --git a/core/modules/image/src/Tests/ImageEffectsTest.php b/core/modules/image/tests/src/Functional/ImageEffectsTest.php
similarity index 99%
rename from core/modules/image/src/Tests/ImageEffectsTest.php
rename to core/modules/image/tests/src/Functional/ImageEffectsTest.php
index 895457f..17c343b 100644
--- a/core/modules/image/src/Tests/ImageEffectsTest.php
+++ b/core/modules/image/tests/src/Functional/ImageEffectsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\image\Tests;
+namespace Drupal\Tests\image\Functional;
 
 use Drupal\image\Entity\ImageStyle;
 use Drupal\system\Tests\Image\ToolkitTestBase;
diff --git a/core/modules/image/src/Tests/ImageFieldTestBase.php b/core/modules/image/tests/src/Functional/ImageFieldTestBase.php
similarity index 97%
copy from core/modules/image/src/Tests/ImageFieldTestBase.php
copy to core/modules/image/tests/src/Functional/ImageFieldTestBase.php
index 6081d32..df68dd9 100644
--- a/core/modules/image/src/Tests/ImageFieldTestBase.php
+++ b/core/modules/image/tests/src/Functional/ImageFieldTestBase.php
@@ -1,9 +1,9 @@
 <?php
 
-namespace Drupal\image\Tests;
+namespace Drupal\Tests\image\Functional;
 
 use Drupal\field\Entity\FieldConfig;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\field\Entity\FieldStorageConfig;
 
 /**
@@ -22,7 +22,7 @@
 /**
  * This class provides methods specifically for testing Image's field handling.
  */
-abstract class ImageFieldTestBase extends WebTestBase {
+abstract class ImageFieldTestBase extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/image/src/Tests/ImageFieldWidgetTest.php b/core/modules/image/tests/src/Functional/ImageFieldWidgetTest.php
similarity index 95%
rename from core/modules/image/src/Tests/ImageFieldWidgetTest.php
rename to core/modules/image/tests/src/Functional/ImageFieldWidgetTest.php
index 52d9e4d..f8f9601 100644
--- a/core/modules/image/src/Tests/ImageFieldWidgetTest.php
+++ b/core/modules/image/tests/src/Functional/ImageFieldWidgetTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\image\Tests;
+namespace Drupal\Tests\image\Functional;
 
 /**
  * Tests the image field widget.
diff --git a/core/modules/image/src/Tests/ImageStyleDeleteTest.php b/core/modules/image/tests/src/Functional/ImageStyleDeleteTest.php
similarity index 99%
rename from core/modules/image/src/Tests/ImageStyleDeleteTest.php
rename to core/modules/image/tests/src/Functional/ImageStyleDeleteTest.php
index feb06ce..fff2760 100644
--- a/core/modules/image/src/Tests/ImageStyleDeleteTest.php
+++ b/core/modules/image/tests/src/Functional/ImageStyleDeleteTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\image\Tests;
+namespace Drupal\Tests\image\Functional;
 
 use Drupal\Core\Entity\Entity\EntityFormDisplay;
 use Drupal\Core\Entity\Entity\EntityViewDisplay;
diff --git a/core/modules/language/src/Tests/AdminPathEntityConverterLanguageTest.php b/core/modules/language/tests/src/Functional/AdminPathEntityConverterLanguageTest.php
similarity index 89%
rename from core/modules/language/src/Tests/AdminPathEntityConverterLanguageTest.php
rename to core/modules/language/tests/src/Functional/AdminPathEntityConverterLanguageTest.php
index 3cc00f9..bd46a40 100644
--- a/core/modules/language/src/Tests/AdminPathEntityConverterLanguageTest.php
+++ b/core/modules/language/tests/src/Functional/AdminPathEntityConverterLanguageTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\language\Tests;
+namespace Drupal\Tests\language\Functional;
 
 use Drupal\language\Entity\ConfigurableLanguage;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Test administration path based conversion of entities.
  *
  * @group language
  */
-class AdminPathEntityConverterLanguageTest extends WebTestBase {
+class AdminPathEntityConverterLanguageTest extends BrowserTestBase {
 
   public static $modules = array('language', 'language_test');
 
diff --git a/core/modules/language/src/Tests/LanguageBlockSettingsVisibilityTest.php b/core/modules/language/tests/src/Functional/LanguageBlockSettingsVisibilityTest.php
similarity index 89%
rename from core/modules/language/src/Tests/LanguageBlockSettingsVisibilityTest.php
rename to core/modules/language/tests/src/Functional/LanguageBlockSettingsVisibilityTest.php
index ee6912e..3090d5b 100644
--- a/core/modules/language/src/Tests/LanguageBlockSettingsVisibilityTest.php
+++ b/core/modules/language/tests/src/Functional/LanguageBlockSettingsVisibilityTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\language\Tests;
+namespace Drupal\Tests\language\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests that the language settings on block config appears correctly.
  *
  * @group language
  */
-class LanguageBlockSettingsVisibilityTest extends WebTestBase {
+class LanguageBlockSettingsVisibilityTest extends BrowserTestBase {
 
   public static $modules = array('block', 'language');
 
diff --git a/core/modules/language/src/Tests/LanguageBrowserDetectionTest.php b/core/modules/language/tests/src/Functional/LanguageBrowserDetectionTest.php
similarity index 96%
rename from core/modules/language/src/Tests/LanguageBrowserDetectionTest.php
rename to core/modules/language/tests/src/Functional/LanguageBrowserDetectionTest.php
index 3991b2a..1b1382a 100644
--- a/core/modules/language/src/Tests/LanguageBrowserDetectionTest.php
+++ b/core/modules/language/tests/src/Functional/LanguageBrowserDetectionTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\language\Tests;
+namespace Drupal\Tests\language\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests browser language detection.
  *
  * @group language
  */
-class LanguageBrowserDetectionTest extends WebTestBase {
+class LanguageBrowserDetectionTest extends BrowserTestBase {
 
   public static $modules = array('language');
 
diff --git a/core/modules/language/src/Tests/LanguageConfigOverrideImportTest.php b/core/modules/language/tests/src/Functional/LanguageConfigOverrideImportTest.php
similarity index 96%
rename from core/modules/language/src/Tests/LanguageConfigOverrideImportTest.php
rename to core/modules/language/tests/src/Functional/LanguageConfigOverrideImportTest.php
index 182c3fe..76d97fb 100644
--- a/core/modules/language/src/Tests/LanguageConfigOverrideImportTest.php
+++ b/core/modules/language/tests/src/Functional/LanguageConfigOverrideImportTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\language\Tests;
+namespace Drupal\Tests\language\Functional;
 
 use Drupal\language\Entity\ConfigurableLanguage;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Ensures the language config overrides can be synchronized.
  *
  * @group language
  */
-class LanguageConfigOverrideImportTest extends WebTestBase {
+class LanguageConfigOverrideImportTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/language/src/Tests/LanguageConfigSchemaTest.php b/core/modules/language/tests/src/Functional/LanguageConfigSchemaTest.php
similarity index 93%
rename from core/modules/language/src/Tests/LanguageConfigSchemaTest.php
rename to core/modules/language/tests/src/Functional/LanguageConfigSchemaTest.php
index 97cbbb7..2ea76d8 100644
--- a/core/modules/language/src/Tests/LanguageConfigSchemaTest.php
+++ b/core/modules/language/tests/src/Functional/LanguageConfigSchemaTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\language\Tests;
+namespace Drupal\Tests\language\Functional;
 
 use Drupal\config\Tests\SchemaCheckTestTrait;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Ensures the language config schema is correct.
  *
  * @group language
  */
-class LanguageConfigSchemaTest extends WebTestBase {
+class LanguageConfigSchemaTest extends BrowserTestBase {
 
   use SchemaCheckTestTrait;
 
diff --git a/core/modules/language/src/Tests/LanguageListModuleInstallTest.php b/core/modules/language/tests/src/Functional/LanguageListModuleInstallTest.php
similarity index 89%
rename from core/modules/language/src/Tests/LanguageListModuleInstallTest.php
rename to core/modules/language/tests/src/Functional/LanguageListModuleInstallTest.php
index 3df9bdc..2b5ad7e 100644
--- a/core/modules/language/src/Tests/LanguageListModuleInstallTest.php
+++ b/core/modules/language/tests/src/Functional/LanguageListModuleInstallTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\language\Tests;
+namespace Drupal\Tests\language\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests enabling Language if a module exists that calls
@@ -10,7 +10,7 @@
  *
  * @group language
  */
-class LanguageListModuleInstallTest extends WebTestBase {
+class LanguageListModuleInstallTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/language/src/Tests/LanguageNegotiationContentEntityTest.php b/core/modules/language/tests/src/Functional/LanguageNegotiationContentEntityTest.php
similarity index 98%
rename from core/modules/language/src/Tests/LanguageNegotiationContentEntityTest.php
rename to core/modules/language/tests/src/Functional/LanguageNegotiationContentEntityTest.php
index ba0a4db..8991437 100644
--- a/core/modules/language/src/Tests/LanguageNegotiationContentEntityTest.php
+++ b/core/modules/language/tests/src/Functional/LanguageNegotiationContentEntityTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\language\Tests;
+namespace Drupal\Tests\language\Functional;
 
 use Drupal\Component\Render\FormattableMarkup;
 use Drupal\Core\Language\LanguageInterface;
@@ -8,7 +8,7 @@
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationContentEntity;
 use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Symfony\Cmf\Component\Routing\RouteObjectInterface;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Route;
@@ -18,7 +18,7 @@
  *
  * @group language
  */
-class LanguageNegotiationContentEntityTest extends WebTestBase {
+class LanguageNegotiationContentEntityTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/language/src/Tests/LanguageNegotiationInfoTest.php b/core/modules/language/tests/src/Functional/LanguageNegotiationInfoTest.php
similarity index 98%
rename from core/modules/language/src/Tests/LanguageNegotiationInfoTest.php
rename to core/modules/language/tests/src/Functional/LanguageNegotiationInfoTest.php
index ee4c6d4..4c274e5 100644
--- a/core/modules/language/src/Tests/LanguageNegotiationInfoTest.php
+++ b/core/modules/language/tests/src/Functional/LanguageNegotiationInfoTest.php
@@ -1,17 +1,17 @@
 <?php
 
-namespace Drupal\language\Tests;
+namespace Drupal\Tests\language\Functional;
 
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUI;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests alterations to language types/negotiation info.
  *
  * @group language
  */
-class LanguageNegotiationInfoTest extends WebTestBase {
+class LanguageNegotiationInfoTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/language/src/Tests/LanguagePathMonolingualTest.php b/core/modules/language/tests/src/Functional/LanguagePathMonolingualTest.php
similarity index 94%
rename from core/modules/language/src/Tests/LanguagePathMonolingualTest.php
rename to core/modules/language/tests/src/Functional/LanguagePathMonolingualTest.php
index 510d805..681b378 100644
--- a/core/modules/language/src/Tests/LanguagePathMonolingualTest.php
+++ b/core/modules/language/tests/src/Functional/LanguagePathMonolingualTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\language\Tests;
+namespace Drupal\Tests\language\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Confirm that paths are not changed on monolingual non-English sites.
  *
  * @group language
  */
-class LanguagePathMonolingualTest extends WebTestBase {
+class LanguagePathMonolingualTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/language/src/Tests/Migrate/MigrateLanguageTest.php b/core/modules/language/tests/src/Functional/Migrate/MigrateLanguageTest.php
similarity index 96%
rename from core/modules/language/src/Tests/Migrate/MigrateLanguageTest.php
rename to core/modules/language/tests/src/Functional/Migrate/MigrateLanguageTest.php
index 6bdd1f2..9a2702d 100644
--- a/core/modules/language/src/Tests/Migrate/MigrateLanguageTest.php
+++ b/core/modules/language/tests/src/Functional/Migrate/MigrateLanguageTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\language\Tests\Migrate;
+namespace Drupal\Tests\language\Functional\Migrate;
 
 use Drupal\language\ConfigurableLanguageInterface;
 use Drupal\language\Entity\ConfigurableLanguage;
diff --git a/core/modules/link/src/Tests/LinkFieldUITest.php b/core/modules/link/tests/src/Functional/LinkFieldUITest.php
similarity index 96%
rename from core/modules/link/src/Tests/LinkFieldUITest.php
rename to core/modules/link/tests/src/Functional/LinkFieldUITest.php
index 855c10b..eeed78c 100644
--- a/core/modules/link/src/Tests/LinkFieldUITest.php
+++ b/core/modules/link/tests/src/Functional/LinkFieldUITest.php
@@ -1,18 +1,18 @@
 <?php
 
-namespace Drupal\link\Tests;
+namespace Drupal\Tests\link\Functional;
 
 use Drupal\Component\Utility\Unicode;
 use Drupal\field_ui\Tests\FieldUiTestTrait;
 use Drupal\link\LinkItemInterface;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests link field UI functionality.
  *
  * @group link
  */
-class LinkFieldUITest extends WebTestBase {
+class LinkFieldUITest extends BrowserTestBase {
 
   use FieldUiTestTrait;
 
diff --git a/core/modules/locale/src/Tests/LocaleContentTest.php b/core/modules/locale/tests/src/Functional/LocaleContentTest.php
similarity index 98%
rename from core/modules/locale/src/Tests/LocaleContentTest.php
rename to core/modules/locale/tests/src/Functional/LocaleContentTest.php
index 188b574..2350d9d 100644
--- a/core/modules/locale/src/Tests/LocaleContentTest.php
+++ b/core/modules/locale/tests/src/Functional/LocaleContentTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\locale\Tests;
+namespace Drupal\Tests\locale\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\Core\Language\LanguageInterface;
 
 /**
@@ -11,7 +11,7 @@
  *
  * @group locale
  */
-class LocaleContentTest extends WebTestBase {
+class LocaleContentTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/locale/src/Tests/LocaleLocaleLookupTest.php b/core/modules/locale/tests/src/Functional/LocaleLocaleLookupTest.php
similarity index 92%
rename from core/modules/locale/src/Tests/LocaleLocaleLookupTest.php
rename to core/modules/locale/tests/src/Functional/LocaleLocaleLookupTest.php
index ea4f937..33600dd 100644
--- a/core/modules/locale/src/Tests/LocaleLocaleLookupTest.php
+++ b/core/modules/locale/tests/src/Functional/LocaleLocaleLookupTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\locale\Tests;
+namespace Drupal\Tests\locale\Functional;
 
 use Drupal\language\Entity\ConfigurableLanguage;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests LocaleLookup.
  *
  * @group locale
  */
-class LocaleLocaleLookupTest extends WebTestBase {
+class LocaleLocaleLookupTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/locale/src/Tests/LocalePathTest.php b/core/modules/locale/tests/src/Functional/LocalePathTest.php
similarity index 97%
rename from core/modules/locale/src/Tests/LocalePathTest.php
rename to core/modules/locale/tests/src/Functional/LocalePathTest.php
index cc4f31a..fd26320 100644
--- a/core/modules/locale/src/Tests/LocalePathTest.php
+++ b/core/modules/locale/tests/src/Functional/LocalePathTest.php
@@ -1,17 +1,17 @@
 <?php
 
-namespace Drupal\locale\Tests;
+namespace Drupal\Tests\locale\Functional;
 
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\Core\Url;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests you can configure a language for individual URL aliases.
  *
  * @group locale
  */
-class LocalePathTest extends WebTestBase {
+class LocalePathTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/locale/src/Tests/LocaleStringTest.php b/core/modules/locale/tests/src/Functional/LocaleStringTest.php
similarity index 98%
rename from core/modules/locale/src/Tests/LocaleStringTest.php
rename to core/modules/locale/tests/src/Functional/LocaleStringTest.php
index 2f467e7..082515f 100644
--- a/core/modules/locale/src/Tests/LocaleStringTest.php
+++ b/core/modules/locale/tests/src/Functional/LocaleStringTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\locale\Tests;
+namespace Drupal\Tests\locale\Functional;
 
 use Drupal\language\Entity\ConfigurableLanguage;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the locale string storage, string objects and data API.
  *
  * @group locale
  */
-class LocaleStringTest extends WebTestBase {
+class LocaleStringTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/locale/src/Tests/LocaleTranslatedSchemaDefinitionTest.php b/core/modules/locale/tests/src/Functional/LocaleTranslatedSchemaDefinitionTest.php
similarity index 95%
rename from core/modules/locale/src/Tests/LocaleTranslatedSchemaDefinitionTest.php
rename to core/modules/locale/tests/src/Functional/LocaleTranslatedSchemaDefinitionTest.php
index b117e2c..4b1eb0a 100644
--- a/core/modules/locale/src/Tests/LocaleTranslatedSchemaDefinitionTest.php
+++ b/core/modules/locale/tests/src/Functional/LocaleTranslatedSchemaDefinitionTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\locale\Tests;
+namespace Drupal\Tests\locale\Functional;
 
 use Drupal\language\Entity\ConfigurableLanguage;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Adds and configures languages to check field schema definition.
  *
  * @group locale
  */
-class LocaleTranslatedSchemaDefinitionTest extends WebTestBase {
+class LocaleTranslatedSchemaDefinitionTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/menu_link_content/src/Tests/LinksTest.php b/core/modules/menu_link_content/tests/src/Functional/LinksTest.php
similarity index 98%
rename from core/modules/menu_link_content/src/Tests/LinksTest.php
rename to core/modules/menu_link_content/tests/src/Functional/LinksTest.php
index 84fecde..9047ac8 100644
--- a/core/modules/menu_link_content/src/Tests/LinksTest.php
+++ b/core/modules/menu_link_content/tests/src/Functional/LinksTest.php
@@ -1,10 +1,10 @@
 <?php
 
-namespace Drupal\menu_link_content\Tests;
+namespace Drupal\Tests\menu_link_content\Functional;
 
 use Drupal\Component\Utility\SafeMarkup;
 use Drupal\menu_link_content\Entity\MenuLinkContent;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\system\Entity\Menu;
 
 /**
@@ -12,7 +12,7 @@
  *
  * @group Menu
  */
-class LinksTest extends WebTestBase {
+class LinksTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/menu_ui/src/Tests/MenuCacheTagsTest.php b/core/modules/menu_ui/tests/src/Functional/MenuCacheTagsTest.php
similarity index 98%
rename from core/modules/menu_ui/src/Tests/MenuCacheTagsTest.php
rename to core/modules/menu_ui/tests/src/Functional/MenuCacheTagsTest.php
index 3ad4ad1..4e7833d 100644
--- a/core/modules/menu_ui/src/Tests/MenuCacheTagsTest.php
+++ b/core/modules/menu_ui/tests/src/Functional/MenuCacheTagsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\menu_ui\Tests;
+namespace Drupal\Tests\menu_ui\Functional;
 
 use Drupal\Core\Url;
 use Drupal\menu_link_content\Entity\MenuLinkContent;
diff --git a/core/modules/menu_ui/src/Tests/MenuLinkReorderTest.php b/core/modules/menu_ui/tests/src/Functional/MenuLinkReorderTest.php
similarity index 92%
rename from core/modules/menu_ui/src/Tests/MenuLinkReorderTest.php
rename to core/modules/menu_ui/tests/src/Functional/MenuLinkReorderTest.php
index 0396f17..e0f7cc8 100644
--- a/core/modules/menu_ui/src/Tests/MenuLinkReorderTest.php
+++ b/core/modules/menu_ui/tests/src/Functional/MenuLinkReorderTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\menu_ui\Tests;
+namespace Drupal\Tests\menu_ui\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Reorder menu items.
  *
  * @group menu_ui
  */
-class MenuLinkReorderTest extends WebTestBase {
+class MenuLinkReorderTest extends BrowserTestBase {
 
   /**
    * An administrator user.
diff --git a/core/modules/menu_ui/src/Tests/MenuUninstallTest.php b/core/modules/menu_ui/tests/src/Functional/MenuUninstallTest.php
similarity index 82%
rename from core/modules/menu_ui/src/Tests/MenuUninstallTest.php
rename to core/modules/menu_ui/tests/src/Functional/MenuUninstallTest.php
index b1ea03c..269454e 100644
--- a/core/modules/menu_ui/src/Tests/MenuUninstallTest.php
+++ b/core/modules/menu_ui/tests/src/Functional/MenuUninstallTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\menu_ui\Tests;
+namespace Drupal\Tests\menu_ui\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\system\Entity\Menu;
 
 /**
@@ -10,7 +10,7 @@
  *
  * @group menu_ui
  */
-class MenuUninstallTest extends WebTestBase {
+class MenuUninstallTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/node/src/Tests/NodeTestBase.php b/core/modules/node/src/Tests/NodeTestBase.php
index d4799d4..a5da2b4 100644
--- a/core/modules/node/src/Tests/NodeTestBase.php
+++ b/core/modules/node/src/Tests/NodeTestBase.php
@@ -8,6 +8,9 @@
 
 /**
  * Sets up page and article content types.
+ *
+ * @deprecated Scheduled for removal in Drupal 9.0.0.
+ *   Use \Drupal\Tests\node\Functional\NodeTestBase instead.
  */
 abstract class NodeTestBase extends WebTestBase {
 
diff --git a/core/modules/node/src/Tests/Migrate/d6/MigrateNodeRevisionTest.php b/core/modules/node/tests/src/Functional/Migrate/d6/MigrateNodeRevisionTest.php
similarity index 97%
rename from core/modules/node/src/Tests/Migrate/d6/MigrateNodeRevisionTest.php
rename to core/modules/node/tests/src/Functional/Migrate/d6/MigrateNodeRevisionTest.php
index a02ef3f..8c9ef63 100644
--- a/core/modules/node/src/Tests/Migrate/d6/MigrateNodeRevisionTest.php
+++ b/core/modules/node/tests/src/Functional/Migrate/d6/MigrateNodeRevisionTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests\Migrate\d6;
+namespace Drupal\Tests\node\Functional\Migrate\d6;
 use Drupal\Tests\node\Kernel\Migrate\d6\MigrateNodeTestBase;
 
 /**
diff --git a/core/modules/node/src/Tests/Migrate/d7/NodeMigrateDeriverTest.php b/core/modules/node/tests/src/Functional/Migrate/d7/NodeMigrateDeriverTest.php
similarity index 96%
rename from core/modules/node/src/Tests/Migrate/d7/NodeMigrateDeriverTest.php
rename to core/modules/node/tests/src/Functional/Migrate/d7/NodeMigrateDeriverTest.php
index e57dcbd..621cdb6 100644
--- a/core/modules/node/src/Tests/Migrate/d7/NodeMigrateDeriverTest.php
+++ b/core/modules/node/tests/src/Functional/Migrate/d7/NodeMigrateDeriverTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests\Migrate\d7;
+namespace Drupal\Tests\node\Functional\Migrate\d7;
 
 use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;
 
diff --git a/core/modules/node/src/Tests/MultiStepNodeFormBasicOptionsTest.php b/core/modules/node/tests/src/Functional/MultiStepNodeFormBasicOptionsTest.php
similarity index 97%
rename from core/modules/node/src/Tests/MultiStepNodeFormBasicOptionsTest.php
rename to core/modules/node/tests/src/Functional/MultiStepNodeFormBasicOptionsTest.php
index c23986a..36ac519 100644
--- a/core/modules/node/src/Tests/MultiStepNodeFormBasicOptionsTest.php
+++ b/core/modules/node/tests/src/Functional/MultiStepNodeFormBasicOptionsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 use Drupal\Component\Utility\Unicode;
 use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
diff --git a/core/modules/node/src/Tests/NodeAccessFieldTest.php b/core/modules/node/tests/src/Functional/NodeAccessFieldTest.php
similarity index 98%
rename from core/modules/node/src/Tests/NodeAccessFieldTest.php
rename to core/modules/node/tests/src/Functional/NodeAccessFieldTest.php
index dcfa43d..a84b7b6 100644
--- a/core/modules/node/src/Tests/NodeAccessFieldTest.php
+++ b/core/modules/node/tests/src/Functional/NodeAccessFieldTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 use Drupal\Component\Utility\Unicode;
 use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
diff --git a/core/modules/node/src/Tests/NodeAccessGrantsCacheContextTest.php b/core/modules/node/tests/src/Functional/NodeAccessGrantsCacheContextTest.php
similarity index 99%
rename from core/modules/node/src/Tests/NodeAccessGrantsCacheContextTest.php
rename to core/modules/node/tests/src/Functional/NodeAccessGrantsCacheContextTest.php
index 5932108..7963e87 100644
--- a/core/modules/node/src/Tests/NodeAccessGrantsCacheContextTest.php
+++ b/core/modules/node/tests/src/Functional/NodeAccessGrantsCacheContextTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 /**
  * Tests the node access grants cache context service.
diff --git a/core/modules/node/src/Tests/NodeAccessLanguageAwareCombinationTest.php b/core/modules/node/tests/src/Functional/NodeAccessLanguageAwareCombinationTest.php
similarity index 99%
rename from core/modules/node/src/Tests/NodeAccessLanguageAwareCombinationTest.php
rename to core/modules/node/tests/src/Functional/NodeAccessLanguageAwareCombinationTest.php
index 1ee5bc2..860bebe 100644
--- a/core/modules/node/src/Tests/NodeAccessLanguageAwareCombinationTest.php
+++ b/core/modules/node/tests/src/Functional/NodeAccessLanguageAwareCombinationTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\field\Entity\FieldConfig;
diff --git a/core/modules/node/src/Tests/NodeAccessLanguageAwareTest.php b/core/modules/node/tests/src/Functional/NodeAccessLanguageAwareTest.php
similarity index 99%
rename from core/modules/node/src/Tests/NodeAccessLanguageAwareTest.php
rename to core/modules/node/tests/src/Functional/NodeAccessLanguageAwareTest.php
index 0609b7b..90e040b 100644
--- a/core/modules/node/src/Tests/NodeAccessLanguageAwareTest.php
+++ b/core/modules/node/tests/src/Functional/NodeAccessLanguageAwareTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\field\Entity\FieldConfig;
diff --git a/core/modules/node/src/Tests/NodeAccessLanguageTest.php b/core/modules/node/tests/src/Functional/NodeAccessLanguageTest.php
similarity index 99%
rename from core/modules/node/src/Tests/NodeAccessLanguageTest.php
rename to core/modules/node/tests/src/Functional/NodeAccessLanguageTest.php
index e0393a0..e758676 100644
--- a/core/modules/node/src/Tests/NodeAccessLanguageTest.php
+++ b/core/modules/node/tests/src/Functional/NodeAccessLanguageTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\language\Entity\ConfigurableLanguage;
diff --git a/core/modules/node/src/Tests/NodeAccessMenuLinkTest.php b/core/modules/node/tests/src/Functional/NodeAccessMenuLinkTest.php
similarity index 97%
rename from core/modules/node/src/Tests/NodeAccessMenuLinkTest.php
rename to core/modules/node/tests/src/Functional/NodeAccessMenuLinkTest.php
index c1bc0eb..9d12098 100644
--- a/core/modules/node/src/Tests/NodeAccessMenuLinkTest.php
+++ b/core/modules/node/tests/src/Functional/NodeAccessMenuLinkTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 use Drupal\user\RoleInterface;
 
diff --git a/core/modules/node/src/Tests/NodeAccessRecordsTest.php b/core/modules/node/tests/src/Functional/NodeAccessRecordsTest.php
similarity index 99%
rename from core/modules/node/src/Tests/NodeAccessRecordsTest.php
rename to core/modules/node/tests/src/Functional/NodeAccessRecordsTest.php
index 4126539..ce16bee 100644
--- a/core/modules/node/src/Tests/NodeAccessRecordsTest.php
+++ b/core/modules/node/tests/src/Functional/NodeAccessRecordsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 use Drupal\node\Entity\Node;
 
diff --git a/core/modules/node/src/Tests/NodeActionsConfigurationTest.php b/core/modules/node/tests/src/Functional/NodeActionsConfigurationTest.php
similarity index 96%
rename from core/modules/node/src/Tests/NodeActionsConfigurationTest.php
rename to core/modules/node/tests/src/Functional/NodeActionsConfigurationTest.php
index 7a732c6..fbfda8f 100644
--- a/core/modules/node/src/Tests/NodeActionsConfigurationTest.php
+++ b/core/modules/node/tests/src/Functional/NodeActionsConfigurationTest.php
@@ -1,9 +1,9 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 use Drupal\Component\Utility\Crypt;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\system\Entity\Action;
 
 /**
@@ -11,7 +11,7 @@
  *
  * @group node
  */
-class NodeActionsConfigurationTest extends WebTestBase {
+class NodeActionsConfigurationTest extends BrowserTestBase {
 
   /**
    * Modules to install.
diff --git a/core/modules/node/src/Tests/NodeCacheTagsTest.php b/core/modules/node/tests/src/Functional/NodeCacheTagsTest.php
similarity index 97%
rename from core/modules/node/src/Tests/NodeCacheTagsTest.php
rename to core/modules/node/tests/src/Functional/NodeCacheTagsTest.php
index 66932cc..d0007a1 100644
--- a/core/modules/node/src/Tests/NodeCacheTagsTest.php
+++ b/core/modules/node/tests/src/Functional/NodeCacheTagsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\node\Entity\Node;
diff --git a/core/modules/node/src/Tests/NodeCreationTest.php b/core/modules/node/tests/src/Functional/NodeCreationTest.php
similarity index 99%
rename from core/modules/node/src/Tests/NodeCreationTest.php
rename to core/modules/node/tests/src/Functional/NodeCreationTest.php
index bf3ce86..cf87a7c 100644
--- a/core/modules/node/src/Tests/NodeCreationTest.php
+++ b/core/modules/node/tests/src/Functional/NodeCreationTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 use Drupal\Core\Database\Database;
 use Drupal\Core\Language\LanguageInterface;
diff --git a/core/modules/node/src/Tests/NodeFormSaveChangedTimeTest.php b/core/modules/node/tests/src/Functional/NodeFormSaveChangedTimeTest.php
similarity index 93%
rename from core/modules/node/src/Tests/NodeFormSaveChangedTimeTest.php
rename to core/modules/node/tests/src/Functional/NodeFormSaveChangedTimeTest.php
index 36c1ccc..918a2e7 100644
--- a/core/modules/node/src/Tests/NodeFormSaveChangedTimeTest.php
+++ b/core/modules/node/tests/src/Functional/NodeFormSaveChangedTimeTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests updating the changed time after API and FORM entity save.
  *
  * @group node
  */
-class NodeFormSaveChangedTimeTest extends WebTestBase {
+class NodeFormSaveChangedTimeTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/node/src/Tests/NodeHelpTest.php b/core/modules/node/tests/src/Functional/NodeHelpTest.php
similarity index 92%
rename from core/modules/node/src/Tests/NodeHelpTest.php
rename to core/modules/node/tests/src/Functional/NodeHelpTest.php
index 2946011..ffeee08 100644
--- a/core/modules/node/src/Tests/NodeHelpTest.php
+++ b/core/modules/node/tests/src/Functional/NodeHelpTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests help functionality for nodes.
  *
  * @group node
  */
-class NodeHelpTest extends WebTestBase {
+class NodeHelpTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/node/src/Tests/NodeLinksTest.php b/core/modules/node/tests/src/Functional/NodeLinksTest.php
similarity index 95%
rename from core/modules/node/src/Tests/NodeLinksTest.php
rename to core/modules/node/tests/src/Functional/NodeLinksTest.php
index 72990c0..7eed934 100644
--- a/core/modules/node/src/Tests/NodeLinksTest.php
+++ b/core/modules/node/tests/src/Functional/NodeLinksTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 /**
  * Tests the output of node links (read more, add new comment, etc).
diff --git a/core/modules/node/src/Tests/NodeLoadMultipleTest.php b/core/modules/node/tests/src/Functional/NodeLoadMultipleTest.php
similarity index 98%
rename from core/modules/node/src/Tests/NodeLoadMultipleTest.php
rename to core/modules/node/tests/src/Functional/NodeLoadMultipleTest.php
index 4add3bd..92440ca 100644
--- a/core/modules/node/src/Tests/NodeLoadMultipleTest.php
+++ b/core/modules/node/tests/src/Functional/NodeLoadMultipleTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 use Drupal\node\Entity\Node;
 
diff --git a/core/modules/node/src/Tests/NodePostSettingsTest.php b/core/modules/node/tests/src/Functional/NodePostSettingsTest.php
similarity index 98%
rename from core/modules/node/src/Tests/NodePostSettingsTest.php
rename to core/modules/node/tests/src/Functional/NodePostSettingsTest.php
index bc3dd99..c59c42d 100644
--- a/core/modules/node/src/Tests/NodePostSettingsTest.php
+++ b/core/modules/node/tests/src/Functional/NodePostSettingsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 /**
  * Tests that the post information (submitted by Username on date) text displays
diff --git a/core/modules/node/src/Tests/NodeRSSContentTest.php b/core/modules/node/tests/src/Functional/NodeRSSContentTest.php
similarity index 99%
rename from core/modules/node/src/Tests/NodeRSSContentTest.php
rename to core/modules/node/tests/src/Functional/NodeRSSContentTest.php
index d1ce240..de77927 100644
--- a/core/modules/node/src/Tests/NodeRSSContentTest.php
+++ b/core/modules/node/tests/src/Functional/NodeRSSContentTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 use Drupal\filter\Entity\FilterFormat;
 
diff --git a/core/modules/node/src/Tests/NodeRevisionsAllTest.php b/core/modules/node/tests/src/Functional/NodeRevisionsAllTest.php
similarity index 99%
rename from core/modules/node/src/Tests/NodeRevisionsAllTest.php
rename to core/modules/node/tests/src/Functional/NodeRevisionsAllTest.php
index 7963aa0..9f3949e 100644
--- a/core/modules/node/src/Tests/NodeRevisionsAllTest.php
+++ b/core/modules/node/tests/src/Functional/NodeRevisionsAllTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 use Drupal\node\NodeInterface;
 
diff --git a/core/modules/node/src/Tests/NodeRevisionsUiBypassAccessTest.php b/core/modules/node/tests/src/Functional/NodeRevisionsUiBypassAccessTest.php
similarity index 98%
rename from core/modules/node/src/Tests/NodeRevisionsUiBypassAccessTest.php
rename to core/modules/node/tests/src/Functional/NodeRevisionsUiBypassAccessTest.php
index a6ffb3b..f2c750c 100644
--- a/core/modules/node/src/Tests/NodeRevisionsUiBypassAccessTest.php
+++ b/core/modules/node/tests/src/Functional/NodeRevisionsUiBypassAccessTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 use Drupal\node\Entity\NodeType;
 
diff --git a/core/modules/node/src/Tests/NodeRevisionsUiTest.php b/core/modules/node/tests/src/Functional/NodeRevisionsUiTest.php
similarity index 99%
rename from core/modules/node/src/Tests/NodeRevisionsUiTest.php
rename to core/modules/node/tests/src/Functional/NodeRevisionsUiTest.php
index cf609b8..f298af4 100644
--- a/core/modules/node/src/Tests/NodeRevisionsUiTest.php
+++ b/core/modules/node/tests/src/Functional/NodeRevisionsUiTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 use Drupal\Core\Url;
 use Drupal\node\Entity\Node;
diff --git a/core/modules/node/src/Tests/NodeSaveTest.php b/core/modules/node/tests/src/Functional/NodeSaveTest.php
similarity index 99%
rename from core/modules/node/src/Tests/NodeSaveTest.php
rename to core/modules/node/tests/src/Functional/NodeSaveTest.php
index f01724b..2d35ac0 100644
--- a/core/modules/node/src/Tests/NodeSaveTest.php
+++ b/core/modules/node/tests/src/Functional/NodeSaveTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 use Drupal\node\Entity\Node;
 
diff --git a/core/modules/node/src/Tests/NodeTemplateSuggestionsTest.php b/core/modules/node/tests/src/Functional/NodeTemplateSuggestionsTest.php
similarity index 97%
rename from core/modules/node/src/Tests/NodeTemplateSuggestionsTest.php
rename to core/modules/node/tests/src/Functional/NodeTemplateSuggestionsTest.php
index ec768e6..16dee43 100644
--- a/core/modules/node/src/Tests/NodeTemplateSuggestionsTest.php
+++ b/core/modules/node/tests/src/Functional/NodeTemplateSuggestionsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 /**
  * Tests node template suggestions.
diff --git a/core/modules/node/src/Tests/NodeTestBase.php b/core/modules/node/tests/src/Functional/NodeTestBase.php
similarity index 96%
copy from core/modules/node/src/Tests/NodeTestBase.php
copy to core/modules/node/tests/src/Functional/NodeTestBase.php
index d4799d4..c3b269e 100644
--- a/core/modules/node/src/Tests/NodeTestBase.php
+++ b/core/modules/node/tests/src/Functional/NodeTestBase.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 use Drupal\Core\Session\AccountInterface;
 use Drupal\node\NodeInterface;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Sets up page and article content types.
  */
-abstract class NodeTestBase extends WebTestBase {
+abstract class NodeTestBase extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/node/src/Tests/NodeTypeInitialLanguageTest.php b/core/modules/node/tests/src/Functional/NodeTypeInitialLanguageTest.php
similarity index 99%
rename from core/modules/node/src/Tests/NodeTypeInitialLanguageTest.php
rename to core/modules/node/tests/src/Functional/NodeTypeInitialLanguageTest.php
index 73bfdb3..adf2e3f 100644
--- a/core/modules/node/src/Tests/NodeTypeInitialLanguageTest.php
+++ b/core/modules/node/tests/src/Functional/NodeTypeInitialLanguageTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 use Drupal\Core\Language\LanguageInterface;
 
diff --git a/core/modules/node/src/Tests/NodeTypeTranslationTest.php b/core/modules/node/tests/src/Functional/NodeTypeTranslationTest.php
similarity index 97%
rename from core/modules/node/src/Tests/NodeTypeTranslationTest.php
rename to core/modules/node/tests/src/Functional/NodeTypeTranslationTest.php
index 1c3a768..067deca 100644
--- a/core/modules/node/src/Tests/NodeTypeTranslationTest.php
+++ b/core/modules/node/tests/src/Functional/NodeTypeTranslationTest.php
@@ -1,10 +1,10 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 use Drupal\Component\Utility\Unicode;
 use Drupal\language\Entity\ConfigurableLanguage;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Ensures that node types translation work correctly.
@@ -15,7 +15,7 @@
  *
  * @group node
  */
-class NodeTypeTranslationTest extends WebTestBase {
+class NodeTypeTranslationTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/node/src/Tests/NodeViewLanguageTest.php b/core/modules/node/tests/src/Functional/NodeViewLanguageTest.php
similarity index 95%
rename from core/modules/node/src/Tests/NodeViewLanguageTest.php
rename to core/modules/node/tests/src/Functional/NodeViewLanguageTest.php
index 71fe4d1..518d5fb 100644
--- a/core/modules/node/src/Tests/NodeViewLanguageTest.php
+++ b/core/modules/node/tests/src/Functional/NodeViewLanguageTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 use Drupal\language\Entity\ConfigurableLanguage;
 
diff --git a/core/modules/node/src/Tests/PageViewTest.php b/core/modules/node/tests/src/Functional/PageViewTest.php
similarity index 96%
rename from core/modules/node/src/Tests/PageViewTest.php
rename to core/modules/node/tests/src/Functional/PageViewTest.php
index 086b3e1..ec6daba 100644
--- a/core/modules/node/src/Tests/PageViewTest.php
+++ b/core/modules/node/tests/src/Functional/PageViewTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\node\Tests;
+namespace Drupal\Tests\node\Functional;
 
 use Drupal\node\Entity\Node;
 
diff --git a/core/modules/path/src/Tests/PathTestBase.php b/core/modules/path/src/Tests/PathTestBase.php
index c4a88af..5349676 100644
--- a/core/modules/path/src/Tests/PathTestBase.php
+++ b/core/modules/path/src/Tests/PathTestBase.php
@@ -6,6 +6,9 @@
 
 /**
  * Provides a base class for testing the Path module.
+ *
+ * @deprecated Scheduled for removal in Drupal 9.0.0.
+ *   Use \Drupal\Tests\path\Functional\PathTestBase instead.
  */
 abstract class PathTestBase extends WebTestBase {
 
diff --git a/core/modules/path/src/Tests/PathAliasTest.php b/core/modules/path/tests/src/Functional/PathAliasTest.php
similarity index 99%
rename from core/modules/path/src/Tests/PathAliasTest.php
rename to core/modules/path/tests/src/Functional/PathAliasTest.php
index c7e70d2..84c8c51 100644
--- a/core/modules/path/src/Tests/PathAliasTest.php
+++ b/core/modules/path/tests/src/Functional/PathAliasTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\path\Tests;
+namespace Drupal\Tests\path\Functional;
 
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\Cache\Cache;
diff --git a/core/modules/path/src/Tests/PathLanguageTest.php b/core/modules/path/tests/src/Functional/PathLanguageTest.php
similarity index 99%
rename from core/modules/path/src/Tests/PathLanguageTest.php
rename to core/modules/path/tests/src/Functional/PathLanguageTest.php
index 695f6be..7846b98 100644
--- a/core/modules/path/src/Tests/PathLanguageTest.php
+++ b/core/modules/path/tests/src/Functional/PathLanguageTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\path\Tests;
+namespace Drupal\Tests\path\Functional;
 
 /**
  * Confirm that paths work with translated nodes.
diff --git a/core/modules/path/src/Tests/PathLanguageUiTest.php b/core/modules/path/tests/src/Functional/PathLanguageUiTest.php
similarity index 98%
rename from core/modules/path/src/Tests/PathLanguageUiTest.php
rename to core/modules/path/tests/src/Functional/PathLanguageUiTest.php
index 540cc85..f17bb60 100644
--- a/core/modules/path/src/Tests/PathLanguageUiTest.php
+++ b/core/modules/path/tests/src/Functional/PathLanguageUiTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\path\Tests;
+namespace Drupal\Tests\path\Functional;
 
 /**
  * Confirm that the Path module user interface works with languages.
diff --git a/core/modules/path/src/Tests/PathTestBase.php b/core/modules/path/tests/src/Functional/PathTestBase.php
similarity index 79%
copy from core/modules/path/src/Tests/PathTestBase.php
copy to core/modules/path/tests/src/Functional/PathTestBase.php
index c4a88af..ef83396 100644
--- a/core/modules/path/src/Tests/PathTestBase.php
+++ b/core/modules/path/tests/src/Functional/PathTestBase.php
@@ -1,13 +1,13 @@
 <?php
 
-namespace Drupal\path\Tests;
+namespace Drupal\Tests\path\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Provides a base class for testing the Path module.
  */
-abstract class PathTestBase extends WebTestBase {
+abstract class PathTestBase extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/rdf/src/Tests/EntityReferenceFieldAttributesTest.php b/core/modules/rdf/tests/src/Functional/EntityReferenceFieldAttributesTest.php
similarity index 99%
rename from core/modules/rdf/src/Tests/EntityReferenceFieldAttributesTest.php
rename to core/modules/rdf/tests/src/Functional/EntityReferenceFieldAttributesTest.php
index 48653a5..4aaeb7e 100644
--- a/core/modules/rdf/src/Tests/EntityReferenceFieldAttributesTest.php
+++ b/core/modules/rdf/tests/src/Functional/EntityReferenceFieldAttributesTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\rdf\Tests;
+namespace Drupal\Tests\rdf\Functional;
 
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\taxonomy\Tests\TaxonomyTestBase;
diff --git a/core/modules/rdf/src/Tests/FileFieldAttributesTest.php b/core/modules/rdf/tests/src/Functional/FileFieldAttributesTest.php
similarity index 98%
rename from core/modules/rdf/src/Tests/FileFieldAttributesTest.php
rename to core/modules/rdf/tests/src/Functional/FileFieldAttributesTest.php
index 34e76ae..b0be922 100644
--- a/core/modules/rdf/src/Tests/FileFieldAttributesTest.php
+++ b/core/modules/rdf/tests/src/Functional/FileFieldAttributesTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\rdf\Tests;
+namespace Drupal\Tests\rdf\Functional;
 
 use Drupal\file\Tests\FileFieldTestBase;
 use Drupal\file\Entity\File;
diff --git a/core/modules/rdf/src/Tests/GetRdfNamespacesTest.php b/core/modules/rdf/tests/src/Functional/GetRdfNamespacesTest.php
similarity index 90%
rename from core/modules/rdf/src/Tests/GetRdfNamespacesTest.php
rename to core/modules/rdf/tests/src/Functional/GetRdfNamespacesTest.php
index 7fde6f0..544b598 100644
--- a/core/modules/rdf/src/Tests/GetRdfNamespacesTest.php
+++ b/core/modules/rdf/tests/src/Functional/GetRdfNamespacesTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\rdf\Tests;
+namespace Drupal\Tests\rdf\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests hook_rdf_namespaces().
  *
  * @group rdf
  */
-class GetRdfNamespacesTest extends WebTestBase {
+class GetRdfNamespacesTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/rdf/src/Tests/NodeAttributesTest.php b/core/modules/rdf/tests/src/Functional/NodeAttributesTest.php
similarity index 98%
rename from core/modules/rdf/src/Tests/NodeAttributesTest.php
rename to core/modules/rdf/tests/src/Functional/NodeAttributesTest.php
index 5c6b267..e0b8bdf 100644
--- a/core/modules/rdf/src/Tests/NodeAttributesTest.php
+++ b/core/modules/rdf/tests/src/Functional/NodeAttributesTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\rdf\Tests;
+namespace Drupal\Tests\rdf\Functional;
 
 use Drupal\node\Tests\NodeTestBase;
 
diff --git a/core/modules/rdf/src/Tests/StandardProfileTest.php b/core/modules/rdf/tests/src/Functional/StandardProfileTest.php
similarity index 99%
rename from core/modules/rdf/src/Tests/StandardProfileTest.php
rename to core/modules/rdf/tests/src/Functional/StandardProfileTest.php
index d8aa1b1..6f04f5c 100644
--- a/core/modules/rdf/src/Tests/StandardProfileTest.php
+++ b/core/modules/rdf/tests/src/Functional/StandardProfileTest.php
@@ -1,13 +1,13 @@
 <?php
 
-namespace Drupal\rdf\Tests;
+namespace Drupal\Tests\rdf\Functional;
 
 use Drupal\Core\Url;
 use Drupal\file\Entity\File;
 use Drupal\image\Entity\ImageStyle;
 use Drupal\node\Entity\NodeType;
 use Drupal\node\NodeInterface;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\comment\Entity\Comment;
 use Drupal\taxonomy\Entity\Term;
 
@@ -16,7 +16,7 @@
  *
  * @group rdf
  */
-class StandardProfileTest extends WebTestBase {
+class StandardProfileTest extends BrowserTestBase {
 
   /**
    * The profile used during tests.
diff --git a/core/modules/rdf/src/Tests/TaxonomyAttributesTest.php b/core/modules/rdf/tests/src/Functional/TaxonomyAttributesTest.php
similarity index 98%
rename from core/modules/rdf/src/Tests/TaxonomyAttributesTest.php
rename to core/modules/rdf/tests/src/Functional/TaxonomyAttributesTest.php
index 6be2c5b..799b764 100644
--- a/core/modules/rdf/src/Tests/TaxonomyAttributesTest.php
+++ b/core/modules/rdf/tests/src/Functional/TaxonomyAttributesTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\rdf\Tests;
+namespace Drupal\Tests\rdf\Functional;
 
 use Drupal\taxonomy\Tests\TaxonomyTestBase;
 
diff --git a/core/modules/rdf/src/Tests/UserAttributesTest.php b/core/modules/rdf/tests/src/Functional/UserAttributesTest.php
similarity index 96%
rename from core/modules/rdf/src/Tests/UserAttributesTest.php
rename to core/modules/rdf/tests/src/Functional/UserAttributesTest.php
index 232b5b2..82c70d9 100644
--- a/core/modules/rdf/src/Tests/UserAttributesTest.php
+++ b/core/modules/rdf/tests/src/Functional/UserAttributesTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\rdf\Tests;
+namespace Drupal\Tests\rdf\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the RDFa markup of Users.
  *
  * @group rdf
  */
-class UserAttributesTest extends WebTestBase {
+class UserAttributesTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/search/src/Tests/SearchTestBase.php b/core/modules/search/src/Tests/SearchTestBase.php
index 83967b3..59f6c45 100644
--- a/core/modules/search/src/Tests/SearchTestBase.php
+++ b/core/modules/search/src/Tests/SearchTestBase.php
@@ -7,6 +7,9 @@
 
 /**
  * Defines the common search test code.
+ *
+ * @deprecated Scheduled for removal in Drupal 9.0.0.
+ *   Use \Drupal\Tests\search\Functional\SearchTestBase instead.
  */
 abstract class SearchTestBase extends WebTestBase {
 
diff --git a/core/modules/search/src/Tests/SearchCommentCountToggleTest.php b/core/modules/search/tests/src/Functional/SearchCommentCountToggleTest.php
similarity index 99%
rename from core/modules/search/src/Tests/SearchCommentCountToggleTest.php
rename to core/modules/search/tests/src/Functional/SearchCommentCountToggleTest.php
index 48f8bb6..a6bf35e 100644
--- a/core/modules/search/src/Tests/SearchCommentCountToggleTest.php
+++ b/core/modules/search/tests/src/Functional/SearchCommentCountToggleTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\search\Tests;
+namespace Drupal\Tests\search\Functional;
 
 use Drupal\comment\Plugin\Field\FieldType\CommentItemInterface;
 use Drupal\comment\Tests\CommentTestTrait;
diff --git a/core/modules/search/src/Tests/SearchDateIntervalTest.php b/core/modules/search/tests/src/Functional/SearchDateIntervalTest.php
similarity index 98%
rename from core/modules/search/src/Tests/SearchDateIntervalTest.php
rename to core/modules/search/tests/src/Functional/SearchDateIntervalTest.php
index 967f1f5..0ca15c0 100644
--- a/core/modules/search/src/Tests/SearchDateIntervalTest.php
+++ b/core/modules/search/tests/src/Functional/SearchDateIntervalTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\search\Tests;
+namespace Drupal\Tests\search\Functional;
 
 use Drupal\language\Entity\ConfigurableLanguage;
 
diff --git a/core/modules/search/src/Tests/SearchExactTest.php b/core/modules/search/tests/src/Functional/SearchExactTest.php
similarity index 98%
rename from core/modules/search/src/Tests/SearchExactTest.php
rename to core/modules/search/tests/src/Functional/SearchExactTest.php
index d17646b..6280364 100644
--- a/core/modules/search/src/Tests/SearchExactTest.php
+++ b/core/modules/search/tests/src/Functional/SearchExactTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\search\Tests;
+namespace Drupal\Tests\search\Functional;
 
 /**
  * Tests that searching for a phrase gets the correct page count.
diff --git a/core/modules/search/src/Tests/SearchKeywordsConditionsTest.php b/core/modules/search/tests/src/Functional/SearchKeywordsConditionsTest.php
similarity index 98%
rename from core/modules/search/src/Tests/SearchKeywordsConditionsTest.php
rename to core/modules/search/tests/src/Functional/SearchKeywordsConditionsTest.php
index 1625d8d..a75fcb5 100644
--- a/core/modules/search/src/Tests/SearchKeywordsConditionsTest.php
+++ b/core/modules/search/tests/src/Functional/SearchKeywordsConditionsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\search\Tests;
+namespace Drupal\Tests\search\Functional;
 
 use Drupal\Component\Utility\Html;
 
diff --git a/core/modules/search/src/Tests/SearchMultilingualEntityTest.php b/core/modules/search/tests/src/Functional/SearchMultilingualEntityTest.php
similarity index 99%
rename from core/modules/search/src/Tests/SearchMultilingualEntityTest.php
rename to core/modules/search/tests/src/Functional/SearchMultilingualEntityTest.php
index e133101..faaa93f 100644
--- a/core/modules/search/src/Tests/SearchMultilingualEntityTest.php
+++ b/core/modules/search/tests/src/Functional/SearchMultilingualEntityTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\search\Tests;
+namespace Drupal\Tests\search\Functional;
 
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\language\Entity\ConfigurableLanguage;
diff --git a/core/modules/search/src/Tests/SearchNodeDiacriticsTest.php b/core/modules/search/tests/src/Functional/SearchNodeDiacriticsTest.php
similarity index 98%
rename from core/modules/search/src/Tests/SearchNodeDiacriticsTest.php
rename to core/modules/search/tests/src/Functional/SearchNodeDiacriticsTest.php
index a8b45a5..27baa4b 100644
--- a/core/modules/search/src/Tests/SearchNodeDiacriticsTest.php
+++ b/core/modules/search/tests/src/Functional/SearchNodeDiacriticsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\search\Tests;
+namespace Drupal\Tests\search\Functional;
 
 /**
  * Tests search functionality with diacritics.
diff --git a/core/modules/search/src/Tests/SearchNodePunctuationTest.php b/core/modules/search/tests/src/Functional/SearchNodePunctuationTest.php
similarity index 98%
rename from core/modules/search/src/Tests/SearchNodePunctuationTest.php
rename to core/modules/search/tests/src/Functional/SearchNodePunctuationTest.php
index c185aea..0d0a129 100644
--- a/core/modules/search/src/Tests/SearchNodePunctuationTest.php
+++ b/core/modules/search/tests/src/Functional/SearchNodePunctuationTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\search\Tests;
+namespace Drupal\Tests\search\Functional;
 
 /**
  * Tests search functionality with punctuation and HTML entities.
diff --git a/core/modules/search/src/Tests/SearchPageOverrideTest.php b/core/modules/search/tests/src/Functional/SearchPageOverrideTest.php
similarity index 96%
rename from core/modules/search/src/Tests/SearchPageOverrideTest.php
rename to core/modules/search/tests/src/Functional/SearchPageOverrideTest.php
index 9768904..88edab1 100644
--- a/core/modules/search/src/Tests/SearchPageOverrideTest.php
+++ b/core/modules/search/tests/src/Functional/SearchPageOverrideTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\search\Tests;
+namespace Drupal\Tests\search\Functional;
 
 /**
  * Tests if the result page can be overridden.
diff --git a/core/modules/search/src/Tests/SearchSetLocaleTest.php b/core/modules/search/tests/src/Functional/SearchSetLocaleTest.php
similarity index 96%
rename from core/modules/search/src/Tests/SearchSetLocaleTest.php
rename to core/modules/search/tests/src/Functional/SearchSetLocaleTest.php
index 0ec4137..4291598 100644
--- a/core/modules/search/src/Tests/SearchSetLocaleTest.php
+++ b/core/modules/search/tests/src/Functional/SearchSetLocaleTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\search\Tests;
+namespace Drupal\Tests\search\Functional;
 
 /**
  * Tests that search works with numeric locale settings.
diff --git a/core/modules/search/src/Tests/SearchSimplifyTest.php b/core/modules/search/tests/src/Functional/SearchSimplifyTest.php
similarity index 98%
rename from core/modules/search/src/Tests/SearchSimplifyTest.php
rename to core/modules/search/tests/src/Functional/SearchSimplifyTest.php
index bdb96c9..6e7bb84 100644
--- a/core/modules/search/src/Tests/SearchSimplifyTest.php
+++ b/core/modules/search/tests/src/Functional/SearchSimplifyTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\search\Tests;
+namespace Drupal\Tests\search\Functional;
 use Drupal\Component\Utility\Unicode;
 
 /**
diff --git a/core/modules/search/src/Tests/SearchTestBase.php b/core/modules/search/tests/src/Functional/SearchTestBase.php
similarity index 95%
copy from core/modules/search/src/Tests/SearchTestBase.php
copy to core/modules/search/tests/src/Functional/SearchTestBase.php
index 83967b3..93e0ee2 100644
--- a/core/modules/search/src/Tests/SearchTestBase.php
+++ b/core/modules/search/tests/src/Functional/SearchTestBase.php
@@ -1,14 +1,14 @@
 <?php
 
-namespace Drupal\search\Tests;
+namespace Drupal\Tests\search\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\Component\Utility\SafeMarkup;
 
 /**
  * Defines the common search test code.
  */
-abstract class SearchTestBase extends WebTestBase {
+abstract class SearchTestBase extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/search/src/Tests/SearchTokenizerTest.php b/core/modules/search/tests/src/Functional/SearchTokenizerTest.php
similarity index 99%
rename from core/modules/search/src/Tests/SearchTokenizerTest.php
rename to core/modules/search/tests/src/Functional/SearchTokenizerTest.php
index f8b3ccb..e25bfc4 100644
--- a/core/modules/search/src/Tests/SearchTokenizerTest.php
+++ b/core/modules/search/tests/src/Functional/SearchTokenizerTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\search\Tests;
+namespace Drupal\Tests\search\Functional;
 use Drupal\Component\Utility\Unicode;
 
 /**
diff --git a/core/modules/shortcut/src/Tests/ShortcutCacheTagsTest.php b/core/modules/shortcut/tests/src/Functional/ShortcutCacheTagsTest.php
similarity index 97%
rename from core/modules/shortcut/src/Tests/ShortcutCacheTagsTest.php
rename to core/modules/shortcut/tests/src/Functional/ShortcutCacheTagsTest.php
index a437ffb..23f0145 100644
--- a/core/modules/shortcut/src/Tests/ShortcutCacheTagsTest.php
+++ b/core/modules/shortcut/tests/src/Functional/ShortcutCacheTagsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\shortcut\Tests;
+namespace Drupal\Tests\shortcut\Functional;
 
 use Drupal\Core\Cache\CacheBackendInterface;
 use Drupal\shortcut\Entity\Shortcut;
diff --git a/core/modules/simpletest/src/Tests/FolderTest.php b/core/modules/simpletest/tests/src/Functional/FolderTest.php
similarity index 77%
rename from core/modules/simpletest/src/Tests/FolderTest.php
rename to core/modules/simpletest/tests/src/Functional/FolderTest.php
index d43c638..4055976 100644
--- a/core/modules/simpletest/src/Tests/FolderTest.php
+++ b/core/modules/simpletest/tests/src/Functional/FolderTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\simpletest\Tests;
+namespace Drupal\Tests\simpletest\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * This test will check SimpleTest's treatment of hook_install during setUp.
@@ -10,7 +10,7 @@
  *
  * @group simpletest
  */
-class FolderTest extends WebTestBase {
+class FolderTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/simpletest/src/Tests/MailCaptureTest.php b/core/modules/simpletest/tests/src/Functional/MailCaptureTest.php
similarity index 96%
rename from core/modules/simpletest/src/Tests/MailCaptureTest.php
rename to core/modules/simpletest/tests/src/Functional/MailCaptureTest.php
index 700c757..1c0c533 100644
--- a/core/modules/simpletest/src/Tests/MailCaptureTest.php
+++ b/core/modules/simpletest/tests/src/Functional/MailCaptureTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\simpletest\Tests;
+namespace Drupal\Tests\simpletest\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the SimpleTest email capturing logic, the assertMail assertion and the
@@ -10,7 +10,7 @@
  *
  * @group simpletest
  */
-class MailCaptureTest extends WebTestBase {
+class MailCaptureTest extends BrowserTestBase {
   /**
    * Test to see if the wrapper function is executed correctly.
    */
diff --git a/core/modules/simpletest/src/Tests/MissingDependentModuleUnitTest.php b/core/modules/simpletest/tests/src/Functional/MissingDependentModuleUnitTest.php
similarity index 70%
rename from core/modules/simpletest/src/Tests/MissingDependentModuleUnitTest.php
rename to core/modules/simpletest/tests/src/Functional/MissingDependentModuleUnitTest.php
index 9c707b8..885a44c 100644
--- a/core/modules/simpletest/src/Tests/MissingDependentModuleUnitTest.php
+++ b/core/modules/simpletest/tests/src/Functional/MissingDependentModuleUnitTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\simpletest\Tests;
+namespace Drupal\Tests\simpletest\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * This test should not load since it requires a module that is not found.
@@ -10,7 +10,7 @@
  * @group simpletest
  * @dependencies simpletest_missing_module
  */
-class MissingDependentModuleUnitTest extends WebTestBase {
+class MissingDependentModuleUnitTest extends BrowserTestBase {
 
   /**
    * Ensure that this test will not be loaded despite its dependency.
diff --git a/core/modules/simpletest/src/Tests/OtherInstallationProfileTestsTest.php b/core/modules/simpletest/tests/src/Functional/OtherInstallationProfileTestsTest.php
similarity index 91%
rename from core/modules/simpletest/src/Tests/OtherInstallationProfileTestsTest.php
rename to core/modules/simpletest/tests/src/Functional/OtherInstallationProfileTestsTest.php
index b4263f1..71601e2 100644
--- a/core/modules/simpletest/src/Tests/OtherInstallationProfileTestsTest.php
+++ b/core/modules/simpletest/tests/src/Functional/OtherInstallationProfileTestsTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\simpletest\Tests;
+namespace Drupal\Tests\simpletest\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Verifies that tests in other installation profiles are found.
@@ -10,7 +10,7 @@
  * @group simpletest
  * @see SimpleTestInstallationProfileModuleTestsTestCase
  */
-class OtherInstallationProfileTestsTest extends WebTestBase {
+class OtherInstallationProfileTestsTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/simpletest/src/Tests/UserHelpersTest.php b/core/modules/simpletest/tests/src/Functional/UserHelpersTest.php
similarity index 92%
rename from core/modules/simpletest/src/Tests/UserHelpersTest.php
rename to core/modules/simpletest/tests/src/Functional/UserHelpersTest.php
index c3fb00b..ace0e49 100644
--- a/core/modules/simpletest/src/Tests/UserHelpersTest.php
+++ b/core/modules/simpletest/tests/src/Functional/UserHelpersTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\simpletest\Tests;
+namespace Drupal\Tests\simpletest\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests User related helper methods of WebTestBase.
  *
  * @group simpletest
  */
-class UserHelpersTest extends WebTestBase {
+class UserHelpersTest extends BrowserTestBase {
 
   /**
    * Tests WebTestBase::drupalUserIsLoggedIn().
diff --git a/core/modules/statistics/src/Tests/StatisticsTestBase.php b/core/modules/statistics/src/Tests/StatisticsTestBase.php
index b18b0ac..27fe836 100644
--- a/core/modules/statistics/src/Tests/StatisticsTestBase.php
+++ b/core/modules/statistics/src/Tests/StatisticsTestBase.php
@@ -6,6 +6,9 @@
 
 /**
  * Defines a base class for testing the Statistics module.
+ *
+ * @deprecated Scheduled for removal in Drupal 9.0.0.
+ *   Use \Drupal\Tests\statistics\Functional\StatisticsTestBase instead.
  */
 abstract class StatisticsTestBase extends WebTestBase {
 
diff --git a/core/modules/statistics/src/Tests/StatisticsAttachedTest.php b/core/modules/statistics/tests/src/Functional/StatisticsAttachedTest.php
similarity index 90%
rename from core/modules/statistics/src/Tests/StatisticsAttachedTest.php
rename to core/modules/statistics/tests/src/Functional/StatisticsAttachedTest.php
index f869b2a..9ea6e94 100644
--- a/core/modules/statistics/src/Tests/StatisticsAttachedTest.php
+++ b/core/modules/statistics/tests/src/Functional/StatisticsAttachedTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\statistics\Tests;
+namespace Drupal\Tests\statistics\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\node\Entity\Node;
 
 /**
@@ -10,7 +10,7 @@
  *
  * @group statistics
  */
-class StatisticsAttachedTest extends WebTestBase {
+class StatisticsAttachedTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/statistics/src/Tests/StatisticsTestBase.php b/core/modules/statistics/tests/src/Functional/StatisticsTestBase.php
similarity index 87%
copy from core/modules/statistics/src/Tests/StatisticsTestBase.php
copy to core/modules/statistics/tests/src/Functional/StatisticsTestBase.php
index b18b0ac..97d9082 100644
--- a/core/modules/statistics/src/Tests/StatisticsTestBase.php
+++ b/core/modules/statistics/tests/src/Functional/StatisticsTestBase.php
@@ -1,13 +1,13 @@
 <?php
 
-namespace Drupal\statistics\Tests;
+namespace Drupal\Tests\statistics\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Defines a base class for testing the Statistics module.
  */
-abstract class StatisticsTestBase extends WebTestBase {
+abstract class StatisticsTestBase extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/statistics/src/Tests/StatisticsTokenReplaceTest.php b/core/modules/statistics/tests/src/Functional/StatisticsTokenReplaceTest.php
similarity index 97%
rename from core/modules/statistics/src/Tests/StatisticsTokenReplaceTest.php
rename to core/modules/statistics/tests/src/Functional/StatisticsTokenReplaceTest.php
index b7d22b8..d586ea6 100644
--- a/core/modules/statistics/src/Tests/StatisticsTokenReplaceTest.php
+++ b/core/modules/statistics/tests/src/Functional/StatisticsTokenReplaceTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\statistics\Tests;
+namespace Drupal\Tests\statistics\Functional;
 
 /**
  * Generates text using placeholders for dummy content to check statistics token
diff --git a/core/modules/system/src/Tests/Cache/CacheTestBase.php b/core/modules/system/src/Tests/Cache/CacheTestBase.php
index efca9fd..0f0fe84 100644
--- a/core/modules/system/src/Tests/Cache/CacheTestBase.php
+++ b/core/modules/system/src/Tests/Cache/CacheTestBase.php
@@ -6,6 +6,9 @@
 
 /**
  * Provides helper methods for cache tests.
+ *
+ * @deprecated Scheduled for removal in Drupal 9.0.0.
+ *   Use \Drupal\Tests\system\Functional\Cache\CacheTestBase instead.
  */
 abstract class CacheTestBase extends WebTestBase {
 
diff --git a/core/modules/system/src/Tests/Cache/PageCacheTagsTestBase.php b/core/modules/system/src/Tests/Cache/PageCacheTagsTestBase.php
index 2c77818..fcfb023 100644
--- a/core/modules/system/src/Tests/Cache/PageCacheTagsTestBase.php
+++ b/core/modules/system/src/Tests/Cache/PageCacheTagsTestBase.php
@@ -8,6 +8,9 @@
 
 /**
  * Provides helper methods for page cache tags tests.
+ *
+ * @deprecated Scheduled for removal in Drupal 9.0.0.
+ *   Use \Drupal\Tests\system\Functional\Cache\PageCacheTagsTestBase instead.
  */
 abstract class PageCacheTagsTestBase extends WebTestBase {
 
diff --git a/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php b/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php
index 9ecefad..1de21ef 100644
--- a/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php
+++ b/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php
@@ -16,6 +16,9 @@
 
 /**
  * Provides helper methods for Entity cache tags tests.
+ *
+ * @deprecated Scheduled for removal in Drupal 9.0.0.
+ *   Use \Drupal\Tests\system\Functional\Entity\EntityCacheTagsTestBase instead.
  */
 abstract class EntityCacheTagsTestBase extends PageCacheTagsTestBase {
 
diff --git a/core/modules/system/src/Tests/Module/ModuleTestBase.php b/core/modules/system/src/Tests/Module/ModuleTestBase.php
index e212617..ccf8cd5 100644
--- a/core/modules/system/src/Tests/Module/ModuleTestBase.php
+++ b/core/modules/system/src/Tests/Module/ModuleTestBase.php
@@ -10,6 +10,9 @@
 
 /**
  * Helper class for module test cases.
+ *
+ * @deprecated Scheduled for removal in Drupal 9.0.0.
+ *   Use \Drupal\Tests\system\Functional\Module\ModuleTestBase instead.
  */
 abstract class ModuleTestBase extends WebTestBase {
 
diff --git a/core/modules/system/tests/modules/test_page_test/src/Controller/Test.php b/core/modules/system/tests/modules/test_page_test/src/Controller/Test.php
index 35ccf0c..7bb0fb1 100644
--- a/core/modules/system/tests/modules/test_page_test/src/Controller/Test.php
+++ b/core/modules/system/tests/modules/test_page_test/src/Controller/Test.php
@@ -88,4 +88,14 @@ public function error() {
     ];
   }
 
+  /**
+   * Renders a page with encoded markup.
+   *
+   * @return array
+   *   A render array as expected by drupal_render()
+   */
+  public function renderEncodedMarkup() {
+    return ['#plain_text' => 'Bad html <script>alert(123);</script>'];
+  }
+
 }
diff --git a/core/modules/system/tests/modules/test_page_test/test_page_test.routing.yml b/core/modules/system/tests/modules/test_page_test/test_page_test.routing.yml
index a2d5ed5..cbcf6d8 100644
--- a/core/modules/system/tests/modules/test_page_test/test_page_test.routing.yml
+++ b/core/modules/system/tests/modules/test_page_test/test_page_test.routing.yml
@@ -58,3 +58,11 @@ test_page_test.error:
     code: 200
   requirements:
     _access: 'TRUE'
+
+test_page_test.encoded:
+  path: '/test-encoded'
+  defaults:
+    _title: 'Page with encoded HTML'
+    _controller: '\Drupal\test_page_test\Controller\Test::renderEncodedMarkup'
+  requirements:
+    _access: 'TRUE'
diff --git a/core/modules/system/src/Tests/Bootstrap/DrupalSetMessageTest.php b/core/modules/system/tests/src/Functional/Bootstrap/DrupalSetMessageTest.php
similarity index 90%
rename from core/modules/system/src/Tests/Bootstrap/DrupalSetMessageTest.php
rename to core/modules/system/tests/src/Functional/Bootstrap/DrupalSetMessageTest.php
index 29ca02f..1b0f31a 100644
--- a/core/modules/system/src/Tests/Bootstrap/DrupalSetMessageTest.php
+++ b/core/modules/system/tests/src/Functional/Bootstrap/DrupalSetMessageTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\Bootstrap;
+namespace Drupal\Tests\system\Functional\Bootstrap;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests drupal_set_message() and related functions.
  *
  * @group Bootstrap
  */
-class DrupalSetMessageTest extends WebTestBase {
+class DrupalSetMessageTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Cache/CacheTestBase.php b/core/modules/system/tests/src/Functional/Cache/CacheTestBase.php
similarity index 93%
copy from core/modules/system/src/Tests/Cache/CacheTestBase.php
copy to core/modules/system/tests/src/Functional/Cache/CacheTestBase.php
index efca9fd..fb552fd 100644
--- a/core/modules/system/src/Tests/Cache/CacheTestBase.php
+++ b/core/modules/system/tests/src/Functional/Cache/CacheTestBase.php
@@ -1,13 +1,13 @@
 <?php
 
-namespace Drupal\system\Tests\Cache;
+namespace Drupal\Tests\system\Functional\Cache;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Provides helper methods for cache tests.
  */
-abstract class CacheTestBase extends WebTestBase {
+abstract class CacheTestBase extends BrowserTestBase {
 
   protected $defaultBin = 'render';
   protected $defaultCid = 'test_temporary';
diff --git a/core/modules/system/src/Tests/Cache/ClearTest.php b/core/modules/system/tests/src/Functional/Cache/ClearTest.php
similarity index 95%
rename from core/modules/system/src/Tests/Cache/ClearTest.php
rename to core/modules/system/tests/src/Functional/Cache/ClearTest.php
index 3a3fe90..4b33987 100644
--- a/core/modules/system/src/Tests/Cache/ClearTest.php
+++ b/core/modules/system/tests/src/Functional/Cache/ClearTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\system\Tests\Cache;
+namespace Drupal\Tests\system\Functional\Cache;
 
 /**
  * Tests our clearing is done the proper way.
diff --git a/core/modules/system/src/Tests/Cache/PageCacheTagsTestBase.php b/core/modules/system/tests/src/Functional/Cache/PageCacheTagsTestBase.php
similarity index 92%
copy from core/modules/system/src/Tests/Cache/PageCacheTagsTestBase.php
copy to core/modules/system/tests/src/Functional/Cache/PageCacheTagsTestBase.php
index 2c77818..de2b419 100644
--- a/core/modules/system/src/Tests/Cache/PageCacheTagsTestBase.php
+++ b/core/modules/system/tests/src/Functional/Cache/PageCacheTagsTestBase.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\Cache;
+namespace Drupal\Tests\system\Functional\Cache;
 
 use Drupal\Core\Url;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\Component\Utility\SafeMarkup;
 
 /**
  * Provides helper methods for page cache tags tests.
  */
-abstract class PageCacheTagsTestBase extends WebTestBase {
+abstract class PageCacheTagsTestBase extends BrowserTestBase {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/system/src/Tests/Datetime/DrupalDateTimeTest.php b/core/modules/system/tests/src/Functional/Datetime/DrupalDateTimeTest.php
similarity index 97%
rename from core/modules/system/src/Tests/Datetime/DrupalDateTimeTest.php
rename to core/modules/system/tests/src/Functional/Datetime/DrupalDateTimeTest.php
index 219bc34..8ac27b0 100644
--- a/core/modules/system/src/Tests/Datetime/DrupalDateTimeTest.php
+++ b/core/modules/system/tests/src/Functional/Datetime/DrupalDateTimeTest.php
@@ -1,9 +1,9 @@
 <?php
 
-namespace Drupal\system\Tests\Datetime;
+namespace Drupal\Tests\system\Functional\Datetime;
 
 use Drupal\Core\Datetime\DrupalDateTime;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\user\Entity\User;
 
 /**
@@ -11,7 +11,7 @@
  *
  * @group Datetime
  */
-class DrupalDateTimeTest extends WebTestBase {
+class DrupalDateTimeTest extends BrowserTestBase {
 
   /**
    * Set up required modules.
diff --git a/core/modules/system/src/Tests/DrupalKernel/ContentNegotiationTest.php b/core/modules/system/tests/src/Functional/DrupalKernel/ContentNegotiationTest.php
similarity index 93%
rename from core/modules/system/src/Tests/DrupalKernel/ContentNegotiationTest.php
rename to core/modules/system/tests/src/Functional/DrupalKernel/ContentNegotiationTest.php
index dcd88ec..49817cc 100644
--- a/core/modules/system/src/Tests/DrupalKernel/ContentNegotiationTest.php
+++ b/core/modules/system/tests/src/Functional/DrupalKernel/ContentNegotiationTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\DrupalKernel;
+namespace Drupal\Tests\system\Functional\DrupalKernel;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests content negotiation.
  *
  * @group DrupalKernel
  */
-class ContentNegotiationTest extends WebTestBase {
+class ContentNegotiationTest extends BrowserTestBase {
 
   /**
    * Verifies HTML responses for bogus Accept headers.
diff --git a/core/modules/system/src/Tests/Entity/ConfigEntityImportTest.php b/core/modules/system/tests/src/Functional/Entity/ConfigEntityImportTest.php
similarity index 98%
rename from core/modules/system/src/Tests/Entity/ConfigEntityImportTest.php
rename to core/modules/system/tests/src/Functional/Entity/ConfigEntityImportTest.php
index 0f731be..c9243ea 100644
--- a/core/modules/system/src/Tests/Entity/ConfigEntityImportTest.php
+++ b/core/modules/system/tests/src/Functional/Entity/ConfigEntityImportTest.php
@@ -1,12 +1,12 @@
 <?php
 
-namespace Drupal\system\Tests\Entity;
+namespace Drupal\Tests\system\Functional\Entity;
 
 use Drupal\Core\Entity\EntityWithPluginCollectionInterface;
 use Drupal\filter\Entity\FilterFormat;
 use Drupal\image\Entity\ImageStyle;
 use Drupal\search\Entity\SearchPage;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\system\Entity\Action;
 
 /**
@@ -14,7 +14,7 @@
  *
  * @group Entity
  */
-class ConfigEntityImportTest extends WebTestBase {
+class ConfigEntityImportTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Entity/EntityAddUITest.php b/core/modules/system/tests/src/Functional/Entity/EntityAddUITest.php
similarity index 97%
rename from core/modules/system/src/Tests/Entity/EntityAddUITest.php
rename to core/modules/system/tests/src/Functional/Entity/EntityAddUITest.php
index f0b286f..a16614f 100644
--- a/core/modules/system/src/Tests/Entity/EntityAddUITest.php
+++ b/core/modules/system/tests/src/Functional/Entity/EntityAddUITest.php
@@ -1,18 +1,18 @@
 <?php
 
-namespace Drupal\system\Tests\Entity;
+namespace Drupal\Tests\system\Functional\Entity;
 
 use Drupal\entity_test\Entity\EntityTestBundle;
 use Drupal\entity_test\Entity\EntityTestMul;
 use Drupal\entity_test\Entity\EntityTestWithBundle;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the /add and /add/{type} controllers.
  *
  * @group entity
  */
-class EntityAddUITest extends WebTestBase {
+class EntityAddUITest extends BrowserTestBase {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php b/core/modules/system/tests/src/Functional/Entity/EntityCacheTagsTestBase.php
similarity index 99%
copy from core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php
copy to core/modules/system/tests/src/Functional/Entity/EntityCacheTagsTestBase.php
index 9ecefad..93c5030 100644
--- a/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php
+++ b/core/modules/system/tests/src/Functional/Entity/EntityCacheTagsTestBase.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\system\Tests\Entity;
+namespace Drupal\Tests\system\Functional\Entity;
 
 use Drupal\Core\Cache\Cache;
 use Drupal\Core\Entity\EntityInterface;
diff --git a/core/modules/system/src/Tests/Entity/EntityListBuilderTest.php b/core/modules/system/tests/src/Functional/Entity/EntityListBuilderTest.php
similarity index 93%
rename from core/modules/system/src/Tests/Entity/EntityListBuilderTest.php
rename to core/modules/system/tests/src/Functional/Entity/EntityListBuilderTest.php
index 2a849b2..6d70760 100644
--- a/core/modules/system/src/Tests/Entity/EntityListBuilderTest.php
+++ b/core/modules/system/tests/src/Functional/Entity/EntityListBuilderTest.php
@@ -1,17 +1,17 @@
 <?php
 
-namespace Drupal\system\Tests\Entity;
+namespace Drupal\Tests\system\Functional\Entity;
 
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\entity_test\Entity\EntityTest;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests entity list builder functionality.
  *
  * @group Entity
  */
-class EntityListBuilderTest extends WebTestBase {
+class EntityListBuilderTest extends BrowserTestBase {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/system/src/Tests/Entity/EntityOperationsTest.php b/core/modules/system/tests/src/Functional/Entity/EntityOperationsTest.php
similarity index 91%
rename from core/modules/system/src/Tests/Entity/EntityOperationsTest.php
rename to core/modules/system/tests/src/Functional/Entity/EntityOperationsTest.php
index 3e4c69f..3919ad1 100644
--- a/core/modules/system/src/Tests/Entity/EntityOperationsTest.php
+++ b/core/modules/system/tests/src/Functional/Entity/EntityOperationsTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\Entity;
+namespace Drupal\Tests\system\Functional\Entity;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests that operations can be injected from the hook.
  *
  * @group Entity
  */
-class EntityOperationsTest extends WebTestBase {
+class EntityOperationsTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Entity/EntityReferenceSelection/EntityReferenceSelectionAccessTest.php b/core/modules/system/tests/src/Functional/Entity/EntityReferenceSelection/EntityReferenceSelectionAccessTest.php
similarity index 98%
rename from core/modules/system/src/Tests/Entity/EntityReferenceSelection/EntityReferenceSelectionAccessTest.php
rename to core/modules/system/tests/src/Functional/Entity/EntityReferenceSelection/EntityReferenceSelectionAccessTest.php
index 86bc703..cbb6701 100644
--- a/core/modules/system/src/Tests/Entity/EntityReferenceSelection/EntityReferenceSelectionAccessTest.php
+++ b/core/modules/system/tests/src/Functional/Entity/EntityReferenceSelection/EntityReferenceSelectionAccessTest.php
@@ -1,13 +1,13 @@
 <?php
 
-namespace Drupal\system\Tests\Entity\EntityReferenceSelection;
+namespace Drupal\Tests\system\Functional\Entity\EntityReferenceSelection;
 
 use Drupal\comment\Tests\CommentTestTrait;
 use Drupal\Component\Utility\Html;
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\comment\CommentInterface;
 use Drupal\node\Entity\Node;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\user\Entity\User;
 use Drupal\comment\Entity\Comment;
 
@@ -16,7 +16,7 @@
  *
  * @group entity_reference
  */
-class EntityReferenceSelectionAccessTest extends WebTestBase {
+class EntityReferenceSelectionAccessTest extends BrowserTestBase {
 
   use CommentTestTrait;
 
diff --git a/core/modules/system/src/Tests/Entity/EntityRevisionsTest.php b/core/modules/system/tests/src/Functional/Entity/EntityRevisionsTest.php
similarity index 97%
rename from core/modules/system/src/Tests/Entity/EntityRevisionsTest.php
rename to core/modules/system/tests/src/Functional/Entity/EntityRevisionsTest.php
index a64ffc5..ccc48df 100644
--- a/core/modules/system/src/Tests/Entity/EntityRevisionsTest.php
+++ b/core/modules/system/tests/src/Functional/Entity/EntityRevisionsTest.php
@@ -1,10 +1,10 @@
 <?php
 
-namespace Drupal\system\Tests\Entity;
+namespace Drupal\Tests\system\Functional\Entity;
 
 use Drupal\entity_test\Entity\EntityTestMulRev;
 use Drupal\language\Entity\ConfigurableLanguage;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Create a entity with revisions and test viewing, saving, reverting, and
@@ -12,7 +12,7 @@
  *
  * @group Entity
  */
-class EntityRevisionsTest extends WebTestBase {
+class EntityRevisionsTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Entity/EntityViewControllerTest.php b/core/modules/system/tests/src/Functional/Entity/EntityViewControllerTest.php
similarity index 97%
rename from core/modules/system/src/Tests/Entity/EntityViewControllerTest.php
rename to core/modules/system/tests/src/Functional/Entity/EntityViewControllerTest.php
index d9f36ff..8718929 100644
--- a/core/modules/system/src/Tests/Entity/EntityViewControllerTest.php
+++ b/core/modules/system/tests/src/Functional/Entity/EntityViewControllerTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\system\Tests\Entity;
+namespace Drupal\Tests\system\Functional\Entity;
 
 use Drupal\entity_test\Entity\EntityTest;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests EntityViewController functionality.
  *
  * @group Entity
  */
-class EntityViewControllerTest extends WebTestBase {
+class EntityViewControllerTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/File/ConfigTest.php b/core/modules/system/tests/src/Functional/File/ConfigTest.php
similarity index 93%
rename from core/modules/system/src/Tests/File/ConfigTest.php
rename to core/modules/system/tests/src/Functional/File/ConfigTest.php
index 2313e26..ea73322 100644
--- a/core/modules/system/src/Tests/File/ConfigTest.php
+++ b/core/modules/system/tests/src/Functional/File/ConfigTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\File;
+namespace Drupal\Tests\system\Functional\File;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests file system configuration operations.
  *
  * @group File
  */
-class ConfigTest extends WebTestBase {
+class ConfigTest extends BrowserTestBase {
 
   protected function setUp(){
     parent::setUp();
diff --git a/core/modules/system/src/Tests/File/FileSaveHtaccessLoggingTest.php b/core/modules/system/tests/src/Functional/File/FileSaveHtaccessLoggingTest.php
similarity index 87%
rename from core/modules/system/src/Tests/File/FileSaveHtaccessLoggingTest.php
rename to core/modules/system/tests/src/Functional/File/FileSaveHtaccessLoggingTest.php
index 5827e24..6da63ee 100644
--- a/core/modules/system/src/Tests/File/FileSaveHtaccessLoggingTest.php
+++ b/core/modules/system/tests/src/Functional/File/FileSaveHtaccessLoggingTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\system\Tests\File;
+namespace Drupal\Tests\system\Functional\File;
 
 use Drupal\Component\PhpStorage\FileStorage;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the log message added by file_save_htacess().
  *
  * @group File
  */
-class FileSaveHtaccessLoggingTest extends WebTestBase {
+class FileSaveHtaccessLoggingTest extends BrowserTestBase {
 
   protected static $modules = ['dblog'];
 
diff --git a/core/modules/system/src/Tests/FileTransfer/FileTransferTest.php b/core/modules/system/tests/src/Functional/FileTransfer/FileTransferTest.php
similarity index 94%
rename from core/modules/system/src/Tests/FileTransfer/FileTransferTest.php
rename to core/modules/system/tests/src/Functional/FileTransfer/FileTransferTest.php
index e8a6789..985e21a 100644
--- a/core/modules/system/src/Tests/FileTransfer/FileTransferTest.php
+++ b/core/modules/system/tests/src/Functional/FileTransfer/FileTransferTest.php
@@ -1,10 +1,10 @@
 <?php
 
-namespace Drupal\system\Tests\FileTransfer;
+namespace Drupal\Tests\system\Functional\FileTransfer;
 
 use Drupal\Core\FileTransfer\FileTransferException;
 use Drupal\Core\StreamWrapper\PublicStream;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests that the jail is respected and that protocols using recursive file move
@@ -12,7 +12,7 @@
  *
  * @group FileTransfer
  */
-class FileTransferTest extends WebTestBase {
+class FileTransferTest extends BrowserTestBase {
   protected $hostname = 'localhost';
   protected $username = 'drupal';
   protected $password = 'password';
diff --git a/core/modules/system/src/Tests/FileTransfer/MockTestConnection.php b/core/modules/system/tests/src/Functional/FileTransfer/MockTestConnection.php
similarity index 85%
rename from core/modules/system/src/Tests/FileTransfer/MockTestConnection.php
rename to core/modules/system/tests/src/Functional/FileTransfer/MockTestConnection.php
index 7e63dc7..6d877b2 100644
--- a/core/modules/system/src/Tests/FileTransfer/MockTestConnection.php
+++ b/core/modules/system/tests/src/Functional/FileTransfer/MockTestConnection.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\system\Tests\FileTransfer;
+namespace Drupal\Tests\system\Functional\FileTransfer;
 
 /**
  * Mock connection object for test case.
diff --git a/core/modules/system/src/Tests/FileTransfer/TestFileTransfer.php b/core/modules/system/tests/src/Functional/FileTransfer/TestFileTransfer.php
similarity index 96%
rename from core/modules/system/src/Tests/FileTransfer/TestFileTransfer.php
rename to core/modules/system/tests/src/Functional/FileTransfer/TestFileTransfer.php
index eb73ebc..04e282f 100644
--- a/core/modules/system/src/Tests/FileTransfer/TestFileTransfer.php
+++ b/core/modules/system/tests/src/Functional/FileTransfer/TestFileTransfer.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\system\Tests\FileTransfer;
+namespace Drupal\Tests\system\Functional\FileTransfer;
 
 use Drupal\Core\FileTransfer\FileTransfer;
 use Drupal\Core\FileTransfer\FileTransferException;
diff --git a/core/modules/system/src/Tests/Form/ElementsAccessTest.php b/core/modules/system/tests/src/Functional/Form/ElementsAccessTest.php
similarity index 89%
rename from core/modules/system/src/Tests/Form/ElementsAccessTest.php
rename to core/modules/system/tests/src/Functional/Form/ElementsAccessTest.php
index 13386d7..0684c3d 100644
--- a/core/modules/system/src/Tests/Form/ElementsAccessTest.php
+++ b/core/modules/system/tests/src/Functional/Form/ElementsAccessTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\Form;
+namespace Drupal\Tests\system\Functional\Form;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests access control for form elements.
  *
  * @group Form
  */
-class ElementsAccessTest extends WebTestBase {
+class ElementsAccessTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Form/FormObjectTest.php b/core/modules/system/tests/src/Functional/Form/FormObjectTest.php
similarity index 98%
rename from core/modules/system/src/Tests/Form/FormObjectTest.php
rename to core/modules/system/tests/src/Functional/Form/FormObjectTest.php
index 38db211..a031198 100644
--- a/core/modules/system/src/Tests/Form/FormObjectTest.php
+++ b/core/modules/system/tests/src/Functional/Form/FormObjectTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\system\Tests\Form;
+namespace Drupal\Tests\system\Functional\Form;
 
 use Drupal\system\Tests\System\SystemConfigFormTestBase;
 use Drupal\form_test\FormTestObject;
diff --git a/core/modules/system/src/Tests/Form/ModulesListFormWebTest.php b/core/modules/system/tests/src/Functional/Form/ModulesListFormWebTest.php
similarity index 91%
rename from core/modules/system/src/Tests/Form/ModulesListFormWebTest.php
rename to core/modules/system/tests/src/Functional/Form/ModulesListFormWebTest.php
index 921a27d..640a60d 100644
--- a/core/modules/system/src/Tests/Form/ModulesListFormWebTest.php
+++ b/core/modules/system/tests/src/Functional/Form/ModulesListFormWebTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\Form;
+namespace Drupal\Tests\system\Functional\Form;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests \Drupal\system\Form\ModulesListForm.
  *
  * @group Form
  */
-class ModulesListFormWebTest extends WebTestBase {
+class ModulesListFormWebTest extends BrowserTestBase {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/system/src/Tests/Form/RedirectTest.php b/core/modules/system/tests/src/Functional/Form/RedirectTest.php
similarity index 96%
rename from core/modules/system/src/Tests/Form/RedirectTest.php
rename to core/modules/system/tests/src/Functional/Form/RedirectTest.php
index 6b6d360..d369b9c 100644
--- a/core/modules/system/src/Tests/Form/RedirectTest.php
+++ b/core/modules/system/tests/src/Functional/Form/RedirectTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\Form;
+namespace Drupal\Tests\system\Functional\Form;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests form redirection functionality.
  *
  * @group Form
  */
-class RedirectTest extends WebTestBase {
+class RedirectTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Lock/LockFunctionalTest.php b/core/modules/system/tests/src/Functional/Lock/LockFunctionalTest.php
similarity index 96%
rename from core/modules/system/src/Tests/Lock/LockFunctionalTest.php
rename to core/modules/system/tests/src/Functional/Lock/LockFunctionalTest.php
index 0355a76..5e20121 100644
--- a/core/modules/system/src/Tests/Lock/LockFunctionalTest.php
+++ b/core/modules/system/tests/src/Functional/Lock/LockFunctionalTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\Lock;
+namespace Drupal\Tests\system\Functional\Lock;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Confirm locking works between two separate requests.
  *
  * @group Lock
  */
-class LockFunctionalTest extends WebTestBase {
+class LockFunctionalTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Mail/HtmlToTextTest.php b/core/modules/system/tests/src/Functional/Mail/HtmlToTextTest.php
similarity index 99%
rename from core/modules/system/src/Tests/Mail/HtmlToTextTest.php
rename to core/modules/system/tests/src/Functional/Mail/HtmlToTextTest.php
index f396acd..cbcf87f 100644
--- a/core/modules/system/src/Tests/Mail/HtmlToTextTest.php
+++ b/core/modules/system/tests/src/Functional/Mail/HtmlToTextTest.php
@@ -1,19 +1,19 @@
 <?php
 
-namespace Drupal\system\Tests\Mail;
+namespace Drupal\Tests\system\Functional\Mail;
 
 use Drupal\Component\Utility\Html;
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\Mail\MailFormatHelper;
 use Drupal\Core\Site\Settings;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests for \Drupal\Core\Mail\MailFormatHelper::htmlToText().
  *
  * @group Mail
  */
-class HtmlToTextTest extends WebTestBase {
+class HtmlToTextTest extends BrowserTestBase {
   /**
    * Converts a string to its PHP source equivalent for display in test messages.
    *
diff --git a/core/modules/system/src/Tests/Mail/MailTest.php b/core/modules/system/tests/src/Functional/Mail/MailTest.php
similarity index 97%
rename from core/modules/system/src/Tests/Mail/MailTest.php
rename to core/modules/system/tests/src/Functional/Mail/MailTest.php
index 70f5a4b..6550f09 100644
--- a/core/modules/system/src/Tests/Mail/MailTest.php
+++ b/core/modules/system/tests/src/Functional/Mail/MailTest.php
@@ -1,9 +1,9 @@
 <?php
 
-namespace Drupal\system\Tests\Mail;
+namespace Drupal\Tests\system\Functional\Mail;
 
 use Drupal\Core\Mail\Plugin\Mail\TestMailCollector;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\system_mail_failure_test\Plugin\Mail\TestPhpMailFailure;
 
 /**
@@ -11,7 +11,7 @@
  *
  * @group Mail
  */
-class MailTest extends WebTestBase {
+class MailTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Menu/MenuAccessTest.php b/core/modules/system/tests/src/Functional/Menu/MenuAccessTest.php
similarity index 93%
rename from core/modules/system/src/Tests/Menu/MenuAccessTest.php
rename to core/modules/system/tests/src/Functional/Menu/MenuAccessTest.php
index fff17e5..3156823 100644
--- a/core/modules/system/src/Tests/Menu/MenuAccessTest.php
+++ b/core/modules/system/tests/src/Functional/Menu/MenuAccessTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\system\Tests\Menu;
+namespace Drupal\Tests\system\Functional\Menu;
 
 use Drupal\Core\Url;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the route access checks on menu links.
  *
  * @group Menu
  */
-class MenuAccessTest extends WebTestBase {
+class MenuAccessTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Menu/MenuLinkSecurityTest.php b/core/modules/system/tests/src/Functional/Menu/MenuLinkSecurityTest.php
similarity index 87%
rename from core/modules/system/src/Tests/Menu/MenuLinkSecurityTest.php
rename to core/modules/system/tests/src/Functional/Menu/MenuLinkSecurityTest.php
index 94bb14a..c58bf8e 100644
--- a/core/modules/system/src/Tests/Menu/MenuLinkSecurityTest.php
+++ b/core/modules/system/tests/src/Functional/Menu/MenuLinkSecurityTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\system\Tests\Menu;
+namespace Drupal\Tests\system\Functional\Menu;
 
 use Drupal\menu_link_content\Entity\MenuLinkContent;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Ensures that menu links don't cause XSS issues.
  *
  * @group Menu
  */
-class MenuLinkSecurityTest extends WebTestBase {
+class MenuLinkSecurityTest extends BrowserTestBase {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/system/src/Tests/Module/ClassLoaderTest.php b/core/modules/system/tests/src/Functional/Module/ClassLoaderTest.php
similarity index 94%
rename from core/modules/system/src/Tests/Module/ClassLoaderTest.php
rename to core/modules/system/tests/src/Functional/Module/ClassLoaderTest.php
index 1e7a0a5..3c7c40e 100644
--- a/core/modules/system/src/Tests/Module/ClassLoaderTest.php
+++ b/core/modules/system/tests/src/Functional/Module/ClassLoaderTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\Module;
+namespace Drupal\Tests\system\Functional\Module;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests class loading for modules.
  *
  * @group Module
  */
-class ClassLoaderTest extends WebTestBase {
+class ClassLoaderTest extends BrowserTestBase {
 
   /**
    * The expected result from calling the module-provided class' method.
diff --git a/core/modules/system/src/Tests/Module/ExperimentalModuleTest.php b/core/modules/system/tests/src/Functional/Module/ExperimentalModuleTest.php
similarity index 97%
rename from core/modules/system/src/Tests/Module/ExperimentalModuleTest.php
rename to core/modules/system/tests/src/Functional/Module/ExperimentalModuleTest.php
index 83af4ad..6bf0400 100644
--- a/core/modules/system/src/Tests/Module/ExperimentalModuleTest.php
+++ b/core/modules/system/tests/src/Functional/Module/ExperimentalModuleTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\Module;
+namespace Drupal\Tests\system\Functional\Module;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the installation of modules.
  *
  * @group Module
  */
-class ExperimentalModuleTest extends WebTestBase {
+class ExperimentalModuleTest extends BrowserTestBase {
 
 
   /**
diff --git a/core/modules/system/src/Tests/Module/InstallTest.php b/core/modules/system/tests/src/Functional/Module/InstallTest.php
similarity index 96%
rename from core/modules/system/src/Tests/Module/InstallTest.php
rename to core/modules/system/tests/src/Functional/Module/InstallTest.php
index babdd76..db0d1d3 100644
--- a/core/modules/system/src/Tests/Module/InstallTest.php
+++ b/core/modules/system/tests/src/Functional/Module/InstallTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\system\Tests\Module;
+namespace Drupal\Tests\system\Functional\Module;
 
 use Drupal\Core\Extension\ExtensionNameLengthException;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the installation of modules.
  *
  * @group Module
  */
-class InstallTest extends WebTestBase {
+class InstallTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Module/ModuleTestBase.php b/core/modules/system/tests/src/Functional/Module/ModuleTestBase.php
similarity index 97%
copy from core/modules/system/src/Tests/Module/ModuleTestBase.php
copy to core/modules/system/tests/src/Functional/Module/ModuleTestBase.php
index e212617..df9fbc6 100644
--- a/core/modules/system/src/Tests/Module/ModuleTestBase.php
+++ b/core/modules/system/tests/src/Functional/Module/ModuleTestBase.php
@@ -1,17 +1,17 @@
 <?php
 
-namespace Drupal\system\Tests\Module;
+namespace Drupal\Tests\system\Functional\Module;
 
 use Drupal\Core\Config\InstallStorage;
 use Drupal\Core\Database\Database;
 use Drupal\Core\Config\FileStorage;
 use Drupal\Core\Logger\RfcLogLevel;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Helper class for module test cases.
  */
-abstract class ModuleTestBase extends WebTestBase {
+abstract class ModuleTestBase extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Module/UninstallTest.php b/core/modules/system/tests/src/Functional/Module/UninstallTest.php
similarity index 98%
rename from core/modules/system/src/Tests/Module/UninstallTest.php
rename to core/modules/system/tests/src/Functional/Module/UninstallTest.php
index 9cecf8f..a3fcf41 100644
--- a/core/modules/system/src/Tests/Module/UninstallTest.php
+++ b/core/modules/system/tests/src/Functional/Module/UninstallTest.php
@@ -1,20 +1,20 @@
 <?php
 
-namespace Drupal\system\Tests\Module;
+namespace Drupal\Tests\system\Functional\Module;
 
 use Drupal\Core\Cache\Cache;
 use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Core\Entity\EntityMalformedException;
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the uninstallation of modules.
  *
  * @group Module
  */
-class UninstallTest extends WebTestBase {
+class UninstallTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/ParamConverter/UpcastingTest.php b/core/modules/system/tests/src/Functional/ParamConverter/UpcastingTest.php
similarity index 96%
rename from core/modules/system/src/Tests/ParamConverter/UpcastingTest.php
rename to core/modules/system/tests/src/Functional/ParamConverter/UpcastingTest.php
index b881386..52cd134 100644
--- a/core/modules/system/src/Tests/ParamConverter/UpcastingTest.php
+++ b/core/modules/system/tests/src/Functional/ParamConverter/UpcastingTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\system\Tests\ParamConverter;
+namespace Drupal\Tests\system\Functional\ParamConverter;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\language\Entity\ConfigurableLanguage;
 
 /**
@@ -10,7 +10,7 @@
  *
  * @group ParamConverter
  */
-class UpcastingTest extends WebTestBase {
+class UpcastingTest extends BrowserTestBase {
 
   public static $modules = array('paramconverter_test', 'node', 'language');
 
diff --git a/core/modules/system/src/Tests/Path/UrlAlterFunctionalTest.php b/core/modules/system/tests/src/Functional/Path/UrlAlterFunctionalTest.php
similarity index 96%
rename from core/modules/system/src/Tests/Path/UrlAlterFunctionalTest.php
rename to core/modules/system/tests/src/Functional/Path/UrlAlterFunctionalTest.php
index 743b74b..e3edf78 100644
--- a/core/modules/system/src/Tests/Path/UrlAlterFunctionalTest.php
+++ b/core/modules/system/tests/src/Functional/Path/UrlAlterFunctionalTest.php
@@ -1,9 +1,9 @@
 <?php
 
-namespace Drupal\system\Tests\Path;
+namespace Drupal\Tests\system\Functional\Path;
 
 use Drupal\Core\Database\Database;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\taxonomy\Entity\Term;
 
 /**
@@ -11,7 +11,7 @@
  *
  * @group Path
  */
-class UrlAlterFunctionalTest extends WebTestBase {
+class UrlAlterFunctionalTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Render/AjaxPageStateTest.php b/core/modules/system/tests/src/Functional/Render/AjaxPageStateTest.php
similarity index 95%
rename from core/modules/system/src/Tests/Render/AjaxPageStateTest.php
rename to core/modules/system/tests/src/Functional/Render/AjaxPageStateTest.php
index 08cd276..338cf82 100644
--- a/core/modules/system/src/Tests/Render/AjaxPageStateTest.php
+++ b/core/modules/system/tests/src/Functional/Render/AjaxPageStateTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\Render;
+namespace Drupal\Tests\system\Functional\Render;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Performs tests for the effects of the ajax_page_state query parameter.
  *
  * @group Render
  */
-class AjaxPageStateTest extends WebTestBase {
+class AjaxPageStateTest extends BrowserTestBase {
 
   /**
    * User account with all available permissions
diff --git a/core/modules/system/src/Tests/Render/DisplayVariantTest.php b/core/modules/system/tests/src/Functional/Render/DisplayVariantTest.php
similarity index 83%
rename from core/modules/system/src/Tests/Render/DisplayVariantTest.php
rename to core/modules/system/tests/src/Functional/Render/DisplayVariantTest.php
index 09f54d9..4eba3aa 100644
--- a/core/modules/system/src/Tests/Render/DisplayVariantTest.php
+++ b/core/modules/system/tests/src/Functional/Render/DisplayVariantTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\Render;
+namespace Drupal\Tests\system\Functional\Render;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests selecting a display variant.
  *
  * @group Render
  */
-class DisplayVariantTest extends WebTestBase {
+class DisplayVariantTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Routing/MockMatcher.php b/core/modules/system/tests/src/Functional/Routing/MockMatcher.php
similarity index 93%
rename from core/modules/system/src/Tests/Routing/MockMatcher.php
rename to core/modules/system/tests/src/Functional/Routing/MockMatcher.php
index 924acd1..eee6b13 100644
--- a/core/modules/system/src/Tests/Routing/MockMatcher.php
+++ b/core/modules/system/tests/src/Functional/Routing/MockMatcher.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\system\Tests\Routing;
+namespace Drupal\Tests\system\Functional\Routing;
 
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Matcher\RequestMatcherInterface;
diff --git a/core/modules/system/src/Tests/Routing/RouterPermissionTest.php b/core/modules/system/tests/src/Functional/Routing/RouterPermissionTest.php
similarity index 86%
rename from core/modules/system/src/Tests/Routing/RouterPermissionTest.php
rename to core/modules/system/tests/src/Functional/Routing/RouterPermissionTest.php
index 2fb0099..5bc0bb5 100644
--- a/core/modules/system/src/Tests/Routing/RouterPermissionTest.php
+++ b/core/modules/system/tests/src/Functional/Routing/RouterPermissionTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\Routing;
+namespace Drupal\Tests\system\Functional\Routing;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Function Tests for the routing permission system.
  *
  * @group Routing
  */
-class RouterPermissionTest extends WebTestBase {
+class RouterPermissionTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/ServiceProvider/ServiceProviderWebTest.php b/core/modules/system/tests/src/Functional/ServiceProvider/ServiceProviderWebTest.php
similarity index 87%
rename from core/modules/system/src/Tests/ServiceProvider/ServiceProviderWebTest.php
rename to core/modules/system/tests/src/Functional/ServiceProvider/ServiceProviderWebTest.php
index 5d2505a..88a3ce6 100644
--- a/core/modules/system/src/Tests/ServiceProvider/ServiceProviderWebTest.php
+++ b/core/modules/system/tests/src/Functional/ServiceProvider/ServiceProviderWebTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\ServiceProvider;
+namespace Drupal\Tests\system\Functional\ServiceProvider;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests service provider registration to the DIC.
  *
  * @group ServiceProvider
  */
-class ServiceProviderWebTest extends WebTestBase {
+class ServiceProviderWebTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/System/AdminMetaTagTest.php b/core/modules/system/tests/src/Functional/System/AdminMetaTagTest.php
similarity index 78%
rename from core/modules/system/src/Tests/System/AdminMetaTagTest.php
rename to core/modules/system/tests/src/Functional/System/AdminMetaTagTest.php
index ea92bd9..c58d1ec 100644
--- a/core/modules/system/src/Tests/System/AdminMetaTagTest.php
+++ b/core/modules/system/tests/src/Functional/System/AdminMetaTagTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\System;
+namespace Drupal\Tests\system\Functional\System;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Confirm that the fingerprinting meta tag appears as expected.
  *
  * @group system
  */
-class AdminMetaTagTest extends WebTestBase {
+class AdminMetaTagTest extends BrowserTestBase {
   /**
    * Verify that the meta tag HTML is generated correctly.
    */
diff --git a/core/modules/system/src/Tests/System/DateFormatsLockedTest.php b/core/modules/system/tests/src/Functional/System/DateFormatsLockedTest.php
similarity index 90%
rename from core/modules/system/src/Tests/System/DateFormatsLockedTest.php
rename to core/modules/system/tests/src/Functional/System/DateFormatsLockedTest.php
index c8a0a67..faac2b7 100644
--- a/core/modules/system/src/Tests/System/DateFormatsLockedTest.php
+++ b/core/modules/system/tests/src/Functional/System/DateFormatsLockedTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\System;
+namespace Drupal\Tests\system\Functional\System;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the locked functionality of date formats.
  *
  * @group system
  */
-class DateFormatsLockedTest extends WebTestBase {
+class DateFormatsLockedTest extends BrowserTestBase {
 
   /**
    * Tests attempts at listing, editing, and deleting locked date formats.
diff --git a/core/modules/system/src/Tests/System/DateFormatsMachineNameTest.php b/core/modules/system/tests/src/Functional/System/DateFormatsMachineNameTest.php
similarity index 95%
rename from core/modules/system/src/Tests/System/DateFormatsMachineNameTest.php
rename to core/modules/system/tests/src/Functional/System/DateFormatsMachineNameTest.php
index a7c304a..29bb4c2 100644
--- a/core/modules/system/src/Tests/System/DateFormatsMachineNameTest.php
+++ b/core/modules/system/tests/src/Functional/System/DateFormatsMachineNameTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\system\Tests\System;
+namespace Drupal\Tests\system\Functional\System;
 
 use Drupal\Component\Utility\Unicode;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests validity of date format machine names.
  *
  * @group system
  */
-class DateFormatsMachineNameTest extends WebTestBase {
+class DateFormatsMachineNameTest extends BrowserTestBase {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/system/src/Tests/System/DateTimeTest.php b/core/modules/system/tests/src/Functional/System/DateTimeTest.php
similarity index 98%
rename from core/modules/system/src/Tests/System/DateTimeTest.php
rename to core/modules/system/tests/src/Functional/System/DateTimeTest.php
index 9ca050f..dad3df4 100644
--- a/core/modules/system/src/Tests/System/DateTimeTest.php
+++ b/core/modules/system/tests/src/Functional/System/DateTimeTest.php
@@ -1,10 +1,10 @@
 <?php
 
-namespace Drupal\system\Tests\System;
+namespace Drupal\Tests\system\Functional\System;
 
 use Drupal\Core\Datetime\Entity\DateFormat;
 use Drupal\Core\Url;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Configure date and time settings. Test date formatting and time zone
@@ -12,7 +12,7 @@
  *
  * @group system
  */
-class DateTimeTest extends WebTestBase {
+class DateTimeTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/System/IndexPhpTest.php b/core/modules/system/tests/src/Functional/System/IndexPhpTest.php
similarity index 82%
rename from core/modules/system/src/Tests/System/IndexPhpTest.php
rename to core/modules/system/tests/src/Functional/System/IndexPhpTest.php
index 72811a8..fa43ad2 100644
--- a/core/modules/system/src/Tests/System/IndexPhpTest.php
+++ b/core/modules/system/tests/src/Functional/System/IndexPhpTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\System;
+namespace Drupal\Tests\system\Functional\System;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the handling of requests containing 'index.php'.
  *
  * @group system
  */
-class IndexPhpTest extends WebTestBase {
+class IndexPhpTest extends BrowserTestBase {
   protected function setUp() {
     parent::setUp();
   }
diff --git a/core/modules/system/src/Tests/System/MainContentFallbackTest.php b/core/modules/system/tests/src/Functional/System/MainContentFallbackTest.php
similarity index 94%
rename from core/modules/system/src/Tests/System/MainContentFallbackTest.php
rename to core/modules/system/tests/src/Functional/System/MainContentFallbackTest.php
index 551e4c7..3b1d5b7 100644
--- a/core/modules/system/src/Tests/System/MainContentFallbackTest.php
+++ b/core/modules/system/tests/src/Functional/System/MainContentFallbackTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\System;
+namespace Drupal\Tests\system\Functional\System;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Test SimplePageVariant main content rendering fallback page display variant.
  *
  * @group system
  */
-class MainContentFallbackTest extends WebTestBase {
+class MainContentFallbackTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/System/ResponseGeneratorTest.php b/core/modules/system/tests/src/Functional/System/ResponseGeneratorTest.php
similarity index 97%
rename from core/modules/system/src/Tests/System/ResponseGeneratorTest.php
rename to core/modules/system/tests/src/Functional/System/ResponseGeneratorTest.php
index f54c651..d4717b1 100644
--- a/core/modules/system/src/Tests/System/ResponseGeneratorTest.php
+++ b/core/modules/system/tests/src/Functional/System/ResponseGeneratorTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\system\Tests\System;
+namespace Drupal\Tests\system\Functional\System;
 
 use Drupal\rest\Tests\RESTTestBase;
 
diff --git a/core/modules/system/src/Tests/System/RetrieveFileTest.php b/core/modules/system/tests/src/Functional/System/RetrieveFileTest.php
similarity index 93%
rename from core/modules/system/src/Tests/System/RetrieveFileTest.php
rename to core/modules/system/tests/src/Functional/System/RetrieveFileTest.php
index 8f6fe4a..5cf2364 100644
--- a/core/modules/system/src/Tests/System/RetrieveFileTest.php
+++ b/core/modules/system/tests/src/Functional/System/RetrieveFileTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\System;
+namespace Drupal\Tests\system\Functional\System;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests HTTP file fetching and error handling.
  *
  * @group system
  */
-class RetrieveFileTest extends WebTestBase {
+class RetrieveFileTest extends BrowserTestBase {
   /**
    * Invokes system_retrieve_file() in several scenarios.
    */
diff --git a/core/modules/system/src/Tests/System/SitesDirectoryHardeningTest.php b/core/modules/system/tests/src/Functional/System/SitesDirectoryHardeningTest.php
similarity index 96%
rename from core/modules/system/src/Tests/System/SitesDirectoryHardeningTest.php
rename to core/modules/system/tests/src/Functional/System/SitesDirectoryHardeningTest.php
index f9331ba..6a4d3ee 100644
--- a/core/modules/system/src/Tests/System/SitesDirectoryHardeningTest.php
+++ b/core/modules/system/tests/src/Functional/System/SitesDirectoryHardeningTest.php
@@ -1,18 +1,18 @@
 <?php
 
-namespace Drupal\system\Tests\System;
+namespace Drupal\Tests\system\Functional\System;
 
 use Drupal\Component\Render\FormattableMarkup;
 use Drupal\Core\Site\Settings;
 use Drupal\Core\StringTranslation\StringTranslationTrait;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests Drupal permissions hardening of /sites subdirectories.
  *
  * @group system
  */
-class SitesDirectoryHardeningTest extends WebTestBase {
+class SitesDirectoryHardeningTest extends BrowserTestBase {
   use StringTranslationTrait;
 
   /**
diff --git a/core/modules/system/src/Tests/System/StatusTest.php b/core/modules/system/tests/src/Functional/System/StatusTest.php
similarity index 96%
rename from core/modules/system/src/Tests/System/StatusTest.php
rename to core/modules/system/tests/src/Functional/System/StatusTest.php
index c170316..34d4f75 100644
--- a/core/modules/system/src/Tests/System/StatusTest.php
+++ b/core/modules/system/tests/src/Functional/System/StatusTest.php
@@ -1,9 +1,9 @@
 <?php
 
-namespace Drupal\system\Tests\System;
+namespace Drupal\Tests\system\Functional\System;
 
 use Drupal\Core\Url;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\system\SystemRequirements;
 
 /**
@@ -11,7 +11,7 @@
  *
  * @group system
  */
-class StatusTest extends WebTestBase {
+class StatusTest extends BrowserTestBase {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/system/src/Tests/System/SystemAuthorizeTest.php b/core/modules/system/tests/src/Functional/System/SystemAuthorizeTest.php
similarity index 93%
rename from core/modules/system/src/Tests/System/SystemAuthorizeTest.php
rename to core/modules/system/tests/src/Functional/System/SystemAuthorizeTest.php
index 5e278d7..6878d6c 100644
--- a/core/modules/system/src/Tests/System/SystemAuthorizeTest.php
+++ b/core/modules/system/tests/src/Functional/System/SystemAuthorizeTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\System;
+namespace Drupal\Tests\system\Functional\System;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the authorize.php script and related API.
  *
  * @group system
  */
-class SystemAuthorizeTest extends WebTestBase {
+class SystemAuthorizeTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/System/TokenScanTest.php b/core/modules/system/tests/src/Functional/System/TokenScanTest.php
similarity index 92%
rename from core/modules/system/src/Tests/System/TokenScanTest.php
rename to core/modules/system/tests/src/Functional/System/TokenScanTest.php
index 89f2abd..a43470a 100644
--- a/core/modules/system/src/Tests/System/TokenScanTest.php
+++ b/core/modules/system/tests/src/Functional/System/TokenScanTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\System;
+namespace Drupal\Tests\system\Functional\System;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Scan token-like patterns in a dummy text to check token scanning.
  *
  * @group system
  */
-class TokenScanTest extends WebTestBase {
+class TokenScanTest extends BrowserTestBase {
 
   /**
    * Scans dummy text, then tests the output.
diff --git a/core/modules/system/src/Tests/System/TrustedHostsTest.php b/core/modules/system/tests/src/Functional/System/TrustedHostsTest.php
similarity index 96%
rename from core/modules/system/src/Tests/System/TrustedHostsTest.php
rename to core/modules/system/tests/src/Functional/System/TrustedHostsTest.php
index a9c976a..ade5e2b 100644
--- a/core/modules/system/src/Tests/System/TrustedHostsTest.php
+++ b/core/modules/system/tests/src/Functional/System/TrustedHostsTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\System;
+namespace Drupal\Tests\system\Functional\System;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests output on the status overview page.
  *
  * @group system
  */
-class TrustedHostsTest extends WebTestBase {
+class TrustedHostsTest extends BrowserTestBase {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/system/src/Tests/Theme/EngineNyanCatTest.php b/core/modules/system/tests/src/Functional/Theme/EngineNyanCatTest.php
similarity index 84%
rename from core/modules/system/src/Tests/Theme/EngineNyanCatTest.php
rename to core/modules/system/tests/src/Functional/Theme/EngineNyanCatTest.php
index 0eb43b7..2d279d5 100644
--- a/core/modules/system/src/Tests/Theme/EngineNyanCatTest.php
+++ b/core/modules/system/tests/src/Functional/Theme/EngineNyanCatTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\Theme;
+namespace Drupal\Tests\system\Functional\Theme;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the multi theme engine support.
  *
  * @group Theme
  */
-class EngineNyanCatTest extends WebTestBase {
+class EngineNyanCatTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Theme/FastTest.php b/core/modules/system/tests/src/Functional/Theme/FastTest.php
similarity index 85%
rename from core/modules/system/src/Tests/Theme/FastTest.php
rename to core/modules/system/tests/src/Functional/Theme/FastTest.php
index a05666f..198fd63 100644
--- a/core/modules/system/src/Tests/Theme/FastTest.php
+++ b/core/modules/system/tests/src/Functional/Theme/FastTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\Theme;
+namespace Drupal\Tests\system\Functional\Theme;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests autocompletion not loading registry.
  *
  * @group Theme
  */
-class FastTest extends WebTestBase {
+class FastTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Theme/ThemeEarlyInitializationTest.php b/core/modules/system/tests/src/Functional/Theme/ThemeEarlyInitializationTest.php
similarity index 84%
rename from core/modules/system/src/Tests/Theme/ThemeEarlyInitializationTest.php
rename to core/modules/system/tests/src/Functional/Theme/ThemeEarlyInitializationTest.php
index ddbb770..89424bd 100644
--- a/core/modules/system/src/Tests/Theme/ThemeEarlyInitializationTest.php
+++ b/core/modules/system/tests/src/Functional/Theme/ThemeEarlyInitializationTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\system\Tests\Theme;
+namespace Drupal\Tests\system\Functional\Theme;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests that the theme system can be correctly initialized early in the page
@@ -10,7 +10,7 @@
  *
  * @group Theme
  */
-class ThemeEarlyInitializationTest extends WebTestBase {
+class ThemeEarlyInitializationTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Theme/ThemeInfoTest.php b/core/modules/system/tests/src/Functional/Theme/ThemeInfoTest.php
similarity index 96%
rename from core/modules/system/src/Tests/Theme/ThemeInfoTest.php
rename to core/modules/system/tests/src/Functional/Theme/ThemeInfoTest.php
index 0763917..7f59aa2 100644
--- a/core/modules/system/src/Tests/Theme/ThemeInfoTest.php
+++ b/core/modules/system/tests/src/Functional/Theme/ThemeInfoTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\Theme;
+namespace Drupal\Tests\system\Functional\Theme;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests processing of theme .info.yml properties.
  *
  * @group Theme
  */
-class ThemeInfoTest extends WebTestBase {
+class ThemeInfoTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Theme/ThemeTokenTest.php b/core/modules/system/tests/src/Functional/Theme/ThemeTokenTest.php
similarity index 92%
rename from core/modules/system/src/Tests/Theme/ThemeTokenTest.php
rename to core/modules/system/tests/src/Functional/Theme/ThemeTokenTest.php
index c3b1f8c..1488c5b 100644
--- a/core/modules/system/src/Tests/Theme/ThemeTokenTest.php
+++ b/core/modules/system/tests/src/Functional/Theme/ThemeTokenTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\Theme;
+namespace Drupal\Tests\system\Functional\Theme;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the generation of 'theme_token' key in Drupal settings.
  *
  * @group Theme
  */
-class ThemeTokenTest extends WebTestBase {
+class ThemeTokenTest extends BrowserTestBase {
 
   /**
    * We want to visit the 'admin/structure/block' page.
diff --git a/core/modules/system/src/Tests/Theme/TwigExtensionTest.php b/core/modules/system/tests/src/Functional/Theme/TwigExtensionTest.php
similarity index 95%
rename from core/modules/system/src/Tests/Theme/TwigExtensionTest.php
rename to core/modules/system/tests/src/Functional/Theme/TwigExtensionTest.php
index 4be1f73..36bfe2d 100644
--- a/core/modules/system/src/Tests/Theme/TwigExtensionTest.php
+++ b/core/modules/system/tests/src/Functional/Theme/TwigExtensionTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\Theme;
+namespace Drupal\Tests\system\Functional\Theme;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests Twig extensions.
  *
  * @group Theme
  */
-class TwigExtensionTest extends WebTestBase {
+class TwigExtensionTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Theme/TwigLoaderTest.php b/core/modules/system/tests/src/Functional/Theme/TwigLoaderTest.php
similarity index 84%
rename from core/modules/system/src/Tests/Theme/TwigLoaderTest.php
rename to core/modules/system/tests/src/Functional/Theme/TwigLoaderTest.php
index 84a112c..b580719 100644
--- a/core/modules/system/src/Tests/Theme/TwigLoaderTest.php
+++ b/core/modules/system/tests/src/Functional/Theme/TwigLoaderTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\Theme;
+namespace Drupal\Tests\system\Functional\Theme;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests adding Twig loaders.
  *
  * @group Theme
  */
-class TwigLoaderTest extends WebTestBase {
+class TwigLoaderTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Theme/TwigRegistryLoaderTest.php b/core/modules/system/tests/src/Functional/Theme/TwigRegistryLoaderTest.php
similarity index 95%
rename from core/modules/system/src/Tests/Theme/TwigRegistryLoaderTest.php
rename to core/modules/system/tests/src/Functional/Theme/TwigRegistryLoaderTest.php
index 5cbca9f..a0161b1 100644
--- a/core/modules/system/src/Tests/Theme/TwigRegistryLoaderTest.php
+++ b/core/modules/system/tests/src/Functional/Theme/TwigRegistryLoaderTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\Theme;
+namespace Drupal\Tests\system\Functional\Theme;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests Twig registry loader.
  *
  * @group Theme
  */
-class TwigRegistryLoaderTest extends WebTestBase {
+class TwigRegistryLoaderTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/system/src/Tests/Theme/TwigSettingsTest.php b/core/modules/system/tests/src/Functional/Theme/TwigSettingsTest.php
similarity index 97%
rename from core/modules/system/src/Tests/Theme/TwigSettingsTest.php
rename to core/modules/system/tests/src/Functional/Theme/TwigSettingsTest.php
index 3722431..2dbeed1 100644
--- a/core/modules/system/src/Tests/Theme/TwigSettingsTest.php
+++ b/core/modules/system/tests/src/Functional/Theme/TwigSettingsTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\system\Tests\Theme;
+namespace Drupal\Tests\system\Functional\Theme;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\Core\PhpStorage\PhpStorageFactory;
 
 /**
@@ -10,7 +10,7 @@
  *
  * @group Theme
  */
-class TwigSettingsTest extends WebTestBase {
+class TwigSettingsTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/taxonomy/src/Tests/TaxonomyTestBase.php b/core/modules/taxonomy/src/Tests/TaxonomyTestBase.php
index aa91237..12c30c7 100644
--- a/core/modules/taxonomy/src/Tests/TaxonomyTestBase.php
+++ b/core/modules/taxonomy/src/Tests/TaxonomyTestBase.php
@@ -7,6 +7,9 @@
 
 /**
  * Provides common helper methods for Taxonomy module tests.
+ *
+ * @deprecated Scheduled for removal in Drupal 9.0.0.
+ *   Use \Drupal\Tests\taxonomy\Functional\TaxonomyTestBase instead.
  */
 abstract class TaxonomyTestBase extends WebTestBase {
 
diff --git a/core/modules/taxonomy/src/Tests/EfqTest.php b/core/modules/taxonomy/tests/src/Functional/EfqTest.php
similarity index 97%
rename from core/modules/taxonomy/src/Tests/EfqTest.php
rename to core/modules/taxonomy/tests/src/Functional/EfqTest.php
index 572ae8f..1f788c8 100644
--- a/core/modules/taxonomy/src/Tests/EfqTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/EfqTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\taxonomy\Tests;
+namespace Drupal\Tests\taxonomy\Functional;
 
 /**
  * Verifies operation of a taxonomy-based Entity Query.
diff --git a/core/modules/taxonomy/src/Tests/LegacyTest.php b/core/modules/taxonomy/tests/src/Functional/LegacyTest.php
similarity index 98%
rename from core/modules/taxonomy/src/Tests/LegacyTest.php
rename to core/modules/taxonomy/tests/src/Functional/LegacyTest.php
index b842226..fbbe16f9 100644
--- a/core/modules/taxonomy/src/Tests/LegacyTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/LegacyTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\taxonomy\Tests;
+namespace Drupal\Tests\taxonomy\Functional;
 
 use Drupal\Core\Datetime\DrupalDateTime;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
diff --git a/core/modules/taxonomy/src/Tests/LoadMultipleTest.php b/core/modules/taxonomy/tests/src/Functional/LoadMultipleTest.php
similarity index 98%
rename from core/modules/taxonomy/src/Tests/LoadMultipleTest.php
rename to core/modules/taxonomy/tests/src/Functional/LoadMultipleTest.php
index 349516c..4955992 100644
--- a/core/modules/taxonomy/src/Tests/LoadMultipleTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/LoadMultipleTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\taxonomy\Tests;
+namespace Drupal\Tests\taxonomy\Functional;
 
 use Drupal\taxonomy\Entity\Term;
 
diff --git a/core/modules/taxonomy/src/Tests/TaxonomyTestBase.php b/core/modules/taxonomy/tests/src/Functional/TaxonomyTestBase.php
similarity index 78%
copy from core/modules/taxonomy/src/Tests/TaxonomyTestBase.php
copy to core/modules/taxonomy/tests/src/Functional/TaxonomyTestBase.php
index aa91237..2625af0 100644
--- a/core/modules/taxonomy/src/Tests/TaxonomyTestBase.php
+++ b/core/modules/taxonomy/tests/src/Functional/TaxonomyTestBase.php
@@ -1,14 +1,15 @@
 <?php
 
-namespace Drupal\taxonomy\Tests;
+namespace Drupal\Tests\taxonomy\Functional;
 
 use Drupal\field\Tests\EntityReference\EntityReferenceTestTrait;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
+use Drupal\taxonomy\Tests\TaxonomyTestTrait;
 
 /**
  * Provides common helper methods for Taxonomy module tests.
  */
-abstract class TaxonomyTestBase extends WebTestBase {
+abstract class TaxonomyTestBase extends BrowserTestBase {
 
   use TaxonomyTestTrait;
   use EntityReferenceTestTrait;
diff --git a/core/modules/taxonomy/src/Tests/TermCacheTagsTest.php b/core/modules/taxonomy/tests/src/Functional/TermCacheTagsTest.php
similarity index 94%
rename from core/modules/taxonomy/src/Tests/TermCacheTagsTest.php
rename to core/modules/taxonomy/tests/src/Functional/TermCacheTagsTest.php
index 8d7ddad..10f24e8 100644
--- a/core/modules/taxonomy/src/Tests/TermCacheTagsTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/TermCacheTagsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\taxonomy\Tests;
+namespace Drupal\Tests\taxonomy\Functional;
 
 use Drupal\system\Tests\Entity\EntityWithUriCacheTagsTestBase;
 use Drupal\taxonomy\Entity\Vocabulary;
diff --git a/core/modules/taxonomy/src/Tests/TermEntityReferenceTest.php b/core/modules/taxonomy/tests/src/Functional/TermEntityReferenceTest.php
similarity index 98%
rename from core/modules/taxonomy/src/Tests/TermEntityReferenceTest.php
rename to core/modules/taxonomy/tests/src/Functional/TermEntityReferenceTest.php
index de77654..9cdafa3 100644
--- a/core/modules/taxonomy/src/Tests/TermEntityReferenceTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/TermEntityReferenceTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\taxonomy\Tests;
+namespace Drupal\Tests\taxonomy\Functional;
 
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\field\Entity\FieldConfig;
diff --git a/core/modules/taxonomy/src/Tests/TermIndexTest.php b/core/modules/taxonomy/tests/src/Functional/TermIndexTest.php
similarity index 99%
rename from core/modules/taxonomy/src/Tests/TermIndexTest.php
rename to core/modules/taxonomy/tests/src/Functional/TermIndexTest.php
index 28e816c..7516939 100644
--- a/core/modules/taxonomy/src/Tests/TermIndexTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/TermIndexTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\taxonomy\Tests;
+namespace Drupal\Tests\taxonomy\Functional;
 
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
diff --git a/core/modules/taxonomy/src/Tests/TermLanguageTest.php b/core/modules/taxonomy/tests/src/Functional/TermLanguageTest.php
similarity index 99%
rename from core/modules/taxonomy/src/Tests/TermLanguageTest.php
rename to core/modules/taxonomy/tests/src/Functional/TermLanguageTest.php
index e894ad2..1ab8d48 100644
--- a/core/modules/taxonomy/src/Tests/TermLanguageTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/TermLanguageTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\taxonomy\Tests;
+namespace Drupal\Tests\taxonomy\Functional;
 
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\language\Entity\ConfigurableLanguage;
diff --git a/core/modules/taxonomy/src/Tests/TermTranslationFieldViewTest.php b/core/modules/taxonomy/tests/src/Functional/TermTranslationFieldViewTest.php
similarity index 96%
rename from core/modules/taxonomy/src/Tests/TermTranslationFieldViewTest.php
rename to core/modules/taxonomy/tests/src/Functional/TermTranslationFieldViewTest.php
index 18cf720..9588e4d 100644
--- a/core/modules/taxonomy/src/Tests/TermTranslationFieldViewTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/TermTranslationFieldViewTest.php
@@ -1,8 +1,9 @@
 <?php
 
-namespace Drupal\taxonomy\Tests;
+namespace Drupal\Tests\taxonomy\Functional;
 
 use Drupal\node\Entity\Node;
+use Drupal\taxonomy\Tests\TaxonomyTranslationTestTrait;
 
 /**
  * Tests the translation of taxonomy terms field on nodes.
diff --git a/core/modules/taxonomy/src/Tests/TokenReplaceTest.php b/core/modules/taxonomy/tests/src/Functional/TokenReplaceTest.php
similarity index 99%
rename from core/modules/taxonomy/src/Tests/TokenReplaceTest.php
rename to core/modules/taxonomy/tests/src/Functional/TokenReplaceTest.php
index f3c6c5d..1c8b7ea 100644
--- a/core/modules/taxonomy/src/Tests/TokenReplaceTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/TokenReplaceTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\taxonomy\Tests;
+namespace Drupal\Tests\taxonomy\Functional;
 
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\Core\Render\BubbleableMetadata;
diff --git a/core/modules/taxonomy/src/Tests/VocabularyCrudTest.php b/core/modules/taxonomy/tests/src/Functional/VocabularyCrudTest.php
similarity index 99%
rename from core/modules/taxonomy/src/Tests/VocabularyCrudTest.php
rename to core/modules/taxonomy/tests/src/Functional/VocabularyCrudTest.php
index 914b7f2..2705ab0 100644
--- a/core/modules/taxonomy/src/Tests/VocabularyCrudTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/VocabularyCrudTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\taxonomy\Tests;
+namespace Drupal\Tests\taxonomy\Functional;
 
 use Drupal\Component\Utility\Unicode;
 use Drupal\field\Entity\FieldConfig;
diff --git a/core/modules/taxonomy/src/Tests/VocabularyLanguageTest.php b/core/modules/taxonomy/tests/src/Functional/VocabularyLanguageTest.php
similarity index 99%
rename from core/modules/taxonomy/src/Tests/VocabularyLanguageTest.php
rename to core/modules/taxonomy/tests/src/Functional/VocabularyLanguageTest.php
index 3326e51..da78589 100644
--- a/core/modules/taxonomy/src/Tests/VocabularyLanguageTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/VocabularyLanguageTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\taxonomy\Tests;
+namespace Drupal\Tests\taxonomy\Functional;
 
 use Drupal\Component\Utility\Unicode;
 use Drupal\language\Entity\ConfigurableLanguage;
diff --git a/core/modules/taxonomy/src/Tests/VocabularyPermissionsTest.php b/core/modules/taxonomy/tests/src/Functional/VocabularyPermissionsTest.php
similarity index 99%
rename from core/modules/taxonomy/src/Tests/VocabularyPermissionsTest.php
rename to core/modules/taxonomy/tests/src/Functional/VocabularyPermissionsTest.php
index 9a5e8c0..1b83d84 100644
--- a/core/modules/taxonomy/src/Tests/VocabularyPermissionsTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/VocabularyPermissionsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\taxonomy\Tests;
+namespace Drupal\Tests\taxonomy\Functional;
 
 /**
  * Tests the taxonomy vocabulary permissions.
diff --git a/core/modules/taxonomy/src/Tests/VocabularyTranslationTest.php b/core/modules/taxonomy/tests/src/Functional/VocabularyTranslationTest.php
similarity index 97%
rename from core/modules/taxonomy/src/Tests/VocabularyTranslationTest.php
rename to core/modules/taxonomy/tests/src/Functional/VocabularyTranslationTest.php
index 7ad7609..5c41f6c 100644
--- a/core/modules/taxonomy/src/Tests/VocabularyTranslationTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/VocabularyTranslationTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\taxonomy\Tests;
+namespace Drupal\Tests\taxonomy\Functional;
 
 use Drupal\Component\Utility\Unicode;
 
diff --git a/core/modules/telephone/src/Tests/TelephoneFieldTest.php b/core/modules/telephone/tests/src/Functional/TelephoneFieldTest.php
similarity index 95%
rename from core/modules/telephone/src/Tests/TelephoneFieldTest.php
rename to core/modules/telephone/tests/src/Functional/TelephoneFieldTest.php
index f7452b0..7f536c4 100644
--- a/core/modules/telephone/src/Tests/TelephoneFieldTest.php
+++ b/core/modules/telephone/tests/src/Functional/TelephoneFieldTest.php
@@ -1,9 +1,9 @@
 <?php
 
-namespace Drupal\telephone\Tests;
+namespace Drupal\Tests\telephone\Functional;
 
 use Drupal\field\Entity\FieldConfig;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\field\Entity\FieldStorageConfig;
 
 /**
@@ -11,7 +11,7 @@
  *
  * @group telephone
  */
-class TelephoneFieldTest extends WebTestBase {
+class TelephoneFieldTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/toolbar/src/Tests/ToolbarHookToolbarTest.php b/core/modules/toolbar/tests/src/Functional/ToolbarHookToolbarTest.php
similarity index 91%
rename from core/modules/toolbar/src/Tests/ToolbarHookToolbarTest.php
rename to core/modules/toolbar/tests/src/Functional/ToolbarHookToolbarTest.php
index 7cff043..1bf6e82 100644
--- a/core/modules/toolbar/src/Tests/ToolbarHookToolbarTest.php
+++ b/core/modules/toolbar/tests/src/Functional/ToolbarHookToolbarTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\toolbar\Tests;
+namespace Drupal\Tests\toolbar\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the implementation of hook_toolbar() by a module.
  *
  * @group toolbar
  */
-class ToolbarHookToolbarTest extends WebTestBase {
+class ToolbarHookToolbarTest extends BrowserTestBase {
 
   /**
    * A user with permission to access the administrative toolbar.
diff --git a/core/modules/tour/src/Tests/TourCacheTagsTest.php b/core/modules/tour/tests/src/Functional/TourCacheTagsTest.php
similarity index 97%
rename from core/modules/tour/src/Tests/TourCacheTagsTest.php
rename to core/modules/tour/tests/src/Functional/TourCacheTagsTest.php
index 4f2164e..446c33a 100644
--- a/core/modules/tour/src/Tests/TourCacheTagsTest.php
+++ b/core/modules/tour/tests/src/Functional/TourCacheTagsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\tour\Tests;
+namespace Drupal\Tests\tour\Functional;
 
 use Drupal\Core\Url;
 use Drupal\system\Tests\Cache\PageCacheTagsTestBase;
diff --git a/core/modules/tracker/src/Tests/TrackerNodeAccessTest.php b/core/modules/tracker/tests/src/Functional/TrackerNodeAccessTest.php
similarity index 95%
rename from core/modules/tracker/src/Tests/TrackerNodeAccessTest.php
rename to core/modules/tracker/tests/src/Functional/TrackerNodeAccessTest.php
index 29492bc..1d33a23 100644
--- a/core/modules/tracker/src/Tests/TrackerNodeAccessTest.php
+++ b/core/modules/tracker/tests/src/Functional/TrackerNodeAccessTest.php
@@ -1,18 +1,18 @@
 <?php
 
-namespace Drupal\tracker\Tests;
+namespace Drupal\Tests\tracker\Functional;
 
 use Drupal\comment\Plugin\Field\FieldType\CommentItemInterface;
 use Drupal\comment\Tests\CommentTestTrait;
 use Drupal\node\Entity\NodeType;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests for private node access on /tracker.
  *
  * @group tracker
  */
-class TrackerNodeAccessTest extends WebTestBase {
+class TrackerNodeAccessTest extends BrowserTestBase {
 
   use CommentTestTrait;
 
diff --git a/core/modules/user/src/Tests/RestRegisterUserTest.php b/core/modules/user/tests/src/Functional/RestRegisterUserTest.php
similarity index 99%
rename from core/modules/user/src/Tests/RestRegisterUserTest.php
rename to core/modules/user/tests/src/Functional/RestRegisterUserTest.php
index 62e6bbc..576bd3e 100644
--- a/core/modules/user/src/Tests/RestRegisterUserTest.php
+++ b/core/modules/user/tests/src/Functional/RestRegisterUserTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\user\Tests;
+namespace Drupal\Tests\user\Functional;
 
 use Drupal\rest\Tests\RESTTestBase;
 use Drupal\user\Entity\Role;
diff --git a/core/modules/user/src/Tests/UserCacheTagsTest.php b/core/modules/user/tests/src/Functional/UserCacheTagsTest.php
similarity index 96%
rename from core/modules/user/src/Tests/UserCacheTagsTest.php
rename to core/modules/user/tests/src/Functional/UserCacheTagsTest.php
index 8dc7437..d4455ff 100644
--- a/core/modules/user/src/Tests/UserCacheTagsTest.php
+++ b/core/modules/user/tests/src/Functional/UserCacheTagsTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\user\Tests;
+namespace Drupal\Tests\user\Functional;
 
 use Drupal\system\Tests\Entity\EntityWithUriCacheTagsTestBase;
 use Drupal\user\Entity\Role;
diff --git a/core/modules/user/src/Tests/UserCreateFailMailTest.php b/core/modules/user/tests/src/Functional/UserCreateFailMailTest.php
similarity index 90%
rename from core/modules/user/src/Tests/UserCreateFailMailTest.php
rename to core/modules/user/tests/src/Functional/UserCreateFailMailTest.php
index a51229a..d844b0a 100644
--- a/core/modules/user/src/Tests/UserCreateFailMailTest.php
+++ b/core/modules/user/tests/src/Functional/UserCreateFailMailTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\user\Tests;
+namespace Drupal\Tests\user\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the create user administration page.
  *
  * @group user
  */
-class UserCreateFailMailTest extends WebTestBase {
+class UserCreateFailMailTest extends BrowserTestBase {
 
   /**
    * Modules to enable
diff --git a/core/modules/user/src/Tests/UserDeleteTest.php b/core/modules/user/tests/src/Functional/UserDeleteTest.php
similarity index 94%
rename from core/modules/user/src/Tests/UserDeleteTest.php
rename to core/modules/user/tests/src/Functional/UserDeleteTest.php
index dbb3002..c82a2f3 100644
--- a/core/modules/user/src/Tests/UserDeleteTest.php
+++ b/core/modules/user/tests/src/Functional/UserDeleteTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\user\Tests;
+namespace Drupal\Tests\user\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\user\Entity\User;
 
 /**
@@ -10,7 +10,7 @@
  *
  * @group user
  */
-class UserDeleteTest extends WebTestBase {
+class UserDeleteTest extends BrowserTestBase {
 
   /**
    * Test deleting multiple users.
diff --git a/core/modules/user/src/Tests/UserEditedOwnAccountTest.php b/core/modules/user/tests/src/Functional/UserEditedOwnAccountTest.php
similarity index 87%
rename from core/modules/user/src/Tests/UserEditedOwnAccountTest.php
rename to core/modules/user/tests/src/Functional/UserEditedOwnAccountTest.php
index 6c058bf..7783eb9 100644
--- a/core/modules/user/src/Tests/UserEditedOwnAccountTest.php
+++ b/core/modules/user/tests/src/Functional/UserEditedOwnAccountTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\user\Tests;
+namespace Drupal\Tests\user\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests user edited own account can still log in.
  *
  * @group user
  */
-class UserEditedOwnAccountTest extends WebTestBase {
+class UserEditedOwnAccountTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/user/src/Tests/UserEntityCallbacksTest.php b/core/modules/user/tests/src/Functional/UserEntityCallbacksTest.php
similarity index 93%
rename from core/modules/user/src/Tests/UserEntityCallbacksTest.php
rename to core/modules/user/tests/src/Functional/UserEntityCallbacksTest.php
index 944b352..ceb8eda 100644
--- a/core/modules/user/src/Tests/UserEntityCallbacksTest.php
+++ b/core/modules/user/tests/src/Functional/UserEntityCallbacksTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\user\Tests;
+namespace Drupal\Tests\user\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\user\Entity\User;
 
 /**
@@ -11,7 +11,7 @@
  *
  * @group user
  */
-class UserEntityCallbacksTest extends WebTestBase {
+class UserEntityCallbacksTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/user/src/Tests/UserLanguageTest.php b/core/modules/user/tests/src/Functional/UserLanguageTest.php
similarity index 94%
rename from core/modules/user/src/Tests/UserLanguageTest.php
rename to core/modules/user/tests/src/Functional/UserLanguageTest.php
index 5c5f73f..e4aeb58 100644
--- a/core/modules/user/src/Tests/UserLanguageTest.php
+++ b/core/modules/user/tests/src/Functional/UserLanguageTest.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Drupal\user\Tests;
+namespace Drupal\Tests\user\Functional;
 
 use Drupal\Core\Language\LanguageInterface;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Functional tests for a user's ability to change their default language.
  *
  * @group user
  */
-class UserLanguageTest extends WebTestBase {
+class UserLanguageTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/user/src/Tests/UserMailNotifyTest.php b/core/modules/user/tests/src/Functional/UserMailNotifyTest.php
similarity index 98%
rename from core/modules/user/src/Tests/UserMailNotifyTest.php
rename to core/modules/user/tests/src/Functional/UserMailNotifyTest.php
index 9943c5b..7f5257a 100644
--- a/core/modules/user/src/Tests/UserMailNotifyTest.php
+++ b/core/modules/user/tests/src/Functional/UserMailNotifyTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\user\Tests;
+namespace Drupal\Tests\user\Functional;
 
 use Drupal\Core\Test\AssertMailTrait;
 use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
diff --git a/core/modules/user/src/Tests/UserRolesAssignmentTest.php b/core/modules/user/tests/src/Functional/UserRolesAssignmentTest.php
similarity index 96%
rename from core/modules/user/src/Tests/UserRolesAssignmentTest.php
rename to core/modules/user/tests/src/Functional/UserRolesAssignmentTest.php
index 485bd2f..1701b0f 100644
--- a/core/modules/user/src/Tests/UserRolesAssignmentTest.php
+++ b/core/modules/user/tests/src/Functional/UserRolesAssignmentTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\user\Tests;
+namespace Drupal\Tests\user\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests that users can be assigned and unassigned roles.
  *
  * @group user
  */
-class UserRolesAssignmentTest extends WebTestBase {
+class UserRolesAssignmentTest extends BrowserTestBase {
 
   protected function setUp() {
     parent::setUp();
diff --git a/core/modules/user/src/Tests/UserSaveTest.php b/core/modules/user/tests/src/Functional/UserSaveTest.php
similarity index 92%
rename from core/modules/user/src/Tests/UserSaveTest.php
rename to core/modules/user/tests/src/Functional/UserSaveTest.php
index 6a454ee..3428749 100644
--- a/core/modules/user/src/Tests/UserSaveTest.php
+++ b/core/modules/user/tests/src/Functional/UserSaveTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\user\Tests;
+namespace Drupal\Tests\user\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\user\Entity\User;
 
 /**
@@ -10,7 +10,7 @@
  *
  * @group user
  */
-class UserSaveTest extends WebTestBase {
+class UserSaveTest extends BrowserTestBase {
 
   /**
    * Test creating a user with arbitrary uid.
diff --git a/core/modules/user/src/Tests/UserSearchTest.php b/core/modules/user/tests/src/Functional/UserSearchTest.php
similarity index 97%
rename from core/modules/user/src/Tests/UserSearchTest.php
rename to core/modules/user/tests/src/Functional/UserSearchTest.php
index d154030..af2fb28 100644
--- a/core/modules/user/src/Tests/UserSearchTest.php
+++ b/core/modules/user/tests/src/Functional/UserSearchTest.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Drupal\user\Tests;
+namespace Drupal\Tests\user\Functional;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests the user search page and verifies that sensitive information is hidden
@@ -10,7 +10,7 @@
  *
  * @group user
  */
-class UserSearchTest extends WebTestBase {
+class UserSearchTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/modules/user/src/Tests/UserTokenReplaceTest.php b/core/modules/user/tests/src/Functional/UserTokenReplaceTest.php
similarity index 98%
rename from core/modules/user/src/Tests/UserTokenReplaceTest.php
rename to core/modules/user/tests/src/Functional/UserTokenReplaceTest.php
index b8cfde0..869339a 100644
--- a/core/modules/user/src/Tests/UserTokenReplaceTest.php
+++ b/core/modules/user/tests/src/Functional/UserTokenReplaceTest.php
@@ -1,11 +1,11 @@
 <?php
 
-namespace Drupal\user\Tests;
+namespace Drupal\Tests\user\Functional;
 
 use Drupal\Component\Render\FormattableMarkup;
 use Drupal\Core\Render\BubbleableMetadata;
 use Drupal\language\Entity\ConfigurableLanguage;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 use Drupal\user\Entity\User;
 
 /**
@@ -14,7 +14,7 @@
  *
  * @group user
  */
-class UserTokenReplaceTest extends WebTestBase {
+class UserTokenReplaceTest extends BrowserTestBase {
 
   /**
    * Modules to enable.
diff --git a/core/tests/Drupal/FunctionalTests/AssertLegacyTrait.php b/core/tests/Drupal/FunctionalTests/AssertLegacyTrait.php
index 5785a7d..2b51bce 100644
--- a/core/tests/Drupal/FunctionalTests/AssertLegacyTrait.php
+++ b/core/tests/Drupal/FunctionalTests/AssertLegacyTrait.php
@@ -2,7 +2,10 @@
 
 namespace Drupal\FunctionalTests;
 
+use Behat\Mink\Selector\Xpath\Escaper;
 use Drupal\KernelTests\AssertLegacyTrait as BaseAssertLegacyTrait;
+use Drupal\Component\Render\FormattableMarkup;
+use Drupal\Component\Utility\Xss;
 
 /**
  * Provides convenience methods for assertions in browser tests.
@@ -57,6 +60,9 @@ protected function assertElementNotPresent($css_selector) {
    *   $this->assertSession()->responseContains() instead.
    */
   protected function assertText($text) {
+    // Cast MarkupInterface to string.
+    $text = (string) $text;
+
     $content_type = $this->getSession()->getResponseHeader('Content-type');
     // In case of a Non-HTML response (example: XML) check the original
     // response.
@@ -64,7 +70,7 @@ protected function assertText($text) {
       $this->assertSession()->responseContains($text);
     }
     else {
-      $this->assertSession()->pageTextContains($text);
+      $this->assertTextHelper($text, FALSE);
     }
   }
 
@@ -82,6 +88,9 @@ protected function assertText($text) {
    *   $this->assertSession()->responseNotContains() instead.
    */
   protected function assertNoText($text) {
+    // Cast MarkupInterface to string.
+    $text = (string) $text;
+
     $content_type = $this->getSession()->getResponseHeader('Content-type');
     // In case of a Non-HTML response (example: XML) check the original
     // response.
@@ -89,11 +98,41 @@ protected function assertNoText($text) {
       $this->assertSession()->responseNotContains($text);
     }
     else {
-      $this->assertSession()->pageTextNotContains($text);
+      $this->assertTextHelper($text);
     }
   }
 
   /**
+   * Helper for assertText and assertNoText.
+   *
+   * @param string $text
+   *   Plain text to look for.
+   * @param bool $not_exists
+   *   (optional) TRUE if this text should not exist, FALSE if it should.
+   *   Defaults to TRUE.
+   *
+   * @return bool
+   *   TRUE on pass, FALSE on fail.
+   */
+  protected function assertTextHelper($text, $not_exists = TRUE) {
+    $args = ['@text' => $text];
+    $message = $not_exists ? new FormattableMarkup('"@text" not found', $args) : new FormattableMarkup('"@text" found', $args);
+
+    $raw_content = $this->getSession()->getPage()->getContent();
+    // Trying to simulate what the user sees, given that it removes all text
+    // inside the head tags, removes inline Javascript, fix all HTML entities,
+    // removes dangerous protocols and filtering out all HTML tags, as they are
+    // not visible in a normal browser.
+    $raw_content = preg_replace('@<head>(.+?)</head>@si', '', $raw_content);
+    $page_text = Xss::filter($raw_content, []);
+
+    $actual = $not_exists == (strpos($page_text, (string) $text) === FALSE);
+    $this->assertTrue($actual, $message);
+
+    return $actual;
+  }
+
+  /**
    * Passes if the text is found ONLY ONCE on the text version of the page.
    *
    * The text version is the equivalent of what a user would see when viewing
@@ -464,6 +503,103 @@ protected function assertNoFieldChecked($id) {
   }
 
   /**
+   * Asserts that a field exists in the current page by the given XPath.
+   *
+   * @param string $xpath
+   *   XPath used to find the field.
+   * @param string $value
+   *   (optional) Value of the field to assert. You may pass in NULL (default)
+   *   to skip checking the actual value, while still checking that the field
+   *   exists.
+   * @param string $message
+   *   (optional) A message to display with the assertion. Do not translate
+   *   messages with t().
+   *
+   * @deprecated Scheduled for removal in Drupal 9.0.0.
+   *   Use $this->xpath() instead and check the values directly in the test.
+   */
+  protected function assertFieldByXPath($xpath, $value = NULL, $message = '') {
+    $fields = $this->xpath($xpath);
+
+    $this->assertFieldsByValue($fields, $value, $message);
+  }
+
+  /**
+   * Asserts that a field does not exist or its value does not match, by XPath.
+   *
+   * @param string $xpath
+   *   XPath used to find the field.
+   * @param string $value
+   *   (optional) Value of the field, to assert that the field's value on the
+   *   page does not match it.
+   * @param string $message
+   *   (optional) A message to display with the assertion. Do not translate
+   *   messages with t().
+   *
+   * @deprecated Scheduled for removal in Drupal 9.0.0.
+   *   Use $this->assertSession()->fieldNotExists() or
+   *   $this->assertSession()->fieldValueNotEquals() instead.
+   */
+  protected function assertNoFieldByXPath($xpath, $value = NULL, $message = '') {
+    $fields = $this->xpath($xpath);
+
+    // If value specified then check array for match.
+    $found = TRUE;
+    if (isset($value)) {
+      $found = FALSE;
+      if ($fields) {
+        foreach ($fields as $field) {
+          if ($field->getAttribute('value') == $value) {
+            $found = TRUE;
+          }
+        }
+      }
+    }
+    return $this->assertFalse($fields && $found, $message);
+  }
+
+  /**
+   * Asserts that a field exists in the current page with a given Xpath result.
+   *
+   * @param \Behat\Mink\Element\NodeElement[] $fields
+   *   Xml elements.
+   * @param string $value
+   *   (optional) Value of the field to assert. You may pass in NULL (default) to skip
+   *   checking the actual value, while still checking that the field exists.
+   * @param string $message
+   *   (optional) A message to display with the assertion. Do not translate
+   *   messages with t().
+   *
+   * @deprecated Scheduled for removal in Drupal 9.0.0.
+   *   Iterate over the fields yourself instead and directly check the values in
+   *   the test.
+   */
+  protected function assertFieldsByValue($fields, $value = NULL, $message = '') {
+    // If value specified then check array for match.
+    $found = TRUE;
+    if (isset($value)) {
+      $found = FALSE;
+      if ($fields) {
+        foreach ($fields as $field) {
+          if ($field->getAttribute('value') == $value) {
+            // Input element with correct value.
+            $found = TRUE;
+          }
+          elseif ($field->find('xpath', '//option[@value = ' . (new Escaper())->escapeLiteral($value) . ' and @selected = "selected"]')) {
+            // Select element with an option.
+            $found = TRUE;
+          }
+          elseif ($field->getText() == $value) {
+            // Text area with correct text.
+            $found = TRUE;
+          }
+        }
+      }
+    }
+    $this->assertTrue($fields && $found, $message);
+  }
+
+  /**
    * Passes if the raw text IS found escaped on the loaded page, fail otherwise.
    *
    * Raw text refers to the raw HTML that the page generated.
diff --git a/core/tests/Drupal/FunctionalTests/BrowserTestBaseTest.php b/core/tests/Drupal/FunctionalTests/BrowserTestBaseTest.php
index eb5ba4b..3d59b76 100644
--- a/core/tests/Drupal/FunctionalTests/BrowserTestBaseTest.php
+++ b/core/tests/Drupal/FunctionalTests/BrowserTestBaseTest.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\FunctionalTests;
 
+use Drupal\Component\Utility\Html;
 use Drupal\Core\Url;
 use Drupal\Tests\BrowserTestBase;
 
@@ -101,4 +102,34 @@ public function testError() {
     $this->drupalGet('test-error');
   }
 
+  /**
+   * Tests that legacy assertions work.
+   */
+  public function testAssertions() {
+    $account = $this->drupalCreateUser(['administer users'], 'test');
+    $this->drupalLogin($account);
+
+    $this->drupalGet('admin/people');
+    $this->assertFieldByXpath('//table/tbody/tr[2]/td[1]/span', $account->getAccountName());
+
+    $this->drupalGet('user/' . $account->id() . '/edit');
+    $this->assertFieldByXpath("//input[@id = 'edit-name']", $account->getAccountName());
+    $this->assertFieldByXpath("//select[@id = 'edit-timezone--2']", 'Australia/Sydney');
+
+    $this->assertNoFieldByXPath('//notexisting');
+    $this->assertNoFieldByXpath("//input[@id = 'edit-name']", 'wrong value');
+  }
+
+  /**
+   * Tests legacy asserts.
+   */
+  public function testLegacyAsserts() {
+    $this->drupalGet('test-encoded');
+    $this->assertSession()->statusCodeEquals(200);
+    $dangerous = 'Bad html <script>alert(123);</script>';
+    $sanitized = Html::escape($dangerous);
+    $this->assertNoText($dangerous);
+    $this->assertText($sanitized);
+  }
+
 }
diff --git a/core/tests/Drupal/Tests/BrowserTestBase.php b/core/tests/Drupal/Tests/BrowserTestBase.php
index b4a685e..226385f 100644
--- a/core/tests/Drupal/Tests/BrowserTestBase.php
+++ b/core/tests/Drupal/Tests/BrowserTestBase.php
@@ -21,6 +21,7 @@
 use Drupal\Core\Session\UserSession;
 use Drupal\Core\Site\Settings;
 use Drupal\Core\StreamWrapper\StreamWrapperInterface;
+use Drupal\Core\Test\AssertMailTrait;
 use Drupal\Core\Test\TestRunnerKernel;
 use Drupal\Core\Url;
 use Drupal\Core\Test\TestDatabase;
@@ -63,6 +64,10 @@
     createUser as drupalCreateUser;
   }
 
+  use AssertMailTrait {
+    getMails as drupalGetMails;
+  }
+
   /**
    * Class loader.
    *
@@ -932,7 +937,9 @@ protected function submitForm(array $edit, $submit, $form_html_id = NULL) {
    * @param array $options
    *   Options to be forwarded to the url generator.
    */
-  protected function drupalPostForm($path, array $edit, $submit, array $options = array()) {
+  protected function drupalPostForm($path, $edit, $submit, array $options = array()) {
+    $edit = (array) $edit;
+
     if (is_object($submit)) {
       // Cast MarkupInterface objects to string.
       $submit = (string) $submit;
