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, ` Layer 1 `) 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() }) })