function BlockFormMessagesTest::testValidationMessage

Same name in other branches
  1. 9 core/modules/layout_builder/tests/src/FunctionalJavascript/BlockFormMessagesTest.php \Drupal\Tests\layout_builder\FunctionalJavascript\BlockFormMessagesTest::testValidationMessage()
  2. 10 core/modules/layout_builder/tests/src/FunctionalJavascript/BlockFormMessagesTest.php \Drupal\Tests\layout_builder\FunctionalJavascript\BlockFormMessagesTest::testValidationMessage()
  3. 11.x core/modules/layout_builder/tests/src/FunctionalJavascript/BlockFormMessagesTest.php \Drupal\Tests\layout_builder\FunctionalJavascript\BlockFormMessagesTest::testValidationMessage()

Tests that validation messages are shown on the block form.

File

core/modules/layout_builder/tests/src/FunctionalJavascript/BlockFormMessagesTest.php, line 45

Class

BlockFormMessagesTest
Tests that messages appear in the off-canvas dialog with configuring blocks.

Namespace

Drupal\Tests\layout_builder\FunctionalJavascript

Code

public function testValidationMessage() {
    // @todo Work out why this fixes random fails in this test.
    //    https://www.drupal.org/project/drupal/issues/3055982
    $this->getSession()
        ->resizeWindow(800, 1000);
    $assert_session = $this->assertSession();
    $page = $this->getSession()
        ->getPage();
    $this->drupalLogin($this->drupalCreateUser([
        'access contextual links',
        'configure any layout',
        'administer node display',
        'administer node fields',
    ]));
    $field_ui_prefix = 'admin/structure/types/manage/bundle_with_section_field';
    // Enable layout builder.
    $this->drupalPostForm($field_ui_prefix . '/display/default', [
        'layout[enabled]' => TRUE,
    ], 'Save');
    $this->clickElementWhenClickable($page->findLink('Manage layout'));
    $assert_session->addressEquals($field_ui_prefix . '/display/default/layout');
    $this->clickElementWhenClickable($page->findLink('Add block'));
    $this->assertNotEmpty($assert_session->waitForElementVisible('css', '#drupal-off-canvas .block-categories'));
    $this->clickElementWhenClickable($page->findLink('Powered by Drupal'));
    $this->assertNotEmpty($assert_session->waitForElementVisible('css', '#drupal-off-canvas [name="settings[label]"]'));
    $page->findField('Title')
        ->setValue('');
    $this->clickElementWhenClickable($page->findButton('Add block'));
    $this->assertMessagesDisplayed();
    $page->findField('Title')
        ->setValue('New title');
    $page->pressButton('Add block');
    $block_css_locator = '#layout-builder .block-system-powered-by-block';
    $this->assertNotEmpty($assert_session->waitForElementVisible('css', $block_css_locator));
    $assert_session->assertNoElementAfterWait('css', '#drupal-off-canvas');
    $assert_session->assertWaitOnAjaxRequest();
    $this->drupalGet($this->getUrl());
    $this->clickElementWhenClickable($page->findButton('Save layout'));
    $this->assertNotEmpty($assert_session->waitForElement('css', 'div:contains("The layout has been saved")'));
    // Ensure that message are displayed when configuring an existing block.
    $this->drupalGet($field_ui_prefix . '/display/default/layout');
    $assert_session->assertWaitOnAjaxRequest();
    $this->clickContextualLink($block_css_locator, 'Configure', TRUE);
    $this->assertNotEmpty($assert_session->waitForElementVisible('css', '#drupal-off-canvas [name="settings[label]"]'));
    $page->findField('Title')
        ->setValue('');
    $this->clickElementWhenClickable($page->findButton('Update'));
    $this->assertMessagesDisplayed();
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.