function CKEditor5Test::testFilterHtmlAllowedGlobalAttributes

Ensures that CKEditor 5 retains filter_html's allowed global attributes.

FilterHtml always forbids the `style` and `on*` attributes, and always allows the `lang` attribute (with any value) and the `dir` attribute (with either `ltr` or `rtl` as value). It's important that those last two attributes are guaranteed to be retained.

See also

\Drupal\filter\Plugin\Filter\FilterHtml::getHTMLRestrictions()

ckeditor5_globalAttributeDir

ckeditor5_globalAttributeLang

https://html.spec.whatwg.org/multipage/dom.html#global-attributes

File

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

Class

CKEditor5Test
Tests for CKEditor 5.

Namespace

Drupal\Tests\ckeditor5\FunctionalJavascript

Code

public function testFilterHtmlAllowedGlobalAttributes() : void {
    $page = $this->getSession()
        ->getPage();
    $assert_session = $this->assertSession();
    // Add a node with text rendered via the Plain Text format.
    $this->drupalGet('node/add');
    $page->fillField('title[0][value]', 'Multilingual Hello World');
    // cSpell:disable-next-line
    $page->fillField('body[0][value]', '<p dir="ltr" lang="en">Hello World</p><p dir="rtl" lang="ar">مرحبا بالعالم</p>');
    $page->pressButton('Save');
    $this->createNewTextFormat($page, $assert_session);
    $this->saveNewTextFormat($page, $assert_session);
    $this->drupalGet('node/1/edit');
    $page->selectFieldOption('body[0][format]', 'ckeditor5');
    $this->assertNotEmpty($assert_session->waitForText('Change text format?'));
    $page->pressButton('Continue');
    $this->waitForEditor();
    $page->pressButton('Save');
    // @todo Remove the expected `xml:lang` attributes in https://www.drupal.org/project/drupal/issues/1333730
    // cSpell:disable-next-line
    $assert_session->responseContains('<p dir="ltr" lang="en" xml:lang="en">Hello World</p><p dir="rtl" lang="ar" xml:lang="ar">مرحبا بالعالم</p>');
}

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