maputnik/test/functional/util/webdriverio-ext.js

63 lines
1.8 KiB
JavaScript
Raw Normal View History

2018-01-17 16:39:17 +01:00
var artifacts = require("../../artifacts");
var path = require("path");
const extendWebdriverIO = async function() {
await browser.setTimeout({ 'script': 20 * 1000 });
await browser.setTimeout({ 'implicit': 20 * 1000 });
var SCREENSHOTS_PATH = artifacts.pathSync("/screenshots");
/**
* Sometimes chrome driver can result in the wrong text.
*
* See <https://github.com/webdriverio/webdriverio/issues/1886>
*/
try {
await browser.addCommand('setValueSafe', async function (selector, text) {
for (var i = 0; i < 10; i++) {
const elem = await $(selector);
await elem.waitForDisplayed(500);
var elements = await browser.findElements("css selector", selector);
if (elements.length > 1) {
throw "Too many elements found";
}
const elem2 = await $(selector);
await elem2.setValue(text);
var browserText = await elem2.getValue();
if (browserText == text) {
return;
}
else {
console.error("Warning: setValue failed, trying again");
}
2018-01-10 14:19:34 +01:00
}
// Wait for change events to fire and state updated
await browser.flushReactUpdates();
})
2018-01-10 14:19:34 +01:00
await browser.addCommand('takeScreenShot', async function (filepath) {
var savepath = path.join(SCREENSHOTS_PATH, filepath);
await browser.saveScreenshot(savepath);
});
await browser.addCommand('flushReactUpdates', async function () {
await browser.executeAsync(function (done) {
// For any events to propagate
setTimeout(function () {
// For the DOM to be updated.
setTimeout(done, 0);
}, 0)
})
2018-01-10 14:19:34 +01:00
})
} catch (err) {
console.error(">>> Ignored error: " + err);
}
2018-01-10 14:19:34 +01:00
}
module.exports = extendWebdriverIO;