Files
浅念 8884e100f9 upgrade: adopt V8.31.1 (theme 1.3/1.4 redesigns, editor deep-canvas, guided launch, component library)
Overlay 190 upstream items (V8.22→8.31) preserving trade-pro theme,
registry tests, and design docs. Re-applied full patch set on identical
anchors (discovery/env_for/blocks.css/type-mapping/locale-override/
theme_color/frontend entries/test_theme_pro_v3 mods) plus compose pins.

Verified: theme suites 35/35; dual-baseline full run 415 passed vs
pristine 386+29 ours, FAILED-set diff EMPTY (same 10 Windows env fails).
Live: container 8.31.1-dev.1 healthy, hesupipe 192 entries intact,
trade-pro build 203 pages 0 errors.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-26 09:43:17 +08:00

293 lines
9.0 KiB
JSON

{
"version": "8.28.0-dev.1",
"created_utc": "2026-10-23T08:05:11.263013+00:00",
"regression_modules": 48,
"regression_batches": 24,
"regression_passed_batches": 23,
"regression_test_cases_passed": 383,
"regression_unpassed_batches_initial": 1,
"regression_unresolved_batches": 0,
"regression_retests": [
{
"batch": 22,
"passed": 13,
"reason": "旧 UI 测试断言仍要求“构建与交付”菜单;已更新为“生成与预览 / 检查并上线”,原样保留失败日志并独立重新测试。"
}
],
"regression_verified_batches": 24,
"browser_test": "PASS: Chromium with mock API, no real server deployment",
"http_e2e": "PASS: real local HTTP + Worker with isolated SQLite",
"real_art_pro_build": "NOT_VERIFIED",
"production_postgres_redis_multi_worker": "NOT_VERIFIED",
"real_remote_release_rollback": "NOT_VERIFIED",
"notes": [
"Explicitly separate local tests from production acceptance.",
"Release process reuses server-side quality gates, independent approval and worker API."
],
"batches": [
{
"batch": 1,
"files": [
"test_commercial_v5.py",
"test_connectors_v84.py"
],
"status": "passed",
"seconds": 7.46,
"summary": ".................... [100%]\n20 passed in 4.03s\n\n",
"passed_count": 20
},
{
"batch": 2,
"files": [
"test_connectors_v85.py",
"test_console_v819.py"
],
"status": "passed",
"seconds": 7.77,
"summary": "....................... [100%]\n23 passed in 3.51s\n\n",
"passed_count": 23
},
{
"batch": 3,
"files": [
"test_core_v4.py",
"test_deep_nested_v824.py"
],
"status": "passed",
"seconds": 9.53,
"summary": "................... [100%]\n19 passed in 6.06s\n\n",
"passed_count": 19
},
{
"batch": 4,
"files": [
"test_editor_easy_v8212.py",
"test_editor_ux_v8211.py"
],
"status": "passed",
"seconds": 3.05,
"summary": "...... [100%]\n6 passed in 0.22s\n\n",
"passed_count": 6
},
{
"batch": 5,
"files": [
"test_enterprise.py",
"test_enterprise_v7.py"
],
"status": "passed",
"seconds": 10.17,
"summary": "................ [100%]\n16 passed in 5.55s\n\n",
"passed_count": 16
},
{
"batch": 6,
"files": [
"test_factory.py",
"test_factory_v2.py"
],
"status": "passed",
"seconds": 13.12,
"summary": "........................ [100%]\n24 passed in 10.09s\n\n",
"passed_count": 24
},
{
"batch": 7,
"files": [
"test_mobile_tabs_v8213.py",
"test_multilingual_v815.py"
],
"status": "passed",
"seconds": 8.68,
"summary": ".................... [100%]\n20 passed in 5.45s\n\n",
"passed_count": 20
},
{
"batch": 8,
"files": [
"test_nested_v823.py",
"test_p0_71.py"
],
"status": "passed",
"seconds": 5.08,
"summary": "........ [100%]\n8 passed in 1.77s\n\n",
"passed_count": 8
},
{
"batch": 9,
"files": [
"test_p0_backup.py",
"test_p0_p4_completion_v88.py"
],
"status": "passed",
"seconds": 6.58,
"summary": "................... [100%]\n19 passed in 3.42s\n\n",
"passed_count": 19
},
{
"batch": 10,
"files": [
"test_p0_p4_completion_v89.py",
"test_p1_platform.py"
],
"status": "passed",
"seconds": 19.25,
"summary": ".............. [100%]\n14 passed in 13.41s\n\n",
"passed_count": 14
},
{
"batch": 11,
"files": [
"test_production_v816.py",
"test_professional_ui_v811.py"
],
"status": "passed",
"seconds": 7.05,
"summary": "............... [100%]\n15 passed in 3.26s\n\n",
"passed_count": 15
},
{
"batch": 12,
"files": [
"test_regression_runner_v817.py",
"test_release_native_v814.py"
],
"status": "passed",
"seconds": 4.71,
"summary": "........... [100%]\n11 passed in 1.87s\n\n",
"passed_count": 11
},
{
"batch": 13,
"files": [
"test_release_reviews_v7.py",
"test_release_v813.py"
],
"status": "passed",
"seconds": 6.25,
"summary": ".............. [100%]\n14 passed in 3.24s\n\n",
"passed_count": 14
},
{
"batch": 14,
"files": [
"test_site_design_v87.py",
"test_siteforge_v817_audit.py"
],
"status": "passed",
"seconds": 8.13,
"summary": ".................................... [100%]\n36 passed in 5.16s\n\n",
"passed_count": 36
},
{
"batch": 15,
"files": [
"test_studio_v86.py",
"test_theme_pro_v3.py"
],
"status": "passed",
"seconds": 11.6,
"summary": "............... [100%]\n15 passed in 8.73s\n\n",
"passed_count": 15
},
{
"batch": 16,
"files": [
"test_v818_pg_recovery.py",
"test_v818_sqlite_pg_transfer.py"
],
"status": "passed",
"seconds": 3.43,
"summary": "........... [100%]\n11 passed in 0.90s\n\n",
"passed_count": 11
},
{
"batch": 17,
"files": [
"test_v821_editor_history_and_mapping.py",
"test_v822_canvas.py"
],
"status": "passed",
"seconds": 5.54,
"summary": "........ [100%]\n8 passed in 2.63s\n\n",
"passed_count": 8
},
{
"batch": 18,
"files": [
"test_v825_shared_components.py",
"test_v826_global_design.py"
],
"status": "passed",
"seconds": 9.25,
"summary": "................ [100%]\n16 passed in 6.53s\n\n",
"passed_count": 16
},
{
"batch": 19,
"files": [
"test_v827_guided_workspace.py",
"test_v828_launch_center.py"
],
"status": "passed",
"seconds": 4.57,
"summary": "....... [100%]\n7 passed in 2.02s\n\n",
"passed_count": 7
},
{
"batch": 20,
"files": [
"test_v8_art_installer.py",
"test_v8_workflows.py"
],
"status": "passed",
"seconds": 5.15,
"summary": ".............. [100%]\n14 passed in 2.25s\n\n",
"passed_count": 14
},
{
"batch": 21,
"files": [
"test_wordpress_baseline.py",
"test_worker_queue_v6.py"
],
"status": "passed",
"seconds": 13.36,
"summary": "............ [100%]\n12 passed in 10.27s\n\n",
"passed_count": 12
},
{
"batch": 22,
"files": [
"test_workspace_v810.py",
"test_workspace_v812.py"
],
"status": "failed",
"seconds": 9.11,
"summary": "</div></form></dialog>\\n</body></html>\\n'\n + where '<!doctype html>\\n<html lang=\"zh-CN\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,ini...-muted\">取消</button><button type=\"submit\" class=\"btn btn-primary\">保存内容</button></div></form></dialog>\\n</body></html>\\n' = <Response [200 OK]>.text\n1 failed, 12 passed in 3.36s\n\n",
"passed_count": 12
},
{
"batch": 23,
"files": [
"test_wp_complex_v820.py",
"test_wp_migration_v81.py"
],
"status": "passed",
"seconds": 5.91,
"summary": "...................... [100%]\n22 passed in 2.82s\n\n",
"passed_count": 22
},
{
"batch": 24,
"files": [
"test_wp_migration_v82.py",
"test_wp_migration_v83.py"
],
"status": "passed",
"seconds": 8.14,
"summary": ".................... [100%]\n20 passed in 5.41s\n\n",
"passed_count": 20
}
]
}