sokko-g/e2e/persistence.spec.js
Shinuwa a4cf633ab4
Some checks failed
Deploy Sokko G / deploy (push) Failing after 2s
Serialize toolbox writes and preserve concurrent edits
2026-09-10 19:09:48 +02:00

29 lines
1.1 KiB
JavaScript

// Rôle : vérifie l'atomicité des snapshots avec une vraie transaction IndexedDB.
import { test, expect } from "@playwright/test";
import { resetSokkoStorage } from "./helpers/storage.js";
test("a synchronous snapshot error aborts all its IndexedDB writes", async ({ page }) => {
await resetSokkoStorage(page);
const result = await page.evaluate(async () => {
const db = await import("/src/utils/indexedDbStorage.js");
await db.setToolboxSnapshot([{ id: "saved", modules: [] }], { game: "saved" }, { "saved:note": { text: "Keep" } });
let errorName = "";
try {
await db.setToolboxSnapshot([{ id: "broken" }], {}, { "broken:note": { invalid: () => {} } });
} catch (error) {
errorName = error.name;
}
return {
errorName,
toolboxes: await db.getToolboxes(),
links: await db.getLinks(),
modules: await db.getAllModuleData()
};
});
expect(result).toEqual({
errorName: "DataCloneError",
toolboxes: [{ id: "saved", modules: [] }],
links: { game: "saved" },
modules: [{ key: "saved:note", data: { text: "Keep" } }]
});
});