function CKEditor5Test::testHeadingsPlugin

Same name and namespace in other branches
  1. 9 core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php \Drupal\Tests\ckeditor5\FunctionalJavascript\CKEditor5Test::testHeadingsPlugin()
  2. 11.x core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php \Drupal\Tests\ckeditor5\FunctionalJavascript\CKEditor5Test::testHeadingsPlugin()

Test headings configuration.

File

core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php, line 76

Class

CKEditor5Test
Tests for CKEditor 5.

Namespace

Drupal\Tests\ckeditor5\FunctionalJavascript

Code

public function testHeadingsPlugin() : void {
  $page = $this->getSession()
    ->getPage();
  $assert_session = $this->assertSession();
  $this->addNewTextFormat();
  $this->drupalGet('admin/config/content/formats/manage/ckeditor5');
  $this->assertHtmlEsqueFieldValueEquals('filters[filter_html][settings][allowed_html]', '<br> <p> <h2> <h3> <h4> <h5> <h6> <strong> <em>');
  $this->drupalGet('node/add/page');
  $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-heading-dropdown button'));
  $page->find('css', '.ck-heading-dropdown button')
    ->click();
  // Get all the headings available in dropdown.
  $headings_dropdown = $page->findAll('css', '.ck-heading-dropdown li .ck-button__label');
  // Create array of available headings.
  $available_headings = [];
  foreach ($headings_dropdown as $item) {
    $available_headings[] = $item->getText();
  }
  $this->assertSame([
    'Paragraph',
    'Heading 2',
    'Heading 3',
    'Heading 4',
    'Heading 5',
    'Heading 6',
  ], $available_headings);
  $this->drupalGet('admin/config/content/formats/manage/ckeditor5');
  $this->assertTrue($page->hasUncheckedField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading1]'));
  $page->checkField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading1]');
  $assert_session->assertWaitOnAjaxRequest();
  $this->assertTrue($page->hasCheckedField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading1]'));
  $this->assertTrue($page->hasCheckedField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading2]'));
  $page->uncheckField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading2]');
  $assert_session->assertWaitOnAjaxRequest();
  $this->assertTrue($page->hasUncheckedField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading2]'));
  $this->assertTrue($page->hasCheckedField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading4]'));
  $page->uncheckField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading4]');
  $assert_session->assertWaitOnAjaxRequest();
  $this->assertTrue($page->hasUncheckedField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading4]'));
  $this->assertHtmlEsqueFieldValueEquals('filters[filter_html][settings][allowed_html]', '<br> <p> <h1> <h3> <h5> <h6> <strong> <em>');
  $this->assertTrue($page->hasUncheckedField('editor[settings][plugins][ckeditor5_heading][enabled_headings][heading4]'));
  $page->pressButton('Save configuration');
  $this->drupalGet('node/add/page');
  $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-heading-dropdown button'));
  $page->find('css', '.ck-heading-dropdown button')
    ->click();
  // Get all the headings available in dropdown.
  $headings_dropdown = $page->findAll('css', '.ck-heading-dropdown li .ck-button__label');
  // Create array of available headings.
  $available_headings = [];
  foreach ($headings_dropdown as $item) {
    $available_headings[] = $item->getText();
  }
  $this->assertSame([
    'Paragraph',
    'Heading 1',
    'Heading 3',
    'Heading 5',
    'Heading 6',
  ], $available_headings);
}

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