Рейтинг:0

Как протестировать поле текстового формата CKEditor 5 с помощью Behat/Mink?

флаг cn

Drupal 10 переходит с CKEditor 4 на 5.

Итак, я установил экспериментальный модуль CKEditor 5 и пытаюсь обновить свои тесты Behat, чтобы использовать CKEditor 5.

Я использую тест @javascript в Behat на CircleCI, чтобы проверить свой сайт Drupal 8.

Стандарт Я заполняю «моё поле» «значением» шаг не выполняется для полей, использующих CKEditor. Например, для длинного текстового поля с меткой Вопрос, если я добавлю шаг:

И я заполняю «Вопрос» словами «Будет ли это работать?»

Затем я получаю сообщение об ошибке: Элемент не интерактивный

Как описано в этом вопросе о CKEditor 4, Существует Суть от johnennewdeeson это работает для CKEditor 4 (который в основном использует JS для поиска экземпляра редактора и установки данных), но не работает для CKEditor 5 (CKEDITOR не определен ошибка).

Итак, как я могу установить значение поля текстового формата в Behat с помощью CKEditor 5?

флаг cn
CKEditor просто используется во внешнем интерфейсе, он не должен влиять на сохранение данных поля - может быть, вам просто нужно указать столбец «формат» и «значение»? Если бы вы могли немного лучше описать, что вы подразумеваете под «стандартный [...] шаг не работает», это могло бы помочь?
флаг cn
@Clive Обновлено с дополнительной информацией.
Рейтинг:1
флаг cn

Как описано в Как получить объект экземпляра редактора из элемента DOM?, вы можете искать ck-editor__editable и используйте это, чтобы найти конкретный экземпляр редактора, которым вам нужно манипулировать.

Ниже приведен рабочий пример. Обратите внимание, что вы должны заменить любые символы подчеркивания дефисами в имени компьютера для $field_hyphenated_machine_name.

  /**
   * Ввод текста с помощью CKEditor.
   *
   * @Затем я заполняю поле wysiwyg :field_hyphenated_machine_name значением :value
   * @Затем я ввожу :value для поля wysiwyg :field_hyphenated_machine_name
   */
  общедоступная функция iFillInWysiwygOnFieldWith ($ field_hyphenated_machine_name, $ value) {
    # https://ckeditor.com/docs/ckeditor5/latest/support/faq.html#how-to-get-the-editor-instance-object-from-the-dom-element
    $ckeditor5_drupal_editable_element = "div.form-item-$field_hyphenated_machine_name-display-0-value .ck-editor__editable";

    $this->getSession()
      ->выполнить скрипт(
        "
        const domEditableElement = document.querySelector(\"$ckeditor5_drupal_editable_element\");
        если (domEditableElement.ckeditorInstance) {
          const editorInstance = domEditableElement.ckeditorInstance;
          если (редакторЭкземпляр) {
            editorInstance.setData(\"$value\");
          } еще {
            throw new Exception('Не удалось получить экземпляр редактора!');
          }
        } еще {
          throw new Exception('Не удалось найти элемент!');
        }
        ");
  }

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.