MOBILE-3926 behat: Implement scroll to step
This commit is contained in:
		
							parent
							
								
									9724088a87
								
							
						
					
					
						commit
						89488bd71a
					
				| @ -526,6 +526,33 @@ | |||||||
|         } |         } | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * Scroll an element into view. | ||||||
|  |      * | ||||||
|  |      * @param {object} locator Element locator. | ||||||
|  |      * @return {string} OK if successful, or ERROR: followed by message | ||||||
|  |      */ | ||||||
|  |     const behatScrollTo = function(locator) { | ||||||
|  |         log('Action - scrollTo', { locator }); | ||||||
|  | 
 | ||||||
|  |         try { | ||||||
|  |             let element = findElementsBasedOnText(locator)[0]; | ||||||
|  | 
 | ||||||
|  |             if (!element) { | ||||||
|  |                 return 'ERROR: No matches for text'; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             element = element.closest('ion-item') ?? element.closest('button') ?? element; | ||||||
|  | 
 | ||||||
|  |             element.scrollIntoView(); | ||||||
|  | 
 | ||||||
|  |             log('Action - Scrolled to', { locator, element }); | ||||||
|  |             return 'OK'; | ||||||
|  |         } catch (error) { | ||||||
|  |             return 'ERROR: ' + error.message; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * Check whether an item is selected or not. |      * Check whether an item is selected or not. | ||||||
|      * |      * | ||||||
| @ -678,6 +705,7 @@ | |||||||
|         pressStandard : behatPressStandard, |         pressStandard : behatPressStandard, | ||||||
|         closePopup : behatClosePopup, |         closePopup : behatClosePopup, | ||||||
|         find : behatFind, |         find : behatFind, | ||||||
|  |         scrollTo : behatScrollTo, | ||||||
|         isSelected : behatIsSelected, |         isSelected : behatIsSelected, | ||||||
|         press : behatPress, |         press : behatPress, | ||||||
|         setField : behatSetField, |         setField : behatSetField, | ||||||
|  | |||||||
| @ -181,6 +181,29 @@ class behat_app extends behat_base { | |||||||
|         $this->wait_for_pending_js(); |         $this->wait_for_pending_js(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * Scroll to an element in the app. | ||||||
|  |      * | ||||||
|  |      * @When /^I scroll to (".+") in the app$/ | ||||||
|  |      * @param string $locator | ||||||
|  |      */ | ||||||
|  |     public function i_scroll_to_in_the_app(string $locator) { | ||||||
|  |         $locator = $this->parse_element_locator($locator); | ||||||
|  |         $locatorjson = json_encode($locator); | ||||||
|  | 
 | ||||||
|  |         $this->spin(function() use ($locatorjson) { | ||||||
|  |             $result = $this->evaluate_script("return window.behat.scrollTo($locatorjson);"); | ||||||
|  | 
 | ||||||
|  |             if ($result !== 'OK') { | ||||||
|  |                 throw new DriverException('Error finding item - ' . $result); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             return true; | ||||||
|  |         }); | ||||||
|  | 
 | ||||||
|  |         $this->wait_for_pending_js(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * Trigger swipe gesture. |      * Trigger swipe gesture. | ||||||
|      * |      * | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user