import { test, expect } from './fixtures.js'
import { setSvgSource, visitAndApproveStorage } from './helpers.js'
test.describe('Tool scenarios', () => {
test.beforeEach(async ({ page }) => {
await visitAndApproveStorage(page)
})
test('draws basic shapes (circle/ellipse)', async ({ page }) => {
await setSvgSource(page, ``)
await expect(page.locator('#svg_1')).toHaveAttribute('r', /.+/)
await expect(page.locator('#svg_2')).toHaveAttribute('rx', /.+/)
})
test('rectangle tools and transforms', async ({ page }) => {
await setSvgSource(page, ``)
const rect = page.locator('#svg_1')
await expect(rect).toHaveAttribute('width', /.+/)
await page.evaluate(() => {
const el = document.getElementById('svg_1')
el.setAttribute('transform', 'rotate(20 190 190)')
})
const transform = await rect.getAttribute('transform')
expect(transform || '').toContain('rotate')
})
test('freehand path editing', async ({ page }) => {
await setSvgSource(page, ``)
await expect(page.locator('#svg_1')).toHaveAttribute('d', /.+/)
})
test('line operations', async ({ page }) => {
await setSvgSource(page, ``)
const line = page.locator('#svg_1')
await expect(line).toHaveAttribute('x2', /.+/)
await page.evaluate(() => {
document.getElementById('svg_1').setAttribute('stroke-width', '3')
})
await expect(line).toHaveAttribute('stroke-width', '3')
})
test('polygon and star tools', async ({ page }) => {
await setSvgSource(page, ``)
await expect(page.locator('#svg_1')).toHaveAttribute('points', /.+/)
await expect(page.locator('#svg_2')).toHaveAttribute('points', /.+/)
})
test('shape library and image insertion', async ({ page }) => {
await setSvgSource(page, ``)
await expect(page.locator('#svg_1')).toBeVisible()
await page.evaluate(() => {
const img = document.createElementNS('http://www.w3.org/2000/svg', 'image')
img.setAttribute('id', 'svg_2')
img.setAttribute('href', './images/logo.svg')
img.setAttribute('x', '80')
img.setAttribute('y', '80')
img.setAttribute('width', '60')
img.setAttribute('height', '60')
document.querySelector('svg g').append(img)
})
await expect(page.locator('image[href="./images/logo.svg"]')).toBeVisible()
})
})