Rendering tests render message
This commit is contained in:
@@ -18,4 +18,4 @@ new Map({
|
|||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
render();
|
render('A single layer with a XZY source');
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ async function match(actual, expected) {
|
|||||||
return count / (width * height);
|
return count / (width * height);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function assertScreenshotsMatch(entry) {
|
async function getScreenshotsMismatch(entry) {
|
||||||
const actual = getActualScreenshotPath(entry);
|
const actual = getActualScreenshotPath(entry);
|
||||||
const expected = getExpectedScreenshotPath(entry);
|
const expected = getExpectedScreenshotPath(entry);
|
||||||
let mismatch, error;
|
let mismatch, error;
|
||||||
@@ -139,36 +139,32 @@ async function assertScreenshotsMatch(entry) {
|
|||||||
} catch (err) {
|
} catch (err) {
|
||||||
error = err;
|
error = err;
|
||||||
}
|
}
|
||||||
if (error) {
|
return {error, mismatch};
|
||||||
return error;
|
|
||||||
}
|
|
||||||
if (mismatch) {
|
|
||||||
return new Error(`${entry} mistmatch: ${mismatch}`);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let handleRender;
|
let handleRender;
|
||||||
async function exposeRender(page) {
|
async function exposeRender(page) {
|
||||||
await page.exposeFunction('render', () => {
|
await page.exposeFunction('render', (message) => {
|
||||||
if (!handleRender) {
|
if (!handleRender) {
|
||||||
throw new Error('No render handler set for current page');
|
throw new Error('No render handler set for current page');
|
||||||
}
|
}
|
||||||
handleRender();
|
handleRender(message);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async function renderPage(page, entry, options) {
|
async function renderPage(page, entry, options) {
|
||||||
const renderCalled = new Promise(resolve => {
|
const renderCalled = new Promise(resolve => {
|
||||||
handleRender = () => {
|
handleRender = (message) => {
|
||||||
handleRender = null;
|
handleRender = null;
|
||||||
resolve();
|
resolve(message);
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
options.log.debug('navigating', entry);
|
options.log.debug('navigating', entry);
|
||||||
await page.goto(`http://${options.host}:${options.port}${getHref(entry)}`, {waitUntil: 'networkidle0'});
|
await page.goto(`http://${options.host}:${options.port}${getHref(entry)}`, {waitUntil: 'networkidle0'});
|
||||||
await renderCalled;
|
const message = await renderCalled;
|
||||||
options.log.debug('screenshot', entry);
|
options.log.debug('screenshot', entry);
|
||||||
await page.screenshot({path: getActualScreenshotPath(entry)});
|
await page.screenshot({path: getActualScreenshotPath(entry)});
|
||||||
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function touch(filepath) {
|
async function touch(filepath) {
|
||||||
@@ -186,20 +182,26 @@ async function copyActualToExpected(entry) {
|
|||||||
async function renderEach(page, entries, options) {
|
async function renderEach(page, entries, options) {
|
||||||
let fail = false;
|
let fail = false;
|
||||||
for (const entry of entries) {
|
for (const entry of entries) {
|
||||||
await renderPage(page, entry, options);
|
let message = await renderPage(page, entry, options);
|
||||||
|
message = message !== undefined ? message : entry;
|
||||||
if (options.fix) {
|
if (options.fix) {
|
||||||
await copyActualToExpected(entry);
|
await copyActualToExpected(entry);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const error = await assertScreenshotsMatch(entry);
|
const {error, mismatch} = await getScreenshotsMismatch(entry);
|
||||||
if (error) {
|
if (error) {
|
||||||
options.log.error(error);
|
options.log.error(error);
|
||||||
fail = true;
|
fail = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (mismatch > 0) {
|
||||||
|
options.log.error(`checking '${message}': mismatch ${mismatch.toFixed(3)}`);
|
||||||
|
fail = true;
|
||||||
|
} else {
|
||||||
|
options.log.info(`checking '${message}': ok`);
|
||||||
await touch(getPassFilePath(entry));
|
await touch(getPassFilePath(entry));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return fail;
|
return fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user