{ "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": "\\n\\n'\n + where '\\n取消\\n\\n' = .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 } ] }