Skip to content
Snippets Groups Projects
Commit 1b055af5 authored by Christopher Willis-Ford's avatar Christopher Willis-Ford
Browse files

add timeouts & messages to all driver.wait calls

parent d92ef0c8
No related branches found
No related tags found
No related merge requests found
...@@ -8,6 +8,11 @@ const {By, until, Button} = webdriver; ...@@ -8,6 +8,11 @@ const {By, until, Button} = webdriver;
const USE_HEADLESS = process.env.USE_HEADLESS !== 'no'; const USE_HEADLESS = process.env.USE_HEADLESS !== 'no';
// The main reason for this timeout is so that we can control the timeout message and report details;
// if we hit the Jasmine default timeout then we get a terse message that we can't control.
// The Jasmine default timeout is 30 seconds so make sure this is lower.
const DEFAULT_TIMEOUT_MILLISECONDS = 20 * 1000;
class SeleniumHelper { class SeleniumHelper {
constructor () { constructor () {
bindAll(this, [ bindAll(this, [
...@@ -26,8 +31,11 @@ class SeleniumHelper { ...@@ -26,8 +31,11 @@ class SeleniumHelper {
]); ]);
} }
elementIsVisible (element) { elementIsVisible (element, {
return this.driver.wait(until.elementIsVisible(element)); message = 'elementIsVisible timed out',
timeout = DEFAULT_TIMEOUT_MILLISECONDS
} = {}) {
return this.driver.wait(until.elementIsVisible(element), timeout, message);
} }
get scope () { get scope () {
...@@ -79,8 +87,11 @@ class SeleniumHelper { ...@@ -79,8 +87,11 @@ class SeleniumHelper {
return this.driver; return this.driver;
} }
findByXpath (xpath) { findByXpath (xpath, {
return this.driver.wait(until.elementLocated(By.xpath(xpath), 5 * 1000)); message = `findByXpath timed out for path: ${xpath}`,
timeout = DEFAULT_TIMEOUT_MILLISECONDS
} = {}) {
return this.driver.wait(until.elementLocated(By.xpath(xpath)), timeout, message);
} }
findByText (text, scope) { findByText (text, scope) {
...@@ -120,8 +131,11 @@ class SeleniumHelper { ...@@ -120,8 +131,11 @@ class SeleniumHelper {
return this.clickXpath(`//button//*[contains(text(), '${text}')]`); return this.clickXpath(`//button//*[contains(text(), '${text}')]`);
} }
waitUntilGone (element) { waitUntilGone (element, {
return this.driver.wait(until.stalenessOf(element)); message = 'waitUntilGone timed out',
timeout = DEFAULT_TIMEOUT_MILLISECONDS
} = {}) {
return this.driver.wait(until.stalenessOf(element), timeout, message);
} }
getLogs (whitelist) { getLogs (whitelist) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment