Skip to content

Commit

Permalink
Add retry to browser setup
Browse files Browse the repository at this point in the history
  • Loading branch information
compulim committed Feb 2, 2019
1 parent e98c2eb commit e6d1415
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 12 deletions.
13 changes: 13 additions & 0 deletions __tests__/setup/retry.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
export default async function (fn, retries) {
let lastErr;

for (; retries > 0; retries--) {
try {
return await fn();
} catch (err) {
lastErr = err;
}
}

throw lastErr;
}
27 changes: 15 additions & 12 deletions __tests__/setup/setupTestFramework.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import handler from 'serve-handler';
import { timeouts } from '../constants.json';

import createPageObjects from './pageObjects/index';
import retry from './retry';
import setupTestEnvironment from './setupTestEnvironment';
import webChatLoaded from './conditions/webChatLoaded';

Expand All @@ -31,21 +32,23 @@ global.setupWebDriver = async (options = {}) => {
let { baseURL, builder } = await setupTestEnvironment(BROWSER_NAME, new Builder(), options);
const driver = builder.build();

// If the baseURL contains $PORT, it means it requires us to fill-in
if (/\$PORT/i.test(baseURL)) {
const { port } = await global.setupWebServer();
await retry(async () => {
// If the baseURL contains $PORT, it means it requires us to fill-in
if (/\$PORT/i.test(baseURL)) {
const { port } = await global.setupWebServer();

await driver.get(baseURL.replace(/\$PORT/ig, port));
} else {
await driver.get(baseURL);
}
await driver.get(baseURL.replace(/\$PORT/ig, port));
} else {
await driver.get(baseURL);
}

await driver.executeScript((coverage, props) => {
window.__coverage__ = coverage;
main({ props });
}, global.__coverage__, options.props);
await driver.executeScript((coverage, props) => {
window.__coverage__ = coverage;
main({ props });
}, global.__coverage__, options.props);

await driver.wait(webChatLoaded(), timeouts.navigation);
await driver.wait(webChatLoaded(), timeouts.navigation);
}, 3);

return { driver, pageObjects: createPageObjects(driver) };
})();
Expand Down

0 comments on commit e6d1415

Please sign in to comment.