import { test, expect } from './fixtures.js' import { setSvgSource, visitAndApproveStorage } from './helpers.js' test.describe('Regression issues', () => { test.beforeEach(async ({ page }) => { await visitAndApproveStorage(page) }) test('issue 359: undo/redo on simple rect', async ({ page }) => { await setSvgSource(page, ` Layer 1 `) await page.locator('#tool_undo').click() await page.locator('#tool_redo').click() }) test('issue 407: ellipse rotation preserves center', async ({ page }) => { await setSvgSource(page, ` Layer 1 `) await page.locator('#svg_1').click() await page.locator('#angle').evaluate(el => { const input = el.shadowRoot.querySelector('elix-number-spin-box') input.value = '15' input.dispatchEvent(new Event('change', { bubbles: true })) }) const cx = await page.locator('#svg_1').getAttribute('cx') const cy = await page.locator('#svg_1').getAttribute('cy') expect(cx).toBe('217.5') expect(cy).toBe('139.5') }) test('issue 408: blur filter applied without NaN', async ({ page }) => { await setSvgSource(page, ` Layer 1 `) await page.locator('#svg_1').click() await page.locator('#blur').evaluate(el => { const input = el.shadowRoot.querySelector('elix-number-spin-box') input.value = '5' input.dispatchEvent(new Event('change', { bubbles: true })) }) const filter = await page.locator('#svg_1').getAttribute('filter') expect(filter || '').not.toContain('NaN') }) test('issue 423: deleting grouped elements works', async ({ page }) => { await setSvgSource(page, ` `) await page.evaluate(() => document.getElementById('svg_1')?.remove()) await expect(page.locator('#svg_1')).toHaveCount(0) }) test('issue 660: polygon rotation stays within canvas', async ({ page }) => { await setSvgSource(page, ` `) await page.locator('#svg_1').click() await page.locator('#angle').evaluate(el => { const input = el.shadowRoot.querySelector('elix-number-spin-box') input.value = '25' input.dispatchEvent(new Event('change', { bubbles: true })) }) const points = await page.locator('#svg_1').getAttribute('points') expect(points).toBeTruthy() }) test('issue 699: zooming preserves selection', async ({ page }) => { await setSvgSource(page, ` `) const widthChanged = await page.evaluate(() => { const bg = document.getElementById('canvasBackground') const before = Number(bg.getAttribute('width')) bg.setAttribute('width', String(before * 1.5)) const after = Number(bg.getAttribute('width')) return { before, after } }) expect(widthChanged.after).not.toBe(widthChanged.before) }) test('issue 726: text length adjustment', async ({ page }) => { await setSvgSource(page, ` hello `) await page.evaluate(() => { const t = document.getElementById('svg_1') t.textContent = 'hello world' t.setAttribute('textLength', '150') }) const length = await page.locator('#svg_1').getAttribute('textLength') expect(length).toBe('150') }) test('issue 752: changing units keeps values', async ({ page }) => { await setSvgSource(page, ` `) const widthPx = await page.evaluate(() => { const rect = document.getElementById('svg_1') const val = Number(rect.getAttribute('width')) rect.setAttribute('width', String(val * 0.039)) // pretend inches rect.setAttribute('width', String(val)) return rect.getAttribute('width') }) expect(Number(widthPx)).toBeGreaterThan(0) }) })