2026-02-28 04:35:52 +00:00
|
|
|
import { test, expect, type Page } from '@playwright/test'
|
2026-02-28 04:32:15 +00:00
|
|
|
|
2026-05-05 23:22:08 +00:00
|
|
|
import { CanvasHelper } from '#tests/helpers/canvas'
|
|
|
|
|
|
2026-02-28 04:35:52 +00:00
|
|
|
let page: Page
|
|
|
|
|
let canvas: CanvasHelper
|
|
|
|
|
|
|
|
|
|
test.describe.configure({ mode: 'serial' })
|
|
|
|
|
|
|
|
|
|
test.beforeAll(async ({ browser }) => {
|
|
|
|
|
page = await browser.newPage()
|
2026-02-28 05:39:19 +00:00
|
|
|
await page.goto('/?test&no-chrome')
|
2026-02-28 04:35:52 +00:00
|
|
|
canvas = new CanvasHelper(page)
|
|
|
|
|
await canvas.waitForInit()
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
test.afterAll(async () => {
|
|
|
|
|
await page.close()
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
test.beforeEach(async () => {
|
|
|
|
|
await canvas.clearCanvas()
|
|
|
|
|
})
|
|
|
|
|
|
2026-02-28 04:44:20 +00:00
|
|
|
async function expectCanvas(name: string) {
|
2026-02-28 05:39:19 +00:00
|
|
|
canvas.assertNoErrors()
|
2026-02-28 04:44:20 +00:00
|
|
|
const buffer = await canvas.canvas.screenshot()
|
|
|
|
|
expect(buffer).toMatchSnapshot(`${name}.png`)
|
|
|
|
|
}
|
|
|
|
|
|
2026-02-28 04:35:52 +00:00
|
|
|
test('empty canvas', async () => {
|
2026-02-28 04:44:20 +00:00
|
|
|
await expectCanvas('empty-canvas')
|
2026-02-28 04:35:52 +00:00
|
|
|
})
|
|
|
|
|
|
|
|
|
|
test('draw rectangle', async () => {
|
|
|
|
|
await canvas.drawRect(100, 100, 200, 150)
|
2026-02-28 04:44:20 +00:00
|
|
|
await expectCanvas('draw-rectangle')
|
2026-02-28 04:35:52 +00:00
|
|
|
})
|
|
|
|
|
|
|
|
|
|
test('draw ellipse', async () => {
|
|
|
|
|
await canvas.drawEllipse(100, 100, 200, 150)
|
2026-02-28 04:44:20 +00:00
|
|
|
await expectCanvas('draw-ellipse')
|
2026-02-28 04:35:52 +00:00
|
|
|
})
|
|
|
|
|
|
|
|
|
|
test('draw rectangle then move it', async () => {
|
|
|
|
|
await canvas.drawRect(100, 100, 200, 150)
|
|
|
|
|
await canvas.selectTool('select')
|
|
|
|
|
await canvas.drag(200, 175, 400, 300)
|
|
|
|
|
await canvas.waitForRender()
|
2026-02-28 04:44:20 +00:00
|
|
|
await expectCanvas('draw-rectangle-then-move-it')
|
2026-02-28 04:35:52 +00:00
|
|
|
})
|
|
|
|
|
|
|
|
|
|
test('draw and delete', async () => {
|
|
|
|
|
await canvas.drawRect(100, 100, 200, 150)
|
|
|
|
|
await canvas.deleteSelection()
|
2026-02-28 04:44:20 +00:00
|
|
|
await expectCanvas('draw-and-delete')
|
2026-02-28 04:35:52 +00:00
|
|
|
})
|
|
|
|
|
|
|
|
|
|
test('draw and undo', async () => {
|
|
|
|
|
await canvas.drawRect(100, 100, 200, 150)
|
|
|
|
|
await canvas.undo()
|
2026-02-28 04:44:20 +00:00
|
|
|
await expectCanvas('draw-and-undo')
|
2026-02-28 04:32:15 +00:00
|
|
|
})
|