openpencil/tests/e2e/panels/basic.spec.ts
Danila Poyarkov 7cfa08aec5 fix(clipboard): normalize glyph advance by fontSize
Figma expects derivedTextData glyph advance values normalized to
font-size units (advance / fontSize), not absolute pixel values.
This caused pasted text to appear horizontally mirrored because
Figma multiplied the already-absolute advances by fontSize again.
2026-05-16 18:02:10 +03:00

65 lines
2.2 KiB
TypeScript

import { expect, test, useEditorSetup } from '#tests/e2e/fixtures'
import { expectDefined } from '#tests/helpers/assert'
const editor = useEditorSetup()
test('layers panel resize increases width', async () => {
const panel = editor.page.getByTestId('layers-panel')
const before = await panel.boundingBox()
expect(before).not.toBeNull()
const handle = editor.page.getByTestId('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 editor.page.mouse.move(cx, cy)
await editor.page.mouse.down()
await editor.page.mouse.move(cx + 80, cy, { steps: 10 })
await editor.page.mouse.up()
await editor.canvas.waitForRender()
const after = expectDefined(await panel.boundingBox(), 'resized layers panel bounds')
expect(after.width).toBeGreaterThan(beforeBounds.width + 40)
editor.canvas.assertNoErrors()
})
test('panel width persists after page reload', async () => {
// Allow Reka's auto-save debounce to flush before recording the width
await editor.page.waitForTimeout(300)
const recordedWidth = expectDefined(
await editor.page.getByTestId('layers-panel').boundingBox(),
'persisted layers panel bounds'
).width
await editor.page.reload()
await editor.canvas.waitForInit()
const after = expectDefined(
await editor.page.getByTestId('layers-panel').boundingBox(),
'reloaded layers panel bounds'
)
expect(Math.abs(after.width - recordedWidth)).toBeLessThanOrEqual(2)
editor.canvas.assertNoErrors()
})
test('Cmd+Backslash hides panels', async () => {
await editor.page.keyboard.press('Meta+\\')
await editor.canvas.waitForRender()
await expect(editor.page.getByTestId('layers-panel')).not.toBeVisible()
editor.canvas.assertNoErrors()
})
test('Cmd+Backslash shows panels again', async () => {
await editor.page.keyboard.press('Meta+\\')
await editor.canvas.waitForRender()
await expect(editor.page.getByTestId('layers-panel')).toBeVisible()
editor.canvas.assertNoErrors()
})