MOBILE-4110 behat: Fix JS calls

main
Noel De Martin 2022-07-07 10:39:36 +02:00
parent aa7cf575e3
commit 4632eeb932
2 changed files with 3 additions and 48 deletions

View File

@ -565,7 +565,7 @@ class behat_app extends behat_app_helper {
*/
public function i_pull_to_refresh_in_the_app() {
$this->spin(function() {
$result = $this->js('await window.behat.pullToRefresh();');
$result = $this->runtime_js('pullToRefresh()');
if ($result !== 'OK') {
throw new DriverException('Error pulling to refresh - ' . $result);
@ -824,7 +824,7 @@ class behat_app extends behat_app_helper {
$this->getSession()->switchToWindow($names[1]);
}
$this->js('window.close()');
$this->evaluate_script('window.close()');
$this->getSession()->switchToWindow($names[0]);
}

View File

@ -433,51 +433,6 @@ class behat_app_helper extends behat_base {
}
}
/**
* Evaluate and execute scripts checking for promises if needed.
*
* @param string $script
* @return mixed Resolved promise result.
*/
protected function js(string $script) {
$scriptnoreturn = preg_replace('/^return\s+/', '', $script);
$scriptnoreturn = preg_replace('/;$/', '', $scriptnoreturn);
if (!preg_match('/^await\s+/', $scriptnoreturn)) {
// No async.
return $this->evaluate_script($script);
}
$script = preg_replace('/^await\s+/', '', $scriptnoreturn);
$start = microtime(true);
$promisevariable = 'PROMISE_RESULT_' . time();
$timeout = self::get_extended_timeout();
$res = $this->evaluate_script("Promise.resolve($script)
.then(result => window.$promisevariable = result)
.catch(error => window.$promisevariable = 'Async code rejected: ' + error?.message)");
do {
if (microtime(true) - $start > $timeout) {
throw new DriverException("Async script not resolved after $timeout seconds");
}
// 0.1 seconds.
usleep(100000);
} while (!$this->evaluate_script("'$promisevariable' in window"));
$result = $this->evaluate_script("window.$promisevariable");
$this->evaluate_script("delete window.$promisevariable");
if (is_string($result) && strrpos($result, 'Async code rejected:') === 0) {
throw new DriverException($result);
}
return $result;
}
/**
* Evaluate and execute methods from the Behat runtime.
*
@ -485,7 +440,7 @@ class behat_app_helper extends behat_base {
* @return mixed Result.
*/
protected function runtime_js(string $script) {
return $this->js("window.behat.$script");
return $this->evaluate_script("window.behat.$script");
}
/**