// 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" } }] }); });