svgedit
Version:
Powerful SVG-Editor for your browser
55 lines (45 loc) • 2.11 kB
JavaScript
import { test, expect } from './fixtures.js'
import { visitAndApproveStorage } from './helpers.js'
const layerNames = async (page) => {
return page.$$eval('#layerlist tbody tr.layer td.layername', (nodes) =>
nodes.map((n) => n.textContent.trim())
)
}
const toggleVisibilityFor = async (page, name) => {
const row = page.locator('#layerlist tbody tr.layer', {
has: page.locator('td.layername', { hasText: name })
})
await row.locator('td.layervis').click()
}
test.describe('Layers panel', () => {
test.beforeEach(async ({ page }) => {
await visitAndApproveStorage(page)
const panelHandle = page.locator('div#sidepanel_handle').first()
await panelHandle.waitFor({ state: 'visible' })
await panelHandle.click()
await page.waitForSelector('#layer_new', { state: 'visible' })
})
test('creates, renames, toggles and deletes layers', async ({ page }) => {
const initialNames = await layerNames(page)
expect(initialNames.length).toBeGreaterThan(0)
page.once('dialog', (dialog) => dialog.accept('Layer 2'))
await page.click('#layer_new')
await expect.poll(() => layerNames(page)).resolves.toContain('Layer 2')
await page.locator('#layerlist td.layername', { hasText: 'Layer 2' }).click()
page.once('dialog', (dialog) => dialog.accept('Renamed Layer'))
await page.click('#layer_rename')
await expect.poll(() => layerNames(page)).resolves.toContain('Renamed Layer')
await toggleVisibilityFor(page, 'Renamed Layer')
const visibilityClass = await page.$eval(
'#layerlist tbody tr.layer td.layername:has-text("Renamed Layer")',
(node) => node.parentElement?.querySelector('td.layervis')?.className || ''
)
expect(visibilityClass).toContain('layerinvis')
const panelHandle = page.locator('div#sidepanel_handle').first()
await panelHandle.click()
await panelHandle.click()
await page.locator('#layerlist td.layername', { hasText: 'Renamed Layer' }).click()
await page.click('#layer_delete')
await expect.poll(() => layerNames(page)).resolves.not.toContain('Renamed Layer')
})
})