fix: Editeur Excalidraw - diagramme vide (CSS + appState) et auto-save pendant l'edition (BUG-064, BUG-065)
This commit is contained in:
@@ -68,6 +68,41 @@ test.describe('Excalidraw — .excalidraw file support', () => {
|
||||
await expect(canvas).toBeVisible({ timeout: 20000 });
|
||||
});
|
||||
|
||||
test('opens an Excalidraw-app export (collaborators as JSON object) — canvas renders', async ({ page }) => {
|
||||
// Regression: files exported by the Excalidraw app / Obsidian plugin store
|
||||
// `appState.collaborators` as a plain `{}` (a Map serialized to JSON).
|
||||
// Passing it back to `initialData` made Excalidraw 0.18 crash with
|
||||
// "e.appState.collaborators.forEach is not a function" and left the canvas
|
||||
// blank (0 <canvas> in the iframe).
|
||||
await openFile(page, 'TestVault', 'diagram-app-export.excalidraw');
|
||||
await waitForExcalidrawIframe(page);
|
||||
|
||||
const frame = page.locator('.content-area iframe').contentFrame();
|
||||
const canvas = frame.locator('canvas').first();
|
||||
await expect(canvas).toBeVisible({ timeout: 20000 });
|
||||
});
|
||||
|
||||
test('loads Excalidraw stylesheet — canvas is sized to the viewport (not the 2^25 cap)', async ({ page }) => {
|
||||
// Regression: without `@excalidraw/excalidraw`'s stylesheet, `.excalidraw`
|
||||
// has no fixed height; Excalidraw's ResizeObserver feedback loop then grows
|
||||
// the canvas to its 2^25 hard cap (33554432px), which the browser cannot
|
||||
// draw → the scene stays blank even though the data was loaded.
|
||||
await openFile(page, 'TestVault', 'diagram.excalidraw');
|
||||
await waitForExcalidrawIframe(page);
|
||||
|
||||
const frame = page.locator('.content-area iframe').contentFrame();
|
||||
const canvas = frame.locator('canvas').first();
|
||||
await expect(canvas).toBeVisible({ timeout: 20000 });
|
||||
|
||||
const dims = await canvas.evaluate((el) => ({ w: el.width, h: el.height }));
|
||||
expect(dims.h).toBeGreaterThan(100);
|
||||
expect(dims.h).toBeLessThan(32768);
|
||||
|
||||
const wrapH = await frame.locator('.excalidraw').first()
|
||||
.evaluate((el) => parseFloat(getComputedStyle(el).height));
|
||||
expect(wrapH).toBeLessThan(32768);
|
||||
});
|
||||
|
||||
test('opens .excalidraw.md (Obsidian plugin format) — decompresses and renders', async ({ page }) => {
|
||||
await openFile(page, 'TestVault', 'diagram.excalidraw.md');
|
||||
const iframe = await waitForExcalidrawIframe(page);
|
||||
|
||||
Reference in New Issue
Block a user