test(milestone): [milestone] update milestone E2E test (#980)

This commit is contained in:
chenxi-20 2023-11-30 20:34:42 +08:00 committed by GitHub
parent eed4535d34
commit 71d63ba4d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 43 additions and 34 deletions

View File

@ -2,7 +2,7 @@ import { test, expect } from '@playwright/test'
test('基本用法', async ({ page }) => { test('基本用法', async ({ page }) => {
page.on('pageerror', (exception) => expect(exception).not.toBeNull()) page.on('pageerror', (exception) => expect(exception).not.toBeNull())
await page.goto('http://127.0.0.1:7130/pc/milestone/basic-usage') await page.goto('milestone#basic-usage')
const nodes = page.locator('.tiny-milestone__node') const nodes = page.locator('.tiny-milestone__node')
const nodeIcons = page.locator('.tiny-milestone__icon') const nodeIcons = page.locator('.tiny-milestone__icon')
@ -63,17 +63,20 @@ test('基本用法', async ({ page }) => {
await expect(nodeTitles).toHaveCount(nodeCount) await expect(nodeTitles).toHaveCount(nodeCount)
await expect(nodeDates).toHaveCount(nodeCount) await expect(nodeDates).toHaveCount(nodeCount)
for (let i = 0; i < nodeCount; i++) { for (let i = 0; i < nodeCount; i++) {
await expect(nodes.nth(i)).toHaveCSS('width', '128.484px') const { width, height } = await nodes.nth(i).boundingBox()
await expect(nodes.nth(i)).toHaveCSS('height', '88px') await expect(width).toBeGreaterThanOrEqual(118)
await expect(height).toBeGreaterThanOrEqual(88)
await expect(nodeLines.nth(i)).toHaveCSS('height', '4px') await expect(nodeLines.nth(i)).toHaveCSS('height', '4px')
await expect(nodeIcons.nth(i)).toHaveClass(iconClasss[i]) await expect(nodeIcons.nth(i)).toHaveClass(iconClasss[i])
await expect(nodeTitles.nth(i)).toHaveText(titles[i]) await expect(nodeTitles.nth(i)).toHaveText(titles[i])
await expect(nodeDates.nth(i)).toHaveText(/2018-9/) await expect(nodeDates.nth(i)).toHaveText(/2018-9/)
if (i < 5) { if (i < 5) {
await expect(nodeLines.nth(i)).toHaveCSS('width', '128.484px') const { width: lineWidth } = await nodeLines.nth(i).boundingBox()
await expect(lineWidth).toBeGreaterThanOrEqual(118)
} else { } else {
await expect(nodeLines.nth(i)).toHaveCSS('width', '0px') const { width: lineWidth } = await nodeLines.nth(i).boundingBox()
await expect(lineWidth).toBeGreaterThanOrEqual(0)
} }
if (i < 2) { if (i < 2) {
await expect(nodeIcons.nth(i).locator('svg')).toHaveCSS('font-size', '12px') await expect(nodeIcons.nth(i).locator('svg')).toHaveCSS('font-size', '12px')
@ -81,10 +84,8 @@ test('基本用法', async ({ page }) => {
await expect(nodeIcons.nth(i)).toHaveText(String(i - 1)) await expect(nodeIcons.nth(i)).toHaveText(String(i - 1))
} }
if (i < 4) { if (i < 4) {
const { y, width, height } = await flags.nth(i).boundingBox() await expect(flags.nth(i)).toHaveCSS('width', '58px')
await expect(y).toBeCloseTo(290, 2) await expect(flags.nth(i)).toHaveCSS('padding', '0px')
await expect(width).toEqual(58)
await expect(height).toEqual(34)
await expect(flags.nth(i)).toHaveText(flagContents[i]) await expect(flags.nth(i)).toHaveText(flagContents[i])
await expect(flagLines.nth(i)).toHaveCSS('width', '1px') await expect(flagLines.nth(i)).toHaveCSS('width', '1px')
await expect(flagLines.nth(i)).toHaveCSS('height', '30px') await expect(flagLines.nth(i)).toHaveCSS('height', '30px')

View File

@ -2,9 +2,9 @@ import { test, expect } from '@playwright/test'
test('节点上下方内容', async ({ page }) => { test('节点上下方内容', async ({ page }) => {
page.on('pageerror', (exception) => expect(exception).not.toBeNull()) page.on('pageerror', (exception) => expect(exception).not.toBeNull())
await page.goto('http://127.0.0.1:7130/pc/milestone/custom-bottom') await page.goto('milestone#custom-bottom-top')
const descList = page.locator('.tiny-milestone__description > span') const descList = page.locator('.tiny-milestone__description')
const nodeCount = 6 const nodeCount = 6
const topTexts = page.locator('.tiny-milestone__node > span') const topTexts = page.locator('.tiny-milestone__node > span')
const texts = ['completed', 'completed', 'doing', 'cancel', 'back', 'end'] const texts = ['completed', 'completed', 'doing', 'cancel', 'back', 'end']

View File

@ -2,7 +2,7 @@ import { test, expect } from '@playwright/test'
test('自定义旗帜内容', async ({ page }) => { test('自定义旗帜内容', async ({ page }) => {
page.on('pageerror', (exception) => expect(exception).not.toBeNull()) page.on('pageerror', (exception) => expect(exception).not.toBeNull())
await page.goto('http://127.0.0.1:7130/pc/milestone/custom-flag') await page.goto('milestone#custom-flag')
const flags = page.locator('.tiny-milestone__flag-content > span') const flags = page.locator('.tiny-milestone__flag-content > span')
const flagContents = ['引导用户按照流程完成任务', '欢迎使用vui', 'test8', 'test6'] const flagContents = ['引导用户按照流程完成任务', '欢迎使用vui', 'test8', 'test6']

View File

@ -2,7 +2,7 @@ import { test, expect } from '@playwright/test'
test('自定义节点图标', async ({ page }) => { test('自定义节点图标', async ({ page }) => {
page.on('pageerror', (exception) => expect(exception).not.toBeNull()) page.on('pageerror', (exception) => expect(exception).not.toBeNull())
await page.goto('http://127.0.0.1:7130/pc/milestone/custom-icon-slot') await page.goto('milestone#custom-icon-slot')
const nodeIcons = page.locator('.tiny-milestone__icon') const nodeIcons = page.locator('.tiny-milestone__icon')
const nodeCount = 6 const nodeCount = 6

View File

@ -2,7 +2,7 @@ import { test, expect } from '@playwright/test'
test('数据字段映射', async ({ page }) => { test('数据字段映射', async ({ page }) => {
page.on('pageerror', (exception) => expect(exception).not.toBeNull()) page.on('pageerror', (exception) => expect(exception).not.toBeNull())
await page.goto('http://127.0.0.1:7130/pc/milestone/data-field-mapping') await page.goto('milestone#data-field-mapping')
const flags = page.locator('.tiny-milestone__flag-content') const flags = page.locator('.tiny-milestone__flag-content')
const nodeIcons = page.locator('.tiny-milestone__icon') const nodeIcons = page.locator('.tiny-milestone__icon')

View File

@ -2,7 +2,7 @@ import { test, expect } from '@playwright/test'
test('旗子数据来源', async ({ page }) => { test('旗子数据来源', async ({ page }) => {
page.on('pageerror', (exception) => expect(exception).not.toBeNull()) page.on('pageerror', (exception) => expect(exception).not.toBeNull())
await page.goto('http://127.0.0.1:7130/pc/milestone/flag-before') await page.goto('milestone#flag-before')
const flags = page.locator('.tiny-milestone__flag-content') const flags = page.locator('.tiny-milestone__flag-content')
const flagLines = page.locator('.tiny-milestone__flag-line') const flagLines = page.locator('.tiny-milestone__flag-line')
@ -18,11 +18,12 @@ test('旗子数据来源', async ({ page }) => {
for (let i = 0; i < flagCount; i++) { for (let i = 0; i < flagCount; i++) {
const { x, y, width, height } = await flags.nth(i).boundingBox() const { x, y, width, height } = await flags.nth(i).boundingBox()
const { y: lineY, height: lineHeight } = await flagLines.nth(i).boundingBox()
await expect(x).toBeCloseTo(afterX[i], 2) await expect(x).toBeGreaterThanOrEqual(afterX[i])
await expect(y).toBeCloseTo(371, 2) await expect(lineY - lineHeight).toBeGreaterThanOrEqual(y)
await expect(width).toEqual(58) await expect(width).toEqual(58)
await expect(height).toEqual(34) await expect(height).toBeGreaterThanOrEqual(34)
await expect(flags.nth(i)).toHaveText(flagAfterContents[i]) await expect(flags.nth(i)).toHaveText(flagAfterContents[i])
await expect(flagLines.nth(i)).toHaveCSS('width', '1px') await expect(flagLines.nth(i)).toHaveCSS('width', '1px')
await expect(flagLines.nth(i)).toHaveCSS('height', '30px') await expect(flagLines.nth(i)).toHaveCSS('height', '30px')
@ -34,11 +35,12 @@ test('旗子数据来源', async ({ page }) => {
for (let i = 0; i < flagCount; i++) { for (let i = 0; i < flagCount; i++) {
const { x, y, width, height } = await flags.nth(i).boundingBox() const { x, y, width, height } = await flags.nth(i).boundingBox()
const { y: lineY, height: lineHeight } = await flagLines.nth(i).boundingBox()
await expect(x).toBeCloseTo(BeforeX[i], 2) await expect(x).toBeGreaterThanOrEqual(BeforeX[i], 2)
await expect(y).toBeCloseTo(371, 2) await expect(lineY - lineHeight).toBeGreaterThanOrEqual(y)
await expect(width).toEqual(58) await expect(width).toEqual(58)
await expect(height).toEqual(34) await expect(height).toBeGreaterThanOrEqual(34)
await expect(flags.nth(i)).toHaveText(flagBeforeContents[i]) await expect(flags.nth(i)).toHaveText(flagBeforeContents[i])
await expect(flagLines.nth(i)).toHaveCSS('width', '1px') await expect(flagLines.nth(i)).toHaveCSS('width', '1px')
await expect(flagLines.nth(i)).toHaveCSS('height', '30px') await expect(flagLines.nth(i)).toHaveCSS('height', '30px')

View File

@ -2,7 +2,7 @@ import { test, expect } from '@playwright/test'
test('线条颜色和间距', async ({ page }) => { test('线条颜色和间距', async ({ page }) => {
page.on('pageerror', (exception) => expect(exception).not.toBeNull()) page.on('pageerror', (exception) => expect(exception).not.toBeNull())
await page.goto('http://127.0.0.1:7130/pc/milestone/line-style') await page.goto('milestone#line-style')
const nodeLines = page.locator('.tiny-milestone__line') const nodeLines = page.locator('.tiny-milestone__line')
const nodes = page.locator('.tiny-milestone__node') const nodes = page.locator('.tiny-milestone__node')
@ -19,7 +19,7 @@ test('线条颜色和间距', async ({ page }) => {
await expect(nodeLines).toHaveCount(nodeCount) await expect(nodeLines).toHaveCount(nodeCount)
await expect(nodes).toHaveCount(nodeCount) await expect(nodes).toHaveCount(nodeCount)
for (let i = 0; i < nodeCount; i++) { for (let i = 0; i < nodeCount; i++) {
await expect(nodes.nth(i)).toHaveCSS('width', '120px') await expect(nodes.nth(i)).toHaveCSS('width', '88px')
await expect(nodeLines.nth(i)).toHaveCSS('background-color', lineColors[i]) await expect(nodeLines.nth(i)).toHaveCSS('background-color', lineColors[i])
} }
}) })

View File

@ -2,7 +2,7 @@ import { test, expect } from '@playwright/test'
test('事件', async ({ page }) => { test('事件', async ({ page }) => {
page.on('pageerror', (exception) => expect(exception).not.toBeNull()) page.on('pageerror', (exception) => expect(exception).not.toBeNull())
await page.goto('http://127.0.0.1:7130/pc/milestone/milestone-events') await page.goto('milestone#milestone-events')
const node = page.locator('.tiny-milestone__node').first() const node = page.locator('.tiny-milestone__node').first()
const flag = page.locator('.tiny-milestone__flag-content').first() const flag = page.locator('.tiny-milestone__flag-content').first()

View File

@ -2,7 +2,7 @@ import { test, expect } from '@playwright/test'
test('序号显示', async ({ page }) => { test('序号显示', async ({ page }) => {
page.on('pageerror', (exception) => expect(exception).not.toBeNull()) page.on('pageerror', (exception) => expect(exception).not.toBeNull())
await page.goto('http://127.0.0.1:7130/pc/milestone/show-number') await page.goto('milestone#show-number')
const button = page.getByRole('button').filter({ hasText: '设置show-number值为false' }) const button = page.getByRole('button').filter({ hasText: '设置show-number值为false' })
const nodes = page.locator('.tiny-milestone__node') const nodes = page.locator('.tiny-milestone__node')
@ -66,17 +66,20 @@ test('序号显示', async ({ page }) => {
await expect(nodeTitles).toHaveCount(nodeCount) await expect(nodeTitles).toHaveCount(nodeCount)
await expect(nodeDates).toHaveCount(nodeCount) await expect(nodeDates).toHaveCount(nodeCount)
for (let i = 0; i < nodeCount; i++) { for (let i = 0; i < nodeCount; i++) {
await expect(nodes.nth(i)).toHaveCSS('width', '128.484px') const { width, height } = await nodes.nth(i).boundingBox()
await expect(nodes.nth(i)).toHaveCSS('height', '102px') await expect(width).toBeGreaterThanOrEqual(118)
await expect(height).toBeGreaterThanOrEqual(88)
await expect(nodeLines.nth(i)).toHaveCSS('height', '4px') await expect(nodeLines.nth(i)).toHaveCSS('height', '4px')
await expect(nodeIcons.nth(i)).toHaveClass(iconClasss[i]) await expect(nodeIcons.nth(i)).toHaveClass(iconClasss[i])
await expect(nodeTitles.nth(i)).toHaveText(titles[i]) await expect(nodeTitles.nth(i)).toHaveText(titles[i])
await expect(nodeDates.nth(i)).toHaveText(/2018-9/) await expect(nodeDates.nth(i)).toHaveText(/2018-9/)
if (i < 5) { if (i < 5) {
await expect(nodeLines.nth(i)).toHaveCSS('width', '128.484px') const { width: lineWidth } = await nodeLines.nth(i).boundingBox()
await expect(lineWidth).toBeGreaterThanOrEqual(118)
} else { } else {
await expect(nodeLines.nth(i)).toHaveCSS('width', '0px') const { width: lineWidth } = await nodeLines.nth(i).boundingBox()
await expect(lineWidth).toBeGreaterThanOrEqual(0)
} }
if (i < 2) { if (i < 2) {
await expect(nodeIcons.nth(i).locator('svg')).toHaveCSS('font-size', '12px') await expect(nodeIcons.nth(i).locator('svg')).toHaveCSS('font-size', '12px')

View File

@ -2,7 +2,7 @@ import { test, expect } from '@playwright/test'
test('实心显示', async ({ page }) => { test('实心显示', async ({ page }) => {
page.on('pageerror', (exception) => expect(exception).not.toBeNull()) page.on('pageerror', (exception) => expect(exception).not.toBeNull())
await page.goto('http://127.0.0.1:7130/pc/milestone/solid-style') await page.goto('milestone#solid-style')
const button = page.getByRole('button').filter({ hasText: '设置solid值为true' }) const button = page.getByRole('button').filter({ hasText: '设置solid值为true' })
const nodes = page.locator('.tiny-milestone__node') const nodes = page.locator('.tiny-milestone__node')
@ -66,17 +66,20 @@ test('实心显示', async ({ page }) => {
await expect(nodeTitles).toHaveCount(nodeCount) await expect(nodeTitles).toHaveCount(nodeCount)
await expect(nodeDates).toHaveCount(nodeCount) await expect(nodeDates).toHaveCount(nodeCount)
for (let i = 0; i < nodeCount; i++) { for (let i = 0; i < nodeCount; i++) {
await expect(nodes.nth(i)).toHaveCSS('width', '128.484px') const { width, height } = await nodes.nth(i).boundingBox()
await expect(nodes.nth(i)).toHaveCSS('height', '102px') await expect(width).toBeGreaterThanOrEqual(118)
await expect(height).toBeGreaterThanOrEqual(88)
await expect(nodeLines.nth(i)).toHaveCSS('height', '4px') await expect(nodeLines.nth(i)).toHaveCSS('height', '4px')
await expect(nodeIcons.nth(i)).toHaveClass(iconClasss[i]) await expect(nodeIcons.nth(i)).toHaveClass(iconClasss[i])
await expect(nodeTitles.nth(i)).toHaveText(titles[i]) await expect(nodeTitles.nth(i)).toHaveText(titles[i])
await expect(nodeDates.nth(i)).toHaveText(/2018-9/) await expect(nodeDates.nth(i)).toHaveText(/2018-9/)
if (i < 5) { if (i < 5) {
await expect(nodeLines.nth(i)).toHaveCSS('width', '128.484px') const { width: lineWidth } = await nodeLines.nth(i).boundingBox()
await expect(lineWidth).toBeGreaterThanOrEqual(118)
} else { } else {
await expect(nodeLines.nth(i)).toHaveCSS('width', '0px') const { width: lineWidth } = await nodeLines.nth(i).boundingBox()
await expect(lineWidth).toBeGreaterThanOrEqual(0)
} }
if (i < 2) { if (i < 2) {
await expect(nodeIcons.nth(i).locator('svg')).toHaveCSS('font-size', '12px') await expect(nodeIcons.nth(i).locator('svg')).toHaveCSS('font-size', '12px')