Files
workinf_Blender_Wasm/tools/web/check-library-main-append.mjs
mes123456 380cbed4ff
Some checks are pending
M6 deployable RC / quick (push) Waiting to run
M6 deployable RC / chromium (push) Blocked by required conditions
M6 deployable RC / release (push) Blocked by required conditions
Checkpoint web parity through Chromium input tasks
2026-08-19 10:39:03 -04:00

83 lines
3.5 KiB
JavaScript

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`,
);