xst
1a53a1f537
feat(xmind): 思维导图增加「系统名称」根层级,根主题为运八网络货运平台
...
- export_XMind.py 新增最外层系统名称根主题:默认从项目画像「项目名称」解析,可用 --system-name 覆盖;原需求主题下沉为第二层
- 三个需求(安徽运八/物流公司管理/运单资料文件包下载)的 XMind 全部按新结构重新生成
- .gitignore 恢复远程规范忽略项(.idea/、.vscode/、output/node_modules/、~$*),并增补 output/excel_reports/、.pytest_cache/、xst/
2026-09-29 10:03:24 +08:00
xst
901b6741ff
test(运单资料文件包下载): 需求文档与 QE Fleet 全流程测试设计产物入库
...
- 需求 v1.0 定稿(md+docx)与 UI 原型入库;确认单判定 docx 为同文载体、安徽运八并行无冲突
- 全流程产物:分析 + 59 测试点 + 85 用例 + 测试数据 145 组;评审 3 阻断与覆盖缺口 GAP-001 已修复,裁决 PASS_WITH_FIX
- 导出 Excel(云效模型)+ XMind + 版本快照 v1;含 docx 生成脚本与转换校验产物
- .gitignore 排除 node_modules 与 Excel 锁文件
2026-09-09 09:31:55 +08:00
xst
c7cc4d5648
chore: 刷新 yun8 全流程验证运行产物(allure-results + 日志)
...
今日 4 轮 pytest tests/api 验证运行产物:ETC 签名 %3D 修复后
5 个阶段用例(TC-Y8-001~005)全部通过,allure-results 由
--clean-alluredir 清换,含 4 份 output/logs 运行日志。
2026-09-08 14:13:46 +08:00
xst
26b6fa9c1a
fix(api): ETC 发票 INSERT 中 URL 签名 %3D 在参数化 SQL 下按 %% 转义
...
pymysql 执行 sql % params 时把字面量 %3D 当作格式符,抛
unsupported format character 'D' (index 906)。参数化模板中的字面量
百分号必须写成 %%,渲染后仍为 %3D,与旧工具 f-string 产出的 SQL 一致。
已用 pymysql 同款插值离线验证全部 7 类模板渲染通过。
2026-09-08 11:53:22 +08:00
xst
52b73f456c
refactor(api): yun8_sync 并入 tests 分层框架(接口层 apis/yun8 + 用例层 api + Allure)
...
- tests/core: 新增 BaseHttpClient 统一 HTTP 封装(直连绕行/超时/日志/自定义编码);
db_helper 追加 Db 长连接类(事务/mogrify/自动重连),既有函数不动
- tests/apis/yun8: 21 个 step 方法按域拆分为 5 个 Mixin(driver/accounting/
audit_payment/receipt/third_party),Yun8Pipeline 24 步编排原样迁移,
SQL 全部参数化并集中至 sql_templates
- tests/api: 5 阶段有序 P0 E2E 用例(业务失败由 print 改为真实报错)+
README 迁移(删除明文密码段,修正步骤编号漂移)
- yun8_sync 目录退役:配置并入 test_config.yaml 的 yun8_api 段;
造数 CLI 保留(python -m tests.apis.yun8.cli,兼容旧 config.yaml 结构)
- pytest.ini 注册 api/yun8_sync marker;requirements.txt 补 requests>=2.28
- 静态验证: compileall / 全仓 collect 24 条 / marker 过滤 / CLI --help /
客户端与 pipeline 离线实例化 / SQL 占位符核对 / cross_end 兼容
2026-09-08 11:38:17 +08:00
xst
e62e3224bf
chore: 刷新 super_admin 登录态(save_auth 探测页流程验证)
2026-09-08 10:11:14 +08:00
xst
ac95f3004f
fix(save_auth): 登录检测改为探测页实测会话有效性
...
不再读取用户标签页的 URL 判定——SPA hash 跳转后脚本读到的
可能是旧值, 登录界面也可能在其它标签页, 两种情况都会把成功
登录误判为失败。
改为: 回车后在同一 context 新开探测页访问首页, 由应用自己
回答是否已登录(有会话落 #/home, 无会话被重定向回 #/login),
与测试用例 ensure_login 的判定方式一致; 探测完即关, 不动
用户标签页。路由判断用精确 hash/path 解析, 参数含 login
字样不再误报。
验证: 用用户误报场景下保存的登录态实测, 访问直达 #/home,
证实会话判定有效。
2026-09-04 15:33:03 +08:00
xst
224fe88ea6
feat(yun8_sync): 重写 ETC 开票步骤 (Step 22-23) 及配套配置文档
...
- pipeline.py: ETC 开票信息写入 base_etc_invoice + 推送记录写入
tms_order_etc_push, 随 receipt 阶段执行; 每单发票条数可配
(etc_invoice.count), 发票号/金额/进出站/时间自动变化,
金额合计受运费×50%约束; order_code/order_no 取步骤 03 的
orderCode, push_order_no 追加 -1, dry-run 仅预览不写库
- config.yaml: 新增 etc_invoice 配置节 + 刷新登录 token
- README.md: 阶段 E 流程图、接口表 Step 22/23 及取值说明
2026-09-02 17:44:52 +08:00
xst
625a589bfc
chore: output/excel_reports 纳入版本管理
2026-09-02 16:45:47 +08:00
xst
535c795c48
chore: 补提交司机-货主菜单资源 xlsx + 今日 E2E 运行产物
2026-09-02 16:41:31 +08:00
xst
dd0877653e
refactor(locators): 文本锚点优先的多候选定位 + 失败 DOM 快照
...
定位健壮性原则: 语义文本 > 组件库稳定 class > 层级结构 > nth-child/绝对路径。
Web (freight_accounting_page):
- 新增 BasePage.first_matching(*候选): 文本锚点优先命中, 旧结构路径兜底
- 13 处定位器改造: 核算/审核通过/确认打款按钮(get_by_role 文本)、
车队长/收款模式表单(.el-form-item label 锚定)、光大单选(label:has-text)、
获取验证码/验证码输入(按钮同行锚定)、message-box 确定等
- 手机号单选保留旧结构路径优先(弹窗含多组电话单选, 文本有歧义)
- 已实况验证: 获取验证码/确认打款/光大锚点唯一命中
App (freight_flow_page):
- 货源 tab: text("货源") 文本锚点优先(登录流程持续验证), 位置序号兜底
- 货源单列表项: RecyclerView(lRrcyclerView) 第一个子项, 全局 instance(3) 兜底
- 选图按钮(ImageView instance(2))保留: 需在途订单才能探测, 当前可用
失败诊断:
- Web 失败时 attach 页面 DOM 快照, App 失败时 attach page_source 到 Allure
验收: 实况锚点解析全部唯一命中; 两条 E2E 通过且 DB 终态均为全流程完成
(status=5, 已结算, 双支付完成)。
2026-09-02 14:59:27 +08:00
xst
2b4b2a4050
fix(pages): 搜索后等待结果生效 + 点行前校验目标运单,杜绝点错行
...
根因: 点击查询是异步请求, 旧代码不等响应就点固定列第一行——
点的是过滤前的旧列表。未过滤列表第一行可能是个 6 月的老单,
导致审核/打款打在无关运单上, 测试假通过(车队长单实际未处理)。
- _click_search(order_no): 等待第一行包含单号或出现稳定空态
(空态需连续两次轮询确认, 规避 vxe-table 加载瞬时空块)
- _click_table_action(order_no): 点击前校验主表第一行包含目标单号
- 四个流程方法(核算/审核/财务打款/货主打款)全部穿透 order_no
验收: 假单号探测被正确拒绝; TC-D2S-001 通过且 DB 终态确认真通;
TC-D2S-002 如实失败暴露系统缺陷(核算点击未生效, 审核列表无此单)。
2026-09-02 14:32:42 +08:00
xst
2aca405267
refactor(pages): PO 层框架化 — 细粒度操作 + 显式等待 + 消除静默吞异常
...
DriverFreightFlowPage (APP):
- 流程方法拆为单一职责的细粒度操作(open_freight_tab/fill_quantity/upload_photo_from_album/...),
流程方法仅做编排,公共 API 不变,用例零改动
- 移除全部 implicitly_wait 全局副作用,每步显式等待目标元素
- 容错点击(已知晓/确定)改为 _tap_by_text_if_present,跳过时记录 warning
FreightAccountingPage (Web):
- _go/_click_search 改显式等待(搜索框出现/列表数据行或空态),替代固定 2s/1s sleep
- 表格等待升级为 td:visible,避开 vxe-table 固定列隐藏占位单元格
- 点击行操作按钮后显式等待弹窗出现,替代固定 800ms
- 车队长下拉选择改显式等待下拉项渲染
- 可选弹窗操作统一收敛到 _try_click,跳过时记录 warning;关键确认按钮保持严格
两条 E2E 用例在真实环境回归通过(TC-D2S-001 116s / TC-D2S-002 112s)。
2026-09-02 11:59:46 +08:00
xst
6ee7ade67d
fix(driver): remove system popup cancel step from load/unload flow
...
以后装货/卸货流程不再有系统弹窗,去掉对应的取消弹窗点击步骤
(cancel_btn 定位器 + 两处流程步骤 + docstring 描述同步)。
2026-09-02 11:00:15 +08:00
xst
73b93bdf0c
feat(yun8_sync): add API pipeline automating full freight flow (18 interfaces + SQL)
...
Implements the "运输流程" collection from yun8.postman_collection.json as a
Python pipeline: driver-side order accept/load/unload -> freight accounting
-> payment, with SQL writes, driven by yun8_sync/config.yaml
(api/auth/accounting/payment/database/sql/dianyuntong sections).
2026-08-17 14:30:40 +08:00
xst
18890c0437
refactor(tests): restructure into layered POM architecture with Allure reporting
...
- Split framework into core/ (config, logger, db, driver factories, screenshot,
allure integration) and pages/ (PO layer: base/admin/driver); flatten test
files per platform (web/admin, app/driver_android, cross_end)
- Slim root conftest.py 656 -> ~100 lines: drop inline CN HTML report, add
Allure severity mapping (p0/p1/p2 -> blocker/normal/minor) and
environment.properties; support both tests.*-prefixed and bare imports
- Preserve TC-D2S-001/002 cross-end E2E cases with business logic unchanged,
add allure epic/feature/story/step annotations
- Deduplicate: single makereport hook, shared failure-screenshot helpers,
single SCREENSHOTS_DIR constant; deterministic auth-state role loading
- Move DB credentials from db_helper.py into test_config.yaml (database section)
- Move pytest.ini to repo root; switch reporting to allure-pytest
(drop pytest-html/junitxml); update requirements.txt accordingly
- Delete deprecated scaffolding: test_freight_full_flow + 6 stale page
objects, iOS/shipper empty shells, dead utils
- Fix flaky vxe-table action-row wait: wait for a visible td instead of
hidden placeholder rows (fixed shipper-payment timeouts)
- Verified end-to-end against live env: both E2E cases pass (2 passed 3m12s);
run artifacts (logs/screenshots/allure) included per repo convention
2026-08-17 14:29:52 +08:00
xst
70bd7fede2
chore: add output logs, reports, screenshots and resources selectors
2026-07-24 08:33:28 +08:00
xst
f23051a876
feat(report): embed screenshots as base64 in report_cn.html with click-to-zoom preview
...
- Convert PNG screenshots to base64 and embed directly in HTML
- Grid gallery layout with thumbnail previews
- Click to expand/zoom to fullscreen overlays
- No external file dependencies — report is self-contained
2026-07-23 17:59:42 +08:00
xst
51768c7c95
fix(admin): add exception handling for SQL retry in freight accounting flow
2026-07-23 17:49:29 +08:00
xst
4ef8af5c87
feat(report): enrich Chinese report with detailed test metadata, logs, screenshots and phase timeline
...
- Add test metadata extraction: case ID, priority, tags, description
- Show phase timeline extracted from test log output
- Include test log content (last 500 lines) in collapsible section
- Include screenshot file list in collapsible section
- Redesign table with 8 columns and expandable error details
2026-07-23 17:16:11 +08:00
xst
fa8a17eae8
refactor(test): move Chinese test metadata into function docstring
...
用例 docstring now contains structured metadata fields:
用例ID / 用例名称 / 优先级 / 标签
_report_cn uses regex to extract 用例名称 first, then falls back
to display_name and docstring first line.
2026-07-23 16:59:48 +08:00
xst
273f4f0225
fix(report): extract Chinese test name from docstring metadata field
...
Priority: 用例名称: xxx > display_name > docstring first line
2026-07-23 16:57:30 +08:00
xst
570aaef64b
fix(report): use utf-8-sig encoding for Chinese report to display correctly in browsers
...
The Chinese report now correctly shows:
司机APP接单到管理端核算打款完整流程 [通过] (96.8s)
2026-07-23 16:55:17 +08:00
xst
d1710cfcd6
feat(report): resolve Chinese test names from docstring in cn report
...
Test case docstring 【P0】 prefix is stripped for display.
报告中的用例名现在显示为: 司机APP接单到管理端核算打款完整流程
2026-07-23 16:50:47 +08:00
xst
f287c93cce
feat(report): auto-generate Chinese HTML report after test session via pytest_sessionfinish hook
...
Produces output/reports/report_cn.html alongside junit.xml and report.html
2026-07-23 16:42:59 +08:00
xst
6ff65ec5c8
feat(report): add pytest-html + junitxml report generation to pytest.ini
...
pytest-html generates self-contained HTML report at output/reports/report.html
junitxml output at output/reports/junit.xml for CI integration
2026-07-23 16:36:39 +08:00
xst
a361ba7053
fix(login): use text selectors for bottom nav tabs 首页/货源/我的
...
Replace coordinate tap with text-based UiSelector for reliability.
Add back-press loop to ensure app is on main page before checking login.
2026-07-22 17:31:19 +08:00
xst and xst
f75a6f5ec9
feat(cross_end): add driver-to-settlement E2E test with SQL retry
...
- Add DriverFreightFlowPage (Android): 28-step flow covering accept/load/unload
- Add FreightAccountingPage (Web): accounting/audit/finance-payment/shipper-payment
- Add db_helper: update_risk_control_status via pymysql
- Fix ensure_logged_in: coordinate tap on 'mine' tab + login check
- Add test_driver_to_settlement.py: full cross-end E2E with SQL retry
Co-authored-by: xst <xst@ntocc.com >
2026-07-22 17:18:52 +08:00
xst
6f5668b7ec
feat(cross_end): add cross-platform E2E test support for freight full flow
...
Add tests/cross_end/ directory with dual-driver architecture:
- conftest.py: Playwright admin_page + Appium app_driver fixtures
- Admin Page Objects: FreightSourcePage, WaybillManagementPage, SettlementPage
- App Page Objects: DriverOrderListPage, DriverTransportPage, DriverHomePage (re-export)
- test_freight_full_flow.py: 8-step end-to-end test (publish → accept → load → unload → accounting → review → shipper pay → platform pay)
- Shared context dict for cross-step data passing
- Graceful skip when either Playwright or Appium is unavailable
- All selectors marked with ⚠️ placeholders for discovery against real environments
Add cross_end marker to pytest.ini for selective execution.
2026-07-21 09:10:08 +08:00
xst
b822428a2a
feat(mini_program): 小程序端从 Playwright 切换为 miniprogram-automator
...
驱动方式: Python pytest → subprocess → node runner.js → miniprogram-automator → 微信开发者工具
架构: tests/web/mini_program/automator/ (Node.js) + conftest.py (Python subprocess 桥接)
前置条件: 微信开发者工具 + 开启服务端口 + npm install + uni-app build:mp-weixin
2026-07-15 17:34:25 +08:00
xst
03e152baab
feat: 重构测试框架 — 覆盖 6 端 (管理端 + 小程序 + 4 个移动端)
...
目录结构:
tests/web/admin/ 管理端 (Playwright)
tests/web/mini_program/ 司机端小程序 (Playwright/微信 WebView)
tests/app/driver_android/ 司机安卓 (Appium)
tests/app/shipper_android/ 货主安卓 (Appium)
tests/app/driver_ios/ 司机苹果 (Appium)
tests/app/shipper_ios/ 货主苹果 (Appium)
公共模块:
tests/app/_shared.py driver+ensure_logged_in 工厂
tests/app/_base_page.py App Page Object 基类
配置:
test_config.yaml 拆分为 6 个独立 section + 货主账号
2026-07-15 14:02:08 +08:00
xst
4b4b83a2c0
fix: save_auth 改为纯手动模式,不再尝试自动填表
...
用户自己在浏览器中完成验证码登录后按 Enter,脚本仅负责检测并保存 storage_state
2026-07-15 10:59:24 +08:00
xst
49eb9bcd2b
fix: 适配 hash 路由登录页 (/#/login)
2026-07-15 10:55:08 +08:00
xst
7c5a4c5de7
fix: Playwright API camelCase → snake_case (Python 版)
...
- getByPlaceholder → get_by_placeholder
- getByRole → get_by_role
- getByText → get_by_text
- getByTestId → get_by_test_id
2026-07-15 10:52:16 +08:00
xst
7b4a54f1ce
feat: 框架增加登录态复用机制,绕过图形验证码
...
Web 端 (storage_state):
- 新增 tests/web/save_auth.py: 手动登录后保存 cookies+localStorage
- conftest.py: skip_login:true 时自动加载 storage_state,跳过 UI 登录
- ensure_login fixture: 登录态有效则直接通过,过期则给出明确指引
App 端 (noReset):
- conftest.py: ensure_logged_in fixture,手动登录后无需重新登录
- noReset=true 持久化登录态,未登录自动检测并给出明确引导
配置文件:
- web.skip_login: true + storage_state_dir
- app.skip_login: true + 手动登录说明
2026-07-15 10:47:34 +08:00
xst
aade9e39d0
feat: 基于 UI 自动化最佳实践的测试框架骨架搭建
...
- tests/config: 环境配置 (.yaml) + 配置加载器
- tests/utils: 日志工具 + 测试数据生成器
- tests/web: Playwright conftest + Page Object 基类 + 登录页 + 导航栏组件 + 登录用例(6条)
- tests/app: Appium conftest + Page Object 基类 + 司机端首页 + 登录用例(3条)
- pytest.ini: markers(p0/p1/p2/smoke/web/app) + 运行配置
- 所有用例按最佳实践采用 Page Object 模式 + data-testid 优先定位 + 失败自动截图
2026-07-15 10:24:22 +08:00
xst
26ef99f7e7
docs: Web + App UI 自动化测试最佳实践 v1.0
2026-07-15 09:38:01 +08:00
xst
56137c95ed
docs: ui automation best practices design spec
2026-07-15 09:29:31 +08:00
xst
2bc036c867
feat: 安徽运八需求全流水线输出同步 + 知识库/agents/资源文件更新
2026-07-14 15:50:17 +08:00
xst
e34a3c64ce
feat: knowledge sync — 安徽运八需求知识沉淀回写知识库
...
知识库更新:
- historical_defects.md: +4条数据上报领域真实缺陷模式
(阶段依赖链断裂/重试幂等/跨模块数据不一致/省份代码硬编码)
- common_missed_scenes.md: +11条数据上报专项易漏场景
(多阶段依赖/第三方核验逐项/重试并发/跨模块一致性/省份隔离等)
- data_reporting_cases.md: 新增数据上报类需求优秀用例范式
(8大覆盖框架+5条示例用例+7项关键风险点)
- terminology.md: +14条数据上报领域术语
系统修复:
- case_pipeline.py: 注册 data_reporting_cases.md + order_manage_cases.md
- governance_audit.py: 更新 case_generate/AGENTS 关键词期望(旧→新架构)
- AGENTS.md/README.md/.claude: 补全缺失关键词,治理审计通过
- .claude/skills/case_generate/: 创建向后兼容别名 skill
2026-07-13 14:22:31 +08:00
xst
d4c3d66efc
feat: 集成 XMind 思维导图导出到 QE Fleet 工作流
...
- fleet_runner.py: _run_export() 在 Excel 导出后自动生成 XMind
- fleet_runner.py: 新增 --skip-xmind 参数(run/export 命令均支持)
- export_XMind.py: 按模块分组 → 用例编号/标题/优先级/前置条件/步骤/预期/备注树形结构
- XMind 输出目录: output/xmind_reports/
用法:
python scripts/fleet_runner.py export --requirement <需求> # Excel + XMind
python scripts/fleet_runner.py export --requirement <需求> --skip-xmind # 仅 Excel
python scripts/export_XMind.py --base-name <名称> # 独立 XMind 导出
2026-07-13 09:56:50 +08:00
xst
acdb441507
feat: /qe-fleet run 安徽运八需求 + 系统坑修复
...
系统修复:
- fleet_runner.py: Windows UTF-8 编码兼容(reconfigure stdout/stderr)
- fleet_runner.py: run 命令自动生成合并清单供导出使用
- fleet_manifest.py: 新增 save_merged_manifest() 保存统一清单
- fleet_config.yml: 修复 YAML keywords 格式(block sequence → flow sequence)
- 恢复被误删的知识库文件(payment_flow_cases, marketing_activity_cases)
QE Fleet 产物 (安徽运八需求):
- 153个测试点 + 53条可执行测试用例
- 需求分析/风险评估/测试策略/质量裁决(PASS)
- Excel 导出 + 版本快照 v2
- 确认结论文件已归档
2026-07-13 09:49:54 +08:00
xst
b958b75899
feat: one-click Windows setup scripts + fix Appium v3 commands in docs
...
- scripts/setup_execute_env.bat: auto-detect Android SDK, set PATH permanently, validate all deps
- scripts/start_appium.bat: one-click Appium Server startup with v3-compatible params
- Fix all 'appium --allow-insecure' commands for Appium v3 (driver:feature format)
- Add Windows quick-start section to EXECUTE_SETUP_GUIDE.md
2026-07-10 15:13:09 +08:00
xst
d37017534d
docs: Execute zone setup guide - PC/Android/iOS step-by-step configuration
2026-07-10 11:28:13 +08:00
xst
4f30b9d702
feat: Execute zone - Playwright PC Web + Appium mobile + AI screenshot diff + test conclusion reports
...
- Add 3 new agents: web-executor, mobile-executor, result-reporter
- web-executor: Playwright multi-browser (Chromium/Firefox/WebKit) automated scripts
- mobile-executor: Appium dual-platform (Android/iOS) automated scripts
- result-reporter: pixel-level AI visual comparison + test conclusion report with screenshots
- Auto-generate executable Python test scripts from Markdown test cases
- Screenshot strategies: on-failure (default) + on-step (optional)
- Visual diff grading: <1% pass / 1-5% minor / 5-15% UI_DIFF / >15% blocker
- Failure multi-classification: REAL_BUG/UI_DIFF/ENV_ISSUE/DATA_ISSUE/CASE_BUG/SCRIPT_ERROR
- requirements.txt: add playwright + Pillow
- Fleet now: 17 agents across 6 battle zones
2026-07-10 11:03:58 +08:00
xst
b2a035c4f9
feat: Agentic QE Fleet v2.0.0 - 14-agent quality engineering platform
...
- 14 specialized AI agents across 5 battle zones (Prepare/Analyze/Design/Review/Monitor)
- New: risk-assessor, test-strategist, data-builder, coverage-auditor, quality-gatekeeper, execution-analyst, knowledge-curator
- New: fleet_runner.py orchestrator with multi-zone manifest pipeline
- New: fleet_config.yml for centralized configuration
- New: knowledge activation system (keyword + semantic matching)
- New: semantic conflict detection with severity grading (P0-P3)
- New: three-tier quality gate (PASS/PASS_WITH_FIX/BLOCKED)
- New: monitor zone for test execution analysis and auto knowledge curation
- Backward compatible: /case_generate alias, case_pipeline.py preserved
- Comprehensive docs: USER_GUIDE.md + MAINTENANCE_GUIDE.md
2026-07-09 14:29:11 +08:00