summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorxjm2016-12-20 01:18:42 (GMT)
committerxjm2016-12-20 01:18:42 (GMT)
commitf53358d2718ee27475b02b090f7fb7383cc6fa44 (patch)
tree639112fedd6d6d8910d9361b83f7ca0549063433
parentc6344b0673b373f2d348cd922fe3d67ddb800309 (diff)
Issue #2830485 by michielnugter, klausi, tedbow, xjm, catch, tim.plunkett, dawehner, alexpott, Wim Leers, Lendude: \Drupal\Tests\outside_in\FunctionalJavascript\OutsideInBlockFormTest fails randomly
-rw-r--r--core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInBlockFormTest.php145
-rw-r--r--core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInJavascriptTestBase.php13
2 files changed, 91 insertions, 67 deletions
diff --git a/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInBlockFormTest.php b/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInBlockFormTest.php
index 9388ec8..1eba971 100644
--- a/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInBlockFormTest.php
+++ b/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInBlockFormTest.php
@@ -49,93 +49,104 @@ class OutsideInBlockFormTest extends OutsideInJavascriptTestBase {
/**
* Tests opening Offcanvas tray by click blocks and elements in the blocks.
+ *
+ * @dataProvider providerTestBlocks
*/
- public function testBlocks() {
- // @todo: re-enable once https://www.drupal.org/node/2830485 is resolved.
- $this->markTestSkipped('Test skipped due to random failures in DrupalCI, see https://www.drupal.org/node/2830485');
-
+ 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");
+ }
+ $page->find('css', $toolbar_item)->click();
+ $this->waitForElement("{$toolbar_item}.is-active");
+ }
+ $this->toggleEditingMode();
+ if (isset($toolbar_item)) {
+ $this->waitForNoElement("{$toolbar_item}.is-active");
+ }
+
+ $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;
+
+ 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 . '"');
+ }
+
+ $this->openBlockForm($block_selector);
+
+ $this->toggleEditingMode();
+ // Canvas should close when editing module is closed.
+ $this->waitForOffCanvasToClose();
+
+ // 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);
+
+ // Exit edit mode.
+ $this->toggleEditingMode();
+ }
+
+ /**
+ * Dataprovider for testBlocks().
+ */
+ public function providerTestBlocks() {
$blocks = [
- [
+ 'block-powered' => [
'id' => 'block-powered',
'new_page_text' => 'Can you imagine anyone showing the label on this block?',
'element_selector' => '.content a',
+ 'label_selector' => 'h2',
'button_text' => 'Save Powered by Drupal',
'toolbar_item' => '#toolbar-item-user',
],
- [
+ 'block-branding' => [
'id' => 'block-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',
'button_text' => 'Save Site branding',
'toolbar_item' => '#toolbar-item-administration',
],
- [
+ 'block-search' => [
'id' => 'block-search',
+ 'new_page_text' => NULL,
'element_selector' => '#edit-submit',
+ 'label_selector' => 'h2',
'button_text' => 'Save Search form',
+ 'toolbar_item' => NULL,
],
];
- $page = $this->getSession()->getPage();
- foreach ($blocks as $block) {
- $block_selector = '#' . $block['id'];
- $this->drupalGet('user');
- if (isset($block['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', $block['toolbar_item'])->click();
- $this->waitForElement("{$block['toolbar_item']}.is-active");
- }
- $this->toggleEditingMode();
- if (isset($block['toolbar_item'])) {
- $this->waitForNoElement("{$block['toolbar_item']}.is-active");
- }
-
- $this->openBlockForm($block_selector);
-
- switch ($block['id']) {
- case 'block-powered':
- // Fill out form, save the form.
- $page->fillField('settings[label]', $block['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]', $block['new_page_text']);
- break;
- }
-
- if (isset($block['new_page_text'])) {
- $page->pressButton($block['button_text']);
- // Make sure the changes are present.
- $this->assertSession()->assertWaitOnAjaxRequest();
- $web_assert->pageTextContains($block['new_page_text']);
- }
-
- $this->openBlockForm($block_selector);
-
- $this->toggleEditingMode();
- // Canvas should close when editing module is closed.
- $this->waitForOffCanvasToClose();
-
- // Go into Edit mode again.
- $this->toggleEditingMode();
-
- $element_selector = "$block_selector {$block['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.
- $this->toggleEditingMode();
- }
+ return $blocks;
}
/**
diff --git a/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInJavascriptTestBase.php b/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInJavascriptTestBase.php
index fe8fcf4..7534a25 100644
--- a/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInJavascriptTestBase.php
+++ b/core/modules/outside_in/tests/src/FunctionalJavascript/OutsideInJavascriptTestBase.php
@@ -10,6 +10,19 @@ use Drupal\FunctionalJavascriptTests\JavascriptTestBase;
abstract class OutsideInJavascriptTestBase extends JavascriptTestBase {
/**
+ * {@inheritdoc}
+ */
+ protected function drupalGet($path, array $options = array(), array $headers = array()) {
+ $return = parent::drupalGet($path, $options, $headers);
+
+ // After the page loaded we need to additionally wait until the settings
+ // tray Ajax activity is done.
+ $this->assertSession()->assertWaitOnAjaxRequest();
+
+ return $return;
+ }
+
+ /**
* Enables a theme.
*
* @param string $theme