- useEditorSetup() / useEditorSetupWithClear() in tests/e2e/fixtures.ts - Migrated 17 specs to shared fixture, removing ~300 lines of boilerplate - Moved getSelectedNode/getSelectedNodes to shared store helpers - Replaced inline getSelectedNode in 4 specs with shared import - Test duplication: 329 → 308 clones (10.12% → 9.08%)
43 lines
790 B
TypeScript
43 lines
790 B
TypeScript
import { test, expect, type Page } from '@playwright/test'
|
|
|
|
import { CanvasHelper } from '#tests/helpers/canvas'
|
|
|
|
export function useEditorSetup(url = '/') {
|
|
let page: Page
|
|
let canvas: CanvasHelper
|
|
|
|
test.describe.configure({ mode: 'serial' })
|
|
|
|
test.beforeAll(async ({ browser }) => {
|
|
page = await browser.newPage()
|
|
await page.goto(url)
|
|
canvas = new CanvasHelper(page)
|
|
await canvas.waitForInit()
|
|
})
|
|
|
|
test.afterAll(async () => {
|
|
await page.close()
|
|
})
|
|
|
|
return {
|
|
get page() {
|
|
return page
|
|
},
|
|
get canvas() {
|
|
return canvas
|
|
}
|
|
}
|
|
}
|
|
|
|
export function useEditorSetupWithClear(url = '/') {
|
|
const ctx = useEditorSetup(url)
|
|
|
|
test.beforeEach(async () => {
|
|
await ctx.canvas.clearCanvas()
|
|
})
|
|
|
|
return ctx
|
|
}
|
|
|
|
export { test, expect }
|