|
- import { captureScreenshot, expect, test } from './fixtures'
-
- const liveAccessToken = process.env.E2E_LIVE_ACCESS_TOKEN?.trim() ?? ''
-
- test.use({ trace: 'off', video: 'off' })
-
- test.describe('教学实施真实环境只读联调', () => {
- test.skip(!liveAccessToken, '未配置 E2E_LIVE_ACCESS_TOKEN,跳过真实 API / KingBase 只读联调')
-
- test.beforeEach(async ({ page }) => {
- await page.addInitScript((accessToken) => {
- localStorage.removeItem('unreal-tran:web:access-token:v1')
- localStorage.removeItem('unreal-tran:web:refresh-token:v1')
- localStorage.removeItem('unreal-tran:web:remember:v1')
- sessionStorage.setItem('unreal-tran:web:access-token:v1', accessToken)
- }, liveAccessToken)
- })
-
- test('六个教学入口读取真实 UAT 保留数据并生成验收截图', async ({ page }, testInfo) => {
- const visitTaskCenter = async (path: string, heading: string, uatCode: string, screenshotName: string) => {
- await page.goto(path)
- await expect(page).toHaveURL(new RegExp(`${path.replaceAll('/', '\\/')}$`))
- await expect(page.getByRole('heading', { name: heading, exact: true })).toBeVisible()
- await expect(page.locator('.ttc-assignment-card').first()).toBeVisible()
- await expect(page.getByText(uatCode, { exact: false }).first()).toBeVisible()
- await expect.poll(async () => page.locator('.ttc-assignment-card img').first().evaluate((image: HTMLImageElement) => image.complete && image.naturalWidth > 0)).toBe(true)
- await expect(page.locator('iframe')).toHaveCount(0)
- await captureScreenshot(page, testInfo, screenshotName)
- }
-
- await visitTaskCenter('/teaching/virtual-training', '虚拟仿真任务管理', 'UAT-TEACH-VIRTUAL-001', '真实环境-01-虚拟仿真')
- await visitTaskCenter('/teaching/physical-training', '实装实训任务管理', 'UAT-TEACH-PHYSICAL-001', '真实环境-02-实装实训')
- await visitTaskCenter('/teaching/confrontation', '对抗训练任务管理', 'UAT-TEACH-CONFRONTATION-001', '真实环境-03-对抗训练')
-
- await page.goto('/teaching/immersive')
- await expect(page.getByRole('heading', { name: '沉浸交互与外设联调', exact: true })).toBeVisible()
- await expect(page.getByTestId('immersive-device-panel')).toBeVisible()
- await expect(page.getByTestId('immersive-viewer-panel')).toBeVisible()
- await expect(page.locator('.immersive-viewer canvas')).toBeVisible({ timeout: 30_000 })
- const previewSelector = page.locator('.xr-v2-selection-row .el-select').first()
- await previewSelector.click()
- await expect(page.locator('.el-select-dropdown:visible').getByText(/UAT-TEACH-VIRTUAL-00[12]/).first()).toBeVisible()
- await page.keyboard.press('Escape')
- await page.locator('.route-view').evaluate((element) => element.scrollTo({ top: 0 }))
- await expect(page.locator('iframe')).toHaveCount(0)
- await captureScreenshot(page, testInfo, '真实环境-04-沉浸交互')
-
- await visitTaskCenter('/teaching/exams', '考试测评', 'UAT-EXAM-VIRTUAL-001', '真实环境-05-考试测评')
-
- await page.goto('/teaching/data-center')
- await expect(page.getByRole('heading', { name: '教学数据中心', exact: true })).toBeVisible()
- await expect(page.getByTestId('teaching-dashboard-metrics')).toBeVisible()
- await expect(page.getByTestId('analytics-channel-summary')).toBeVisible()
- await expect(page.getByTestId('analytics-learner-table')).toBeVisible()
- await expect(page.getByTestId('analytics-learner-table').locator('tbody tr')).not.toHaveCount(0)
- await page.getByTestId('analytics-tab-training').click()
- await expect(page.getByText('UAT-TEACH-VIRTUAL-001', { exact: false }).first()).toBeVisible()
- await page.locator('.route-view').evaluate((element) => element.scrollTo({ top: 0 }))
- await expect(page.locator('iframe')).toHaveCount(0)
- await captureScreenshot(page, testInfo, '真实环境-06-教学数据中心')
- })
- })
|