mirror of
https://github.com/tinygrad/tinygrad.git
synced 2026-01-10 07:28:15 -05:00
viz browser tests (#10626)
* viz browser tests * expect failure if js/ isn't included * back green
This commit is contained in:
34
test/web/test_viz.js
Normal file
34
test/web/test_viz.js
Normal file
@@ -0,0 +1,34 @@
|
||||
const { spawn } = require("child_process");
|
||||
const puppeteer = require("puppeteer");
|
||||
|
||||
async function main() {
|
||||
// ** start viz server
|
||||
const proc = spawn("python", ["-u", "-c", "from tinygrad import Tensor; Tensor.arange(4).realize()"], { env: { ...process.env, VIZ:"1" },
|
||||
stdio: ["inherit", "pipe", "inherit"]});
|
||||
await new Promise(resolve => proc.stdout.on("data", r => {
|
||||
if (r.includes("ready")) resolve();
|
||||
}));
|
||||
|
||||
// ** run browser tests
|
||||
let browser;
|
||||
try {
|
||||
browser = await puppeteer.launch({ headless: true });
|
||||
const page = await browser.newPage();
|
||||
const res = await page.goto("http://localhost:8000");
|
||||
if (res.status() !== 200) throw new Error("Failed to load page");
|
||||
const scheduleSelector = await page.waitForSelector("ul");
|
||||
scheduleSelector.click();
|
||||
await page.waitForSelector("rect");
|
||||
const nodes = await page.evaluate(() => document.querySelectorAll("#nodes > g").length);
|
||||
const edges = await page.evaluate(() => document.querySelectorAll("#edges > path").length);
|
||||
if (!nodes || !edges) {
|
||||
throw new Error("VIZ didn't render a graph")
|
||||
}
|
||||
} finally {
|
||||
// ** cleanups
|
||||
if (browser) await browser.close();
|
||||
proc.kill();
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
||||
Reference in New Issue
Block a user