|
- import { captureScreenshot, expect, test } from './fixtures'
- import { TeachingContractMock } from './teaching-contract-mock'
-
- test.describe('教员只读预览工作台', () => {
- test('按原型呈现完整工作台且所有演练保持浏览器本地只读', async ({ page }, testInfo) => {
- await page.setViewportSize({ width: 1920, height: 1080 })
- const contract = new TeachingContractMock('admin')
- await contract.install(page)
-
- await page.goto('/teaching/virtual-training/preview/assignment-virtual-common')
-
- const workbench = page.locator('.teaching-preview-workbench')
- await expect(workbench).toBeVisible()
- await expect(workbench).toContainText('教员预览 · 不计成绩')
- await expect(workbench.locator('.preview-step-panel')).toContainText('识别作业对象')
- await expect(workbench.locator('.preview-runtime-viewport canvas')).toBeVisible()
- await expect(workbench.locator('.preview-digital-teacher')).toContainText('语音服务未接入')
- await expect(workbench.locator('.preview-digital-teacher img')).toHaveJSProperty('complete', true)
- await expect(workbench.locator('iframe')).toHaveCount(0)
- await captureScreenshot(page, testInfo, 'teaching-teacher-preview-initial')
-
- const writesBefore = contract.requests.filter((request) => ['POST', 'PUT', 'DELETE'].includes(request.method)).length
- await workbench.getByRole('button', { name: '判定详情', exact: true }).click()
- await expect(workbench.locator('.preview-rule-drawer')).toContainText('IDENTIFY_TARGET')
- await expect(workbench.locator('.preview-rule-drawer')).toContainText('这里只展示发布快照中的公开字段')
-
- await workbench.getByRole('button', { name: '引导完成', exact: true }).click()
- await expect(workbench.getByRole('button', { name: /下一步/ })).toBeEnabled()
- await workbench.getByRole('button', { name: /下一步/ }).click()
- await expect(workbench.getByRole('heading', { name: /第 2 步:完成检修操作/ })).toBeVisible()
-
- await workbench.getByRole('button', { name: /过程记录/ }).click()
- const drawer = page.locator('.el-drawer:visible')
- await expect(drawer).toContainText('不会提交到教学事件接口')
- await expect(drawer).toContainText('本地试走步骤')
- const writesAfter = contract.requests.filter((request) => ['POST', 'PUT', 'DELETE'].includes(request.method)).length
- expect(writesAfter).toBe(writesBefore)
-
- await page.keyboard.press('Escape')
- await expect(drawer).toBeHidden()
- await captureScreenshot(page, testInfo, 'teaching-teacher-preview-workbench')
-
- await workbench.getByRole('button', { name: '返回任务列表', exact: true }).click()
- await expect(page).toHaveURL(/\/teaching\/virtual-training$/)
- })
- })
|