mirror of
https://github.com/a-nyx/maputnik-with-pmtiles.git
synced 2024-12-28 17:31:14 +01:00
e34c1ca4be
It required converting mocha tests code into async since [@wdio/sync is deprecated](https://webdriver.io/docs/sync-vs-async/) starting with node v16. It removed the dependency on fibers and on [node-gyp + python](https:// webdriver.io/docs/sync-vs-async/#common-issues-in-sync-mode) indirectly though which is a great thing. Also moved away from node-sass to sass since [node-sass is deprecated] (https://sass-lang.com/blog/libsass-is-deprecated).
63 lines
No EOL
1.8 KiB
JavaScript
63 lines
No EOL
1.8 KiB
JavaScript
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");
|
|
}
|
|
}
|
|
|
|
// Wait for change events to fire and state updated
|
|
await browser.flushReactUpdates();
|
|
})
|
|
|
|
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)
|
|
})
|
|
})
|
|
|
|
} catch (err) {
|
|
console.error(">>> Ignored error: " + err);
|
|
}
|
|
}
|
|
|
|
module.exports = extendWebdriverIO; |