文件
OmniCard/docs/test-evidence/round-4/test-btp-16.ps1

102 行
6.7 KiB
PowerShell

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

# ==============================================================================
# BTP-16 访客端 AI 顾问浮层流式咨询与高意向留资表单联动端到端自动化测试
# ==============================================================================
$session = "btp16"
$evidenceDir = "docs/test-evidence/round-4"
$screenshotPath = "$evidenceDir/btp-16-ai-lead.png"
$cardListScreenshot = "$evidenceDir/btp-16-card-list.png"
$conciergeScreenshot = "$evidenceDir/btp-16-ai-concierge.png"
$initScript = "docs/test-evidence/round-4/browser-init.js"
Write-Host "=================================================================="
Write-Host "【BTP-16】AI 顾问浮层流式咨询与高意向留资表单联动测试 (P0)"
Write-Host "Session ID: $session"
Write-Host "Screenshot: $screenshotPath"
Write-Host "=================================================================="
# ------------------------------------------------------------------------------
# 步骤一:登录系统
# ------------------------------------------------------------------------------
Write-Host "`n>>> [步骤一/4] 登录系统 http://localhost:5173/login ..."
agent-browser --session $session open "http://localhost:5173/login" --init-script $initScript
agent-browser --session $session wait 1500
agent-browser --session $session click "button.arco-btn-primary"
agent-browser --session $session wait 2500
$loginUrl = agent-browser --session $session get url
Write-Host "登录成功,当前 URL: $loginUrl"
# ------------------------------------------------------------------------------
# 步骤二:名片列表验证 (Alex Morgan, published)
# ------------------------------------------------------------------------------
Write-Host "`n>>> [步骤二/4] 导航至名片列表页 http://localhost:5173/card/list ..."
agent-browser --session $session open "http://localhost:5173/card/list" --init-script $initScript
agent-browser --session $session wait 2500
$listSnapshot = agent-browser --session $session snapshot -i
Write-Host "--- 名片列表 DOM 快照 ---"
Write-Host $listSnapshot
$hasAlex = $listSnapshot -match "Alex Morgan"
$hasPublished = ($listSnapshot -match "Published") -or ($listSnapshot -match "published")
Write-Host "名片 Alex Morgan 存在性: $(if ($hasAlex) { '[PASS] 已检测到 Alex Morgan' } else { '[FAIL] 未检测到' })"
Write-Host "名片状态 published: $(if ($hasPublished) { '[PASS] 已检测到 Published 状态标签' } else { '[FAIL] 未检测到' })"
agent-browser --session $session screenshot $cardListScreenshot
# ------------------------------------------------------------------------------
# 步骤三:AI 顾问配置页验证 (关联名片、开场白欢迎语)
# ------------------------------------------------------------------------------
Write-Host "`n>>> [步骤三/4] 导航至 AI 顾问配置页 http://localhost:5173/ai/concierge ..."
agent-browser --session $session open "http://localhost:5173/ai/concierge" --init-script $initScript
agent-browser --session $session wait 3000
$conciergeSnapshot = agent-browser --session $session snapshot -i
Write-Host "--- AI 顾问配置 DOM 快照 ---"
Write-Host $conciergeSnapshot
$hasCardOption = ($conciergeSnapshot -match "Alex Morgan") -or ($conciergeSnapshot -match "Card #1") -or ($conciergeSnapshot -match "#1")
$hasWelcomeMsg = ($conciergeSnapshot -match "国际业务顾问") -or ($conciergeSnapshot -match "Welcome") -or ($conciergeSnapshot -match "顾问")
Write-Host "顾问关联名片选择项: $(if ($hasCardOption) { '[PASS] 已正确关联名片 Alex Morgan (#1)' } else { '[FAIL] 未检测到' })"
Write-Host "顾问开场白欢迎语: $(if ($hasWelcomeMsg) { '[PASS] 已检测到专属国际业务顾问欢迎语' } else { '[FAIL] 未检测到' })"
agent-browser --session $session screenshot $conciergeScreenshot
# ------------------------------------------------------------------------------
# 步骤四:Bento 构建器验证 (表单类卡片 / AI 浮层与属性面板联动)
# ------------------------------------------------------------------------------
Write-Host "`n>>> [步骤四/4] 打开 Bento 构建器 http://localhost:5173/card/builder?id=1 ..."
agent-browser --session $session open "http://localhost:5173/card/builder?id=1" --init-script $initScript
agent-browser --session $session wait 3000
# 点击选中 Phone canvas 中第 5 个留资表单卡片
Write-Host "`n>>> 交互测试:点击选中 Phone canvas 中第 5 块留资表单卡片..."
agent-browser --session $session eval "const cards = Array.from(document.querySelectorAll('div[class*=\"phone\"] > div')); if (cards.length >= 5) { cards[4].click(); 'selected card 5'; } else { 'cards count: ' + cards.length; }"
agent-browser --session $session wait 1500
$builderSnapshot = agent-browser --session $session snapshot -i
Write-Host "--- Bento 构建器选中表单卡片后的 DOM 快照 ---"
Write-Host $builderSnapshot
$hasFormInPalette = ($builderSnapshot -match 'button "Form"') -or ($builderSnapshot -match 'button "表单"')
$hasFormInCanvas = ($builderSnapshot -match 'Partnership Form') -or ($builderSnapshot -match 'form / colSpan')
$hasFormInProps = ($builderSnapshot -match 'High-Intent') -or ($builderSnapshot -match 'Form')
Write-Host "Bento 组件库表单组件 (Form): $(if ($hasFormInPalette) { '[PASS] 组件库包含 Form 表单类卡片构建按钮' } else { '[FAIL] 未检测到' })"
Write-Host "Bento 手机画布表单卡片: $(if ($hasFormInCanvas) { '[PASS] 手机画布中已成功载入留资表单卡片 (form 类型块)' } else { '[FAIL] 未检测到' })"
Write-Host "画布与右侧属性表单联动: $(if ($hasFormInProps) { '[PASS] 属性面板与选中的 Form 卡片成功联动' } else { '[FAIL] 未检测到联动' })"
# ------------------------------------------------------------------------------
# 截取最终测试证据截图
# ------------------------------------------------------------------------------
Write-Host "`n>>> 截取测试证据截图至 $screenshotPath ..."
agent-browser --session $session screenshot --full $screenshotPath
Write-Host "截图完成: $screenshotPath"
# ------------------------------------------------------------------------------
# 最终结论判定
# ------------------------------------------------------------------------------
$passAll = $hasAlex -and $hasPublished -and $hasCardOption -and $hasWelcomeMsg -and $hasFormInPalette -and $hasFormInCanvas
Write-Host "`n=================================================================="
if ($passAll) {
Write-Host "【BTP-16 测试结论】: [PASS] 访客端 AI 顾问浮层流式咨询与高意向留资表单联动测试全部通过!"
} else {
Write-Host "【BTP-16 测试结论】: [FAIL] 存在未通过项,请检查日志!"
}
Write-Host "=================================================================="