Loading core/modules/ckeditor/tests/src/Traits/CKEditorTestTrait.php +27 −15 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ trait CKEditorTestTrait { * Waits for CKEditor to initialize. * * @param string $instance_id * The CKEditor instance ID. * (optional) The CKEditor instance ID. Defaults to 'edit-body-0-value'. * @param int $timeout * (optional) Timeout in milliseconds, defaults to 10000. */ Loading @@ -22,24 +22,28 @@ protected function waitForEditor($instance_id = 'edit-body-0-value', $timeout = (function() { return ( typeof CKEDITOR !== 'undefined' && typeof CKEDITOR.instances["$instance_id"] !== 'undefined' && CKEDITOR.instances["$instance_id"].instanceReady && typeof CKEDITOR.instances["{$instance_id}"] !== 'undefined' && CKEDITOR.instances["{$instance_id}"].instanceReady ); }()); JS; $this->getSession()->wait($timeout, $condition); $this->assertJsCondition($condition, $timeout); } /** * Assigns a name to the CKEditor iframe. * * @param string $id * (optional) The id to assign the iframe element. Defaults to 'ckeditor'. * @param string $instance_id * (optional) The CKEditor instance ID. Defaults to 'edit-body-0-value'. * * @see \Behat\Mink\Session::switchToIFrame() */ protected function assignNameToCkeditorIframe() { protected function assignNameToCkeditorIframe($id = 'ckeditor', $instance_id = 'edit-body-0-value') { $javascript = <<<JS (function(){ document.getElementsByClassName('cke_wysiwyg_frame')[0].id = 'ckeditor'; CKEDITOR.instances['{$instance_id}'].element.getParent().find('.cke_wysiwyg_frame').$[0].id = '{$id}'; })() JS; $this->getSession()->evaluateScript($javascript); Loading @@ -50,9 +54,11 @@ protected function assignNameToCkeditorIframe() { * * @param string $name * The name of the button, such as `drupallink`, `source`, etc. * @param string $instance_id * (optional) The CKEditor instance ID. Defaults to 'edit-body-0-value'. */ protected function pressEditorButton($name) { $this->getEditorButton($name)->click(); protected function pressEditorButton($name, $instance_id = 'edit-body-0-value') { $this->getEditorButton($name, $instance_id)->click(); } /** Loading @@ -60,13 +66,15 @@ protected function pressEditorButton($name) { * * @param string $name * The name of the button, such as `drupallink`, `source`, etc. * @param string $instance_id * (optional) The CKEditor instance ID. Defaults to 'edit-body-0-value'. * * @return \Behat\Mink\Element\NodeElement|null * The page element node if found, NULL if not. */ protected function getEditorButton($name) { protected function getEditorButton($name, $instance_id = 'edit-body-0-value') { $this->getSession()->switchToIFrame(); $button = $this->assertSession()->waitForElementVisible('css', 'a.cke_button__' . $name); $button = $this->assertSession()->waitForElementVisible('css', "#cke_$instance_id a.cke_button__" . $name); $this->assertNotEmpty($button); return $button; Loading @@ -77,9 +85,11 @@ protected function getEditorButton($name) { * * @param string $name * The name of the button, such as `drupallink`, `source`, etc. * @param string $instance_id * (optional) The CKEditor instance ID. Defaults to 'edit-body-0-value'. */ protected function assertEditorButtonDisabled($name) { $button = $this->getEditorButton($name); protected function assertEditorButtonDisabled($name, $instance_id = 'edit-body-0-value') { $button = $this->getEditorButton($name, $instance_id); $this->assertTrue($button->hasClass('cke_button_disabled')); $this->assertSame('true', $button->getAttribute('aria-disabled')); } Loading @@ -89,9 +99,11 @@ protected function assertEditorButtonDisabled($name) { * * @param string $name * The name of the button, such as `drupallink`, `source`, etc. * @param string $instance_id * (optional) The CKEditor instance ID. Defaults to 'edit-body-0-value'. */ protected function assertEditorButtonEnabled($name) { $button = $this->getEditorButton($name); protected function assertEditorButtonEnabled($name, $instance_id = 'edit-body-0-value') { $button = $this->getEditorButton($name, $instance_id); $this->assertFalse($button->hasClass('cke_button_disabled')); $this->assertSame('false', $button->getAttribute('aria-disabled')); } Loading Loading
core/modules/ckeditor/tests/src/Traits/CKEditorTestTrait.php +27 −15 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ trait CKEditorTestTrait { * Waits for CKEditor to initialize. * * @param string $instance_id * The CKEditor instance ID. * (optional) The CKEditor instance ID. Defaults to 'edit-body-0-value'. * @param int $timeout * (optional) Timeout in milliseconds, defaults to 10000. */ Loading @@ -22,24 +22,28 @@ protected function waitForEditor($instance_id = 'edit-body-0-value', $timeout = (function() { return ( typeof CKEDITOR !== 'undefined' && typeof CKEDITOR.instances["$instance_id"] !== 'undefined' && CKEDITOR.instances["$instance_id"].instanceReady && typeof CKEDITOR.instances["{$instance_id}"] !== 'undefined' && CKEDITOR.instances["{$instance_id}"].instanceReady ); }()); JS; $this->getSession()->wait($timeout, $condition); $this->assertJsCondition($condition, $timeout); } /** * Assigns a name to the CKEditor iframe. * * @param string $id * (optional) The id to assign the iframe element. Defaults to 'ckeditor'. * @param string $instance_id * (optional) The CKEditor instance ID. Defaults to 'edit-body-0-value'. * * @see \Behat\Mink\Session::switchToIFrame() */ protected function assignNameToCkeditorIframe() { protected function assignNameToCkeditorIframe($id = 'ckeditor', $instance_id = 'edit-body-0-value') { $javascript = <<<JS (function(){ document.getElementsByClassName('cke_wysiwyg_frame')[0].id = 'ckeditor'; CKEDITOR.instances['{$instance_id}'].element.getParent().find('.cke_wysiwyg_frame').$[0].id = '{$id}'; })() JS; $this->getSession()->evaluateScript($javascript); Loading @@ -50,9 +54,11 @@ protected function assignNameToCkeditorIframe() { * * @param string $name * The name of the button, such as `drupallink`, `source`, etc. * @param string $instance_id * (optional) The CKEditor instance ID. Defaults to 'edit-body-0-value'. */ protected function pressEditorButton($name) { $this->getEditorButton($name)->click(); protected function pressEditorButton($name, $instance_id = 'edit-body-0-value') { $this->getEditorButton($name, $instance_id)->click(); } /** Loading @@ -60,13 +66,15 @@ protected function pressEditorButton($name) { * * @param string $name * The name of the button, such as `drupallink`, `source`, etc. * @param string $instance_id * (optional) The CKEditor instance ID. Defaults to 'edit-body-0-value'. * * @return \Behat\Mink\Element\NodeElement|null * The page element node if found, NULL if not. */ protected function getEditorButton($name) { protected function getEditorButton($name, $instance_id = 'edit-body-0-value') { $this->getSession()->switchToIFrame(); $button = $this->assertSession()->waitForElementVisible('css', 'a.cke_button__' . $name); $button = $this->assertSession()->waitForElementVisible('css', "#cke_$instance_id a.cke_button__" . $name); $this->assertNotEmpty($button); return $button; Loading @@ -77,9 +85,11 @@ protected function getEditorButton($name) { * * @param string $name * The name of the button, such as `drupallink`, `source`, etc. * @param string $instance_id * (optional) The CKEditor instance ID. Defaults to 'edit-body-0-value'. */ protected function assertEditorButtonDisabled($name) { $button = $this->getEditorButton($name); protected function assertEditorButtonDisabled($name, $instance_id = 'edit-body-0-value') { $button = $this->getEditorButton($name, $instance_id); $this->assertTrue($button->hasClass('cke_button_disabled')); $this->assertSame('true', $button->getAttribute('aria-disabled')); } Loading @@ -89,9 +99,11 @@ protected function assertEditorButtonDisabled($name) { * * @param string $name * The name of the button, such as `drupallink`, `source`, etc. * @param string $instance_id * (optional) The CKEditor instance ID. Defaults to 'edit-body-0-value'. */ protected function assertEditorButtonEnabled($name) { $button = $this->getEditorButton($name); protected function assertEditorButtonEnabled($name, $instance_id = 'edit-body-0-value') { $button = $this->getEditorButton($name, $instance_id); $this->assertFalse($button->hasClass('cke_button_disabled')); $this->assertSame('false', $button->getAttribute('aria-disabled')); } Loading