MDL-63977 Behat: Organise app functions in window.behat object
authorsam marshall <s.marshall@open.ac.uk>
Tue, 12 Feb 2019 10:13:51 +0000 (10:13 +0000)
committersam marshall <s.marshall@open.ac.uk>
Tue, 12 Feb 2019 13:26:39 +0000 (13:26 +0000)
lib/behat/behat_base.php
lib/tests/behat/app_behat_runtime.js
lib/tests/behat/behat_app.php

index e971a35..cd8f0dc 100644 (file)
@@ -486,7 +486,7 @@ class behat_base extends Behat\MinkExtension\Context\RawMinkContext {
         }
 
         // Check on page to see if it's an app page. Safest way is to look for added JavaScript.
         }
 
         // Check on page to see if it's an app page. Safest way is to look for added JavaScript.
-        return $this->getSession()->evaluateScript('typeof window.behatPress') === 'function';
+        return $this->getSession()->evaluateScript('typeof window.behat') === 'object';
     }
 
     /**
     }
 
     /**
index b07b53e..d88fa92 100644 (file)
      * @param {string} button Type of button to press
      * @return {string} OK if successful, or ERROR: followed by message
      */
      * @param {string} button Type of button to press
      * @return {string} OK if successful, or ERROR: followed by message
      */
-    window.behatPressStandard = function(button) {
+    var behatPressStandard = function(button) {
         log('Action - Click standard button: ' + button);
         var selector;
         switch (button) {
         log('Action - Click standard button: ' + button);
         var selector;
         switch (button) {
      *
      * @return {string} OK if successful, or ERROR: followed by message
      */
      *
      * @return {string} OK if successful, or ERROR: followed by message
      */
-    window.behatClosePopup = function() {
+    var behatClosePopup = function() {
         log('Action - Close popup');
 
         var backdrops = Array.from(document.querySelectorAll('ion-backdrop'));
         log('Action - Close popup');
 
         var backdrops = Array.from(document.querySelectorAll('ion-backdrop'));
      * @param {string} near Optional 'near' text - if specified, must have a single match on page
      * @return {string} OK if successful, or ERROR: followed by message
      */
      * @param {string} near Optional 'near' text - if specified, must have a single match on page
      * @return {string} OK if successful, or ERROR: followed by message
      */
-    window.behatPress = function(text, near) {
+    var behatPress = function(text, near) {
         log('Action - Press ' + text + (near === undefined ? '' : ' - near ' + near));
 
         var found;
         log('Action - Press ' + text + (near === undefined ? '' : ' - near ' + near));
 
         var found;
      *
      * @return {string} OK: followed by header text if successful, or ERROR: followed by message.
      */
      *
      * @return {string} OK: followed by header text if successful, or ERROR: followed by message.
      */
-    window.behatGetHeader = function() {
+    var behatGetHeader = function() {
         log('Action - Get header');
 
         var result = null;
         log('Action - Get header');
 
         var result = null;
      * @param {string} value New value
      * @return {string} OK or ERROR: followed by message
      */
      * @param {string} value New value
      * @return {string} OK or ERROR: followed by message
      */
-    window.behatSetField = function(field, value) {
+    var behatSetField = function(field, value) {
         log('Action - Set field ' + field + ' to: ' + value);
 
         // Find input(s) with given placeholder.
         log('Action - Set field ' + field + ' to: ' + value);
 
         // Find input(s) with given placeholder.
 
         return 'OK';
     };
 
         return 'OK';
     };
+
+    // Make some functions publicly available for Behat to call.
+    window.behat = {
+        pressStandard : behatPressStandard,
+        closePopup : behatClosePopup,
+        press : behatPress,
+        setField : behatSetField,
+        getHeader : behatGetHeader,
+    };
 })();
 })();
index 322d5cf..f84b356 100644 (file)
@@ -358,7 +358,7 @@ class behat_app extends behat_base {
      */
     public function i_press_the_standard_button_in_the_app(string $button) {
         $this->spin(function($context, $args) use ($button) {
      */
     public function i_press_the_standard_button_in_the_app(string $button) {
         $this->spin(function($context, $args) use ($button) {
-            $result = $this->getSession()->evaluateScript('return window.behatPressStandard("' .
+            $result = $this->getSession()->evaluateScript('return window.behat.pressStandard("' .
                     $button . '");');
             if ($result !== 'OK') {
                 throw new DriverException('Error pressing standard button - ' . $result);
                     $button . '");');
             if ($result !== 'OK') {
                 throw new DriverException('Error pressing standard button - ' . $result);
@@ -376,7 +376,7 @@ class behat_app extends behat_base {
      */
     public function i_close_the_popup_in_the_app() {
         $this->spin(function($context, $args)  {
      */
     public function i_close_the_popup_in_the_app() {
         $this->spin(function($context, $args)  {
-            $result = $this->getSession()->evaluateScript('return window.behatClosePopup();');
+            $result = $this->getSession()->evaluateScript('return window.behat.closePopup();');
             if ($result !== 'OK') {
                 throw new DriverException('Error closing popup - ' . $result);
             }
             if ($result !== 'OK') {
                 throw new DriverException('Error closing popup - ' . $result);
             }
@@ -434,7 +434,7 @@ class behat_app extends behat_base {
             } else {
                 $nearbit = '';
             }
             } else {
                 $nearbit = '';
             }
-            $result = $context->getSession()->evaluateScript('return window.behatPress("' .
+            $result = $context->getSession()->evaluateScript('return window.behat.press("' .
                     addslashes_js($text) . '"' . $nearbit .');');
             if ($result !== 'OK') {
                 throw new DriverException('Error pressing item - ' . $result);
                     addslashes_js($text) . '"' . $nearbit .');');
             if ($result !== 'OK') {
                 throw new DriverException('Error pressing item - ' . $result);
@@ -457,7 +457,7 @@ class behat_app extends behat_base {
      */
     public function i_set_the_field_in_the_app(string $field, string $value) {
         $this->spin(function($context, $args) use ($field, $value) {
      */
     public function i_set_the_field_in_the_app(string $field, string $value) {
         $this->spin(function($context, $args) use ($field, $value) {
-            $result = $this->getSession()->evaluateScript('return window.behatSetField("' .
+            $result = $this->getSession()->evaluateScript('return window.behat.setField("' .
                     addslashes_js($field) . '", "' . addslashes_js($value) . '");');
             if ($result !== 'OK') {
                 throw new DriverException('Error setting field - ' . $result);
                     addslashes_js($field) . '", "' . addslashes_js($value) . '");');
             if ($result !== 'OK') {
                 throw new DriverException('Error setting field - ' . $result);
@@ -479,7 +479,7 @@ class behat_app extends behat_base {
      */
     public function the_header_should_be_in_the_app(string $text) {
         $result = $this->spin(function($context, $args) {
      */
     public function the_header_should_be_in_the_app(string $text) {
         $result = $this->spin(function($context, $args) {
-            $result = $this->getSession()->evaluateScript('return window.behatGetHeader();');
+            $result = $this->getSession()->evaluateScript('return window.behat.getHeader();');
             if (substr($result, 0, 3) !== 'OK:') {
                 throw new DriverException('Error getting header - ' . $result);
             }
             if (substr($result, 0, 3) !== 'OK:') {
                 throw new DriverException('Error getting header - ' . $result);
             }