53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
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().
|
|
}
|
|
}
|