Files
upstream-tldraw/apps/examples/e2e/fixtures/fixtures.ts
upstream-mirror a774ac673a
Some checks failed
Deploy analytics worker / Deploy analytics worker to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
i18n upload strings / Upload latest strings (push) Failing after 1s
Deploy bemo / Deploy bemo to ${{ (github.ref == 'refs/heads/bemo-production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
Deploy grafana resources / ${{ github.event_name == 'push' && 'Deploy grafana resources' || 'Validate grafana resources (dry run)' }} (push) Failing after 0s
End to end tests (dotcom) / Check for relevant changes (push) Failing after 0s
End to end tests (examples) / Check for relevant changes (push) Failing after 0s
End to end tests (mermaid readability) / Check for relevant changes (push) Failing after 1s
End to end tests (perf) / Check for relevant changes (push) Failing after 0s
Publish editor extensions / Publish editor extensions (push) Failing after 1s
Publish SDK packages / Remove the publish-packages label (push) Has been skipped
Checks / Tests & checks (push) Has been cancelled
Checks / Build all projects (push) Has been cancelled
Deploy templates / Deploy templates (push) Has been cancelled
End to end tests (dotcom) / End to end tests (dotcom) (push) Has been cancelled
End to end tests (mermaid readability) / End to end tests (mermaid readability) (push) Has been cancelled
End to end tests (perf) / End to end tests (perf) (push) Has been cancelled
Deploy .com / Deploy dotcom to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Has been cancelled
End to end tests (examples) / End to end tests (examples) (push) Has been cancelled
Publish SDK packages / Publish SDK packages (push) Has been cancelled
Publish SDK packages / Tell user released version (push) Has been cancelled
Publish SDK packages / Publishes code templates to separate repositories (push) Has been cancelled
Publish SDK packages / Deploys the template demos with the new SDK version (push) Has been cancelled
snapshot of https://github.com/tldraw/tldraw.git (main, 2026-09-23; blobs > 131072B omitted)
2026-09-23 16:12:52 +05:00

111 lines
2.9 KiB
TypeScript

import { Page, test as base } from '@playwright/test'
import { EndToEndApi } from '../../src/misc/EndToEndApi'
import { ActionsMenu } from './menus/ActionsMenu'
import { HelpMenu } from './menus/HelpMenu'
import { MainMenu } from './menus/MainMenu'
import { MenuClickCapture } from './menus/MenuClickCapture'
import { NavigationPanel } from './menus/NavigationPanel'
import { PageMenu } from './menus/PageMenu'
import { RichTextToolbar } from './menus/RichTextToolbar'
import { StylePanel } from './menus/StylePanel'
import { Toolbar } from './menus/Toolbar'
interface Fixtures {
menuClickCapture: MenuClickCapture
toolbar: Toolbar
richTextToolbar: RichTextToolbar
stylePanel: StylePanel
actionsMenu: ActionsMenu
helpMenu: HelpMenu
mainMenu: MainMenu
pageMenu: PageMenu
navigationPanel: NavigationPanel
api: ReturnType<typeof makeApiFixture>
isMac: boolean
}
export type ApiFixture = {
[K in keyof EndToEndApi]: (
...args: Parameters<EndToEndApi[K]>
) => Promise<ReturnType<EndToEndApi[K]>>
}
function makeApiFixture(keys: { [K in keyof EndToEndApi]: true }, page: Page): ApiFixture {
const result = {} as any
for (const key of Object.keys(keys)) {
result[key] = (...args: any[]) => {
return page.evaluate(
([key, ...args]) => {
return (window as any).tldrawApi[key](...args)
},
[key, ...args]
)
}
}
return result
}
const test = base.extend<Fixtures>({
menuClickCapture: async ({ page }, testUse) => {
const toolbar = new MenuClickCapture(page)
await testUse(toolbar)
},
toolbar: async ({ page }, testUse) => {
const toolbar = new Toolbar(page)
await testUse(toolbar)
},
richTextToolbar: async ({ page }, testUse) => {
const richTextToolbar = new RichTextToolbar(page)
await testUse(richTextToolbar)
},
stylePanel: async ({ page }, testUse) => {
const stylePanel = new StylePanel(page)
await testUse(stylePanel)
},
actionsMenu: async ({ page }, testUse) => {
const actionsMenu = new ActionsMenu(page)
await testUse(actionsMenu)
},
helpMenu: async ({ page }, testUse) => {
const helpMenu = new HelpMenu(page)
await testUse(helpMenu)
},
mainMenu: async ({ page }, testUse) => {
const mainMenu = new MainMenu(page)
await testUse(mainMenu)
},
pageMenu: async ({ page }, testUse) => {
const pagemenu = new PageMenu(page)
await testUse(pagemenu)
},
navigationPanel: async ({ page }, testUse) => {
const navigationPanel = new NavigationPanel(page)
await testUse(navigationPanel)
},
api: async ({ page }, testUse) => {
const api = makeApiFixture(
{
exportAsSvg: true,
exportAsFormat: true,
createShapeId: true,
resetMockShapeIds: true,
createMermaidDiagram: true,
checkMermaidReadability: true,
toRichText: true,
preloadFonts: true,
markAllArrowBindings: true,
b64VecsEncodePoints: true,
},
page
)
await testUse(api)
},
isMac: async ({ page: _ }, testUse) => {
await testUse(process.platform === 'darwin')
},
})
export default test