Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | 1x 1x 55x 55x 55x 55x 55x 55x | import resemble from 'resemblejs';
import { fakeImageLoader, fakeMetaDataProvider } from './testUtilsImageLoader';
import { fakeVolumeLoader } from './testUtilsVolumeLoader';
import { createNormalizedMouseEvent } from './testUtilsMouseEvents';
import { fillStackSegmentationWithMockData } from './fillStackSegmentationWithMockData';
import { fillVolumeSegmentationWithMockData } from './fillVolumeSegmentationWithMockData';
import { addMockContourSegmentation } from './addMockContourSegmentation';
/**
* TestUtils: used for colorizing the image and comparing it to a baseline,
* should not be used for development.
*/
const colors = [
[255, 0, 0],
[0, 255, 0],
[128, 0, 0],
[0, 0, 255],
[0, 128, 0],
[255, 255, 0],
[0, 255, 255],
[0, 0, 0],
[0, 0, 128],
[255, 0, 255],
];
Object.freeze(colors);
/**
* It compares the image to a baseline, and if it is different by 1% it will
* throw an error. Otherwise, it will return success.
* @param {string} imageDataURL - The rendered imageDataURL - can be grabbed by calling canvas.toDataURL()
* @param {string} baseline - Baseline imageDataURL - imported png in the test files
* @param outputName - The name of the image for logging
* @returns A promise.
*/
function compareImages(imageDataURL, baseline, outputName) {
return new Promise((resolve, reject) => {
resemble.outputSettings({
useCrossOrigin: false,
errorColor: {
red: 0,
green: 255,
blue: 0,
},
transparency: 0.5,
largeImageThreshold: 1200,
outputDiff: true,
});
resemble(baseline.default)
.compareTo(imageDataURL)
.onComplete((data) => {
const mismatch = parseFloat(data.misMatchPercentage);
// If the error is greater than 1%, fail the test
// and download the difference image
// Todo: this should be a configurable threshold
Iif (mismatch > 1) {
console.warn('mismatch of', mismatch, '% to image', imageDataURL);
const diff = data.getImageDataUrl();
// Todo: we should store the diff image somewhere
reject(
new Error(
`mismatch of ${mismatch} between images for ${outputName},
the diff image is: \n\n ${diff} \n\n`
)
);
// reject(new Error(`mismatch between images for ${outputName}\n mismatch: ${mismatch}\n ${baseline.default}\n ${imageDataURL}\n ${diff}`));
} else {
resolve();
}
});
});
}
export {
fakeImageLoader,
fakeMetaDataProvider,
fakeVolumeLoader,
compareImages,
createNormalizedMouseEvent,
// utils
colors,
fillStackSegmentationWithMockData,
fillVolumeSegmentationWithMockData,
addMockContourSegmentation,
};
|