import test from '@playwright/test' import { TLShapeId, TLShapePartial } from 'tldraw' // import test, { Page, expect } from '@playwright/test' // import assert from 'assert' // import { rename, writeFile } from 'fs/promises' // import { setupPage } from '../shared-e2e' // import { Editor, TLShapeId, TLShapePartial } from 'tldraw' // declare const editor: Editor test.describe('Export snapshots', () => { const snapshots = { 'Exports geo text with leading line breaks': [ { id: 'shape:testShape' as TLShapeId, type: 'geo', props: { w: 100, h: 30, text: '\n\n\n\n\n\ntext', }, }, ], 'Exports geo text with trailing line breaks': [ { id: 'shape:testShape' as TLShapeId, type: 'geo', props: { w: 100, h: 30, text: 'text\n\n\n\n\n\n', }, }, ], } as Record for (const fill of ['none', 'semi', 'solid', 'pattern']) { snapshots[`geo fill=${fill}`] = [ { id: 'shape:testShape' as TLShapeId, type: 'geo', props: { fill, color: 'green', w: 100, h: 100, }, }, ] snapshots[`arrow fill=${fill}`] = [ { id: 'shape:testShape' as TLShapeId, type: 'arrow', props: { color: 'light-green', fill: fill, arrowheadStart: 'square', arrowheadEnd: 'dot', start: { type: 'point', x: 0, y: 0 }, end: { type: 'point', x: 100, y: 100 }, bend: 20, }, }, ] snapshots[`draw fill=${fill}`] = [ { id: 'shape:testShape' as TLShapeId, type: 'draw', props: { color: 'light-violet', fill: fill, segments: [ { type: 'straight', points: [{ x: 0, y: 0 }], }, { type: 'straight', points: [ { x: 0, y: 0 }, { x: 100, y: 0 }, ], }, { type: 'straight', points: [ { x: 100, y: 0 }, { x: 0, y: 100 }, ], }, { type: 'straight', points: [ { x: 0, y: 100 }, { x: 100, y: 100 }, ], }, { type: 'straight', points: [ { x: 100, y: 100 }, { x: 0, y: 0 }, ], }, ], isClosed: true, isComplete: true, }, }, ] } for (const font of ['draw', 'sans', 'serif', 'mono']) { snapshots[`geo font=${font}`] = [ { id: 'shape:testShape' as TLShapeId, type: 'geo', props: { text: 'test', color: 'blue', font, w: 100, h: 100, }, }, ] snapshots[`arrow font=${font}`] = [ { id: 'shape:testShape' as TLShapeId, type: 'arrow', props: { color: 'blue', fill: 'solid', arrowheadStart: 'square', arrowheadEnd: 'arrow', font, start: { type: 'point', x: 0, y: 0 }, end: { type: 'point', x: 100, y: 100 }, bend: 20, text: 'test', }, }, ] snapshots[`arrow font=${font}`] = [ { id: 'shape:testShape' as TLShapeId, type: 'arrow', props: { color: 'blue', fill: 'solid', arrowheadStart: 'square', arrowheadEnd: 'arrow', font, start: { type: 'point', x: 0, y: 0 }, end: { type: 'point', x: 100, y: 100 }, bend: 20, text: 'test', }, }, ] snapshots[`note font=${font}`] = [ { id: 'shape:testShape' as TLShapeId, type: 'note', props: { color: 'violet', font, text: 'test', }, }, ] snapshots[`text font=${font}`] = [ { id: 'shape:testShape' as TLShapeId, type: 'text', props: { color: 'red', font, text: 'test', }, }, ] } // const snapshotsToTest = Object.entries(snapshots) // const filteredSnapshots = snapshotsToTest // maybe we filter these down, there are a lot of them // for (const [name, shapes] of filteredSnapshots) { // test(`Exports with ${name} in dark mode`, async ({ browser }) => { // const page = await browser.newPage() // await setupPage(page) // await page.evaluate((shapes) => { // editor.user.updateUserPreferences({ isDarkMode: true }) // editor // .updateInstanceState({ exportBackground: false }) // .selectAll() // .deleteShapes(editor.getSelectedShapeIds()) // .createShapes(shapes) // }, shapes as any) // await snapshotTest(page) // }) // } // async function snapshotTest(page: Page) { // const downloadAndSnapshot = page.waitForEvent('download').then(async (download) => { // const path = (await download.path()) as string // assert(path) // await rename(path, path + '.svg') // await writeFile( // path + '.html', // ` // // // // // `, // 'utf-8' // ) // await page.goto(`file://${path}.html`) // const clip = await page.$eval('img', (img) => img.getBoundingClientRect()) // await expect(page).toHaveScreenshot({ // omitBackground: true, // clip, // }) // }) // await page.evaluate(() => (window as any)['tldraw-export']()) // await downloadAndSnapshot // } })