diff --git a/core/modules/block/src/Tests/BlockConfigSchemaTest.php b/core/modules/block/src/Tests/BlockConfigSchemaTest.php
index 9d7bcfe..3b8a695 100644
--- a/core/modules/block/src/Tests/BlockConfigSchemaTest.php
+++ b/core/modules/block/src/Tests/BlockConfigSchemaTest.php
@@ -75,7 +75,7 @@ public function testBlockConfigSchema() {
       $id = strtolower($this->randomMachineName());
       $block = Block::create(array(
         'id' => $id,
-        'theme' => 'classy',
+        'theme' => 'stark',
         'weight' => 00,
         'status' => TRUE,
         'region' => 'content',
diff --git a/core/modules/block/src/Tests/BlockTest.php b/core/modules/block/src/Tests/BlockTest.php
index f543476..40815fe 100644
--- a/core/modules/block/src/Tests/BlockTest.php
+++ b/core/modules/block/src/Tests/BlockTest.php
@@ -194,9 +194,10 @@ function testBlock() {
    */
   public function testBlockThemeSelector() {
     // Install all themes.
-    \Drupal::service('theme_handler')->install(array('bartik', 'seven'));
+    $themes = array('bartik', 'classy', 'seven', 'stark');
+    \Drupal::service('theme_handler')->install($themes);
     $theme_settings = $this->config('system.theme');
-    foreach (array('bartik', 'classy', 'seven') as $theme) {
+    foreach ($themes as $theme) {
       $this->drupalGet('admin/structure/block/list/' . $theme);
       $this->assertTitle(t('Block layout') . ' | Drupal');
       // Select the 'Powered by Drupal' block to be placed.
@@ -339,7 +340,7 @@ public function testBlockCacheTags() {
     );
     sort($expected_cache_tags);
     $this->assertIdentical($cache_entry->tags, $expected_cache_tags);
-    $cache_entry = \Drupal::cache('render')->get('entity_view:block:powered:en:classy');
+    $cache_entry = \Drupal::cache('render')->get('entity_view:block:powered:en:stark');
     $expected_cache_tags = array(
       'block_view',
       'config:block.block.powered',
@@ -384,7 +385,7 @@ public function testBlockCacheTags() {
       'rendered',
     );
     sort($expected_cache_tags);
-    $cache_entry = \Drupal::cache('render')->get('entity_view:block:powered:en:classy');
+    $cache_entry = \Drupal::cache('render')->get('entity_view:block:powered:en:stark');
     $this->assertIdentical($cache_entry->tags, $expected_cache_tags);
     $expected_cache_tags = array(
       'block_view',
@@ -392,7 +393,7 @@ public function testBlockCacheTags() {
       'rendered',
     );
     sort($expected_cache_tags);
-    $cache_entry = \Drupal::cache('render')->get('entity_view:block:powered-2:en:classy');
+    $cache_entry = \Drupal::cache('render')->get('entity_view:block:powered-2:en:stark');
     $this->assertIdentical($cache_entry->tags, $expected_cache_tags);
 
     // Now we should have a cache hit again.
@@ -418,7 +419,7 @@ public function testUninstallTheme() {
     $this->drupalGet('<front>');
     $this->assertText('Powered by Drupal');
 
-    $theme_handler->setDefault('classy');
+    $theme_handler->setDefault('stark');
     $theme_handler->uninstall(['seven']);
 
     // Ensure that the block configuration does not exist anymore.
diff --git a/core/modules/block/src/Tests/BlockUiTest.php b/core/modules/block/src/Tests/BlockUiTest.php
index aba4ba1..fe19f79 100644
--- a/core/modules/block/src/Tests/BlockUiTest.php
+++ b/core/modules/block/src/Tests/BlockUiTest.php
@@ -83,7 +83,7 @@ protected function setUp() {
   public function testBlockDemoUiPage() {
     $this->drupalPlaceBlock('help_block', array('region' => 'help'));
     $this->drupalGet('admin/structure/block');
-    $this->clickLink(t('Demonstrate block regions (@theme)', array('@theme' => 'Classy')));
+    $this->clickLink(t('Demonstrate block regions (@theme)', array('@theme' => 'Stark')));
     $elements = $this->xpath('//div[contains(@class, "region-highlighted")]/div[contains(@class, "block-region") and contains(text(), :title)]', array(':title' => 'Highlighted'));
     $this->assertTrue(!empty($elements), 'Block demo regions are shown.');
   }
@@ -135,7 +135,7 @@ public function testCandidateBlockList() {
     $arguments = array(
       ':ul_class' => 'block-list',
       ':li_class' => 'test-block-instantiation',
-      ':href' => 'admin/structure/block/add/test_block_instantiation/classy',
+      ':href' => 'admin/structure/block/add/test_block_instantiation/stark',
       ':text' => 'Display message',
     );
 
@@ -159,7 +159,7 @@ public function testContextAwareBlocks() {
     $arguments = array(
       ':ul_class' => 'block-list',
       ':li_class' => 'test-context-aware',
-      ':href' => 'admin/structure/block/add/test_context_aware/classy',
+      ':href' => 'admin/structure/block/add/test_context_aware/stark',
       ':text' => 'Test context-aware block',
     );
 
@@ -174,7 +174,7 @@ public function testContextAwareBlocks() {
    * Tests that the BlockForm populates machine name correctly.
    */
   public function testMachineNameSuggestion() {
-    $url = 'admin/structure/block/add/test_block_instantiation/classy';
+    $url = 'admin/structure/block/add/test_block_instantiation/stark';
     $this->drupalGet($url);
     $this->assertFieldByName('id', 'displaymessage', 'Block form uses raw machine name suggestion when no instance already exists.');
     $this->drupalPostForm($url, array(), 'Save block');
@@ -196,7 +196,7 @@ public function testBlockPlacementIndicator() {
     // Select the 'Powered by Drupal' block to be placed.
     $block = array();
     $block['id'] = strtolower($this->randomMachineName());
-    $block['theme'] = 'classy';
+    $block['theme'] = 'stark';
     $block['region'] = 'content';
 
     // After adding a block, it will indicate which block was just added.
diff --git a/core/modules/block/src/Tests/Views/DisplayBlockTest.php b/core/modules/block/src/Tests/Views/DisplayBlockTest.php
index 7f3665a..2e0645f 100644
--- a/core/modules/block/src/Tests/Views/DisplayBlockTest.php
+++ b/core/modules/block/src/Tests/Views/DisplayBlockTest.php
@@ -67,7 +67,7 @@ public function testBlockCategory() {
       ':li_class' => 'views-block' . Html::getClass($edit['id']) . '-block-1',
       ':href' => \Drupal::Url('block.admin_add', array(
         'plugin_id' => 'views_block:' . $edit['id'] . '-block_1',
-        'theme' => 'classy',
+        'theme' => 'stark',
       )),
       ':text' => $edit['label'],
     );
@@ -106,7 +106,7 @@ public function testBlockCategory() {
       ':li_class' => 'views-block' . Html::getClass($edit['id']) . '-block-2',
       ':href' => \Drupal::Url('block.admin_add', array(
         'plugin_id' => 'views_block:' . $edit['id'] . '-block_2',
-        'theme' => 'classy',
+        'theme' => 'stark',
       )),
       ':text' => $edit['label'],
     );
@@ -118,7 +118,7 @@ public function testBlockCategory() {
       ':li_class' => 'views-block' . Html::getClass($edit['id']) . '-block-3',
       ':href' => \Drupal::Url('block.admin_add', array(
         'plugin_id' => 'views_block:' . $edit['id'] . '-block_3',
-        'theme' => 'classy',
+        'theme' => 'stark',
       )),
       ':text' => $edit['label'],
     );
diff --git a/core/modules/block/tests/modules/block_test/config/install/block.block.test_block.yml b/core/modules/block/tests/modules/block_test/config/install/block.block.test_block.yml
index be7e06c..f52790f 100644
--- a/core/modules/block/tests/modules/block_test/config/install/block.block.test_block.yml
+++ b/core/modules/block/tests/modules/block_test/config/install/block.block.test_block.yml
@@ -13,5 +13,5 @@ dependencies:
   module:
     - block_test
   theme:
-    - classy
+    - stark
 visibility: {  }
diff --git a/core/modules/block_content/src/Tests/BlockContentTypeTest.php b/core/modules/block_content/src/Tests/BlockContentTypeTest.php
index 7503890..13c138e 100644
--- a/core/modules/block_content/src/Tests/BlockContentTypeTest.php
+++ b/core/modules/block_content/src/Tests/BlockContentTypeTest.php
@@ -174,8 +174,8 @@ public function testsBlockContentAddTypes() {
       ->getStorage('block_content');
 
     // Install all themes.
-    \Drupal::service('theme_handler')->install(array('bartik', 'seven'));
-    $themes = array('bartik', 'seven', 'classy');
+    $themes = array('bartik', 'classy', 'seven', 'stark');
+    \Drupal::service('theme_handler')->install($themes);
     $theme_settings = $this->config('system.theme');
     foreach ($themes as $default_theme) {
       // Change the default theme.
@@ -183,7 +183,6 @@ public function testsBlockContentAddTypes() {
       \Drupal::service('router.builder')->rebuild();
 
       // For each installed theme, go to its block page and test the redirects.
-      $themes = array('bartik', 'classy', 'seven');
       foreach ($themes as $theme) {
         // Test that adding a block from the 'place blocks' form sends you to the
         // block configure form.
diff --git a/core/modules/block_content/tests/modules/block_content_test/config/install/block.block.foobargorilla.yml b/core/modules/block_content/tests/modules/block_content_test/config/install/block.block.foobargorilla.yml
index 42858f7..b251e3e 100644
--- a/core/modules/block_content/tests/modules/block_content_test/config/install/block.block.foobargorilla.yml
+++ b/core/modules/block_content/tests/modules/block_content_test/config/install/block.block.foobargorilla.yml
@@ -6,7 +6,7 @@ dependencies:
   theme:
     - classy
 id: foobargorilla
-theme: classy
+theme: stark
 region: content
 weight: null
 provider: null
diff --git a/core/modules/search/src/Tests/SearchBlockTest.php b/core/modules/search/src/Tests/SearchBlockTest.php
index bf18056..d9c1bfa 100644
--- a/core/modules/search/src/Tests/SearchBlockTest.php
+++ b/core/modules/search/src/Tests/SearchBlockTest.php
@@ -36,7 +36,7 @@ public function testSearchFormBlock() {
 
     // Test availability of the search block in the admin "Place blocks" list.
     $this->drupalGet('admin/structure/block');
-    $this->assertLinkByHref('/admin/structure/block/add/search_form_block/classy', 0,
+    $this->assertLinkByHref('/admin/structure/block/add/search_form_block/stark', 0,
       'Did not find the search block in block candidate list.');
 
     $block = $this->drupalPlaceBlock('search_form_block');
diff --git a/core/modules/system/src/Tests/Installer/InstallerTranslationTest.php b/core/modules/system/src/Tests/Installer/InstallerTranslationTest.php
index 7f3a66f..77b5614 100644
--- a/core/modules/system/src/Tests/Installer/InstallerTranslationTest.php
+++ b/core/modules/system/src/Tests/Installer/InstallerTranslationTest.php
@@ -73,7 +73,7 @@ public function testInstaller() {
     $edit = array('preprocess_css' => FALSE);
     $this->drupalPostForm('admin/config/development/performance', $edit, t('Save configuration'));
     $this->drupalGet('<front>');
-    $this->assertRaw('classy/css/layout.css');
+    $this->assertRaw('stark/css/layout.css');
 
     // Verify the strings from the translation files were imported.
     $test_samples = ['Save and continue', 'Anonymous'];
diff --git a/core/modules/system/src/Tests/Menu/MenuRouterTest.php b/core/modules/system/src/Tests/Menu/MenuRouterTest.php
index c8ca38c..2393d4b 100644
--- a/core/modules/system/src/Tests/Menu/MenuRouterTest.php
+++ b/core/modules/system/src/Tests/Menu/MenuRouterTest.php
@@ -249,6 +249,7 @@ public function testThemeIntegration() {
       ->set('default', $this->defaultTheme)
       ->set('admin', $this->adminTheme)
       ->save();
+    $theme_handler->uninstall(array('stark'));
 
     $this->doTestThemeCallbackMaintenanceMode();
 
diff --git a/core/modules/system/src/Tests/System/ThemeTest.php b/core/modules/system/src/Tests/System/ThemeTest.php
index d5bb6f6..cea60e2 100644
--- a/core/modules/system/src/Tests/System/ThemeTest.php
+++ b/core/modules/system/src/Tests/System/ThemeTest.php
@@ -55,7 +55,7 @@ function testThemeSettings() {
     // Specify a filesystem path to be used for the logo.
     $file = current($this->drupalGetTestFiles('image'));
     $file_relative = strtr($file->uri, array('public:/' => PublicStream::basePath()));
-    $default_theme_path = 'core/themes/classy';
+    $default_theme_path = 'core/themes/stark';
 
     $supported_paths = array(
       // Raw stream wrapper URI.
@@ -199,7 +199,7 @@ function testAdministrationTheme() {
     $this->assertRaw('core/themes/seven', 'Administration theme used on an administration page.');
 
     $this->drupalGet('node/' . $this->node->id());
-    $this->assertRaw('core/themes/classy', 'Site default theme used on node page.');
+    $this->assertRaw('core/themes/stark', 'Site default theme used on node page.');
 
     $this->drupalGet('node/add');
     $this->assertRaw('core/themes/seven', 'Administration theme used on the add content page.');
@@ -225,7 +225,7 @@ function testAdministrationTheme() {
     $this->drupalLogin($this->adminUser);
 
     $this->drupalGet('node/add');
-    $this->assertRaw('core/themes/classy', 'Site default theme used on the add content page.');
+    $this->assertRaw('core/themes/stark', 'Site default theme used on the add content page.');
 
     // Reset to the default theme settings.
     $edit = array(
@@ -235,10 +235,10 @@ function testAdministrationTheme() {
     $this->drupalPostForm('admin/appearance', $edit, t('Save configuration'));
 
     $this->drupalGet('admin');
-    $this->assertRaw('core/themes/classy', 'Site default theme used on administration page.');
+    $this->assertRaw('core/themes/stark', 'Site default theme used on administration page.');
 
     $this->drupalGet('node/add');
-    $this->assertRaw('core/themes/classy', 'Site default theme used on the add content page.');
+    $this->assertRaw('core/themes/stark', 'Site default theme used on the add content page.');
   }
 
   /**
@@ -256,10 +256,10 @@ function testSwitchDefaultTheme() {
     $this->assertText('Bartik(' . t('active tab') . ')', 'Default local task on blocks admin page is the default theme.');
     // Switch back to Stark and test again to test that the menu cache is cleared.
     $this->drupalGet('admin/appearance');
-    // Classy is the first 'Set as default' link.
-    $this->clickLink(t('Set as default'), 0);
+    // Stark is the second 'Set as default' link.
+    $this->clickLink(t('Set as default'), 1);
     $this->drupalGet('admin/structure/block');
-    $this->assertText('Classy(' . t('active tab') . ')', 'Default local task on blocks admin page has changed.');
+    $this->assertText('Stark(' . t('active tab') . ')', 'Default local task on blocks admin page has changed.');
   }
 
   /**
diff --git a/core/modules/system/src/Tests/Theme/ThemeEarlyInitializationTest.php b/core/modules/system/src/Tests/Theme/ThemeEarlyInitializationTest.php
index af21a56..04730d2 100644
--- a/core/modules/system/src/Tests/Theme/ThemeEarlyInitializationTest.php
+++ b/core/modules/system/src/Tests/Theme/ThemeEarlyInitializationTest.php
@@ -33,6 +33,6 @@ function testRequestListener() {
     $this->assertRaw('Themed output generated in a KernelEvents::REQUEST listener');
     // Verify that the default theme's CSS still appears even though the theme
     // system was initialized early.
-    $this->assertRaw('classy/css/layout.css');
+    $this->assertRaw('stark/css/layout.css');
   }
 }
diff --git a/core/modules/system/tests/modules/theme_test/src/Theme/HighPriorityThemeNegotiator.php b/core/modules/system/tests/modules/theme_test/src/Theme/HighPriorityThemeNegotiator.php
index 7934ae3..8d93267 100644
--- a/core/modules/system/tests/modules/theme_test/src/Theme/HighPriorityThemeNegotiator.php
+++ b/core/modules/system/tests/modules/theme_test/src/Theme/HighPriorityThemeNegotiator.php
@@ -26,7 +26,7 @@ public function applies(RouteMatchInterface $route_match) {
    * {@inheritdoc}
    */
   public function determineActiveTheme(RouteMatchInterface $route_match) {
-    return 'classy';
+    return 'stark';
   }
 
 }
diff --git a/core/modules/system/tests/themes/test_theme/test_theme.info.yml b/core/modules/system/tests/themes/test_theme/test_theme.info.yml
index 9eebc90..05b2813 100644
--- a/core/modules/system/tests/themes/test_theme/test_theme.info.yml
+++ b/core/modules/system/tests/themes/test_theme/test_theme.info.yml
@@ -12,7 +12,6 @@ name: 'Test theme'
 type: theme
 description: 'Theme for testing the theme system'
 version: VERSION
-base theme: classy
 core: 8.x
 stylesheets-remove:
   - system.module.css
diff --git a/core/profiles/testing/config/install/system.theme.yml b/core/profiles/testing/config/install/system.theme.yml
deleted file mode 100644
index 0defc7e..0000000
--- a/core/profiles/testing/config/install/system.theme.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-# @todo: Remove this file in https://www.drupal.org/node/2352949
-default: classy
diff --git a/core/profiles/testing/testing.info.yml b/core/profiles/testing/testing.info.yml
index 1eb843d..b905706 100644
--- a/core/profiles/testing/testing.info.yml
+++ b/core/profiles/testing/testing.info.yml
@@ -4,6 +4,3 @@ description: 'Minimal profile for running tests. Includes absolutely required mo
 version: VERSION
 core: 8.x
 hidden: true
-# @todo: Remove this in https://www.drupal.org/node/2352949
-themes:
-  - classy
diff --git a/core/themes/classy/css/layout.css b/core/themes/classy/css/layout.css
deleted file mode 100644
index 4c9867d..0000000
--- a/core/themes/classy/css/layout.css
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * @file
- * Classy layout file. Do NOT delete. Needed for testing.
- *
- * @see \Drupal\system\Tests\Installer\InstallerTranslationTest::testInstaller()
- */
diff --git a/core/themes/classy/logo.png b/core/themes/classy/logo.png
new file mode 100644
index 0000000..32332cf
--- /dev/null
+++ b/core/themes/classy/logo.png
@@ -0,0 +1,8 @@
+PNG
+
+   IHDR   A   I   ȭ   tEXtSoftware Adobe ImageReadyqe<  IDAThkpTj[Z:S;SVrm%k$@{9r\
+,B5`AmRBYS  bUHT() $~سgs6	${N\vfAOzp~X^EpGZxs/"T7!^O3	KT5syL~M>gG)$$2*	8_(+ѳEAE!A騵皻Vo7'iQPPQQû:;7.8 GF:B@=q2vf$1}e==0О&Ys#J[?ʿrI%D4"*%A#{ C}Yb*Ȧ$tJB-
+\@m\ )Vk:L66*Ijmr?廍9R<LLs MKE%IW}7rbgfVnLB	XtA/xPU&,%8Jvtwb!؊"k?=!H*	=EkgG-,GvDWFdADp|+2On9ykDJERLe=2f#teq*)ֳWMrN2ũf)R+&FmED,h̼J*RW@(<*W/Hbґd!ᣬ3,)Ee3DP` @Lܨ=SA͝Š)Bq?xՐ{Upe,CE+c"Ǡ|QS	aɭqqCRMŵ;H6!c	hi|Xϥ,(H7lP8!	%pgYg9
+͸jP$*~9: KÄpc&Ű* (!-qmi31b&T`: aoqw&ӫ9XivA6$!!B>)Ap̎U}1jNuԔ٫	2 	P&jdamˆJ@ҟĩւ~sub9lڊsDVB	4HY3MľSGdֆ8PbR 	=!QC%I%Lle?!v'n׀h UΏ^#4\6QYQvLހQj=Nưg7?EU9%s~P+h "L`!><p,AM0sQK綏3fӽBl+M䈍vlgYM(2cDE̹Fܧ.^L;F0j[Lŉ l4Ml;-s7S;)M	gk>eotWZW(-Z&Z鞝8:lK,:'2z>gwt0ۡ#ii["$g潧c1@ Ss Fy}u״&,b?c]Q6&zC'csY\(Y;8rEyjxq7Ax;Pvzɤ<QՄNݷ(68MlaqďLwO;+j$t%o{`x2_WI?~v	+_K=Ĉ1,`n*R#_+VrV"xw#~T" 7llgOƉK`#l㢄38hb1BGZC'iOVjv8x'|g
+~s /Tx4{)$L{	8(D(m8U'J~gn=;rM2dJxqSCJj3DЂ[qd?%a^fq%aVC9v&^ҟ|9t)2`d9\fFZTg;y0[
+y/	"Iq#v7I-5#-ZsG#.#'lğ6kh]/ghK 8&&1Y?hxAZqCOH_i DU{{Yi)/yo{%闟vyӆXpmDn/+.gc\Xe_j[6:v[unWa_{    IENDB`
\ No newline at end of file
