diff --git a/core/modules/outside_in/tests/src/FunctionalJavascript/OffCanvasTest.php b/core/modules/outside_in/tests/src/FunctionalJavascript/OffCanvasTest.php
index b81c723..4e3fc0e 100644
--- a/core/modules/outside_in/tests/src/FunctionalJavascript/OffCanvasTest.php
+++ b/core/modules/outside_in/tests/src/FunctionalJavascript/OffCanvasTest.php
@@ -18,9 +18,8 @@ class OffCanvasTest extends OutsideInJavascriptTestBase {
    * Tests that regular non-contextual links will work with the off-canvas tray.
    */
   public function testOffCanvasLinks() {
-    $themes = ['bartik', 'stark'];
     // Test the same functionality on multiple themes.
-    foreach ($themes as $theme) {
+    foreach ($this->getTestThemes() as $theme) {
       $this->enableTheme($theme);
       $this->drupalGet('/offcanvas-test-links');
 
@@ -73,7 +72,6 @@ public function testOffCanvasLinks() {
    * Tests the body displacement behaves differently at a narrow width.
    */
   public function testNarrowWidth() {
-    $themes = ['stark', 'bartik'];
     $narrow_width_breakpoint = 768;
     $offset = 20;
     $height = 800;
@@ -81,7 +79,7 @@ public function testNarrowWidth() {
     $web_assert = $this->assertSession();
 
     // Test the same functionality on multiple themes.
-    foreach ($themes as $theme) {
+    foreach ($this->getTestThemes() as $theme) {
       $this->enableTheme($theme);
       // Testing at the wider width.
       $this->getSession()->resizeWindow($narrow_width_breakpoint + $offset, $height);
diff --git a/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInBlockFormTest.php b/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInBlockFormTest.php
index 04c6e70..43873d7 100644
--- a/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInBlockFormTest.php
+++ b/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInBlockFormTest.php
@@ -34,9 +34,6 @@ class OutsideInBlockFormTest extends OutsideInJavascriptTestBase {
    */
   protected function setUp() {
     parent::setUp();
-    // @todo Ensure that this test class works against bartik and stark:
-    //   https://www.drupal.org/node/2784881.
-    $this->enableTheme('bartik');
     $user = $this->createUser([
       'administer blocks',
       'access contextual links',
@@ -57,76 +54,80 @@ protected function setUp() {
    *
    * @dataProvider providerTestBlocks
    */
-  public function testBlocks($block_id, $new_page_text, $element_selector, $label_selector, $button_text, $toolbar_item) {
-    $web_assert = $this->assertSession();
-    $page = $this->getSession()->getPage();
-    $block_selector = '#' . $block_id;
-    $this->drupalGet('user');
-    if (isset($toolbar_item)) {
-      // Check that you can open a toolbar tray and it will be closed after
-      // entering edit mode.
-      if ($element = $page->find('css', "#toolbar-administration a.is-active")) {
-        // If a tray was open from page load close it.
-        $element->click();
-        $this->waitForNoElement("#toolbar-administration a.is-active");
+  public function testBlocks($block_id, $block_selectors, $new_page_text, $element_selector, $label_selector, $button_text, $toolbar_item) {
+    foreach ($this->getTestThemes() as $theme) {
+      $this->enableTheme($theme);
+      $web_assert = $this->assertSession();
+      $page = $this->getSession()->getPage();
+      $block_selector = $block_selectors[$theme];
+      $this->drupalGet('user');
+      if (isset($toolbar_item)) {
+        // Check that you can open a toolbar tray and it will be closed after
+        // entering edit mode.
+        if ($element = $page->find('css', "#toolbar-administration a.is-active")) {
+          // If a tray was open from page load close it.
+          $element->click();
+          $this->waitForNoElement("#toolbar-administration a.is-active");
+        }
+        $page->find('css', $toolbar_item)->click();
+        $web_assert->waitForElementVisible('css', "{$toolbar_item}.is-active");
+      }
+      $this->toggleEditingMode();
+      if (isset($toolbar_item)) {
+        $this->waitForNoElement("{$toolbar_item}.is-active");
       }
-      $page->find('css', $toolbar_item)->click();
-      $web_assert->waitForElementVisible('css', "{$toolbar_item}.is-active");
-    }
-    $this->toggleEditingMode();
-    if (isset($toolbar_item)) {
-      $this->waitForNoElement("{$toolbar_item}.is-active");
-    }
 
-    $this->openBlockForm($block_selector);
+      $this->openBlockForm($block_selector);
 
-    switch ($block_id) {
-      case 'block-powered':
-        // Fill out form, save the form.
-        $page->fillField('settings[label]', $new_page_text);
-        $page->checkField('settings[label_display]');
-        break;
+      switch ($block_id) {
+        case 'block-powered':
+          // Fill out form, save the form.
+          $page->fillField('settings[label]', $new_page_text);
+          $page->checkField('settings[label_display]');
+          break;
 
-      case 'block-branding':
-        // Fill out form, save the form.
-        $page->fillField('settings[site_information][site_name]', $new_page_text);
-        break;
-    }
+        case 'block-branding':
+          // Fill out form, save the form.
+          $page->fillField('settings[site_information][site_name]', $new_page_text);
+          break;
+      }
 
-    if (isset($new_page_text)) {
-      $page->pressButton($button_text);
-      // Make sure the changes are present.
-      // @todo Use a wait method that will take into account the form submitting
-      //   and all JavaScript activity. https://www.drupal.org/node/2837676
-      //   The use \Behat\Mink\WebAssert::pageTextContains to check text.
-      $this->assertJsCondition('jQuery("' . $block_selector . ' ' . $label_selector . '").html() == "' . $new_page_text . '"');
-    }
+      if (isset($new_page_text)) {
+        $page->pressButton($button_text);
+        // Make sure the changes are present.
+        // @todo Use a wait method that will take into account the form submitting
+        //   and all JavaScript activity. https://www.drupal.org/node/2837676
+        //   The use \Behat\Mink\WebAssert::pageTextContains to check text.
+        $this->assertJsCondition('jQuery("' . $block_selector . ' ' . $label_selector . '").html() == "' . $new_page_text . '"');
+      }
+
+      $this->openBlockForm($block_selector);
 
-    $this->openBlockForm($block_selector);
+      $this->toggleEditingMode();
+      // Canvas should close when editing module is closed.
+      $this->waitForOffCanvasToClose();
 
-    $this->toggleEditingMode();
-    // Canvas should close when editing module is closed.
-    $this->waitForOffCanvasToClose();
+      // Go into Edit mode again.
+      $this->toggleEditingMode();
 
-    // Go into Edit mode again.
-    $this->toggleEditingMode();
+      $element_selector = "$block_selector {$element_selector}";
+      // Open block form by clicking a element inside the block.
+      // This confirms that default action for links and form elements is
+      // suppressed.
+      $this->openBlockForm($element_selector);
 
-    $element_selector = "$block_selector {$element_selector}";
-    // Open block form by clicking a element inside the block.
-    // This confirms that default action for links and form elements is
-    // suppressed.
-    $this->openBlockForm($element_selector);
+      // Exit edit mode using ESC.
+      $web_assert->elementTextContains('css', '.contextual-toolbar-tab button', 'Editing');
+      $web_assert->elementAttributeContains('css', '.dialog-offcanvas__main-canvas', 'class', 'js-outside-in-edit-mode');
+      // Simulate press the Escape key.
+      $this->getSession()->executeScript('jQuery("body").trigger(jQuery.Event("keyup", { keyCode: 27 }));');
+      $this->waitForOffCanvasToClose();
+      $this->getSession()->wait(100);
+      $web_assert->elementTextContains('css', '#drupal-live-announce', 'Exited edit mode.');
+      $web_assert->elementTextNotContains('css', '.contextual-toolbar-tab button', 'Editing');
+      $web_assert->elementAttributeNotContains('css', '.dialog-offcanvas__main-canvas', 'class', 'js-outside-in-edit-mode');
+    }
 
-    // Exit edit mode using ESC.
-    $web_assert->elementTextContains('css', '.contextual-toolbar-tab button', 'Editing');
-    $web_assert->elementAttributeContains('css', '.dialog-offcanvas__main-canvas', 'class', 'js-outside-in-edit-mode');
-    // Simulate press the Escape key.
-    $this->getSession()->executeScript('jQuery("body").trigger(jQuery.Event("keyup", { keyCode: 27 }));');
-    $this->waitForOffCanvasToClose();
-    $this->getSession()->wait(100);
-    $web_assert->elementTextContains('css', '#drupal-live-announce', 'Exited edit mode.');
-    $web_assert->elementTextNotContains('css', '.contextual-toolbar-tab button', 'Editing');
-    $web_assert->elementAttributeNotContains('css', '.dialog-offcanvas__main-canvas', 'class', 'js-outside-in-edit-mode');
   }
 
   /**
@@ -136,6 +137,10 @@ public function providerTestBlocks() {
     $blocks = [
       'block-powered' => [
         'id' => 'block-powered',
+        'block_selectors' => [
+          'bartik' => '#block-bartik-powered',
+          'stark' => '#block-stark-powered',
+        ],
         'new_page_text' => 'Can you imagine anyone showing the label on this block?',
         'element_selector' => '.content a',
         'label_selector' => 'h2',
@@ -144,6 +149,10 @@ public function providerTestBlocks() {
       ],
       'block-branding' => [
         'id' => 'block-branding',
+        'block_selectors' => [
+          'bartik' => '#block-bartik-branding',
+          'stark' => '#block-stark-branding',
+        ],
         'new_page_text' => 'The site that will live a very short life.',
         'element_selector' => 'a[rel="home"]:nth-child(2)',
         'label_selector' => '.site-branding__name a',
@@ -152,6 +161,10 @@ public function providerTestBlocks() {
       ],
       'block-search' => [
         'id' => 'block-search',
+        'block_selectors' => [
+          'bartik' => '#block-bartik-search',
+          'stark' => '#block-stark-search',
+        ],
         'new_page_text' => NULL,
         'element_selector' => '#edit-submit',
         'label_selector' => 'h2',
@@ -206,10 +219,15 @@ protected function openBlockForm($block_selector) {
    * Tests QuickEdit links behavior.
    */
   public function testQuickEditLinks() {
-    $quick_edit_selector = '#quickedit-entity-toolbar';
-    $body_selector = '.field--name-body p';
-    $block_selector = '#block-powered';
+    $page = $this->getSession()->getPage();
     $web_assert = $this->assertSession();
+    $quick_edit_selector = '#quickedit-entity-toolbar';
+    $node_selector = '[data-quickedit-entity-id="node/1"]';
+    $body_selector = '[data-quickedit-field-id="node/1/body/en/full"]';
+    $block_selectors = [
+      'bartik' => '#block-bartik-powered',
+      'stark' => '#block-stark-powered',
+    ];
     // Create a Content type and two test nodes.
     $this->createContentType(['type' => 'page']);
     $auth_role = Role::load(Role::AUTHENTICATED_ID);
@@ -229,59 +247,65 @@ public function testQuickEditLinks() {
         ],
       ]
     );
-    $page = $this->getSession()->getPage();
-    // Load the same page twice.
-    foreach ([1, 2] as $page_load_times) {
-      $this->drupalGet('node/' . $node->id());
-      // Waiting for Toolbar module.
-      // @todo Remove the hack after https://www.drupal.org/node/2542050.
-      $web_assert->waitForElementVisible('css', '.toolbar-fixed');
-      // Waiting for Toolbar animation.
-      $web_assert->assertWaitOnAjaxRequest();
-      // The 2nd page load we should already be in edit mode.
-      if ($page_load_times == 1) {
+
+    foreach ($this->getTestThemes() as $theme) {
+      $this->enableTheme($theme);
+
+      $block_selector = $block_selectors[$theme];
+
+      // Load the same page twice.
+      foreach ([1, 2] as $page_load_times) {
+        $this->drupalGet('node/' . $node->id());
+        // Waiting for Toolbar module.
+        // @todo Remove the hack after https://www.drupal.org/node/2542050.
+        $web_assert->waitForElementVisible('css', '.toolbar-fixed');
+        // Waiting for Toolbar animation.
+        $web_assert->assertWaitOnAjaxRequest();
+        // The 2nd page load we should already be in edit mode.
+        if ($page_load_times == 1) {
+          $this->toggleEditingMode();
+        }
+        // In Edit mode clicking field should open QuickEdit toolbar.
+        $page->find('css', $body_selector)->click();
+        $web_assert->waitForElementVisible('css', $quick_edit_selector);
+        // Exit Edit mode.
+        $this->toggleEditingMode();
+        // Exiting Edit mode should close QuickEdit toolbar.
+        $web_assert->elementNotExists('css', $quick_edit_selector);
+        // When not in Edit mode QuickEdit toolbar should not open.
+        $page->find('css', $body_selector)->click();
+        $web_assert->elementNotExists('css', $quick_edit_selector);
+
+        // Enter Edit mode.
         $this->toggleEditingMode();
+        $this->openBlockForm($block_selector);
+        $page->find('css', $body_selector)->click();
+        $web_assert->waitForElementVisible('css', $quick_edit_selector);
+        // Offcanvas should be closed when opening QuickEdit toolbar.
+        $this->waitForOffCanvasToClose();
+
+        $this->openBlockForm($block_selector);
+        // QuickEdit toolbar should be closed when opening Offcanvas.
+        $web_assert->elementNotExists('css', $quick_edit_selector);
       }
-      // In Edit mode clicking field should open QuickEdit toolbar.
-      $page->find('css', $body_selector)->click();
-      $web_assert->waitForElementVisible('css', $quick_edit_selector);
-      // Exit Edit mode.
-      $this->toggleEditingMode();
-      // Exiting Edit mode should close QuickEdit toolbar.
-      $web_assert->elementNotExists('css', $quick_edit_selector);
-      // When not in Edit mode QuickEdit toolbar should not open.
-      $page->find('css', $body_selector)->click();
-      $web_assert->elementNotExists('css', $quick_edit_selector);
 
-      // Enter Edit mode.
+      // Check using contextual links to invoke QuickEdit and open the tray.
+      $this->drupalGet('node/' . $node->id());
+      $web_assert->assertWaitOnAjaxRequest();
       $this->toggleEditingMode();
-      $this->openBlockForm($block_selector);
-      $page->find('css', $body_selector)->click();
+      // Open QuickEdit toolbar before going into Edit mode.
+      $this->clickContextualLink($node_selector, "Quick edit");
       $web_assert->waitForElementVisible('css', $quick_edit_selector);
-      // Offcanvas should be closed when opening QuickEdit toolbar.
-      $this->waitForOffCanvasToClose();
-
-      $this->openBlockForm($block_selector);
+      // Open off-canvas and enter Edit mode via contextual link.
+      $this->clickContextualLink($block_selector, "Quick edit");
+      $this->waitForOffCanvasToOpen();
       // QuickEdit toolbar should be closed when opening Offcanvas.
       $web_assert->elementNotExists('css', $quick_edit_selector);
+      // Open QuickEdit toolbar via contextual link while in Edit mode.
+      $this->clickContextualLink($node_selector, "Quick edit", FALSE);
+      $this->waitForOffCanvasToClose();
+      $web_assert->waitForElementVisible('css', $quick_edit_selector);
     }
-
-    // Check using contextual links to invoke QuickEdit and open the tray.
-    $this->drupalGet('node/' . $node->id());
-    $web_assert->assertWaitOnAjaxRequest();
-    $this->toggleEditingMode();
-    // Open QuickEdit toolbar before going into Edit mode.
-    $this->clickContextualLink('.node', "Quick edit");
-    $web_assert->waitForElementVisible('css', $quick_edit_selector);
-    // Open off-canvas and enter Edit mode via contextual link.
-    $this->clickContextualLink($block_selector, "Quick edit");
-    $this->waitForOffCanvasToOpen();
-    // QuickEdit toolbar should be closed when opening Offcanvas.
-    $web_assert->elementNotExists('css', $quick_edit_selector);
-    // Open QuickEdit toolbar via contextual link while in Edit mode.
-    $this->clickContextualLink('.node', "Quick edit", FALSE);
-    $this->waitForOffCanvasToClose();
-    $web_assert->waitForElementVisible('css', $quick_edit_selector);
   }
 
 }
diff --git a/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInJavascriptTestBase.php b/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInJavascriptTestBase.php
index 325aec7..f085fa0 100644
--- a/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInJavascriptTestBase.php
+++ b/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInJavascriptTestBase.php
@@ -118,4 +118,14 @@ protected function toggleContextualTriggerVisibility($selector) {
     $this->getSession()->executeScript("jQuery('{$selector} .contextual .trigger').toggleClass('visually-hidden');");
   }
 
+  /**
+   * Get themes to test.
+   *
+   * @return string[]
+   *   Theme names to test.
+   */
+  protected function getTestThemes() {
+    return ['bartik', 'stark'];
+  }
+
 }
