From 50acc63d7bcbf99b02c89e2cdc599ac23195c6c7 Mon Sep 17 00:00:00 2001 From: Kalvis Kazoks Date: Fri, 8 Dec 2023 20:22:09 +0200 Subject: [PATCH] Add support for CKEditor5 in DrupalAcceptance->fillWysiwygEditor --- src/Codeception/Module/DrupalAcceptance.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Codeception/Module/DrupalAcceptance.php b/src/Codeception/Module/DrupalAcceptance.php index 17e910c..c163e87 100644 --- a/src/Codeception/Module/DrupalAcceptance.php +++ b/src/Codeception/Module/DrupalAcceptance.php @@ -176,6 +176,12 @@ public function addReferenceFieldItem(FormField $field) { public function fillWysiwygEditor(IdentifiableFormFieldInterface $field, $content) { $selector = $this->webdriver->grabAttributeFrom($field->value, 'id'); $script = "jQuery(function(){CKEDITOR.instances[\"$selector\"].setData(\"$content\")});"; + // Check if CKEditor5 is in use. If so, override the script as global + // registry of editor instances is no longer available and a different + // approach is used to access them via DOM. + if (!empty($this->webdriver->grabAttributeFrom($field->value, 'data-ckeditor5-id'))) { + $script = "document.querySelector(\"#$selector\").nextSibling.querySelector(\".ck-editor__editable_inline\").ckeditorInstance.setData(\"$content\")"; + } $this->webdriver->executeInSelenium(function (RemoteWebDriver $webDriver) use ($script) { $webDriver->executeScript($script); });