You are here

public function BlockFormMessagesTest::testValidationMessage in Drupal 9

Same name and namespace in other branches
  1. 8 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
    ->drupalGet($field_ui_prefix . '/display/default');
  $this
    ->submitForm([
    '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();
}