blob: 746a66cf137a29bcec2f355af5e5588405585e02 [file] [log] [blame]
const REPORT_URL = '/gold_rpc/report';
const pngPrefx = 'data:image/png;base64,'
function reportCanvas(canvas, testname, config) {
// toDataURL returns a base64 encoded string with a data prefix. We only
// want the PNG data itself, so we strip that off before submitting it.
const b64 = canvas.toDataURL('image/png')
.substring(pngPrefx.length);
return fetch(REPORT_URL, {
method: 'POST',
mode: 'no-cors',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
'b64_data': b64,
'name': testname,
'config': config,
})
}).then((resp) => {
expect(resp.status).toEqual(201); // StatusCreated
console.log(`${testname}: ${resp.statusText}`);
});
}
function reportError(done) {
return (e) => {
fail(e);
done();
};
}
// A wrapper to catch and print a stacktrace to the logs.
// Exceptions normally shows up in the browser console,
// but not in the logs that appear on the bots AND a thrown
// exception will normally cause a test to time out.
// This wrapper mitigates both those pain points.
function catchException(done, fn) {
return () => {
try {
fn()
} catch (e) {
console.log('Failed with the following error', e);
expect(e).toBeFalsy();
debugger;
done();
}
// We don't call done with finally because
// that would make the break the asynchronous nature
// of fn().
}
}