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>
This commit is contained in:
@@ -0,0 +1,293 @@
|
||||
{
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
<!doctype html><html lang="zh-CN"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>SiteForge V8.28 集成验收</title><style>
|
||||
*{box-sizing:border-box}body{margin:0;background:#f6f8fb;color:#21324a;font-family:system-ui,'Microsoft YaHei',sans-serif;font-size:14px;line-height:1.7}main{max-width:1050px;margin:auto;padding:48px 24px}h1{font-size:31px}p{color:#65758d}header,section{background:white;border:1px solid #e0e8f2;border-radius:15px;padding:25px;margin:16px 0}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.stat{border:1px solid #e5eaf1;padding:20px;border-radius:12px}.stat strong{display:block;font-size:29px;color:#255d9d}table{width:100%;border-collapse:collapse;font-size:12px}th,td{padding:12px 10px;text-align:left;border-bottom:1px solid #edf1f6;vertical-align:top}th{background:#f8fafc}.table-wrap{overflow-x:auto}code{background:#f2f5fa;padding:2px 5px;border-radius:4px}a{color:#245ac6}@media(max-width:650px){.stats{grid-template-columns:1fr}main{padding:20px 12px}h1{font-size:24px}}</style></head><body><main><header><small>SITEFORGE / V8.28.0-dev.1</small><h1>新手友好上线中心 · 集成验收</h1><p>结论:历史回归全部验证通过(含一次修正旧版断言后的独立复测)。本报告仅说明当前隔离环境测试;不代表生产上线完成。</p></header>
|
||||
<section class="stats"><div class="stat"><strong>383</strong><span>Python 用例通过</span></div><div class="stat"><strong>24/24</strong><span>最终验证批次</span></div><div class="stat"><strong>0</strong><span>尚未关闭的失败/超时批次</span></div></section>
|
||||
<section><h2>回归差异说明</h2><p>初次分组回归第 22 批中,V8.10 旧测试仍以“构建与交付”为固定导航名称,产生 1 项断言失败;按 V8.28 已确认的新菜单“生成与预览 / 检查并上线”更新测试后,第 22 批独立复测 13 项全部通过。最初失败日志保留,不将其隐藏为初次通过。</p></section><section><h2>本版开发改动</h2><p>侧边菜单统一可点击;新增“检查并上线”六步操作中心;修正审批与发布前检查的顺序;上线版本选择、人工预览确认、审批状态、发布条件、部署任务与外网核验有清晰区分;同一版重复提交审批和部署有防护;移动端 390px 适配。</p><p>原有数据结构、登录 CSRF、角色、发布审批和远程 Worker 协议均继续保留。</p></section>
|
||||
<section><h2>验证边界</h2><table><tbody><tr><td>HTTP + Worker 构建、ZIP 与预览</td><td>通过,隔离 SQLite</td></tr><tr><td>Chromium 后台 UI 流程</td><td>通过,使用模拟接口、无真实部署</td></tr><tr><td>JavaScript 专项及历史测试</td><td>详见 Node.js 测试日志</td></tr><tr><td>Art Design Pro 官方工程 pnpm build</td><td>尚未验证</td></tr><tr><td>生产 PostgreSQL、Redis、多 Worker</td><td>尚未验证</td></tr><tr><td>真实 HTTPS/SFTP/S3 发布、回滚、DNS、CDN</td><td>尚未验证</td></tr></tbody></table></section>
|
||||
<section><h2>分批回归详情</h2><div class="table-wrap"><table><thead><tr><th>批次</th><th>模块</th><th>状态</th><th>通过用例</th><th>耗时</th></tr></thead><tbody><tr><td>1</td><td>test_commercial_v5.py, test_connectors_v84.py</td><td>passed</td><td>20</td><td>7.5s</td></tr><tr><td>2</td><td>test_connectors_v85.py, test_console_v819.py</td><td>passed</td><td>23</td><td>7.8s</td></tr><tr><td>3</td><td>test_core_v4.py, test_deep_nested_v824.py</td><td>passed</td><td>19</td><td>9.5s</td></tr><tr><td>4</td><td>test_editor_easy_v8212.py, test_editor_ux_v8211.py</td><td>passed</td><td>6</td><td>3.0s</td></tr><tr><td>5</td><td>test_enterprise.py, test_enterprise_v7.py</td><td>passed</td><td>16</td><td>10.2s</td></tr><tr><td>6</td><td>test_factory.py, test_factory_v2.py</td><td>passed</td><td>24</td><td>13.1s</td></tr><tr><td>7</td><td>test_mobile_tabs_v8213.py, test_multilingual_v815.py</td><td>passed</td><td>20</td><td>8.7s</td></tr><tr><td>8</td><td>test_nested_v823.py, test_p0_71.py</td><td>passed</td><td>8</td><td>5.1s</td></tr><tr><td>9</td><td>test_p0_backup.py, test_p0_p4_completion_v88.py</td><td>passed</td><td>19</td><td>6.6s</td></tr><tr><td>10</td><td>test_p0_p4_completion_v89.py, test_p1_platform.py</td><td>passed</td><td>14</td><td>19.2s</td></tr><tr><td>11</td><td>test_production_v816.py, test_professional_ui_v811.py</td><td>passed</td><td>15</td><td>7.0s</td></tr><tr><td>12</td><td>test_regression_runner_v817.py, test_release_native_v814.py</td><td>passed</td><td>11</td><td>4.7s</td></tr><tr><td>13</td><td>test_release_reviews_v7.py, test_release_v813.py</td><td>passed</td><td>14</td><td>6.2s</td></tr><tr><td>14</td><td>test_site_design_v87.py, test_siteforge_v817_audit.py</td><td>passed</td><td>36</td><td>8.1s</td></tr><tr><td>15</td><td>test_studio_v86.py, test_theme_pro_v3.py</td><td>passed</td><td>15</td><td>11.6s</td></tr><tr><td>16</td><td>test_v818_pg_recovery.py, test_v818_sqlite_pg_transfer.py</td><td>passed</td><td>11</td><td>3.4s</td></tr><tr><td>17</td><td>test_v821_editor_history_and_mapping.py, test_v822_canvas.py</td><td>passed</td><td>8</td><td>5.5s</td></tr><tr><td>18</td><td>test_v825_shared_components.py, test_v826_global_design.py</td><td>passed</td><td>16</td><td>9.2s</td></tr><tr><td>19</td><td>test_v827_guided_workspace.py, test_v828_launch_center.py</td><td>passed</td><td>7</td><td>4.6s</td></tr><tr><td>20</td><td>test_v8_art_installer.py, test_v8_workflows.py</td><td>passed</td><td>14</td><td>5.2s</td></tr><tr><td>21</td><td>test_wordpress_baseline.py, test_worker_queue_v6.py</td><td>passed</td><td>12</td><td>13.4s</td></tr><tr><td>22</td><td>test_workspace_v810.py, test_workspace_v812.py</td><td>failed</td><td>12</td><td>9.1s</td></tr><tr><td>23</td><td>test_wp_complex_v820.py, test_wp_migration_v81.py</td><td>passed</td><td>22</td><td>5.9s</td></tr><tr><td>24</td><td>test_wp_migration_v82.py, test_wp_migration_v83.py</td><td>passed</td><td>20</td><td>8.1s</td></tr></tbody></table></div></section><section><h2>交付材料</h2><p><code>docs/V8_28_GUIDED_LAUNCH_CENTER.md</code>、<code>scripts/browser_launch_v828.py</code>、<code>scripts/regression_v828.py</code>、<code>tests_js/workspace_launch_v828.test.cjs</code> 和 HTML 离线演示。</p></section></main></body></html>
|
||||
@@ -0,0 +1,11 @@
|
||||
# SiteForge V8.28 集成验收
|
||||
|
||||
- Python 模块:48
|
||||
- 最终验证批次:24/24 通过(第 22 批旧断言更新后复测)
|
||||
- 测试用例通过:383
|
||||
- 初次运行失败批次:1;最终未关闭批次:0
|
||||
- Chromium 模拟接口工作台:通过
|
||||
- HTTP + Worker 隔离构建:通过
|
||||
- 正式 PostgreSQL/Redis/Art Design Pro 编译/远程部署:未实测
|
||||
|
||||
本结果不可替代生产验收。
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 249 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 198 KiB |
Reference in New Issue
Block a user