From 2e3c5aaf5fec4a5a5f631d80ffa4d6e25fe6877d Mon Sep 17 00:00:00 2001 From: CodinCat Date: Sat, 21 Dec 2019 01:56:36 +0900 Subject: [PATCH] test(e2e): add test for svg example (#551) --- packages/vue/examples/__tests__/svg.spec.ts | 76 +++++++++++++++++++++ packages/vue/examples/classic/svg.html | 32 +++------ packages/vue/examples/composition/svg.html | 17 ++--- 3 files changed, 94 insertions(+), 31 deletions(-) create mode 100644 packages/vue/examples/__tests__/svg.spec.ts diff --git a/packages/vue/examples/__tests__/svg.spec.ts b/packages/vue/examples/__tests__/svg.spec.ts new file mode 100644 index 00000000..b340601b --- /dev/null +++ b/packages/vue/examples/__tests__/svg.spec.ts @@ -0,0 +1,76 @@ +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') + }) +}) diff --git a/packages/vue/examples/classic/svg.html b/packages/vue/examples/classic/svg.html index 6be9add8..bf1115ce 100644 --- a/packages/vue/examples/classic/svg.html +++ b/packages/vue/examples/classic/svg.html @@ -66,21 +66,6 @@ const Polygraph = { AxisLabel } } - -// math helper... -function valueToPoint (value, index, total) { - var x = 0 - var y = -value * 0.8 - var angle = Math.PI * 2 / total * index - var cos = Math.cos(angle) - var sin = Math.sin(angle) - var tx = x * cos - y * sin + 100 - var ty = x * sin + y * cos + 100 - return { - x: tx, - y: ty - } -} @@ -104,20 +89,21 @@ function valueToPoint (value, index, total) {