MDL-43757 behat: Allowing the form field guesser to detect TinyMCE
authorDavid Monllao <davidm@moodle.com>
Mon, 20 Jan 2014 07:58:23 +0000 (15:58 +0800)
committerDavid Monllao <davidm@moodle.com>
Fri, 24 Jan 2014 07:06:12 +0000 (15:06 +0800)
It includes 2 more minor fixes:
- Escapes values sent to TinyMCE as it was breaking
  when values contained double quotes.
- Adding seconds to the screenshots directory to
  avoid using the same folder for multiple runs.

lib/behat/form_field/behat_form_editor.php
lib/behat/form_field/behat_form_field.php
lib/tests/behat/behat_hooks.php

index 5773d12..4f100ac 100644 (file)
@@ -58,6 +58,7 @@ class behat_form_editor extends behat_form_field {
                 if ($editorid = $this->get_editor_id()) {
 
                     // Set the value to the iframe and save it to the textarea.
+                    $value = str_replace('"', '\"', $value);
                     $this->session->executeScript('
                         tinyMCE.get("'.$editorid.'").setContent("' . $value . '");
                         tinyMCE.get("'.$editorid.'").save();
index 8db4579..284befd 100644 (file)
@@ -114,10 +114,22 @@ class behat_form_field {
         // Textareas are considered text based elements.
         $tagname = strtolower($this->field->getTagName());
         if ($tagname == 'textarea') {
-            return false;
-        }
 
-        if ($tagname == 'input') {
+            if (!$this->running_javascript()) {
+                return false;
+            }
+
+            // If there is an iframe with $id + _ifr there a TinyMCE editor loaded.
+            $xpath = '//iframe[@id="' . $this->field->getAttribute('id') . '_ifr"]';
+            if (!$this->session->getPage()->find('xpath', $xpath)) {
+
+                // Generic one if it is a normal textarea.
+                return false;
+            }
+
+            $classname = 'behat_form_editor';
+
+        } else if ($tagname == 'input') {
             $type = $this->field->getAttribute('type');
             switch ($type) {
                 case 'text':
index 5bf603d..d89c9c7 100644 (file)
@@ -321,7 +321,7 @@ class behat_hooks extends behat_base {
 
         // All the run screenshots in the same parent dir.
         if (!$screenshotsdirname = self::get_run_screenshots_dir()) {
-            $screenshotsdirname = self::$screenshotsdirname = date('Ymd_Hi');
+            $screenshotsdirname = self::$screenshotsdirname = date('Ymd_His');
 
             $dir = $CFG->behat_screenshots_path . DIRECTORY_SEPARATOR . $screenshotsdirname;