From 17733b86ffaf05428f2cbb6752cefc68c63a3da3 Mon Sep 17 00:00:00 2001 From: leiyun Date: Fri, 28 Aug 2026 18:15:56 +0800 Subject: [PATCH] =?UTF-8?q?test:=20=E8=A6=86=E7=9B=96=E5=94=A4=E9=86=92?= =?UTF-8?q?=E8=AF=8D=E6=96=87=E6=9C=AC=E8=A7=84=E5=88=99=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/business-api-lifecycle.spec.ts | 17 +++++++++----- tests/operations-ui-lifecycle.spec.ts | 32 +++++++++++++++++---------- 2 files changed, 31 insertions(+), 18 deletions(-) diff --git a/tests/business-api-lifecycle.spec.ts b/tests/business-api-lifecycle.spec.ts index 6a71113..4423a5b 100644 --- a/tests/business-api-lifecycle.spec.ts +++ b/tests/business-api-lifecycle.spec.ts @@ -784,21 +784,26 @@ test.describe('正式业务 API 数据生命周期', () => { expect(asRecords(wakeList.items).some((item) => String(item.id) === wake?.id && item.activePeriod === '06:00-22:00')).toBeTruthy() addPass(activities, '唤醒词', '列表检索自定义时段', wakeListResponse, wake.id) - const wakeTestResponse = await request.post(`/api/v1/wake-words/${wake.id}/test`, { headers }) + const wakeTestResponse = await request.post(`/api/v1/wake-words/${wake.id}/test`, { + headers, + data: { utterance: `${runPrefix}你好教员` }, + }) if (wakeTestResponse.status() === 200) { - const wakeTest = await responseData(wakeTestResponse, 200, '测试唤醒词匹配') + const wakeTest = await responseData(wakeTestResponse, 200, '验证唤醒词文本规则') expect(wakeTest.matched).toBe(true) - addPass(activities, '唤醒词', '本地匹配测试', wakeTestResponse, wake.id) + expect(wakeTest.testMode).toBe('TEXT_EXACT') + expect(wakeTest.utterance).toBe(`${runPrefix}你好教员`) + addPass(activities, '唤醒词', '文本规则验证', wakeTestResponse, wake.id) } else { activities.push({ module: '唤醒词', - action: '本地匹配测试', + action: '文本规则验证', result: 'FAIL', httpStatus: wakeTestResponse.status(), resourceId: wake.id, - detail: '已启用且刚创建的唤醒词测试接口返回非 200;继续执行后续 CRUD 并在报告中保留该真实缺陷。', + detail: '已启用且刚创建的唤醒词文本规则验证接口返回非 200;继续执行后续 CRUD 并在报告中保留该真实缺陷。', }) - expect.soft(wakeTestResponse.status(), '已启用全天唤醒词的本地匹配测试接口应返回 HTTP 200').toBe(200) + expect.soft(wakeTestResponse.status(), '已启用唤醒词的文本规则验证接口应返回 HTTP 200').toBe(200) } const wakeUpdateResponse = await request.put(`/api/v1/wake-words/${wake.id}`, { diff --git a/tests/operations-ui-lifecycle.spec.ts b/tests/operations-ui-lifecycle.spec.ts index 39903b2..1221c1e 100644 --- a/tests/operations-ui-lifecycle.spec.ts +++ b/tests/operations-ui-lifecycle.spec.ts @@ -374,7 +374,7 @@ test.describe('原型运营页面真实交互生命周期', () => { expect(cleanupErrors).toEqual([]) }) - test('唤醒词:自定义时段页面 CRUD、唤醒测试、启停、刷新持久化与清理', async ({ page, request }, testInfo) => { + test('唤醒词:自定义时段页面 CRUD、文本规则验证、启停、刷新持久化与清理', async ({ page, request }, testInfo) => { const module = '唤醒词库' const activities: Activity[] = [] const cleanupErrors: string[] = [] @@ -390,6 +390,10 @@ test.describe('原型运营页面真实交互生命周期', () => { await loginAsAdmin(page) await page.goto('/agents/wake-words') await expect(page.getByRole('heading', { name: '唤醒词库' })).toBeVisible() + await expect(page.getByRole('columnheader', { name: '生效时段' })).toBeVisible() + await expect(page.getByRole('columnheader', { name: '触发次数' })).toBeVisible() + await expect(page.getByRole('columnheader', { name: '最近触发' })).toBeVisible() + await expect(page.getByRole('columnheader', { name: '触发记录' })).toHaveCount(0) await page.getByRole('button', { name: '新增唤醒词' }).click() let dialog = visibleDialog(page) @@ -399,7 +403,7 @@ test.describe('原型运营页面真实交互生命周期', () => { await fillFormItem(dialog, '首句回复', reply) await dialog.getByRole('button', { name: '保存配置' }).click() await expectSuccessMessage(page, '唤醒词配置已创建') - await filterByKeyword(page, '搜索名称、唤醒短语、智能体或回复内容', phrase) + await filterByKeyword(page, '搜索名称或唤醒短语', phrase) let row = tableRowByText(page, phrase) await expect(row).toContainText('06:00-22:00') const created = await findResource(request, headers, 'wake-words', phrase, (item) => item.phrase === phrase) @@ -412,15 +416,19 @@ test.describe('原型运营页面真实交互生命周期', () => { await row.getByRole('button', { name: '详情' }).click() dialog = visibleDialog(page) await expect(dialog).toContainText('06:00-22:00') - await dialog.getByRole('button', { name: '测试唤醒' }).click() - const alert = page.locator('.el-message-box:visible').last() - await expect(alert).toContainText(reply) - await expect(alert).toContainText(phrase) - await alert.getByRole('button', { name: '知道了' }).click() - await expect(alert).toBeHidden() - await dialog.locator('.el-dialog__headerbtn').click() + await dialog.getByRole('button', { name: '验证规则' }).click() + dialog = visibleDialog(page) + await expect(dialog).toContainText('不会调用麦克风或语音识别') + await fillFormItem(dialog, '待验证短语', `${phrase}-不匹配`) + await dialog.getByRole('button', { name: '开始验证' }).click() + await expect(dialog).toContainText('未匹配') + await fillFormItem(dialog, '待验证短语', phrase) + await dialog.getByRole('button', { name: '开始验证' }).click() + await expect(dialog).toContainText('匹配成功') + await expect(dialog).toContainText(reply) + await dialog.getByRole('button', { name: '关闭' }).click() await expect(dialog).toBeHidden() - activities.push({ module, action: '页面详情与真实唤醒测试', result: 'PASS', resourceId }) + activities.push({ module, action: '页面详情与文本规则验证', result: 'PASS', resourceId }) row = tableRowByText(page, phrase) await row.getByRole('button', { name: '编辑' }).click() @@ -429,7 +437,7 @@ test.describe('原型运营页面真实交互生命周期', () => { await dialog.getByRole('button', { name: '保存配置' }).click() await expectSuccessMessage(page, '唤醒词配置已更新') await page.reload() - await filterByKeyword(page, '搜索名称、唤醒短语、智能体或回复内容', phrase) + await filterByKeyword(page, '搜索名称或唤醒短语', phrase) row = tableRowByText(page, phrase) await expect(row).toContainText('06:00-22:00') await expect(row).toContainText('请按更新后的步骤执行') @@ -438,7 +446,7 @@ test.describe('原型运营页面真实交互生命周期', () => { await row.locator('.el-switch').click() await expectSuccessMessage(page, '唤醒词已停用') await page.reload() - await filterByKeyword(page, '搜索名称、唤醒短语、智能体或回复内容', phrase) + await filterByKeyword(page, '搜索名称或唤醒短语', phrase) row = tableRowByText(page, phrase) await expect(row.locator('.el-switch')).not.toHaveClass(/is-checked/) activities.push({ module, action: '页面停用并刷新验证', result: 'PASS', resourceId })