import path from 'path' import { setupPuppeteer } from './e2eUtils' declare const globalStats: { label: string value: number }[] declare function valueToPoint( value: number, index: number, total: number ): { x: number y: number } describe('e2e: svg', () => { const { page, click, count, setValue } = setupPuppeteer() async function assertStats(total: number) { await page().evaluate( total => { const points = globalStats .map((stat, i) => { const point = valueToPoint(stat.value, i, total) return point.x + ',' + point.y }) .join(' ') return document.querySelector('polygon')!.attributes[0].value === points }, [total] ) } async function testSvg(apiType: 'classic' | 'composition') { const baseUrl = `file://${path.resolve( __dirname, `../${apiType}/svg.html` )}` await page().goto(baseUrl) await page().waitFor('svg') expect(await count('g')).toBe(1) expect(await count('polygon')).toBe(1) expect(await count('circle')).toBe(1) expect(await count('text')).toBe(6) expect(await count('label')).toBe(6) expect(await count('button')).toBe(7) expect(await count('input[type="range"]')).toBe(6) await assertStats(6) await click('button.remove') expect(await count('text')).toBe(5) expect(await count('label')).toBe(5) expect(await count('button')).toBe(6) expect(await count('input[type="range"]')).toBe(5) await assertStats(5) await setValue('input[name="newlabel"]', 'foo') await click('#add > button') expect(await count('text')).toBe(6) expect(await count('label')).toBe(6) expect(await count('button')).toBe(7) expect(await count('input[type="range"]')).toBe(6) await assertStats(6) } test('classic', async () => { await testSvg('classic') }) test('composition', async () => { await testSvg('composition') }) })