Skip to content

Commit

Permalink
fix(): golden generation from browser
Browse files Browse the repository at this point in the history
await all async tasks
  • Loading branch information
ShaMan123 committed Sep 11, 2022
1 parent 1672b59 commit 5ce9d1c
Show file tree
Hide file tree
Showing 119 changed files with 65 additions and 52 deletions.
117 changes: 65 additions & 52 deletions test/lib/visualTestLoop.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
(function(exports) {

exports.getFixture = function(name, original, callback) {
getImage(getFixtureName(name), original, callback);
exports.getFixture = async function(name, original, callback) {
callback(await getImage(getFixtureName(name), original));
};

exports.getAsset = function(name, callback) {
Expand Down Expand Up @@ -69,18 +69,30 @@
fs.writeFileSync(plainFileName, dataUrl, { encoding: 'base64' });
}
else if (original) {
original.toBlob(blob => {
const formData = new FormData();
formData.append('file', blob, filename);
formData.append('filename', filename);
const request = new XMLHttpRequest();
request.open('POST', '/goldens', true);
request.send(formData);
return new Promise((resolve, reject) => {
return original.toBlob(blob => {
const formData = new FormData();
formData.append('file', blob, filename);
formData.append('filename', filename);
const request = new XMLHttpRequest();
request.open('POST', '/goldens', true);
request.onreadystatechange = () => {
if (request.readyState === XMLHttpRequest.DONE) {
const status = request.status;
if (status === 0 || (status >= 200 && status < 400)) {
resolve();
} else {
reject();
}
}
};
request.send(formData);
});
}, 'image/png');
}
}

async function getImage(filename, original, callback) {
async function getImage(filename, original) {
if (fabric.isLikelyNode && original) {
var plainFileName = filename.replace('file://', '');
if (!fs.existsSync(plainFileName)) {
Expand All @@ -90,21 +102,23 @@
else if (original) {
await fetch(`/goldens/${filename}`, { method: 'GET' })
.then(res => res.json())
.then(res => {
!res.exists && generateGolden(filename, original);
});
.then(res => !res.exists && generateGolden(filename, original));
}
var img = fabric.document.createElement('img');
img.onload = function() {
img.onload = null;
callback(img, false);
};
img.onerror = function(err) {
img.onerror = null;
callback(img, true);
console.log('Image loading errored', err);
};
img.src = filename;
return new Promise((resolve, reject) => {
const img = fabric.document.createElement('img');
img.onload = function () {
img.onerror = null;
img.onload = null;
resolve(img);
};
img.onerror = function (err) {
img.onerror = null;
img.onload = null;
reject(err);
};
img.src = filename;
});

}

exports.visualTestLoop = function(QUnit) {
Expand Down Expand Up @@ -147,7 +161,7 @@
QUnit.test(testName, function(assert) {
var done = assert.async();
var fabricCanvas = createCanvasForTest(testObj);
code(fabricCanvas, function(renderedCanvas) {
code(fabricCanvas, async function (renderedCanvas) {
var width = renderedCanvas.width;
var height = renderedCanvas.height;
var totalPixels = width * height;
Expand All @@ -157,34 +171,33 @@
canvas.height = height;
var ctx = canvas.getContext('2d');
var output = ctx.getImageData(0, 0, width, height);
getImage(getGoldeName(golden), renderedCanvas, function (goldenImage) {
ctx.drawImage(goldenImage, 0, 0);
visualCallback.addArguments({
enabled: true,
golden: canvas,
fabric: imageDataCanvas,
diff: output,
goldenName: golden
});
var imageDataGolden = ctx.getImageData(0, 0, width, height).data;
var differentPixels = _pixelMatch(imageDataCanvas.data, imageDataGolden, output.data, width, height, pixelmatchOptions);
var percDiff = differentPixels / totalPixels * 100;
var okDiff = totalPixels * percentage;
var isOK = differentPixels <= okDiff;
assert.ok(
isOK,
testName + ' [' + golden + '] has too many different pixels ' + differentPixels + '(' + okDiff + ') representing ' + percDiff + '% (>' + (percentage * 100) + '%)'
);
if (!isOK) {
var stringa = imageDataToChalk(output);
console.log(stringa);
}
if ((!isOK && QUnit.debugVisual) || QUnit.recreateVisualRefs) {
generateGolden(getGoldeName(golden), renderedCanvas);
}
fabricCanvas.dispose();
done();
const goldenImage = await getImage(getGoldeName(golden), renderedCanvas);
ctx.drawImage(goldenImage, 0, 0);
visualCallback.addArguments({
enabled: true,
golden: canvas,
fabric: imageDataCanvas,
diff: output,
goldenName: golden
});
var imageDataGolden = ctx.getImageData(0, 0, width, height).data;
var differentPixels = _pixelMatch(imageDataCanvas.data, imageDataGolden, output.data, width, height, pixelmatchOptions);
var percDiff = differentPixels / totalPixels * 100;
var okDiff = totalPixels * percentage;
var isOK = differentPixels <= okDiff;
assert.ok(
isOK,
testName + ' [' + golden + '] has too many different pixels ' + differentPixels + '(' + okDiff + ') representing ' + percDiff + '% (>' + (percentage * 100) + '%)'
);
if (!isOK) {
var stringa = imageDataToChalk(output);
console.log(stringa);
}
if ((!isOK && QUnit.debugVisual) || QUnit.recreateVisualRefs) {
generateGolden(getGoldeName(golden), renderedCanvas);
}
fabricCanvas.dispose();
done();
});
});
}
Expand Down
Binary file modified test/visual/golden/group-layout/clip-path.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/clip-path1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/clip-path2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/clip-path3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/fit-content-skewX.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/fit-content-skewY.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/fit-content.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/fit-content2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/fit-content3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/origin-center-bottom-0deg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/origin-center-bottom-120deg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/origin-center-bottom-150deg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/origin-center-bottom-180deg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/origin-center-bottom-210deg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/origin-center-bottom-240deg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/origin-center-bottom-270deg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/origin-center-bottom-300deg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/origin-center-bottom-30deg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/origin-center-bottom-330deg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/origin-center-bottom-60deg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/origin-center-bottom-90deg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/origin-center-center-0deg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/origin-center-center-120deg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/origin-center-center-150deg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/origin-center-center-180deg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/visual/golden/group-layout/origin-center-center-210deg.png
Binary file modified test/visual/golden/group-layout/origin-center-center-240deg.png
Binary file modified test/visual/golden/group-layout/origin-center-center-270deg.png
Binary file modified test/visual/golden/group-layout/origin-center-center-300deg.png
Binary file modified test/visual/golden/group-layout/origin-center-center-30deg.png
Binary file modified test/visual/golden/group-layout/origin-center-center-60deg.png
Binary file modified test/visual/golden/group-layout/origin-center-center-90deg.png
Binary file modified test/visual/golden/group-layout/origin-center-top-0deg.png
Binary file modified test/visual/golden/group-layout/origin-center-top-120deg.png
Binary file modified test/visual/golden/group-layout/origin-center-top-150deg.png
Binary file modified test/visual/golden/group-layout/origin-center-top-180deg.png
Binary file modified test/visual/golden/group-layout/origin-center-top-210deg.png
Binary file modified test/visual/golden/group-layout/origin-center-top-240deg.png
Binary file modified test/visual/golden/group-layout/origin-center-top-270deg.png
Binary file modified test/visual/golden/group-layout/origin-center-top-300deg.png
Binary file modified test/visual/golden/group-layout/origin-center-top-30deg.png
Binary file modified test/visual/golden/group-layout/origin-center-top-330deg.png
Binary file modified test/visual/golden/group-layout/origin-center-top-60deg.png
Binary file modified test/visual/golden/group-layout/origin-center-top-90deg.png
Binary file modified test/visual/golden/group-layout/origin-left-bottom-0deg.png
Binary file modified test/visual/golden/group-layout/origin-left-bottom-120deg.png
Binary file modified test/visual/golden/group-layout/origin-left-bottom-150deg.png
Binary file modified test/visual/golden/group-layout/origin-left-bottom-180deg.png
Binary file modified test/visual/golden/group-layout/origin-left-bottom-210deg.png
Binary file modified test/visual/golden/group-layout/origin-left-bottom-240deg.png
Binary file modified test/visual/golden/group-layout/origin-left-bottom-270deg.png
Binary file modified test/visual/golden/group-layout/origin-left-bottom-300deg.png
Binary file modified test/visual/golden/group-layout/origin-left-bottom-30deg.png
Binary file modified test/visual/golden/group-layout/origin-left-bottom-330deg.png
Binary file modified test/visual/golden/group-layout/origin-left-bottom-60deg.png
Binary file modified test/visual/golden/group-layout/origin-left-bottom-90deg.png
Binary file modified test/visual/golden/group-layout/origin-left-center-0deg.png
Binary file modified test/visual/golden/group-layout/origin-left-center-120deg.png
Binary file modified test/visual/golden/group-layout/origin-left-center-150deg.png
Binary file modified test/visual/golden/group-layout/origin-left-center-180deg.png
Binary file modified test/visual/golden/group-layout/origin-left-center-210deg.png
Binary file modified test/visual/golden/group-layout/origin-left-center-240deg.png
Binary file modified test/visual/golden/group-layout/origin-left-center-270deg.png
Binary file modified test/visual/golden/group-layout/origin-left-center-300deg.png
Binary file modified test/visual/golden/group-layout/origin-left-center-30deg.png
Binary file modified test/visual/golden/group-layout/origin-left-center-330deg.png
Binary file modified test/visual/golden/group-layout/origin-left-center-60deg.png
Binary file modified test/visual/golden/group-layout/origin-left-center-90deg.png
Binary file modified test/visual/golden/group-layout/origin-left-top-0deg.png
Binary file modified test/visual/golden/group-layout/origin-left-top-120deg.png
Binary file modified test/visual/golden/group-layout/origin-left-top-150deg.png
Binary file modified test/visual/golden/group-layout/origin-left-top-180deg.png
Binary file modified test/visual/golden/group-layout/origin-left-top-210deg.png
Binary file modified test/visual/golden/group-layout/origin-left-top-240deg.png
Binary file modified test/visual/golden/group-layout/origin-left-top-270deg.png
Binary file modified test/visual/golden/group-layout/origin-left-top-300deg.png
Binary file modified test/visual/golden/group-layout/origin-left-top-30deg.png
Binary file modified test/visual/golden/group-layout/origin-left-top-330deg.png
Binary file modified test/visual/golden/group-layout/origin-left-top-60deg.png
Binary file modified test/visual/golden/group-layout/origin-left-top-90deg.png
Binary file modified test/visual/golden/group-layout/origin-right-bottom-0deg.png
Binary file modified test/visual/golden/group-layout/origin-right-bottom-120deg.png
Binary file modified test/visual/golden/group-layout/origin-right-bottom-150deg.png
Binary file modified test/visual/golden/group-layout/origin-right-bottom-180deg.png
Binary file modified test/visual/golden/group-layout/origin-right-bottom-210deg.png
Binary file modified test/visual/golden/group-layout/origin-right-bottom-240deg.png
Binary file modified test/visual/golden/group-layout/origin-right-bottom-270deg.png
Binary file modified test/visual/golden/group-layout/origin-right-bottom-300deg.png
Binary file modified test/visual/golden/group-layout/origin-right-bottom-30deg.png
Binary file modified test/visual/golden/group-layout/origin-right-bottom-330deg.png
Binary file modified test/visual/golden/group-layout/origin-right-bottom-60deg.png
Binary file modified test/visual/golden/group-layout/origin-right-bottom-90deg.png
Binary file modified test/visual/golden/group-layout/origin-right-center-0deg.png
Binary file modified test/visual/golden/group-layout/origin-right-center-120deg.png
Binary file modified test/visual/golden/group-layout/origin-right-center-150deg.png
Binary file modified test/visual/golden/group-layout/origin-right-center-180deg.png
Binary file modified test/visual/golden/group-layout/origin-right-center-210deg.png
Binary file modified test/visual/golden/group-layout/origin-right-center-240deg.png
Binary file modified test/visual/golden/group-layout/origin-right-center-270deg.png
Binary file modified test/visual/golden/group-layout/origin-right-center-300deg.png
Binary file modified test/visual/golden/group-layout/origin-right-center-30deg.png
Binary file modified test/visual/golden/group-layout/origin-right-center-330deg.png
Binary file modified test/visual/golden/group-layout/origin-right-center-60deg.png
Binary file modified test/visual/golden/group-layout/origin-right-center-90deg.png
Binary file modified test/visual/golden/group-layout/origin-right-top-0deg.png
Binary file modified test/visual/golden/group-layout/origin-right-top-120deg.png
Binary file modified test/visual/golden/group-layout/origin-right-top-150deg.png
Binary file modified test/visual/golden/group-layout/origin-right-top-180deg.png
Binary file modified test/visual/golden/group-layout/origin-right-top-210deg.png
Binary file modified test/visual/golden/group-layout/origin-right-top-240deg.png
Binary file modified test/visual/golden/group-layout/origin-right-top-270deg.png
Binary file modified test/visual/golden/group-layout/origin-right-top-300deg.png
Binary file modified test/visual/golden/group-layout/origin-right-top-30deg.png
Binary file modified test/visual/golden/group-layout/origin-right-top-330deg.png
Binary file modified test/visual/golden/group-layout/origin-right-top-60deg.png
Binary file modified test/visual/golden/group-layout/origin-right-top-90deg.png
Binary file modified test/visual/golden/group-layout/unit-test-scene.png

0 comments on commit 5ce9d1c

Please sign in to comment.