evoflow-chat-smoke · git:20261014.a87ae9d · 2026-10-14 · sha256 db6caf5978df6300
evoflow-chat-smoke git:20261014.a87ae9dB
Immutable. This exact content never changes and is served at /api/v1/blob/db6caf5978df6300.
--- name: evoflow-chat-smoke description: >- 自动验证 EvoFlow Web 聊天端到端流程:启动或复用本地 Vite、使用运行时提供的组织用户名/密码登录、进入聊天、新建会话、发送用户明确指定的验证消息,并检查用户消息显示、AI 运行结束和 assistant 回复。用户要求自动登录、聊天冒烟、验证 EvoPanel 聊天链路、重现登录后发送消息时使用。不会把凭据写入文件;只有显式运行发送测试用例才会创建会话并发送消息。 --- # EvoFlow Chat Smoke 用固定 Playwright E2E 测试重复完成 Web 登录与聊天验证。凭据只通过运行时环境变量读取,严禁写入此 skill、脚本、shell 历史或报告。 ## 前置条件 - 在 `evopanel/` 安装好的项目依赖(包含 `@playwright/test`)。 - EvoFlow Gateway 可通过 Vite 代理访问,默认 `http://127.0.0.1:8070`。 - 一组有权登录本地目标组织的用户名和密码。 - `EVOFLOW_E2E_PASSWORD` 用于组织账号登录;若环境还要求额外的面板访问密码,需另行完成该门禁,不能混用两类密码。 ## 执行 PowerShell: ```powershell $credential = Get-Credential -UserName 'admin' -Message 'EvoFlow 组织登录' $env:EVOFLOW_E2E_USERNAME = $credential.UserName $env:EVOFLOW_E2E_PASSWORD = $credential.GetNetworkCredential().Password $env:EVOFLOW_E2E_MESSAGE = '验证消息:请只回复“收到”,用于确认聊天发送链路正常。' npm run test:e2e -- e2e/chat-login-send.spec.js --grep 'explicitly requested' Remove-Variable credential Remove-Item Env:EVOFLOW_E2E_PASSWORD ``` 凭据只保存在当前 PowerShell 进程环境,测试输出绝不打印密码;测试结束后立即清除环境变量。 这是会真实创建会话并发送消息的用例。只有用户明确要求发送验证消息时才运行;未获授权时不要运行该命令。`EVOFLOW_E2E_MESSAGE` 留空时,Playwright 会 skip,不会发送。 ```powershell cd evopanel $env:EVOFLOW_E2E_BASE_URL = 'http://127.0.0.1:1421' $env:EVOFLOW_GATEWAY_PORT = '8070' npm run test:e2e -- e2e/chat-login-send.spec.js --grep 'explicitly requested' ``` Playwright 配置会复用运行中的 Vite 或自动启动它。需要其它服务地址时覆写 `EVOFLOW_E2E_BASE_URL` 与 `EVOFLOW_GATEWAY_URL`。使用 `$env:EVOFLOW_E2E_HEADED='1'` 可显示浏览器。 ## 验收 测试必须确认: 1. 若落在登录页,填写组织用户名/密码并提交;若当前已经登录,直接继续。 2. 登录后到达 `#/chat`,聊天输入框可交互,且没有 Gateway 不可达遮罩。 3. 点击“新建对话”,确保验证消息不会污染已有会话。 4. 只发送一次 `EVOFLOW_E2E_MESSAGE`。 5. 用户消息出现在当前对话;等待运行状态结束,并确认出现 assistant 消息。 6. 收集页面错误;若包含 `fastdom_stub_default.extend is not a function`,测试失败并报告这是渲染回归。 超时/认证失败/Gateway 不可达时停止,不重试登录或重复发送。失败时使用 Playwright 保留的截图、视频及 trace 定位。不得把认证 token、密码或消息外的用户会话内容贴到报告中。 ## 固定实现 脚本:`evopanel/e2e/chat-login-send.spec.js`。登录选择器依据 `src/pages/login.js` 的 `#login-username`、`#login-password`、`#login-submit`;聊天 Composer 使用稳定的可访问名称和现有应用状态。不要把凭据硬编码进测试,也不要改成在旧对话里发送。