Puncte:0

Cum testez un câmp de format text CKEditor 5 cu Behat/Mink?

drapel cn

Drupal 10 trece de la CKEditor 4 la 5.

Deci, am instalat modulul experimental CKEditor 5 și încerc să-mi actualizez testele Behat pentru a utiliza CKEditor 5.

Folosesc un test @javascript în Behat pe CircleCI pentru a-mi verifica site-ul Drupal 8.

Standardul Completez „câmpul meu” cu „valoare” pasul eșuează pentru câmpurile care folosesc CKEditor. De exemplu, pentru un câmp text lung cu eticheta Întrebare, dacă adaug un pas:

Și completez „Întrebare” cu „Va funcționa asta?”

Apoi primesc eroarea: Element nu poate fi interacționat

După cum este descris în această întrebare despre CKEditor 4, este un esenta de johnennewdeeson care funcționează pentru CKEditor 4 (care folosește practic JS pentru a găsi instanța editorului și a seta datele), dar nu funcționează pentru CKEditor 5 (CKEDITOR nu este definit eroare).

Deci, cum pot seta valoarea unui câmp de format text în Behat folosind CKEditor 5?

drapel cn
CKEditor este folosit doar pe front end, nu ar trebui să afecteze salvarea datelor de câmp - poate trebuie doar să furnizați o coloană „format” precum și „valoarea”? Dacă reușiți să descrieți puțin mai bine ceea ce înțelegeți prin „pasul standard [...] nu reușește”, ar putea ajuta?
drapel cn
@Clive Actualizat cu mai multe informații.
Puncte:1
drapel cn

După cum este descris în Cum să obțineți obiectul instanței editorului din elementul DOM?, puteți căuta ck-editor__editabil și utilizați-l pentru a localiza instanța specifică a editorului pe care trebuie să o manipulați.

Următorul este un exemplu de lucru. Rețineți că trebuie să înlocuiți orice caractere de subliniere cu cratime în numele mașinii pentru $nume_mașină cu cratime_câmp.

  /**
   * Introduceți text folosind CKEditor.
   *
   * @Apoi completez câmpul wysiwyg :field_hyphenated_machine_name cu :value
   * @Apoi introdu :value pentru câmpul wysiwyg :field_hyphenated_machine_name
   */
  funcția publică 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()
      ->executeScript(
        "
        const domEditableElement = document.querySelector(\"$ckeditor5_drupal_editable_element\");
        if (domEditableElement.ckeditorInstance) {
          const editorInstance = domEditableElement.ckeditorInstance;
          if (editorInstance) {
            editorInstance.setData(\"$value\");
          } altfel {
            throw new Exception('Nu s-a putut obține instanța editorului!');
          }
        } altfel {
          throw new Exception('Nu s-a putut găsi elementul!');
        }
        ");
  }

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.