67 lines
2.3 KiB
HTML
67 lines
2.3 KiB
HTML
<!DOCTYPE html>
|
|
<title>Testing GMs on WebGL 2 compiled with Bazel</title>
|
|
<meta charset="utf-8" />
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
|
<script type="text/javascript" src="/build/wasm_gm_tests.js"></script>
|
|
|
|
<p id="log"></p>
|
|
<!-- Makes png visible to user -->
|
|
<canvas id=png_canvas height=1000 width=1000></canvas>
|
|
<!-- Used for drawing/testing, but nothing is visible -->
|
|
<canvas id=gm_canvas></canvas>
|
|
|
|
|
|
<script type="text/javascript" charset="utf-8">
|
|
function log(line) {
|
|
console.log(line);
|
|
line += '\n';
|
|
document.getElementById("log").innerText += line;
|
|
}
|
|
Run();
|
|
async function Run() {
|
|
const TestRunner = await InitWasmGMTests({locateFile: (file) => '/build/'+file});
|
|
TestRunner.Init();
|
|
const gmNames = TestRunner.ListGMs();
|
|
const testNames = TestRunner.ListTests();
|
|
|
|
if (gmNames.length) {
|
|
await RunGM(TestRunner, gmNames[0]);
|
|
}
|
|
if (testNames.length) {
|
|
RunTest(TestRunner, testNames[0]);
|
|
}
|
|
}
|
|
|
|
async function RunGM(TestRunner, name) {
|
|
const canvas = document.getElementById('gm_canvas');
|
|
const ctx = TestRunner.GetWebGLContext(canvas, 2);
|
|
const grcontext = TestRunner.MakeGrContext(ctx);
|
|
|
|
log("Running gm " + name);
|
|
const pngAndMetadata = TestRunner.RunGM(grcontext, name);
|
|
|
|
const b = new Blob([pngAndMetadata.png.buffer], {type: "image/png"});
|
|
const bmp = await createImageBitmap(b);
|
|
const canvasCtx = document.getElementById("png_canvas").getContext("2d");
|
|
canvasCtx.drawImage(bmp, 0, 0);
|
|
}
|
|
|
|
function RunTest(TestRunner, name) {
|
|
const canvas = document.getElementById('gm_canvas');
|
|
const ctx = TestRunner.GetWebGLContext(canvas, 2);
|
|
// This sets up the GL context for all tests. We do not need to pass the grcontext in to the
|
|
// tests. The unit tests have a GrContextFactory which will do so as necessary.
|
|
// It *is* important to make sure we have at least initialized the WebGL context for this
|
|
// so the factory can work.
|
|
const grcontext = TestRunner.MakeGrContext(ctx);
|
|
if (!grcontext) {
|
|
window._error = 'Could not make GrContext for tests';
|
|
return;
|
|
}
|
|
log("Running test " + name);
|
|
const result = TestRunner.RunTest(name);
|
|
log(' ' + result.result, result.msg || '');
|
|
}
|
|
</script> |