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, ``)
await page.locator('#tool_undo').click()
await page.locator('#tool_redo').click()
})
test('issue 407: ellipse rotation preserves center', 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 = '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, ``)
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, ``)
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)
})
})