Checkpoint web parity through Chromium input tasks
This commit is contained in:
82
tools/web/check-library-main-append.mjs
Normal file
82
tools/web/check-library-main-append.mjs
Normal file
@@ -0,0 +1,82 @@
|
||||
import assert from "node:assert/strict";
|
||||
import crypto from "node:crypto";
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../..");
|
||||
const read = (relativePath) => fs.readFileSync(path.join(root, relativePath));
|
||||
const sha256 = (value) => crypto.createHash("sha256").update(value).digest("hex");
|
||||
const manifest = JSON.parse(read("tests/golden/M12-03E/manifest.json"));
|
||||
const desktopReport = JSON.parse(read("tests/golden/M12-03C/desktop-append-report.json"));
|
||||
|
||||
assert.deepEqual(manifest, {
|
||||
schemaVersion: 1,
|
||||
task: "M12-03E",
|
||||
parentTask: "M12-03D",
|
||||
enablingTask: false,
|
||||
parityStateChange: false,
|
||||
runtime: "BLENDER_5_2_WASM_CHROMIUM",
|
||||
operation: "APPEND",
|
||||
canonicalComparison: "DESKTOP_REPORT_EXACT_AFTER_IMAGE_ROW_NORMALIZATION_AND_SCENEIR_COLORSPACE_DEFAULT",
|
||||
assertions: {
|
||||
transactionCount: 1,
|
||||
revisionDelta: 1,
|
||||
undoRemovesClosure: true,
|
||||
redoRestoresCanonical: true,
|
||||
saveReopenRestoresCanonical: true,
|
||||
},
|
||||
artifacts: {
|
||||
parentManifest: {
|
||||
path: "tests/golden/M12-03C/manifest.json",
|
||||
sha256: "cbfbd8c919125108334dd24925b9ef8e69880983515e56841e6ead4a2b182aed",
|
||||
},
|
||||
desktopReport: {
|
||||
path: "tests/golden/M12-03C/desktop-append-report.json",
|
||||
sha256: "b1d7b8b9e832d18d69081f63981062800e0f00f0c9aec025b18274510ed76e2a",
|
||||
},
|
||||
test: {
|
||||
path: "web/tests/e2e/library-append-main.spec.ts",
|
||||
sha256: "101f67d35c2320da57459f08a59687d769234b910dbd9aaec5a668cee7e0f9f0",
|
||||
},
|
||||
sourceBlend: {
|
||||
path: "tests/files/web/m12_library_append_v1/m12_append_source.blend",
|
||||
sha256: "5b60d02926efd588a6ca300ba31414cdf37dbc48786c17b383a70319057c0606",
|
||||
},
|
||||
targetBlend: {
|
||||
path: "tests/files/web/empty.blend",
|
||||
sha256: "9b1ecbcc3d7f8079ee5469de64193ffcaa0a7b01e0f2ac340bbb18aa88734a63",
|
||||
},
|
||||
},
|
||||
nextTask: "M12-03F",
|
||||
});
|
||||
|
||||
assert.equal(sha256(read(manifest.artifacts.parentManifest.path)), manifest.artifacts.parentManifest.sha256);
|
||||
assert.equal(sha256(read(manifest.artifacts.desktopReport.path)), manifest.artifacts.desktopReport.sha256);
|
||||
assert.equal(sha256(read(manifest.artifacts.sourceBlend.path)), manifest.artifacts.sourceBlend.sha256);
|
||||
assert.equal(sha256(read(manifest.artifacts.targetBlend.path)), manifest.artifacts.targetBlend.sha256);
|
||||
assert.equal(sha256(read(manifest.artifacts.test.path)), manifest.artifacts.test.sha256);
|
||||
assert.equal(desktopReport.task, "M12-03C");
|
||||
assert.equal(desktopReport.operation, "APPEND");
|
||||
assert.equal(desktopReport.appendedGraph.geometry.vertices, 4);
|
||||
assert.equal(desktopReport.appendedGraph.geometry.edges, 4);
|
||||
assert.equal(desktopReport.appendedGraph.geometry.polygons, 1);
|
||||
assert.equal(desktopReport.appendedGraph.geometry.loops, 4);
|
||||
assert.equal(desktopReport.appendedGraph.image.pixelFloat32Sha256.length, 64);
|
||||
|
||||
const source = read(manifest.artifacts.test.path).toString("utf8");
|
||||
for (const marker of [
|
||||
"M12-03E keeps append undo/redo/save/reopen",
|
||||
"desktop-append-report.json",
|
||||
"canonicalGraph",
|
||||
"client.applyCommand({ type: \"undo\" })",
|
||||
"client.applyCommand({ type: \"redo\" })",
|
||||
"client.saveBlend()",
|
||||
"reopenedCanonical",
|
||||
"desktopCanonical",
|
||||
]) assert.ok(source.includes(marker), `M12-03E test marker is missing: ${marker}`);
|
||||
|
||||
process.stdout.write(
|
||||
`library-main-append-check-ok canonical=${desktopReport.appendedGraph.image.pixelFloat32Sha256} ` +
|
||||
`transaction=${manifest.assertions.transactionCount} undo=removed redo=canonical reopen=canonical next=${manifest.nextTask}\n`,
|
||||
);
|
||||
Reference in New Issue
Block a user