Improve L2 market parsing and data handling

This commit is contained in:
2026-08-11 22:24:36 +03:00
parent de41230b9b
commit af9cd1e92d
58 changed files with 2474 additions and 444 deletions
+29
View File
@@ -0,0 +1,29 @@
import { test, expect } from "@playwright/test";
import { writeFile } from "node:fs/promises";
test("production analyzer matches the reviewed screenshot corpus", async ({ page }, testInfo) => {
const fixture = process.env.FIXTURE_ID;
await page.goto(fixture ? `/fixture.html?fixture=${encodeURIComponent(fixture)}` : "/fixture.html");
const result = await page.evaluate(() => window.__fixtureRun);
await writeFile(testInfo.outputPath("fixture-report.json"), JSON.stringify(result, null, 2));
const artifacts = await page.evaluate(() => window.__fixtureArtifacts);
for (const [fixtureId, artifact] of Object.entries(artifacts)) {
const images = [
["overlay", artifact.preview],
...artifact.stages.map(({ key, image }) => [key, image]),
];
for (const [label, dataUrl] of images) {
if (!dataUrl) continue;
const [, encoded] = dataUrl.split(",", 2);
const extension = dataUrl.startsWith("data:image/png") ? "png" : "jpg";
await writeFile(
testInfo.outputPath(`${fixtureId}-${label}.${extension}`),
Buffer.from(encoded, "base64"),
);
}
}
expect(result.total).toBeGreaterThan(0);
expect(result.completed).toBe(result.total);
if (!fixture) expect(result.completed).toBe(17);
expect(result.failures, result.failures.join("\n")).toEqual([]);
});