mirror of
https://github.com/maputnik/editor.git
synced 2025-12-29 01:20:01 +00:00
Use node 16.x
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).
This commit is contained in:
@@ -8,9 +8,9 @@ var COVERAGE_PATH = artifacts.pathSync("/coverage");
|
||||
var coverage = istanbulCov.createCoverageMap({});
|
||||
|
||||
// Capture the coverage after each test
|
||||
afterEach(function() {
|
||||
afterEach(async function() {
|
||||
// Code coverage
|
||||
var results = browser.execute(function() {
|
||||
var results = await browser.execute(function() {
|
||||
return window.__coverage__;
|
||||
});
|
||||
|
||||
@@ -21,6 +21,36 @@ afterEach(function() {
|
||||
|
||||
// Dump the coverage to a file
|
||||
after(function() {
|
||||
var jsonStr = JSON.stringify(coverage, null, 2);
|
||||
fs.writeFileSync(COVERAGE_PATH+"/coverage.json", jsonStr);
|
||||
|
||||
// Sometimes istanbul copies same location entry with null values
|
||||
// crashing the final coverage step. This is just a workaround for now,
|
||||
// since istanbul will be replaced by nyc.
|
||||
const coverageJson = JSON.stringify(coverage, null, 2);
|
||||
let newCoverage = JSON.parse(coverageJson);
|
||||
|
||||
Object.values(newCoverage).forEach(fileCov => {
|
||||
if (fileCov.branchMap) {
|
||||
Object.values(fileCov.branchMap).forEach(branchMapEntry => {
|
||||
let prevLocation = {};
|
||||
branchMapEntry.locations.forEach(curLocation => {
|
||||
if (curLocation.start && curLocation.end &&
|
||||
curLocation.start.column && curLocation.start.line &&
|
||||
curLocation.end.column && curLocation.end.line)
|
||||
{
|
||||
prevLocation = curLocation;
|
||||
}
|
||||
else
|
||||
{
|
||||
curLocation.start.column = prevLocation.start.column;
|
||||
curLocation.start.line = prevLocation.start.line;
|
||||
curLocation.end.column = prevLocation.end.column;
|
||||
curLocation.end.line = prevLocation.end.line;
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
const newCoverageJson = JSON.stringify(newCoverage, null, 2);
|
||||
fs.writeFileSync(COVERAGE_PATH+"/coverage.json", newCoverageJson);
|
||||
})
|
||||
|
||||
@@ -1,61 +1,63 @@
|
||||
var artifacts = require("../../artifacts");
|
||||
var fs = require("fs");
|
||||
var path = require("path");
|
||||
var path = require("path");
|
||||
|
||||
const extendWebdriverIO = async function() {
|
||||
await browser.setTimeout({ 'script': 20 * 1000 });
|
||||
await browser.setTimeout({ 'implicit': 20 * 1000 });
|
||||
|
||||
browser.setTimeout({ 'script': 20*1000 });
|
||||
browser.setTimeout({ 'implicit': 20*1000 });
|
||||
var SCREENSHOTS_PATH = artifacts.pathSync("/screenshots");
|
||||
|
||||
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);
|
||||
|
||||
/**
|
||||
* Sometimes chrome driver can result in the wrong text.
|
||||
*
|
||||
* See <https://github.com/webdriverio/webdriverio/issues/1886>
|
||||
*/
|
||||
try {
|
||||
browser.addCommand('setValueSafe', function(selector, text) {
|
||||
for(var i=0; i<10; i++) {
|
||||
const elem = $(selector);
|
||||
elem.waitForDisplayed(500);
|
||||
var elements = await browser.findElements("css selector", selector);
|
||||
if (elements.length > 1) {
|
||||
throw "Too many elements found";
|
||||
}
|
||||
|
||||
var elements = 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");
|
||||
}
|
||||
}
|
||||
|
||||
const elem2 = $(selector);
|
||||
elem2.setValue(text);
|
||||
|
||||
var browserText = elem2.getValue();
|
||||
|
||||
if(browserText == text) {
|
||||
return;
|
||||
}
|
||||
else {
|
||||
console.error("Warning: setValue failed, trying again");
|
||||
}
|
||||
}
|
||||
|
||||
// Wait for change events to fire and state updated
|
||||
browser.flushReactUpdates();
|
||||
})
|
||||
|
||||
browser.addCommand('takeScreenShot', function(filepath) {
|
||||
var savepath = path.join(SCREENSHOTS_PATH, filepath);
|
||||
browser.saveScreenshot(savepath);
|
||||
});
|
||||
|
||||
browser.addCommand('flushReactUpdates', function() {
|
||||
browser.executeAsync(function(done) {
|
||||
// For any events to propogate
|
||||
setTimeout(function() {
|
||||
// For the DOM to be updated.
|
||||
setTimeout(done, 0);
|
||||
}, 0)
|
||||
// Wait for change events to fire and state updated
|
||||
await browser.flushReactUpdates();
|
||||
})
|
||||
})
|
||||
|
||||
} catch(err) {
|
||||
console.error(">>> Ignored error: "+err);
|
||||
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;
|
||||
Reference in New Issue
Block a user