浏览代码

test: 覆盖唤醒词文本规则验证

main
leiyun 3 周前
父节点
当前提交
17733b86ff
共有 2 个文件被更改,包括 31 次插入18 次删除
  1. +11
    -6
      tests/business-api-lifecycle.spec.ts
  2. +20
    -12
      tests/operations-ui-lifecycle.spec.ts

+ 11
- 6
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<JsonRecord>(wakeTestResponse, 200, '测试唤醒词匹配')
const wakeTest = await responseData<JsonRecord>(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}`, {


+ 20
- 12
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 })


正在加载...
取消
保存