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
111 lines
2.9 KiB
TypeScript
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
|