interaction.spec.ts 2.8 KB
import { expect, test } from '@playwright/test'
import { mockFlowBootstrap } from '../helpers/mock-flow-api'

test('新项目页面应支持新增节点并删除当前选中节点', async ({ page }) => {
  await mockFlowBootstrap(page)

  await page.goto('/')

  await expect(page.getByTestId('node-count-value')).toHaveText('2')

  await page.getByTestId('add-approval-node').click()

  await expect(page.getByTestId('node-count-value')).toHaveText('3')
  await expect(page.getByTestId('selected-node-label')).toContainText('审批节点')

  await page.getByTestId('delete-selected-node').click()

  await expect(page.getByTestId('node-count-value')).toHaveText('2')
  await expect(page.getByTestId('selected-node-label')).toHaveText('未选中节点')
})

test('新项目页面应支持缩放操作并打开预览面板', async ({ page }) => {
  await mockFlowBootstrap(page)

  await page.goto('/')

  await expect(page.getByTestId('zoom-value')).toHaveText('1.0')

  await page.getByTestId('toolbar-zoomIn').click()
  await expect(page.getByTestId('zoom-value')).toHaveText('1.1')

  await page.getByTestId('toolbar-actualView').click()
  await expect(page.getByTestId('zoom-value')).toHaveText('1.0')

  await page.getByTestId('open-preview-panel').click()
  await expect(page.getByTestId('preview-panel')).toBeVisible()
  await expect(page.getByTestId('preview-panel')).toContainText('审批节点')
})

test('新项目页面应支持更新节点名称并创建连线', async ({ page }) => {
  await mockFlowBootstrap(page)

  await page.goto('/')

  await page.getByTestId('node-chip-start').click()
  await expect(page.getByTestId('selected-node-label')).toContainText('开始节点')

  await page.getByTestId('selected-node-name-input').fill('发起流程')
  await page.getByTestId('save-node-name').click()
  await expect(page.getByTestId('selected-node-label')).toContainText('发起流程')

  await page.getByTestId('add-copy-node').click()
  await expect(page.getByTestId('node-count-value')).toHaveText('3')

  await page.getByTestId('node-chip-approve').click()
  await page.getByTestId('create-edge-from-selection').click()

  await expect(page.getByTestId('edge-count-value')).toHaveText('2')
  await expect(page.getByTestId('selected-count-value')).toHaveText('2')
})

test('新项目页面应支持撤销与重做图数据改动', async ({ page }) => {
  await mockFlowBootstrap(page)

  await page.goto('/')

  await expect(page.getByTestId('node-count-value')).toHaveText('2')

  await page.getByTestId('add-copy-node').click()
  await expect(page.getByTestId('node-count-value')).toHaveText('3')

  await page.getByTestId('command-undo').click()
  await expect(page.getByTestId('node-count-value')).toHaveText('2')

  await page.getByTestId('command-redo').click()
  await expect(page.getByTestId('node-count-value')).toHaveText('3')
})