- Remove non-null assertions from context menu, panels, perf, properties, MCP, SVG, undo, and instance override tests - Add explicit store, renderer, node, and bounding-box guards - Validate affected engine and E2E tests
82 lines
2.5 KiB
TypeScript
82 lines
2.5 KiB
TypeScript
import { test, expect, type Page } from '@playwright/test'
|
|
|
|
import { expectDefined } from '#tests/helpers/assert'
|
|
import { CanvasHelper } from '#tests/helpers/canvas'
|
|
|
|
let page: Page
|
|
let canvas: CanvasHelper
|
|
|
|
test.describe.configure({ mode: 'serial' })
|
|
|
|
test.beforeAll(async ({ browser }) => {
|
|
page = await browser.newPage()
|
|
await page.goto('/')
|
|
canvas = new CanvasHelper(page)
|
|
await canvas.waitForInit()
|
|
})
|
|
|
|
test.afterAll(async () => {
|
|
await page.close()
|
|
})
|
|
|
|
test('layers panel resize increases width', async () => {
|
|
const panel = page.locator('[data-test-id="layers-panel"]')
|
|
const before = await panel.boundingBox()
|
|
expect(before).not.toBeNull()
|
|
|
|
const handle = page.locator('[data-test-id="left-splitter-handle"]')
|
|
const handleBox = await handle.boundingBox()
|
|
expect(handleBox).not.toBeNull()
|
|
|
|
const handleBounds = expectDefined(handleBox, 'splitter handle bounds')
|
|
const beforeBounds = expectDefined(before, 'layers panel bounds')
|
|
const cx = handleBounds.x + handleBounds.width / 2
|
|
const cy = handleBounds.y + handleBounds.height / 2
|
|
|
|
await page.mouse.move(cx, cy)
|
|
await page.mouse.down()
|
|
await page.mouse.move(cx + 80, cy, { steps: 10 })
|
|
await page.mouse.up()
|
|
await canvas.waitForRender()
|
|
|
|
const after = expectDefined(await panel.boundingBox(), 'resized layers panel bounds')
|
|
expect(after.width).toBeGreaterThan(beforeBounds.width + 40)
|
|
canvas.assertNoErrors()
|
|
})
|
|
|
|
test('panel width persists after page reload', async () => {
|
|
// Allow Reka's auto-save debounce to flush before recording the width
|
|
await page.waitForTimeout(300)
|
|
const recordedWidth = expectDefined(
|
|
await page.locator('[data-test-id="layers-panel"]').boundingBox(),
|
|
'persisted layers panel bounds'
|
|
).width
|
|
|
|
await page.reload()
|
|
canvas = new CanvasHelper(page)
|
|
await canvas.waitForInit()
|
|
|
|
const after = expectDefined(
|
|
await page.locator('[data-test-id="layers-panel"]').boundingBox(),
|
|
'reloaded layers panel bounds'
|
|
)
|
|
expect(Math.abs(after.width - recordedWidth)).toBeLessThanOrEqual(2)
|
|
canvas.assertNoErrors()
|
|
})
|
|
|
|
test('Cmd+Backslash hides panels', async () => {
|
|
await page.keyboard.press('Meta+\\')
|
|
await canvas.waitForRender()
|
|
|
|
await expect(page.locator('[data-test-id="layers-panel"]')).not.toBeVisible()
|
|
canvas.assertNoErrors()
|
|
})
|
|
|
|
test('Cmd+Backslash shows panels again', async () => {
|
|
await page.keyboard.press('Meta+\\')
|
|
await canvas.waitForRender()
|
|
|
|
await expect(page.locator('[data-test-id="layers-panel"]')).toBeVisible()
|
|
canvas.assertNoErrors()
|
|
})
|