diff --git a/core/modules/system/src/Tests/Theme/ThemeTest.php b/core/modules/system/src/Tests/Theme/ThemeTest.php
index 5195163..ee26c4d 100644
--- a/core/modules/system/src/Tests/Theme/ThemeTest.php
+++ b/core/modules/system/src/Tests/Theme/ThemeTest.php
@@ -278,4 +278,16 @@ function testPreprocessHtml() {
     $this->assertText('theme test page bottom markup', 'Modules are able to set the page bottom region.');
   }
 
+  /**
+   * Tests that region attributes can be manipulated via preprocess functions.
+   */
+  function testRegionClass() {
+    \Drupal::moduleHandler()->install(array('system', 'block', 'theme_region_test'));
+
+    // Place a block.
+    $this->drupalPlaceBlock('system_main_block');
+    $this->drupalGet('');
+    $elements = $this->cssSelect(".region-sidebar-first.new_class");
+    $this->assertEqual(count($elements), 1, 'New class found.');
+  }
 }
diff --git a/core/modules/system/tests/modules/theme_region_test/theme_region_test.info.yml b/core/modules/system/tests/modules/theme_region_test/theme_region_test.info.yml
new file mode 100644
index 0000000..0cf5fe3
--- /dev/null
+++ b/core/modules/system/tests/modules/theme_region_test/theme_region_test.info.yml
@@ -0,0 +1,6 @@
+name: 'Theme region test'
+type: module
+description: 'Provides hook implementations for testing regions.'
+package: Testing
+version: VERSION
+core: 8.x
diff --git a/core/modules/system/tests/modules/theme_region_test/theme_region_test.module b/core/modules/system/tests/modules/theme_region_test/theme_region_test.module
new file mode 100644
index 0000000..6efad6d
--- /dev/null
+++ b/core/modules/system/tests/modules/theme_region_test/theme_region_test.module
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * @file
+ * Provides hook implementations for testing purposes.
+ */
+
+/**
+ * Implements hook_preprocess_HOOK() for region templates.
+ */
+function theme_region_test_preprocess_region(&$variables) {
+  if ($variables['region'] == 'sidebar_first') {
+    $variables['attributes']['class'][] = 'new_class';
+  }
+}
