按规划继续工作

结论:补齐 OPFS 会话快照自定义文件名与非法快照文件名拒绝验证,覆盖 Node OPFS 与 Chromium OPFS 路径,并通过 host/WASM/browser 聚合验证。
This commit is contained in:
2026-06-08 09:21:00 +08:00
parent 8c7c2f1079
commit 78f54bb64c
5 changed files with 93 additions and 15 deletions

View File

@@ -116,6 +116,43 @@ JOINTS = 3
assertEqual(loadedSnapshot.createdAt, savedSnapshot.createdAt, "snapshot timestamp");
assertEqual(loadedSnapshot.payload.files.ini, opfsPath, "snapshot payload");
assertEqual(loadedSnapshot.metadata.source, "browser-smoke", "snapshot metadata");
assertEqual(
sessionSnapshotPath("browser-session", "browser-custom-snapshot.json"),
"linuxcnc/sessions/browser-session/browser-custom-snapshot.json",
"snapshot custom path",
);
const customSnapshot = await saveSessionSnapshot(
"browser-session",
snapshotPayload,
{
filename: "browser-custom-snapshot.json",
createdAt: "2026-06-08T00:00:00.000Z",
metadata: { source: "browser-smoke-custom" },
},
);
const loadedCustomSnapshot = await loadSessionSnapshot(
"browser-session",
{ filename: "browser-custom-snapshot.json" },
);
assertEqual(
loadedCustomSnapshot.metadata.source,
customSnapshot.metadata.source,
"custom snapshot metadata",
);
await assertRejects(
"browser snapshot invalid filename save",
() => saveSessionSnapshot("browser-session", {}, {
filename: "nested/snapshot.json",
}),
/Invalid session snapshot filename/,
);
await assertRejects(
"browser snapshot invalid filename load",
() => loadSessionSnapshot("browser-session", {
filename: "../snapshot.json",
}),
/Invalid session snapshot filename/,
);
await saveTextFile(
sessionSnapshotPath("browser-bad-format"),
JSON.stringify({