{ "config": { "configFile": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\playwright.config.ts", "rootDir": "G:/ZClaw_openfang/desktop/tests/e2e/specs", "forbidOnly": false, "fullyParallel": true, "globalSetup": null, "globalTeardown": null, "globalTimeout": 0, "grep": {}, "grepInvert": null, "maxFailures": 0, "metadata": { "actualWorkers": 8 }, "preserveOutput": "always", "projects": [ { "outputDir": "G:/ZClaw_openfang/desktop/tests/e2e/test-results/artifacts", "repeatEach": 1, "retries": 0, "metadata": { "actualWorkers": 8 }, "id": "chromium", "name": "chromium", "testDir": "G:/ZClaw_openfang/desktop/tests/e2e/specs", "testIgnore": [], "testMatch": [ "**/*.@(spec|test).?(c|m)[jt]s?(x)" ], "timeout": 120000 }, { "outputDir": "G:/ZClaw_openfang/desktop/tests/e2e/test-results/artifacts", "repeatEach": 1, "retries": 0, "metadata": { "actualWorkers": 8 }, "id": "data-flow", "name": "data-flow", "testDir": "G:/ZClaw_openfang/desktop/tests/e2e/specs", "testIgnore": [], "testMatch": [ "/data-flow\\.spec\\.ts/" ], "timeout": 120000 }, { "outputDir": "G:/ZClaw_openfang/desktop/tests/e2e/test-results/artifacts", "repeatEach": 1, "retries": 0, "metadata": { "actualWorkers": 8 }, "id": "store-state", "name": "store-state", "testDir": "G:/ZClaw_openfang/desktop/tests/e2e/specs", "testIgnore": [], "testMatch": [ "/store-state\\.spec\\.ts/" ], "timeout": 120000 }, { "outputDir": "G:/ZClaw_openfang/desktop/tests/e2e/test-results/artifacts", "repeatEach": 1, "retries": 0, "metadata": { "actualWorkers": 8 }, "id": "edge-cases", "name": "edge-cases", "testDir": "G:/ZClaw_openfang/desktop/tests/e2e/specs", "testIgnore": [], "testMatch": [ "/edge-cases\\.spec\\.ts/" ], "timeout": 180000 } ], "quiet": false, "reporter": [ [ "html", { "outputFolder": "test-results/html-report" } ], [ "json", { "outputFile": "test-results/results.json" } ], [ "list", null ] ], "reportSlowTests": { "max": 5, "threshold": 300000 }, "runAgents": "none", "shard": null, "tags": [], "updateSnapshots": "missing", "updateSourceMethod": "patch", "version": "1.58.2", "workers": 8, "webServer": { "command": "pnpm dev", "url": "http://localhost:1420", "reuseExistingServer": true, "timeout": 120000, "stdout": "pipe", "stderr": "pipe" } }, "suites": [ { "title": "app-verification.spec.ts", "file": "app-verification.spec.ts", "column": 0, "line": 0, "specs": [], "suites": [ { "title": "ZCLAW 前端功能验证", "file": "app-verification.spec.ts", "line": 27, "column": 6, "specs": [], "suites": [ { "title": "1. 应用基础渲染", "file": "app-verification.spec.ts", "line": 33, "column": 8, "specs": [ { "title": "应用容器正确渲染", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 0, "parallelIndex": 0, "status": "passed", "duration": 9121, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:14.108Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-49dd5c3740cccbc8289a", "file": "app-verification.spec.ts", "line": 34, "column": 5 }, { "title": "页面标题正确", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 1, "parallelIndex": 1, "status": "passed", "duration": 8910, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:14.139Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-abf1781b0710d17c3f2a", "file": "app-verification.spec.ts", "line": 50, "column": 5 } ] }, { "title": "2. Sidebar 侧边栏导航", "file": "app-verification.spec.ts", "line": 55, "column": 8, "specs": [ { "title": "侧边栏可见并包含导航项", "ok": false, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 2, "parallelIndex": 2, "status": "failed", "duration": 19021, "error": { "message": "TimeoutError: page.waitForSelector: Timeout 10000ms exceeded.\nCall log:\n\u001b[2m - waiting for locator('.h-screen') to be visible\u001b[22m\n", "stack": "TimeoutError: page.waitForSelector: Timeout 10000ms exceeded.\nCall log:\n\u001b[2m - waiting for locator('.h-screen') to be visible\u001b[22m\n\n at waitForAppReady (G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\app-verification.spec.ts:16:14)\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\app-verification.spec.ts:30:5", "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\app-verification.spec.ts", "column": 14, "line": 16 }, "snippet": "\u001b[0m \u001b[90m 14 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mwaitForLoadState(\u001b[32m'networkidle'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 15 |\u001b[39m \u001b[90m// 等待主应用容器出现\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 16 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mwaitForSelector(\u001b[32m'.h-screen'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m10000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 17 |\u001b[39m }\n \u001b[90m 18 |\u001b[39m\n \u001b[90m 19 |\u001b[39m \u001b[90m// 辅助函数:截图并保存\u001b[39m\u001b[0m" }, "errors": [ { "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\app-verification.spec.ts", "column": 14, "line": 16 }, "message": "TimeoutError: page.waitForSelector: Timeout 10000ms exceeded.\nCall log:\n\u001b[2m - waiting for locator('.h-screen') to be visible\u001b[22m\n\n\n 14 | await page.waitForLoadState('networkidle');\n 15 | // 等待主应用容器出现\n> 16 | await page.waitForSelector('.h-screen', { timeout: 10000 });\n | ^\n 17 | }\n 18 |\n 19 | // 辅助函数:截图并保存\n at waitForAppReady (G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\app-verification.spec.ts:16:14)\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\app-verification.spec.ts:30:5" } ], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:14.122Z", "annotations": [], "attachments": [ { "name": "screenshot", "contentType": "image/png", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\app-verification-ZCLAW-前端功能验证-2-Sidebar-侧边栏导航-侧边栏可见并包含导航项-chromium\\test-failed-1.png" }, { "name": "video", "contentType": "video/webm", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\app-verification-ZCLAW-前端功能验证-2-Sidebar-侧边栏导航-侧边栏可见并包含导航项-chromium\\video.webm" }, { "name": "error-context", "contentType": "text/markdown", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\app-verification-ZCLAW-前端功能验证-2-Sidebar-侧边栏导航-侧边栏可见并包含导航项-chromium\\error-context.md" } ], "errorLocation": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\app-verification.spec.ts", "column": 14, "line": 16 } } ], "status": "unexpected" } ], "id": "91fd37acece20ae22b70-775813656fed780e4865", "file": "app-verification.spec.ts", "line": 56, "column": 5 }, { "title": "导航切换功能", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 3, "parallelIndex": 3, "status": "passed", "duration": 9048, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:14.135Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-60dd9042a3729ef757d6", "file": "app-verification.spec.ts", "line": 78, "column": 5 }, { "title": "设置按钮可用", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 4, "parallelIndex": 4, "status": "passed", "duration": 9142, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:14.115Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-9ceb05ab3b71b34808d3", "file": "app-verification.spec.ts", "line": 94, "column": 5 } ] }, { "title": "3. ChatArea 聊天功能", "file": "app-verification.spec.ts", "line": 107, "column": 8, "specs": [ { "title": "聊天区域渲染", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 5, "parallelIndex": 5, "status": "passed", "duration": 8747, "errors": [], "stdout": [ { "text": "Chat input found: true\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:14.149Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-b7108a2c388d349a1c85", "file": "app-verification.spec.ts", "line": 108, "column": 5 }, { "title": "消息发送功能", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 6, "parallelIndex": 6, "status": "passed", "duration": 9321, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:14.096Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-3e0629d374dfd7c691dd", "file": "app-verification.spec.ts", "line": 128, "column": 5 }, { "title": "会话列表渲染", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 7, "parallelIndex": 7, "status": "passed", "duration": 8638, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:14.120Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-b7e0ddad7ed0b67656b6", "file": "app-verification.spec.ts", "line": 148, "column": 5 } ] }, { "title": "4. Hands 系统UI", "file": "app-verification.spec.ts", "line": 159, "column": 8, "specs": [ { "title": "Hands 列表渲染", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 7, "parallelIndex": 7, "status": "passed", "duration": 1833, "errors": [], "stdout": [ { "text": "Found 0 hand cards\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:23.469Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-64da3b28dc87e3b848e6", "file": "app-verification.spec.ts", "line": 170, "column": 5 }, { "title": "Hand 触发按钮", "ok": false, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 5, "parallelIndex": 5, "status": "failed", "duration": 12891, "error": { "message": "TimeoutError: page.waitForSelector: Timeout 10000ms exceeded.\nCall log:\n\u001b[2m - waiting for locator('.h-screen') to be visible\u001b[22m\n", "stack": "TimeoutError: page.waitForSelector: Timeout 10000ms exceeded.\nCall log:\n\u001b[2m - waiting for locator('.h-screen') to be visible\u001b[22m\n\n at waitForAppReady (G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\app-verification.spec.ts:16:14)\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\app-verification.spec.ts:30:5", "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\app-verification.spec.ts", "column": 14, "line": 16 }, "snippet": "\u001b[0m \u001b[90m 14 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mwaitForLoadState(\u001b[32m'networkidle'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 15 |\u001b[39m \u001b[90m// 等待主应用容器出现\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 16 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mwaitForSelector(\u001b[32m'.h-screen'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m10000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 17 |\u001b[39m }\n \u001b[90m 18 |\u001b[39m\n \u001b[90m 19 |\u001b[39m \u001b[90m// 辅助函数:截图并保存\u001b[39m\u001b[0m" }, "errors": [ { "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\app-verification.spec.ts", "column": 14, "line": 16 }, "message": "TimeoutError: page.waitForSelector: Timeout 10000ms exceeded.\nCall log:\n\u001b[2m - waiting for locator('.h-screen') to be visible\u001b[22m\n\n\n 14 | await page.waitForLoadState('networkidle');\n 15 | // 等待主应用容器出现\n> 16 | await page.waitForSelector('.h-screen', { timeout: 10000 });\n | ^\n 17 | }\n 18 |\n 19 | // 辅助函数:截图并保存\n at waitForAppReady (G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\app-verification.spec.ts:16:14)\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\app-verification.spec.ts:30:5" } ], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:23.576Z", "annotations": [], "attachments": [ { "name": "screenshot", "contentType": "image/png", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\app-verification-ZCLAW-前端功能验证-4-Hands-系统UI-Hand-触发按钮-chromium\\test-failed-1.png" }, { "name": "video", "contentType": "video/webm", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\app-verification-ZCLAW-前端功能验证-4-Hands-系统UI-Hand-触发按钮-chromium\\video.webm" }, { "name": "error-context", "contentType": "text/markdown", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\app-verification-ZCLAW-前端功能验证-4-Hands-系统UI-Hand-触发按钮-chromium\\error-context.md" } ], "errorLocation": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\app-verification.spec.ts", "column": 14, "line": 16 } } ], "status": "unexpected" } ], "id": "91fd37acece20ae22b70-af912f60ef3aeff1e1b2", "file": "app-verification.spec.ts", "line": 186, "column": 5 } ] }, { "title": "5. Workflow/Scheduler 面板", "file": "app-verification.spec.ts", "line": 195, "column": 8, "specs": [ { "title": "Scheduler 面板渲染", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 1, "parallelIndex": 1, "status": "passed", "duration": 2007, "errors": [], "stdout": [ { "text": "Task list found: true\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:23.711Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-52aa3250313818874a82", "file": "app-verification.spec.ts", "line": 205, "column": 5 }, { "title": "工作流编辑器", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 3, "parallelIndex": 3, "status": "passed", "duration": 2150, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:23.922Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-e1f19602ad96fbc849c6", "file": "app-verification.spec.ts", "line": 218, "column": 5 } ] }, { "title": "6. Team 协作视图", "file": "app-verification.spec.ts", "line": 229, "column": 8, "specs": [ { "title": "Team 列表和创建", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 0, "parallelIndex": 0, "status": "passed", "duration": 2778, "errors": [], "stdout": [ { "text": "Team create button available\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:23.959Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-1452ff4ab40fcd49ecce", "file": "app-verification.spec.ts", "line": 239, "column": 5 }, { "title": "团队成员显示", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 4, "parallelIndex": 4, "status": "passed", "duration": 2655, "errors": [], "stdout": [ { "text": "Found 0 team members\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:24.008Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-596b39d154685026834e", "file": "app-verification.spec.ts", "line": 253, "column": 5 } ] }, { "title": "7. Swarm Dashboard", "file": "app-verification.spec.ts", "line": 263, "column": 8, "specs": [ { "title": "Swarm 仪表板渲染", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 6, "parallelIndex": 6, "status": "passed", "duration": 2666, "errors": [], "stdout": [ { "text": "Found 0 status indicators\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:24.154Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-b2efd263accb42e6075c", "file": "app-verification.spec.ts", "line": 273, "column": 5 } ] }, { "title": "8. Settings 设置页面", "file": "app-verification.spec.ts", "line": 287, "column": 8, "specs": [ { "title": "设置页面渲染", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 7, "parallelIndex": 7, "status": "passed", "duration": 2212, "errors": [], "stdout": [ { "text": "Found 3 settings tabs\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:25.334Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-6539c4f8acc905308f4e", "file": "app-verification.spec.ts", "line": 297, "column": 5 }, { "title": "通用设置", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 1, "parallelIndex": 1, "status": "passed", "duration": 2235, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:25.742Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-b59f8c7727d96f4d0071", "file": "app-verification.spec.ts", "line": 313, "column": 5 }, { "title": "模型配置", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 3, "parallelIndex": 3, "status": "passed", "duration": 2228, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:26.102Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-c9c23bc778366882e8cf", "file": "app-verification.spec.ts", "line": 323, "column": 5 } ] }, { "title": "9. RightPanel 右侧面板", "file": "app-verification.spec.ts", "line": 340, "column": 8, "specs": [ { "title": "右侧面板渲染", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 4, "parallelIndex": 4, "status": "passed", "duration": 1765, "errors": [], "stdout": [ { "text": "Right panel content found: false\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:26.691Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-69d1bc2adb5ea221871b", "file": "app-verification.spec.ts", "line": 341, "column": 5 } ] }, { "title": "10. 错误处理和边界情况", "file": "app-verification.spec.ts", "line": 357, "column": 8, "specs": [ { "title": "网络错误处理", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 0, "parallelIndex": 0, "status": "passed", "duration": 2729, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:26.767Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-ec5f579ba123087cc4c7", "file": "app-verification.spec.ts", "line": 358, "column": 5 }, { "title": "空状态显示", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 6, "parallelIndex": 6, "status": "passed", "duration": 1541, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:26.850Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-e9f8f57e30b52efca2f9", "file": "app-verification.spec.ts", "line": 374, "column": 5 } ] }, { "title": "11. 响应式布局", "file": "app-verification.spec.ts", "line": 386, "column": 8, "specs": [ { "title": "移动端布局", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 7, "parallelIndex": 7, "status": "passed", "duration": 1954, "errors": [], "stdout": [ { "text": "Mobile menu found: false\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:27.573Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-f2357bc0901f77bab9ef", "file": "app-verification.spec.ts", "line": 387, "column": 5 }, { "title": "平板布局", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 1, "parallelIndex": 1, "status": "passed", "duration": 2022, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:27.990Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-8e6a16c4860f0b9a5b63", "file": "app-verification.spec.ts", "line": 401, "column": 5 }, { "title": "桌面布局", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 3, "parallelIndex": 3, "status": "passed", "duration": 2246, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:28.362Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-f0ba28f74ca7e0386514", "file": "app-verification.spec.ts", "line": 408, "column": 5 } ] }, { "title": "12. 性能检查", "file": "app-verification.spec.ts", "line": 416, "column": 8, "specs": [ { "title": "页面加载性能", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 6, "parallelIndex": 6, "status": "passed", "duration": 2469, "errors": [], "stdout": [ { "text": "Page load time: 1014ms\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:28.423Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-1e1038838eee5799028e", "file": "app-verification.spec.ts", "line": 417, "column": 5 }, { "title": "内存使用检查", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 4, "parallelIndex": 4, "status": "passed", "duration": 1499, "errors": [], "stdout": [ { "text": "DOM nodes: 147\n" }, { "text": "Memory used: 22MB\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:28.479Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-2f6f9c2908ad357789e9", "file": "app-verification.spec.ts", "line": 429, "column": 5 } ] } ] }, { "title": "13. 控制台错误检查", "file": "app-verification.spec.ts", "line": 444, "column": 6, "specs": [ { "title": "无 JavaScript 错误", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 0, "parallelIndex": 0, "status": "passed", "duration": 2486, "errors": [], "stdout": [ { "text": "Console errors: 0\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:29.514Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-ed5f146e53d036f87939", "file": "app-verification.spec.ts", "line": 445, "column": 3 }, { "title": "无网络请求失败", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 7, "parallelIndex": 7, "status": "passed", "duration": 3536, "errors": [], "stdout": [ { "text": "Failed requests: 2\n" }, { "text": " - http://localhost:1420/api/health\n" }, { "text": " - http://localhost:1420/api/health\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:29.545Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "91fd37acece20ae22b70-c472ba049aef47c81802", "file": "app-verification.spec.ts", "line": 473, "column": 3 } ] } ] }, { "title": "core-features.spec.ts", "file": "core-features.spec.ts", "column": 0, "line": 0, "specs": [], "suites": [ { "title": "Gateway Connection Tests", "file": "core-features.spec.ts", "line": 27, "column": 6, "specs": [ { "title": "GW-CONN-01: Health check returns correct status", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 1, "parallelIndex": 1, "status": "passed", "duration": 6650, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:30.079Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "4c7e6ccba74c38082eff-00a98b529e56571a16d7", "file": "core-features.spec.ts", "line": 31, "column": 3 }, { "title": "GW-CONN-02: Connection state updates correctly", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 1, "parallelIndex": 1, "status": "passed", "duration": 7304, "errors": [], "stdout": [ { "text": "Connection state: null\n" }, { "text": "\n========================================\n" }, { "text": "ZCLAW Core Feature E2E Tests Complete\n" }, { "text": "========================================\n" }, { "text": "Test Time: 2026-03-22T01:44:44.082Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:36.745Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "4c7e6ccba74c38082eff-56247416f4d62470d667", "file": "core-features.spec.ts", "line": 58, "column": 3 }, { "title": "GW-CONN-03: Models list loads correctly", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 3, "parallelIndex": 3, "status": "passed", "duration": 4110, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:30.730Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "4c7e6ccba74c38082eff-7be69bc6041cefb8bbbd", "file": "core-features.spec.ts", "line": 85, "column": 3 }, { "title": "GW-CONN-04: Agents list loads correctly", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 3, "parallelIndex": 3, "status": "passed", "duration": 3974, "errors": [], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW Core Feature E2E Tests Complete\n" }, { "text": "========================================\n" }, { "text": "Test Time: 2026-03-22T01:44:38.841Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:34.852Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "4c7e6ccba74c38082eff-e538b000706cdbb625f7", "file": "core-features.spec.ts", "line": 112, "column": 3 }, { "title": "GW-CONN-05: Error handling for failed health check", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 6, "parallelIndex": 6, "status": "passed", "duration": 4139, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:30.950Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "4c7e6ccba74c38082eff-2c3bbb4d42ab66aad25a", "file": "core-features.spec.ts", "line": 140, "column": 3 } ] }, { "title": "Chat Message Tests", "file": "core-features.spec.ts", "line": 167, "column": 6, "specs": [ { "title": "CHAT-MSG-01: Send message and receive response", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 6, "parallelIndex": 6, "status": "passed", "duration": 6219, "errors": [], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW Core Feature E2E Tests Complete\n" }, { "text": "========================================\n" }, { "text": "Test Time: 2026-03-22T01:44:41.347Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:35.108Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "4c7e6ccba74c38082eff-bc33e6122e21203b1f7b", "file": "core-features.spec.ts", "line": 171, "column": 3 }, { "title": "CHAT-MSG-02: Message updates store state", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 0, "parallelIndex": 0, "status": "passed", "duration": 7668, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:32.037Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "4c7e6ccba74c38082eff-428751c1a27c810d25bc", "file": "core-features.spec.ts", "line": 211, "column": 3 }, { "title": "CHAT-MSG-03: Streaming response indicator", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 0, "parallelIndex": 0, "status": "passed", "duration": 7760, "errors": [], "stdout": [ { "text": "Is streaming: false\n" }, { "text": "\n========================================\n" }, { "text": "ZCLAW Core Feature E2E Tests Complete\n" }, { "text": "========================================\n" }, { "text": "Test Time: 2026-03-22T01:44:47.488Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:39.714Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "4c7e6ccba74c38082eff-e8eb267dbe5d6b944c33", "file": "core-features.spec.ts", "line": 246, "column": 3 }, { "title": "CHAT-MSG-04: Error handling for failed message", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 7, "parallelIndex": 7, "status": "passed", "duration": 7219, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:33.138Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "4c7e6ccba74c38082eff-1e63c4d4b91978536fc3", "file": "core-features.spec.ts", "line": 280, "column": 3 }, { "title": "CHAT-MSG-05: Multiple messages in sequence", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 7, "parallelIndex": 7, "status": "passed", "duration": 9262, "errors": [], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW Core Feature E2E Tests Complete\n" }, { "text": "========================================\n" }, { "text": "Test Time: 2026-03-22T01:44:49.645Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:40.368Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "4c7e6ccba74c38082eff-5a47c30a876dee9d7f6a", "file": "core-features.spec.ts", "line": 300, "column": 3 } ] }, { "title": "Hands Trigger Tests", "file": "core-features.spec.ts", "line": 335, "column": 6, "specs": [ { "title": "HAND-TRIG-01: Hands list loads correctly", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 4, "parallelIndex": 4, "status": "passed", "duration": 5848, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:30.063Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "4c7e6ccba74c38082eff-6f4fd4a6b4a65bb03f38", "file": "core-features.spec.ts", "line": 348, "column": 3 }, { "title": "HAND-TRIG-02: Activate Hand returns run ID", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 4, "parallelIndex": 4, "status": "passed", "duration": 5681, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:35.929Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "4c7e6ccba74c38082eff-dd671a3ea1ef94931622", "file": "core-features.spec.ts", "line": 373, "column": 3 }, { "title": "HAND-TRIG-03: Hand status transitions", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 4, "parallelIndex": 4, "status": "passed", "duration": 5548, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:41.626Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "4c7e6ccba74c38082eff-de3df0e8a962fced09e7", "file": "core-features.spec.ts", "line": 394, "column": 3 }, { "title": "HAND-TRIG-04: Hand requirements check", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 4, "parallelIndex": 4, "status": "passed", "duration": 5444, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:47.189Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "4c7e6ccba74c38082eff-eb52a71ba9d575f23b87", "file": "core-features.spec.ts", "line": 436, "column": 3 }, { "title": "HAND-TRIG-05: Hand run history", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 4, "parallelIndex": 4, "status": "passed", "duration": 5400, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:52.645Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "4c7e6ccba74c38082eff-e42802f04fdc3e0b2ace", "file": "core-features.spec.ts", "line": 454, "column": 3 }, { "title": "HAND-TRIG-06: Hand approval flow", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 4, "parallelIndex": 4, "status": "passed", "duration": 5398, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:58.060Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "4c7e6ccba74c38082eff-d595d4fb8c9beec7acb6", "file": "core-features.spec.ts", "line": 469, "column": 3 }, { "title": "HAND-TRIG-07: Hand cancellation", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 4, "parallelIndex": 4, "status": "passed", "duration": 5347, "errors": [], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW Core Feature E2E Tests Complete\n" }, { "text": "========================================\n" }, { "text": "Test Time: 2026-03-22T01:45:08.831Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:03.468Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "4c7e6ccba74c38082eff-b0522178e61f72139d0f", "file": "core-features.spec.ts", "line": 489, "column": 3 } ] }, { "title": "Integration Tests", "file": "core-features.spec.ts", "line": 510, "column": 6, "specs": [ { "title": "INT-01: Full workflow - connect, chat, trigger hand", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 8, "parallelIndex": 2, "status": "passed", "duration": 7941, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:35.317Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "4c7e6ccba74c38082eff-53daeba1cff78b6f4bd4", "file": "core-features.spec.ts", "line": 512, "column": 3 }, { "title": "INT-02: State persistence across navigation", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 8, "parallelIndex": 2, "status": "passed", "duration": 10318, "errors": [], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW Core Feature E2E Tests Complete\n" }, { "text": "========================================\n" }, { "text": "Test Time: 2026-03-22T01:44:53.775Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:43.425Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "4c7e6ccba74c38082eff-6db9a428fbbbb6f13174", "file": "core-features.spec.ts", "line": 560, "column": 3 } ] } ] }, { "title": "data-flow.spec.ts", "file": "data-flow.spec.ts", "column": 0, "line": 0, "specs": [], "suites": [ { "title": "聊天数据流验证", "file": "data-flow.spec.ts", "line": 32, "column": 6, "specs": [ { "title": "CHAT-DF-01: 发送消息完整数据流", "ok": false, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 9, "parallelIndex": 5, "status": "failed", "duration": 66886, "error": { "message": "TimeoutError: page.waitForRequest: Timeout 30000ms exceeded while waiting for event \"request\"\n=========================== logs ===========================\nwaiting for request \"**/api/chat**\"\n============================================================", "stack": "TimeoutError: page.waitForRequest: Timeout 30000ms exceeded while waiting for event \"request\"\n=========================== logs ===========================\nwaiting for request \"**/api/chat**\"\n============================================================\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts:197:20\n at Object.sendChatMessage (G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts:195:23)\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\data-flow.spec.ts:60:38", "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts", "column": 20, "line": 197 }, "snippet": "\u001b[90m at \u001b[39m..\\utils\\user-actions.ts:197\n\n\u001b[0m \u001b[90m 195 |\u001b[39m \u001b[36mconst\u001b[39m [request] \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m.\u001b[39mall([\n \u001b[90m 196 |\u001b[39m page\u001b[33m.\u001b[39mwaitForRequest(\u001b[32m'**/api/agents/*/message**'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m options\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mtimeout \u001b[33m?\u001b[39m\u001b[33m?\u001b[39m \u001b[35m30000\u001b[39m })\u001b[33m.\u001b[39m\u001b[36mcatch\u001b[39m(\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 197 |\u001b[39m () \u001b[33m=>\u001b[39m page\u001b[33m.\u001b[39mwaitForRequest(\u001b[32m'**/api/chat**'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m options\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mtimeout \u001b[33m?\u001b[39m\u001b[33m?\u001b[39m \u001b[35m30000\u001b[39m })\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 198 |\u001b[39m )\u001b[33m,\u001b[39m\n \u001b[90m 199 |\u001b[39m sendButton\u001b[33m.\u001b[39mfirst()\u001b[33m.\u001b[39mclick()\u001b[33m,\u001b[39m\n \u001b[90m 200 |\u001b[39m ])\u001b[33m;\u001b[39m\u001b[0m" }, "errors": [ { "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts", "column": 20, "line": 197 }, "message": "TimeoutError: page.waitForRequest: Timeout 30000ms exceeded while waiting for event \"request\"\n=========================== logs ===========================\nwaiting for request \"**/api/chat**\"\n============================================================\n\n at ..\\utils\\user-actions.ts:197\n\n 195 | const [request] = await Promise.all([\n 196 | page.waitForRequest('**/api/agents/*/message**', { timeout: options?.timeout ?? 30000 }).catch(\n> 197 | () => page.waitForRequest('**/api/chat**', { timeout: options?.timeout ?? 30000 })\n | ^\n 198 | ),\n 199 | sendButton.first().click(),\n 200 | ]);\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts:197:20\n at Object.sendChatMessage (G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts:195:23)\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\data-flow.spec.ts:60:38" } ], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW 数据流验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:45:45.027Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:38.029Z", "annotations": [], "attachments": [ { "name": "screenshot", "contentType": "image/png", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\data-flow-聊天数据流验证-CHAT-DF-01-发送消息完整数据流-chromium\\test-failed-1.png" }, { "name": "video", "contentType": "video/webm", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\data-flow-聊天数据流验证-CHAT-DF-01-发送消息完整数据流-chromium\\video.webm" }, { "name": "error-context", "contentType": "text/markdown", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\data-flow-聊天数据流验证-CHAT-DF-01-发送消息完整数据流-chromium\\error-context.md" } ], "errorLocation": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts", "column": 20, "line": 197 } } ], "status": "unexpected" } ], "id": "bdcac940a81c3235ce13-529df80525619b807bdd", "file": "data-flow.spec.ts", "line": 41, "column": 3 }, { "title": "CHAT-DF-02: 流式响应数据流", "ok": false, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 16, "parallelIndex": 5, "status": "failed", "duration": 67619, "error": { "message": "TimeoutError: page.waitForRequest: Timeout 30000ms exceeded while waiting for event \"request\"\n=========================== logs ===========================\nwaiting for request \"**/api/chat**\"\n============================================================", "stack": "TimeoutError: page.waitForRequest: Timeout 30000ms exceeded while waiting for event \"request\"\n=========================== logs ===========================\nwaiting for request \"**/api/chat**\"\n============================================================\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts:197:20\n at Object.sendChatMessage (G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts:195:23)\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\data-flow.spec.ts:93:5", "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts", "column": 20, "line": 197 }, "snippet": "\u001b[90m at \u001b[39m..\\utils\\user-actions.ts:197\n\n\u001b[0m \u001b[90m 195 |\u001b[39m \u001b[36mconst\u001b[39m [request] \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m.\u001b[39mall([\n \u001b[90m 196 |\u001b[39m page\u001b[33m.\u001b[39mwaitForRequest(\u001b[32m'**/api/agents/*/message**'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m options\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mtimeout \u001b[33m?\u001b[39m\u001b[33m?\u001b[39m \u001b[35m30000\u001b[39m })\u001b[33m.\u001b[39m\u001b[36mcatch\u001b[39m(\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 197 |\u001b[39m () \u001b[33m=>\u001b[39m page\u001b[33m.\u001b[39mwaitForRequest(\u001b[32m'**/api/chat**'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m options\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mtimeout \u001b[33m?\u001b[39m\u001b[33m?\u001b[39m \u001b[35m30000\u001b[39m })\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 198 |\u001b[39m )\u001b[33m,\u001b[39m\n \u001b[90m 199 |\u001b[39m sendButton\u001b[33m.\u001b[39mfirst()\u001b[33m.\u001b[39mclick()\u001b[33m,\u001b[39m\n \u001b[90m 200 |\u001b[39m ])\u001b[33m;\u001b[39m\u001b[0m" }, "errors": [ { "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts", "column": 20, "line": 197 }, "message": "TimeoutError: page.waitForRequest: Timeout 30000ms exceeded while waiting for event \"request\"\n=========================== logs ===========================\nwaiting for request \"**/api/chat**\"\n============================================================\n\n at ..\\utils\\user-actions.ts:197\n\n 195 | const [request] = await Promise.all([\n 196 | page.waitForRequest('**/api/agents/*/message**', { timeout: options?.timeout ?? 30000 }).catch(\n> 197 | () => page.waitForRequest('**/api/chat**', { timeout: options?.timeout ?? 30000 })\n | ^\n 198 | ),\n 199 | sendButton.first().click(),\n 200 | ]);\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts:197:20\n at Object.sendChatMessage (G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts:195:23)\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\data-flow.spec.ts:93:5" } ], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW 数据流验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:46:54.571Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:46.802Z", "annotations": [], "attachments": [ { "name": "screenshot", "contentType": "image/png", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\data-flow-聊天数据流验证-CHAT-DF-02-流式响应数据流-chromium\\test-failed-1.png" }, { "name": "video", "contentType": "video/webm", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\data-flow-聊天数据流验证-CHAT-DF-02-流式响应数据流-chromium\\video.webm" }, { "name": "error-context", "contentType": "text/markdown", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\data-flow-聊天数据流验证-CHAT-DF-02-流式响应数据流-chromium\\error-context.md" } ], "errorLocation": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts", "column": 20, "line": 197 } } ], "status": "unexpected" } ], "id": "bdcac940a81c3235ce13-496be181af69c53d9536", "file": "data-flow.spec.ts", "line": 87, "column": 3 }, { "title": "CHAT-DF-03: 模型切换数据流", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 41, "parallelIndex": 5, "status": "passed", "duration": 4409, "errors": [], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW 数据流验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:47:01.117Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:46:56.542Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "bdcac940a81c3235ce13-dbc5e2812f9944422f07", "file": "data-flow.spec.ts", "line": 106, "column": 3 }, { "title": "CHAT-DF-04: 新建对话数据流", "ok": false, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 3, "parallelIndex": 3, "status": "failed", "duration": 67174, "error": { "message": "TimeoutError: page.waitForRequest: Timeout 30000ms exceeded while waiting for event \"request\"\n=========================== logs ===========================\nwaiting for request \"**/api/chat**\"\n============================================================", "stack": "TimeoutError: page.waitForRequest: Timeout 30000ms exceeded while waiting for event \"request\"\n=========================== logs ===========================\nwaiting for request \"**/api/chat**\"\n============================================================\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts:197:20\n at Object.sendChatMessage (G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts:195:23)\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\data-flow.spec.ts:150:5", "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts", "column": 20, "line": 197 }, "snippet": "\u001b[90m at \u001b[39m..\\utils\\user-actions.ts:197\n\n\u001b[0m \u001b[90m 195 |\u001b[39m \u001b[36mconst\u001b[39m [request] \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m.\u001b[39mall([\n \u001b[90m 196 |\u001b[39m page\u001b[33m.\u001b[39mwaitForRequest(\u001b[32m'**/api/agents/*/message**'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m options\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mtimeout \u001b[33m?\u001b[39m\u001b[33m?\u001b[39m \u001b[35m30000\u001b[39m })\u001b[33m.\u001b[39m\u001b[36mcatch\u001b[39m(\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 197 |\u001b[39m () \u001b[33m=>\u001b[39m page\u001b[33m.\u001b[39mwaitForRequest(\u001b[32m'**/api/chat**'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m options\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mtimeout \u001b[33m?\u001b[39m\u001b[33m?\u001b[39m \u001b[35m30000\u001b[39m })\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 198 |\u001b[39m )\u001b[33m,\u001b[39m\n \u001b[90m 199 |\u001b[39m sendButton\u001b[33m.\u001b[39mfirst()\u001b[33m.\u001b[39mclick()\u001b[33m,\u001b[39m\n \u001b[90m 200 |\u001b[39m ])\u001b[33m;\u001b[39m\u001b[0m" }, "errors": [ { "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts", "column": 20, "line": 197 }, "message": "TimeoutError: page.waitForRequest: Timeout 30000ms exceeded while waiting for event \"request\"\n=========================== logs ===========================\nwaiting for request \"**/api/chat**\"\n============================================================\n\n at ..\\utils\\user-actions.ts:197\n\n 195 | const [request] = await Promise.all([\n 196 | page.waitForRequest('**/api/agents/*/message**', { timeout: options?.timeout ?? 30000 }).catch(\n> 197 | () => page.waitForRequest('**/api/chat**', { timeout: options?.timeout ?? 30000 })\n | ^\n 198 | ),\n 199 | sendButton.first().click(),\n 200 | ]);\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts:197:20\n at Object.sendChatMessage (G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts:195:23)\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\data-flow.spec.ts:150:5" } ], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW 数据流验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:45:46.086Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:38.887Z", "annotations": [], "attachments": [ { "name": "screenshot", "contentType": "image/png", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\data-flow-聊天数据流验证-CHAT-DF-04-新建对话数据流-chromium\\test-failed-1.png" }, { "name": "video", "contentType": "video/webm", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\data-flow-聊天数据流验证-CHAT-DF-04-新建对话数据流-chromium\\video.webm" }, { "name": "error-context", "contentType": "text/markdown", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\data-flow-聊天数据流验证-CHAT-DF-04-新建对话数据流-chromium\\error-context.md" } ], "errorLocation": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\utils\\user-actions.ts", "column": 20, "line": 197 } } ], "status": "unexpected" } ], "id": "bdcac940a81c3235ce13-22028b2d3980d146b6b2", "file": "data-flow.spec.ts", "line": 145, "column": 3 }, { "title": "CHAT-DF-05: 网络错误处理数据流", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 17, "parallelIndex": 3, "status": "passed", "duration": 7274, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:47.928Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "bdcac940a81c3235ce13-542a5a6d289da07e78aa", "file": "data-flow.spec.ts", "line": 167, "column": 3 } ] }, { "title": "分身管理数据流验证", "file": "data-flow.spec.ts", "line": 202, "column": 6, "specs": [ { "title": "CLONE-DF-01: 分身列表加载数据流", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 17, "parallelIndex": 3, "status": "passed", "duration": 10225, "errors": [], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW 数据流验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:46:05.575Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:55.328Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "bdcac940a81c3235ce13-02d5a82ce9e1ba86ce41", "file": "data-flow.spec.ts", "line": 211, "column": 3 }, { "title": "CLONE-DF-02: 切换分身数据流", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 6, "parallelIndex": 6, "status": "passed", "duration": 4567, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:41.397Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "bdcac940a81c3235ce13-e91f2af762a1ae1df71a", "file": "data-flow.spec.ts", "line": 234, "column": 3 }, { "title": "CLONE-DF-03: 创建分身数据流", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 6, "parallelIndex": 6, "status": "passed", "duration": 4450, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:45.975Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "bdcac940a81c3235ce13-2ec05be0c90bbb3f6f27", "file": "data-flow.spec.ts", "line": 262, "column": 3 } ] }, { "title": "Hands 系统数据流验证", "file": "data-flow.spec.ts", "line": 298, "column": 6, "specs": [ { "title": "HAND-DF-01: Hands 列表加载数据流", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 6, "parallelIndex": 6, "status": "passed", "duration": 11829, "errors": [], "stdout": [ { "text": "Hand cards found: 0\n" }, { "text": "\n========================================\n" }, { "text": "ZCLAW 数据流验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:45:02.291Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:50.439Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "bdcac940a81c3235ce13-eb9a649ee7dea89596f0", "file": "data-flow.spec.ts", "line": 307, "column": 3 }, { "title": "HAND-DF-02: 触发 Hand 执行数据流", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [ { "type": "skip", "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\data-flow.spec.ts", "line": 341, "column": 12 } } ], "expectedStatus": "skipped", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 1, "parallelIndex": 1, "status": "skipped", "duration": 5888, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:44.125Z", "annotations": [ { "type": "skip", "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\data-flow.spec.ts", "line": 341, "column": 12 } } ], "attachments": [] } ], "status": "skipped" } ], "id": "bdcac940a81c3235ce13-008a28dfecdca8116b5e", "file": "data-flow.spec.ts", "line": 333, "column": 3 }, { "title": "HAND-DF-03: Hand 参数表单数据流", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 1, "parallelIndex": 1, "status": "passed", "duration": 5863, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:50.032Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "bdcac940a81c3235ce13-b66d34fc9491564fc927", "file": "data-flow.spec.ts", "line": 369, "column": 3 } ] }, { "title": "工作流数据流验证", "file": "data-flow.spec.ts", "line": 400, "column": 6, "specs": [ { "title": "WF-DF-01: 工作流列表数据流", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 1, "parallelIndex": 1, "status": "passed", "duration": 4918, "errors": [], "stdout": [ { "text": "Workflows in Store: 0, in UI: 0\n" }, { "text": "\n========================================\n" }, { "text": "ZCLAW 数据流验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:45:00.841Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:55.907Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "bdcac940a81c3235ce13-6df14a43ab8759e33bd6", "file": "data-flow.spec.ts", "line": 409, "column": 3 }, { "title": "WF-DF-02: 创建工作流数据流", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 0, "parallelIndex": 0, "status": "passed", "duration": 5547, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:47.520Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "bdcac940a81c3235ce13-59f8391df50172ae70fa", "file": "data-flow.spec.ts", "line": 425, "column": 3 } ] }, { "title": "技能市场数据流验证", "file": "data-flow.spec.ts", "line": 456, "column": 6, "specs": [ { "title": "SKILL-DF-01: 技能列表数据流", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 0, "parallelIndex": 0, "status": "passed", "duration": 11285, "errors": [], "stdout": [ { "text": "Skill API requests: 2\n" }, { "text": "Skills in UI: 0\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:53.077Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "bdcac940a81c3235ce13-e69ec1b43be92916482e", "file": "data-flow.spec.ts", "line": 465, "column": 3 }, { "title": "SKILL-DF-02: 搜索技能数据流", "ok": false, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 0, "parallelIndex": 0, "status": "failed", "duration": 5343, "error": { "message": "Error: locator.isVisible: Error: strict mode violation: locator('input[placeholder*=\"搜索\"]').or(locator('input[type=\"search\"]')) resolved to 2 elements:\n 1) aka getByRole('textbox', { name: '搜索...' })\n 2) aka getByRole('textbox', { name: '搜索技能、能力、触发词' })\n\nCall log:\n\u001b[2m - checking visibility of locator('input[placeholder*=\"搜索\"]').or(locator('input[type=\"search\"]'))\u001b[22m\n", "stack": "Error: locator.isVisible: Error: strict mode violation: locator('input[placeholder*=\"搜索\"]').or(locator('input[type=\"search\"]')) resolved to 2 elements:\n 1) aka getByRole('textbox', { name: '搜索...' })\n 2) aka getByRole('textbox', { name: '搜索技能、能力、触发词' })\n\nCall log:\n\u001b[2m - checking visibility of locator('input[placeholder*=\"搜索\"]').or(locator('input[type=\"search\"]'))\u001b[22m\n\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\data-flow.spec.ts:491:27", "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\data-flow.spec.ts", "column": 27, "line": 491 }, "snippet": "\u001b[0m \u001b[90m 489 |\u001b[39m )\u001b[33m;\u001b[39m\n \u001b[90m 490 |\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 491 |\u001b[39m \u001b[36mif\u001b[39m (\u001b[36mawait\u001b[39m searchInput\u001b[33m.\u001b[39misVisible()) {\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 492 |\u001b[39m \u001b[90m// 2. 输入搜索关键词\u001b[39m\n \u001b[90m 493 |\u001b[39m \u001b[36mawait\u001b[39m searchInput\u001b[33m.\u001b[39mfill(\u001b[32m'代码'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 494 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mwaitForTimeout(\u001b[35m500\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m" }, "errors": [ { "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\data-flow.spec.ts", "column": 27, "line": 491 }, "message": "Error: locator.isVisible: Error: strict mode violation: locator('input[placeholder*=\"搜索\"]').or(locator('input[type=\"search\"]')) resolved to 2 elements:\n 1) aka getByRole('textbox', { name: '搜索...' })\n 2) aka getByRole('textbox', { name: '搜索技能、能力、触发词' })\n\nCall log:\n\u001b[2m - checking visibility of locator('input[placeholder*=\"搜索\"]').or(locator('input[type=\"search\"]'))\u001b[22m\n\n\n 489 | );\n 490 |\n> 491 | if (await searchInput.isVisible()) {\n | ^\n 492 | // 2. 输入搜索关键词\n 493 | await searchInput.fill('代码');\n 494 | await page.waitForTimeout(500);\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\data-flow.spec.ts:491:27" } ], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW 数据流验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:45:09.735Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:04.375Z", "annotations": [], "attachments": [ { "name": "screenshot", "contentType": "image/png", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\data-flow-技能市场数据流验证-SKILL-DF-02-搜索技能数据流-chromium\\test-failed-1.png" }, { "name": "video", "contentType": "video/webm", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\data-flow-技能市场数据流验证-SKILL-DF-02-搜索技能数据流-chromium\\video.webm" }, { "name": "error-context", "contentType": "text/markdown", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\data-flow-技能市场数据流验证-SKILL-DF-02-搜索技能数据流-chromium\\error-context.md" } ], "errorLocation": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\data-flow.spec.ts", "column": 27, "line": 491 } } ], "status": "unexpected" } ], "id": "bdcac940a81c3235ce13-a0cd80e0a96d2f898e69", "file": "data-flow.spec.ts", "line": 485, "column": 3 } ] }, { "title": "团队协作数据流验证", "file": "data-flow.spec.ts", "line": 508, "column": 6, "specs": [ { "title": "TEAM-DF-01: 团队列表数据流", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 7, "parallelIndex": 7, "status": "passed", "duration": 5329, "errors": [], "stdout": [ { "text": "Teams in Store: 0, in UI: 0\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:49.714Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "bdcac940a81c3235ce13-d013afd3a6f16ec55da2", "file": "data-flow.spec.ts", "line": 517, "column": 3 }, { "title": "TEAM-DF-02: 创建团队数据流", "ok": false, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 7, "parallelIndex": 7, "status": "failed", "duration": 15649, "error": { "message": "TimeoutError: page.waitForSelector: Timeout 10000ms exceeded.\nCall log:\n\u001b[2m - waiting for locator('[role=\"dialog\"]') to be visible\u001b[22m\n", "stack": "TimeoutError: page.waitForSelector: Timeout 10000ms exceeded.\nCall log:\n\u001b[2m - waiting for locator('[role=\"dialog\"]') to be visible\u001b[22m\n\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\data-flow.spec.ts:538:18", "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\data-flow.spec.ts", "column": 18, "line": 538 }, "snippet": "\u001b[0m \u001b[90m 536 |\u001b[39m \u001b[36mif\u001b[39m (\u001b[36mawait\u001b[39m createBtn\u001b[33m.\u001b[39misVisible()) {\n \u001b[90m 537 |\u001b[39m \u001b[36mawait\u001b[39m createBtn\u001b[33m.\u001b[39mclick()\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 538 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mwaitForSelector(\u001b[32m'[role=\"dialog\"]'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 539 |\u001b[39m\n \u001b[90m 540 |\u001b[39m \u001b[90m// 2. 填写团队信息\u001b[39m\n \u001b[90m 541 |\u001b[39m \u001b[36mconst\u001b[39m dialog \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'[role=\"dialog\"]'\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m" }, "errors": [ { "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\data-flow.spec.ts", "column": 18, "line": 538 }, "message": "TimeoutError: page.waitForSelector: Timeout 10000ms exceeded.\nCall log:\n\u001b[2m - waiting for locator('[role=\"dialog\"]') to be visible\u001b[22m\n\n\n 536 | if (await createBtn.isVisible()) {\n 537 | await createBtn.click();\n> 538 | await page.waitForSelector('[role=\"dialog\"]');\n | ^\n 539 |\n 540 | // 2. 填写团队信息\n 541 | const dialog = page.locator('[role=\"dialog\"]');\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\data-flow.spec.ts:538:18" } ], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW 数据流验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:45:10.729Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:55.059Z", "annotations": [], "attachments": [ { "name": "screenshot", "contentType": "image/png", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\data-flow-团队协作数据流验证-TEAM-DF-02-创建团队数据流-chromium\\test-failed-1.png" }, { "name": "video", "contentType": "video/webm", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\data-flow-团队协作数据流验证-TEAM-DF-02-创建团队数据流-chromium\\video.webm" }, { "name": "error-context", "contentType": "text/markdown", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\data-flow-团队协作数据流验证-TEAM-DF-02-创建团队数据流-chromium\\error-context.md" } ], "errorLocation": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\data-flow.spec.ts", "column": 18, "line": 538 } } ], "status": "unexpected" } ], "id": "bdcac940a81c3235ce13-2b9c3212b5e2bc418924", "file": "data-flow.spec.ts", "line": 532, "column": 3 } ] }, { "title": "设置数据流验证", "file": "data-flow.spec.ts", "line": 555, "column": 6, "specs": [ { "title": "SET-DF-01: 打开设置数据流", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 11, "parallelIndex": 7, "status": "passed", "duration": 4342, "errors": [], "stdout": [ { "text": "Settings visible: true\n" }, { "text": "\n========================================\n" }, { "text": "ZCLAW 数据流验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:45:16.555Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:12.044Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "bdcac940a81c3235ce13-8b134df5feeb02852417", "file": "data-flow.spec.ts", "line": 562, "column": 3 }, { "title": "SET-DF-02: 模型配置数据流", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 8, "parallelIndex": 2, "status": "passed", "duration": 4733, "errors": [], "stdout": [ { "text": "Model options: 0\n" }, { "text": "\n========================================\n" }, { "text": "ZCLAW 数据流验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:44:58.576Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:53.822Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "bdcac940a81c3235ce13-6df5d90e5b85ad4debff", "file": "data-flow.spec.ts", "line": 576, "column": 3 } ] } ] }, { "title": "edge-cases.spec.ts", "file": "edge-cases.spec.ts", "column": 0, "line": 0, "specs": [], "suites": [ { "title": "网络边界情况", "file": "edge-cases.spec.ts", "line": 22, "column": 6, "specs": [ { "title": "NET-EDGE-01: 完全离线状态", "ok": true, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 8, "parallelIndex": 2, "status": "passed", "duration": 382, "errors": [], "stdout": [ { "text": "Offline state page content: \n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:58.609Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "db200a91ff2226597e25-c41280b837071c7a482f", "file": "edge-cases.spec.ts", "line": 24, "column": 3 }, { "title": "NET-EDGE-02: 网络中断恢复", "ok": true, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 8, "parallelIndex": 2, "status": "passed", "duration": 9231, "errors": [], "stdout": [ { "text": "Connection: undefined -> undefined\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:44:59.008Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "db200a91ff2226597e25-5c032d968b9e25259ea1", "file": "edge-cases.spec.ts", "line": 42, "column": 3 }, { "title": "NET-EDGE-03: 请求超时处理", "ok": false, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 8, "parallelIndex": 2, "status": "failed", "duration": 9296, "error": { "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32mfalse\u001b[39m\nReceived: \u001b[31mundefined\u001b[39m", "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32mfalse\u001b[39m\nReceived: \u001b[31mundefined\u001b[39m\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts:90:34", "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 34, "line": 90 }, "snippet": "\u001b[0m \u001b[90m 88 |\u001b[39m isStreaming\u001b[33m:\u001b[39m boolean\u001b[33m;\u001b[39m\n \u001b[90m 89 |\u001b[39m }\u001b[33m>\u001b[39m(page\u001b[33m,\u001b[39m \u001b[33mSTORE_NAMES\u001b[39m\u001b[33m.\u001b[39m\u001b[33mCHAT\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 90 |\u001b[39m expect(state\u001b[33m?\u001b[39m\u001b[33m.\u001b[39misStreaming)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 91 |\u001b[39m }\n \u001b[90m 92 |\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 93 |\u001b[39m\u001b[0m" }, "errors": [ { "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 34, "line": 90 }, "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32mfalse\u001b[39m\nReceived: \u001b[31mundefined\u001b[39m\n\n 88 | isStreaming: boolean;\n 89 | }>(page, STORE_NAMES.CHAT);\n> 90 | expect(state?.isStreaming).toBe(false);\n | ^\n 91 | }\n 92 | });\n 93 |\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts:90:34" } ], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW 边界情况验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:45:17.567Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:08.251Z", "annotations": [], "attachments": [ { "name": "screenshot", "contentType": "image/png", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-网络边界情况-NET-EDGE-03-请求超时处理-chromium\\test-failed-1.png" }, { "name": "video", "contentType": "video/webm", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-网络边界情况-NET-EDGE-03-请求超时处理-chromium\\video.webm" }, { "name": "error-context", "contentType": "text/markdown", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-网络边界情况-NET-EDGE-03-请求超时处理-chromium\\error-context.md" } ], "errorLocation": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 34, "line": 90 } } ], "status": "unexpected" } ], "id": "db200a91ff2226597e25-46f3ee7573c2c62c1c38", "file": "edge-cases.spec.ts", "line": 68, "column": 3 }, { "title": "NET-EDGE-04: 服务器错误 (500)", "ok": true, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 12, "parallelIndex": 2, "status": "passed", "duration": 6987, "errors": [], "stdout": [ { "text": "Error shown: false\n" }, { "text": "\n========================================\n" }, { "text": "ZCLAW 边界情况验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:45:25.902Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:18.806Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "db200a91ff2226597e25-f7489a907b9fd5ad72b2", "file": "edge-cases.spec.ts", "line": 94, "column": 3 }, { "title": "NET-EDGE-05: 限流处理 (429)", "ok": true, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 1, "parallelIndex": 1, "status": "passed", "duration": 6948, "errors": [], "stdout": [ { "text": "Rate limit handling verified\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:00.865Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "db200a91ff2226597e25-77f03f376c7425e0d06b", "file": "edge-cases.spec.ts", "line": 119, "column": 3 }, { "title": "NET-EDGE-06: 慢速网络", "ok": false, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 1, "parallelIndex": 1, "status": "failed", "duration": 59314, "error": { "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('aside').first()\nExpected: visible\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m - Expect \"toBeVisible\" with timeout 10000ms\u001b[22m\n\u001b[2m - waiting for locator('aside').first()\u001b[22m\n", "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('aside').first()\nExpected: visible\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m - Expect \"toBeVisible\" with timeout 10000ms\u001b[22m\n\u001b[2m - waiting for locator('aside').first()\u001b[22m\n\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts:156:27", "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 27, "line": 156 }, "snippet": "\u001b[0m \u001b[90m 154 |\u001b[39m \u001b[90m// 4. 验证页面仍然可用\u001b[39m\n \u001b[90m 155 |\u001b[39m \u001b[36mconst\u001b[39m sidebar \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'aside'\u001b[39m)\u001b[33m.\u001b[39mfirst()\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 156 |\u001b[39m \u001b[36mawait\u001b[39m expect(sidebar)\u001b[33m.\u001b[39mtoBeVisible()\u001b[33m;\u001b[39m\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 157 |\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 158 |\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 159 |\u001b[39m\u001b[0m" }, "errors": [ { "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 27, "line": 156 }, "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('aside').first()\nExpected: visible\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m - Expect \"toBeVisible\" with timeout 10000ms\u001b[22m\n\u001b[2m - waiting for locator('aside').first()\u001b[22m\n\n\n 154 | // 4. 验证页面仍然可用\n 155 | const sidebar = page.locator('aside').first();\n> 156 | await expect(sidebar).toBeVisible();\n | ^\n 157 | });\n 158 | });\n 159 |\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts:156:27" } ], "stdout": [ { "text": "Page load time with slow network: 45415ms\n" }, { "text": "\n========================================\n" }, { "text": "ZCLAW 边界情况验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:46:07.163Z\n" }, { "text": "========================================\n\n" } ], "stderr": [ { "text": "Sidebar not found\n" } ], "retry": 0, "startTime": "2026-03-22T01:45:07.827Z", "annotations": [], "attachments": [ { "name": "screenshot", "contentType": "image/png", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-网络边界情况-NET-EDGE-06-慢速网络-chromium\\test-failed-1.png" }, { "name": "video", "contentType": "video/webm", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-网络边界情况-NET-EDGE-06-慢速网络-chromium\\video.webm" }, { "name": "error-context", "contentType": "text/markdown", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-网络边界情况-NET-EDGE-06-慢速网络-chromium\\error-context.md" } ], "errorLocation": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 27, "line": 156 } } ], "status": "unexpected" } ], "id": "db200a91ff2226597e25-7e8bd475f36604b4bd93", "file": "edge-cases.spec.ts", "line": 138, "column": 3 } ] }, { "title": "数据边界情况", "file": "edge-cases.spec.ts", "line": 163, "column": 6, "specs": [ { "title": "DATA-EDGE-01: 超长消息", "ok": false, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 22, "parallelIndex": 1, "status": "failed", "duration": 4274, "error": { "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBeGreaterThan\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m\n\nExpected: > \u001b[32m10000\u001b[39m\nReceived: \u001b[31m6000\u001b[39m", "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBeGreaterThan\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m\n\nExpected: > \u001b[32m10000\u001b[39m\nReceived: \u001b[31m6000\u001b[39m\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts:181:28", "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 28, "line": 181 }, "snippet": "\u001b[0m \u001b[90m 179 |\u001b[39m \u001b[90m// 3. 验证输入被接受\u001b[39m\n \u001b[90m 180 |\u001b[39m \u001b[36mconst\u001b[39m value \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m chatInput\u001b[33m.\u001b[39minputValue()\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 181 |\u001b[39m expect(value\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBeGreaterThan(\u001b[35m10000\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 182 |\u001b[39m\n \u001b[90m 183 |\u001b[39m \u001b[90m// 4. 发送消息\u001b[39m\n \u001b[90m 184 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgetByRole(\u001b[32m'button'\u001b[39m\u001b[33m,\u001b[39m { name\u001b[33m:\u001b[39m \u001b[32m'发送消息'\u001b[39m })\u001b[33m.\u001b[39mclick()\u001b[33m;\u001b[39m\u001b[0m" }, "errors": [ { "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 28, "line": 181 }, "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBeGreaterThan\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m\n\nExpected: > \u001b[32m10000\u001b[39m\nReceived: \u001b[31m6000\u001b[39m\n\n 179 | // 3. 验证输入被接受\n 180 | const value = await chatInput.inputValue();\n> 181 | expect(value.length).toBeGreaterThan(10000);\n | ^\n 182 |\n 183 | // 4. 发送消息\n 184 | await page.getByRole('button', { name: '发送消息' }).click();\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts:181:28" } ], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW 边界情况验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:46:13.164Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:46:08.727Z", "annotations": [], "attachments": [ { "name": "screenshot", "contentType": "image/png", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-数据边界情况-DATA-EDGE-01-超长消息-chromium\\test-failed-1.png" }, { "name": "video", "contentType": "video/webm", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-数据边界情况-DATA-EDGE-01-超长消息-chromium\\video.webm" }, { "name": "error-context", "contentType": "text/markdown", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-数据边界情况-DATA-EDGE-01-超长消息-chromium\\error-context.md" } ], "errorLocation": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 28, "line": 181 } } ], "status": "unexpected" } ], "id": "db200a91ff2226597e25-33f029df370352b45438", "file": "edge-cases.spec.ts", "line": 170, "column": 3 }, { "title": "DATA-EDGE-02: 空消息", "ok": false, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 23, "parallelIndex": 1, "status": "failed", "duration": 13933, "error": { "message": "TimeoutError: locator.click: Timeout 10000ms exceeded.\nCall log:\n\u001b[2m - waiting for getByRole('button', { name: '发送消息' })\u001b[22m\n\u001b[2m - locator resolved to \u001b[22m\n\u001b[2m - attempting click action\u001b[22m\n\u001b[2m 2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m - element is not enabled\u001b[22m\n\u001b[2m - retrying click action\u001b[22m\n\u001b[2m - waiting 20ms\u001b[22m\n\u001b[2m 2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m - element is not enabled\u001b[22m\n\u001b[2m - retrying click action\u001b[22m\n\u001b[2m - waiting 100ms\u001b[22m\n\u001b[2m 19 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m - element is not enabled\u001b[22m\n\u001b[2m - retrying click action\u001b[22m\n\u001b[2m - waiting 500ms\u001b[22m\n", "stack": "TimeoutError: locator.click: Timeout 10000ms exceeded.\nCall log:\n\u001b[2m - waiting for getByRole('button', { name: '发送消息' })\u001b[22m\n\u001b[2m - locator resolved to \u001b[22m\n\u001b[2m - attempting click action\u001b[22m\n\u001b[2m 2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m - element is not enabled\u001b[22m\n\u001b[2m - retrying click action\u001b[22m\n\u001b[2m - waiting 20ms\u001b[22m\n\u001b[2m 2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m - element is not enabled\u001b[22m\n\u001b[2m - retrying click action\u001b[22m\n\u001b[2m - waiting 100ms\u001b[22m\n\u001b[2m 19 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m - element is not enabled\u001b[22m\n\u001b[2m - retrying click action\u001b[22m\n\u001b[2m - waiting 500ms\u001b[22m\n\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts:206:56", "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 56, "line": 206 }, "snippet": "\u001b[0m \u001b[90m 204 |\u001b[39m \u001b[90m// 2. 尝试发送空消息\u001b[39m\n \u001b[90m 205 |\u001b[39m \u001b[36mawait\u001b[39m chatInput\u001b[33m.\u001b[39mfill(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 206 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgetByRole(\u001b[32m'button'\u001b[39m\u001b[33m,\u001b[39m { name\u001b[33m:\u001b[39m \u001b[32m'发送消息'\u001b[39m })\u001b[33m.\u001b[39mclick()\u001b[33m;\u001b[39m\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 207 |\u001b[39m\n \u001b[90m 208 |\u001b[39m \u001b[90m// 3. 验证空消息不应被发送\u001b[39m\n \u001b[90m 209 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mwaitForTimeout(\u001b[35m1000\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m" }, "errors": [ { "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 56, "line": 206 }, "message": "TimeoutError: locator.click: Timeout 10000ms exceeded.\nCall log:\n\u001b[2m - waiting for getByRole('button', { name: '发送消息' })\u001b[22m\n\u001b[2m - locator resolved to \u001b[22m\n\u001b[2m - attempting click action\u001b[22m\n\u001b[2m 2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m - element is not enabled\u001b[22m\n\u001b[2m - retrying click action\u001b[22m\n\u001b[2m - waiting 20ms\u001b[22m\n\u001b[2m 2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m - element is not enabled\u001b[22m\n\u001b[2m - retrying click action\u001b[22m\n\u001b[2m - waiting 100ms\u001b[22m\n\u001b[2m 19 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m - element is not enabled\u001b[22m\n\u001b[2m - retrying click action\u001b[22m\n\u001b[2m - waiting 500ms\u001b[22m\n\n\n 204 | // 2. 尝试发送空消息\n 205 | await chatInput.fill('');\n> 206 | await page.getByRole('button', { name: '发送消息' }).click();\n | ^\n 207 |\n 208 | // 3. 验证空消息不应被发送\n 209 | await page.waitForTimeout(1000);\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts:206:56" } ], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW 边界情况验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:46:28.756Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:46:14.641Z", "annotations": [], "attachments": [ { "name": "screenshot", "contentType": "image/png", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-数据边界情况-DATA-EDGE-02-空消息-chromium\\test-failed-1.png" }, { "name": "video", "contentType": "video/webm", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-数据边界情况-DATA-EDGE-02-空消息-chromium\\video.webm" }, { "name": "error-context", "contentType": "text/markdown", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-数据边界情况-DATA-EDGE-02-空消息-chromium\\error-context.md" } ], "errorLocation": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 56, "line": 206 } } ], "status": "unexpected" } ], "id": "db200a91ff2226597e25-77e316cb9afa9444ddd0", "file": "edge-cases.spec.ts", "line": 195, "column": 3 }, { "title": "DATA-EDGE-03: 特殊字符消息", "ok": true, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 6, "parallelIndex": 6, "status": "passed", "duration": 5931, "errors": [], "stdout": [ { "text": "Special characters message sent\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:02.319Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "db200a91ff2226597e25-b280afef0d61bec5b977", "file": "edge-cases.spec.ts", "line": 220, "column": 3 }, { "title": "DATA-EDGE-04: Unicode 和 Emoji", "ok": true, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 6, "parallelIndex": 6, "status": "passed", "duration": 6153, "errors": [], "stdout": [ { "text": "Unicode message visible: false\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:08.267Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "db200a91ff2226597e25-217b2fa2f5b7ee2aab34", "file": "edge-cases.spec.ts", "line": 234, "column": 3 }, { "title": "DATA-EDGE-05: 代码块内容", "ok": true, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 6, "parallelIndex": 6, "status": "passed", "duration": 5866, "errors": [], "stdout": [ { "text": "Code block visible: false\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:14.435Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "db200a91ff2226597e25-c0f918ad1d71c7274b6e", "file": "edge-cases.spec.ts", "line": 251, "column": 3 }, { "title": "DATA-EDGE-06: 空 Hands 列表", "ok": true, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 6, "parallelIndex": 6, "status": "passed", "duration": 6380, "errors": [], "stdout": [ { "text": "Empty state shown: true\n" }, { "text": "\n========================================\n" }, { "text": "ZCLAW 边界情况验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:45:26.707Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:20.312Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "db200a91ff2226597e25-cbdcc1a8a9f35fbafa8b", "file": "edge-cases.spec.ts", "line": 273, "column": 3 } ] }, { "title": "状态边界情况", "file": "edge-cases.spec.ts", "line": 301, "column": 6, "specs": [ { "title": "STATE-EDGE-01: 快速连续点击", "ok": false, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 4, "parallelIndex": 4, "status": "failed", "duration": 14532, "error": { "message": "TimeoutError: locator.click: Timeout 10000ms exceeded.\nCall log:\n\u001b[2m - waiting for getByRole('button', { name: '发送消息' })\u001b[22m\n\u001b[2m - locator resolved to \u001b[22m\n\u001b[2m - attempting click action\u001b[22m\n\u001b[2m 2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m - element is not stable\u001b[22m\n\u001b[2m - retrying click action\u001b[22m\n\u001b[2m - waiting 20ms\u001b[22m\n\u001b[2m 2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m - element is not enabled\u001b[22m\n\u001b[2m - retrying click action\u001b[22m\n\u001b[2m - waiting 100ms\u001b[22m\n\u001b[2m 19 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m - element is not enabled\u001b[22m\n\u001b[2m - retrying click action\u001b[22m\n\u001b[2m - waiting 500ms\u001b[22m\n", "stack": "TimeoutError: locator.click: Timeout 10000ms exceeded.\nCall log:\n\u001b[2m - waiting for getByRole('button', { name: '发送消息' })\u001b[22m\n\u001b[2m - locator resolved to \u001b[22m\n\u001b[2m - attempting click action\u001b[22m\n\u001b[2m 2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m - element is not stable\u001b[22m\n\u001b[2m - retrying click action\u001b[22m\n\u001b[2m - waiting 20ms\u001b[22m\n\u001b[2m 2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m - element is not enabled\u001b[22m\n\u001b[2m - retrying click action\u001b[22m\n\u001b[2m - waiting 100ms\u001b[22m\n\u001b[2m 19 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m - element is not enabled\u001b[22m\n\u001b[2m - retrying click action\u001b[22m\n\u001b[2m - waiting 500ms\u001b[22m\n\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts:323:23", "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 23, "line": 323 }, "snippet": "\u001b[0m \u001b[90m 321 |\u001b[39m \u001b[90m// 连续点击 5 次\u001b[39m\n \u001b[90m 322 |\u001b[39m \u001b[36mfor\u001b[39m (\u001b[36mlet\u001b[39m i \u001b[33m=\u001b[39m \u001b[35m0\u001b[39m\u001b[33m;\u001b[39m i \u001b[33m<\u001b[39m \u001b[35m5\u001b[39m\u001b[33m;\u001b[39m i\u001b[33m++\u001b[39m) {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 323 |\u001b[39m \u001b[36mawait\u001b[39m sendBtn\u001b[33m.\u001b[39mclick({ delay\u001b[33m:\u001b[39m \u001b[35m50\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 324 |\u001b[39m }\n \u001b[90m 325 |\u001b[39m\n \u001b[90m 326 |\u001b[39m \u001b[90m// 3. 等待处理完成\u001b[39m\u001b[0m" }, "errors": [ { "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 23, "line": 323 }, "message": "TimeoutError: locator.click: Timeout 10000ms exceeded.\nCall log:\n\u001b[2m - waiting for getByRole('button', { name: '发送消息' })\u001b[22m\n\u001b[2m - locator resolved to \u001b[22m\n\u001b[2m - attempting click action\u001b[22m\n\u001b[2m 2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m - element is not stable\u001b[22m\n\u001b[2m - retrying click action\u001b[22m\n\u001b[2m - waiting 20ms\u001b[22m\n\u001b[2m 2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m - element is not enabled\u001b[22m\n\u001b[2m - retrying click action\u001b[22m\n\u001b[2m - waiting 100ms\u001b[22m\n\u001b[2m 19 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m - element is not enabled\u001b[22m\n\u001b[2m - retrying click action\u001b[22m\n\u001b[2m - waiting 500ms\u001b[22m\n\n\n 321 | // 连续点击 5 次\n 322 | for (let i = 0; i < 5; i++) {\n> 323 | await sendBtn.click({ delay: 50 });\n | ^\n 324 | }\n 325 |\n 326 | // 3. 等待处理完成\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts:323:23" } ], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW 边界情况验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:45:23.436Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:08.880Z", "annotations": [], "attachments": [ { "name": "screenshot", "contentType": "image/png", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-状态边界情况-STATE-EDGE-01-快速连续点击-chromium\\test-failed-1.png" }, { "name": "video", "contentType": "video/webm", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-状态边界情况-STATE-EDGE-01-快速连续点击-chromium\\video.webm" }, { "name": "error-context", "contentType": "text/markdown", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-状态边界情况-STATE-EDGE-01-快速连续点击-chromium\\error-context.md" } ], "errorLocation": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 23, "line": 323 } } ], "status": "unexpected" } ], "id": "db200a91ff2226597e25-37fd6627ec83e334eebd", "file": "edge-cases.spec.ts", "line": 308, "column": 3 }, { "title": "STATE-EDGE-02: 流式中刷新页面", "ok": false, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 13, "parallelIndex": 4, "status": "failed", "duration": 7689, "error": { "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32mfalse\u001b[39m\nReceived: \u001b[31mundefined\u001b[39m", "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32mfalse\u001b[39m\nReceived: \u001b[31mundefined\u001b[39m\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts:360:34", "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 34, "line": 360 }, "snippet": "\u001b[0m \u001b[90m 358 |\u001b[39m\n \u001b[90m 359 |\u001b[39m \u001b[90m// 流式状态应该是 false\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 360 |\u001b[39m expect(state\u001b[33m?\u001b[39m\u001b[33m.\u001b[39misStreaming)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 361 |\u001b[39m }\n \u001b[90m 362 |\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 363 |\u001b[39m\u001b[0m" }, "errors": [ { "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 34, "line": 360 }, "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32mfalse\u001b[39m\nReceived: \u001b[31mundefined\u001b[39m\n\n 358 |\n 359 | // 流式状态应该是 false\n> 360 | expect(state?.isStreaming).toBe(false);\n | ^\n 361 | }\n 362 | });\n 363 |\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts:360:34" } ], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW 边界情况验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:45:32.623Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:24.821Z", "annotations": [], "attachments": [ { "name": "screenshot", "contentType": "image/png", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-状态边界情况-STATE-EDGE-02-流式中刷新页面-chromium\\test-failed-1.png" }, { "name": "video", "contentType": "video/webm", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-状态边界情况-STATE-EDGE-02-流式中刷新页面-chromium\\video.webm" }, { "name": "error-context", "contentType": "text/markdown", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-状态边界情况-STATE-EDGE-02-流式中刷新页面-chromium\\error-context.md" } ], "errorLocation": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 34, "line": 360 } } ], "status": "unexpected" } ], "id": "db200a91ff2226597e25-5f96187a72016a5a2f62", "file": "edge-cases.spec.ts", "line": 341, "column": 3 }, { "title": "STATE-EDGE-03: 多次切换标签", "ok": true, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 14, "parallelIndex": 4, "status": "passed", "duration": 14698, "errors": [], "stdout": [ { "text": "Errors after rapid switching: 0\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:33.815Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "db200a91ff2226597e25-ccdc069d385a8b2fc471", "file": "edge-cases.spec.ts", "line": 364, "column": 3 }, { "title": "STATE-EDGE-04: 清除 localStorage 后恢复", "ok": false, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 14, "parallelIndex": 4, "status": "failed", "duration": 10580, "error": { "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32mtrue\u001b[39m\nReceived: \u001b[31mfalse\u001b[39m", "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32mtrue\u001b[39m\nReceived: \u001b[31mfalse\u001b[39m\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts:407:48", "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 48, "line": 407 }, "snippet": "\u001b[0m \u001b[90m 405 |\u001b[39m messages\u001b[33m:\u001b[39m unknown[]\u001b[33m;\u001b[39m\n \u001b[90m 406 |\u001b[39m }\u001b[33m>\u001b[39m(page\u001b[33m,\u001b[39m \u001b[33mSTORE_NAMES\u001b[39m\u001b[33m.\u001b[39m\u001b[33mCHAT\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 407 |\u001b[39m expect(\u001b[33mArray\u001b[39m\u001b[33m.\u001b[39misArray(chatState\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mmessages))\u001b[33m.\u001b[39mtoBe(\u001b[36mtrue\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 408 |\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 409 |\u001b[39m\n \u001b[90m 410 |\u001b[39m test(\u001b[32m'STATE-EDGE-05: 长时间运行稳定性'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\u001b[0m" }, "errors": [ { "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 48, "line": 407 }, "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32mtrue\u001b[39m\nReceived: \u001b[31mfalse\u001b[39m\n\n 405 | messages: unknown[];\n 406 | }>(page, STORE_NAMES.CHAT);\n> 407 | expect(Array.isArray(chatState?.messages)).toBe(true);\n | ^\n 408 | });\n 409 |\n 410 | test('STATE-EDGE-05: 长时间运行稳定性', async ({ page }) => {\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts:407:48" } ], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW 边界情况验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:45:59.232Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:48.628Z", "annotations": [], "attachments": [ { "name": "screenshot", "contentType": "image/png", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-状态边界情况-STATE-EDGE-04-清除-localStorage-后恢复-chromium\\test-failed-1.png" }, { "name": "video", "contentType": "video/webm", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-状态边界情况-STATE-EDGE-04-清除-localStorage-后恢复-chromium\\video.webm" }, { "name": "error-context", "contentType": "text/markdown", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-状态边界情况-STATE-EDGE-04-清除-localStorage-后恢复-chromium\\error-context.md" } ], "errorLocation": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 48, "line": 407 } } ], "status": "unexpected" } ], "id": "db200a91ff2226597e25-e59ade7ad897dc807a9b", "file": "edge-cases.spec.ts", "line": 384, "column": 3 }, { "title": "STATE-EDGE-05: 长时间运行稳定性", "ok": true, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 10, "parallelIndex": 0, "status": "passed", "duration": 11759, "errors": [], "stdout": [ { "text": "DOM nodes: 147 -> 187\n" }, { "text": "JS heap: 31200000 -> 31200000\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:11.000Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "db200a91ff2226597e25-659b8661ec1bfc6a6243", "file": "edge-cases.spec.ts", "line": 410, "column": 3 } ] }, { "title": "UI 边界情况", "file": "edge-cases.spec.ts", "line": 445, "column": 6, "specs": [ { "title": "UI-EDGE-01: 最小窗口尺寸", "ok": true, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 10, "parallelIndex": 0, "status": "passed", "duration": 14285, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:22.867Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "db200a91ff2226597e25-bdc1ecbff8d38423b9fd", "file": "edge-cases.spec.ts", "line": 447, "column": 3 }, { "title": "UI-EDGE-02: 大窗口尺寸", "ok": true, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 10, "parallelIndex": 0, "status": "passed", "duration": 4059, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:37.164Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "db200a91ff2226597e25-ed5003375a342c42f163", "file": "edge-cases.spec.ts", "line": 463, "column": 3 }, { "title": "UI-EDGE-03: 窗口尺寸变化", "ok": true, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 10, "parallelIndex": 0, "status": "passed", "duration": 4980, "errors": [], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW 边界情况验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:45:46.235Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:41.236Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "db200a91ff2226597e25-9bef193dc4826f604ea2", "file": "edge-cases.spec.ts", "line": 477, "column": 3 }, { "title": "UI-EDGE-04: 深色模式(如果支持)", "ok": true, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 11, "parallelIndex": 7, "status": "passed", "duration": 3751, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:16.581Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "db200a91ff2226597e25-290f5e1785c4fd09c14b", "file": "edge-cases.spec.ts", "line": 500, "column": 3 }, { "title": "UI-EDGE-05: 减少动画(如果支持)", "ok": true, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 11, "parallelIndex": 7, "status": "passed", "duration": 3880, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:20.344Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "db200a91ff2226597e25-7f8cb332f66ed8a0748d", "file": "edge-cases.spec.ts", "line": 511, "column": 3 } ] }, { "title": "输入验证边界情况", "file": "edge-cases.spec.ts", "line": 526, "column": 6, "specs": [ { "title": "INPUT-EDGE-01: XSS 注入尝试", "ok": true, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 11, "parallelIndex": 7, "status": "passed", "duration": 5874, "errors": [], "stdout": [ { "text": "XSS test passed - no alert shown\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:24.236Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "db200a91ff2226597e25-d736d79147d4b4699d6b", "file": "edge-cases.spec.ts", "line": 533, "column": 3 }, { "title": "INPUT-EDGE-02: HTML 标签输入", "ok": true, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 11, "parallelIndex": 7, "status": "passed", "duration": 5837, "errors": [], "stdout": [ { "text": "HTML input test completed\n" }, { "text": "\n========================================\n" }, { "text": "ZCLAW 边界情况验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:45:35.979Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:30.122Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "db200a91ff2226597e25-b66a0093de81d25c35fc", "file": "edge-cases.spec.ts", "line": 550, "column": 3 }, { "title": "INPUT-EDGE-03: JSON 格式参数", "ok": true, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 12, "parallelIndex": 2, "status": "passed", "duration": 5235, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:25.909Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "db200a91ff2226597e25-6bd313ef95210a4ddd80", "file": "edge-cases.spec.ts", "line": 564, "column": 3 } ] }, { "title": "并发操作边界情况", "file": "edge-cases.spec.ts", "line": 596, "column": 6, "specs": [ { "title": "CONCURRENT-EDGE-01: 同时发送多条消息", "ok": false, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 12, "parallelIndex": 2, "status": "failed", "duration": 14983, "error": { "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32mfalse\u001b[39m\nReceived: \u001b[31mundefined\u001b[39m", "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32mfalse\u001b[39m\nReceived: \u001b[31mundefined\u001b[39m\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts:627:39", "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 39, "line": 627 }, "snippet": "\u001b[0m \u001b[90m 625 |\u001b[39m }\u001b[33m>\u001b[39m(page\u001b[33m,\u001b[39m \u001b[33mSTORE_NAMES\u001b[39m\u001b[33m.\u001b[39m\u001b[33mCHAT\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 626 |\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 627 |\u001b[39m expect(stateAfter\u001b[33m?\u001b[39m\u001b[33m.\u001b[39misStreaming)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 628 |\u001b[39m }\n \u001b[90m 629 |\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 630 |\u001b[39m\u001b[0m" }, "errors": [ { "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 39, "line": 627 }, "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32mfalse\u001b[39m\nReceived: \u001b[31mundefined\u001b[39m\n\n 625 | }>(page, STORE_NAMES.CHAT);\n 626 |\n> 627 | expect(stateAfter?.isStreaming).toBe(false);\n | ^\n 628 | }\n 629 | });\n 630 |\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts:627:39" } ], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW 边界情况验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:45:46.165Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:31.158Z", "annotations": [], "attachments": [ { "name": "screenshot", "contentType": "image/png", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-并发操作边界情况-CONCURRENT-EDGE-01-同时发送多条消息-chromium\\test-failed-1.png" }, { "name": "video", "contentType": "video/webm", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-并发操作边界情况-CONCURRENT-EDGE-01-同时发送多条消息-chromium\\video.webm" }, { "name": "error-context", "contentType": "text/markdown", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\edge-cases-并发操作边界情况-CONCURRENT-EDGE-01-同时发送多条消息-chromium\\error-context.md" } ], "errorLocation": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\edge-cases.spec.ts", "column": 39, "line": 627 } } ], "status": "unexpected" } ], "id": "db200a91ff2226597e25-07d6beb8b17f1db70d47", "file": "edge-cases.spec.ts", "line": 603, "column": 3 }, { "title": "CONCURRENT-EDGE-02: 操作中切换视图", "ok": true, "tags": [], "tests": [ { "timeout": 180000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 18, "parallelIndex": 2, "status": "passed", "duration": 5801, "errors": [], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW 边界情况验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:45:53.927Z\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:47.970Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "db200a91ff2226597e25-3b87fae09b5c4d538833", "file": "edge-cases.spec.ts", "line": 631, "column": 3 } ] } ] }, { "title": "functional-scenarios.spec.ts", "file": "functional-scenarios.spec.ts", "column": 0, "line": 0, "specs": [], "suites": [ { "title": "1. 应用启动与初始化", "file": "functional-scenarios.spec.ts", "line": 75, "column": 6, "specs": [ { "title": "1.1 应用正常启动并渲染所有核心组件", "ok": false, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 6, "parallelIndex": 6, "status": "failed", "duration": 12790, "error": { "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: getByRole('tab', { name: /分身/i })\nExpected: visible\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m - Expect \"toBeVisible\" with timeout 10000ms\u001b[22m\n\u001b[2m - waiting for getByRole('tab', { name: /分身/i })\u001b[22m\n", "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: getByRole('tab', { name: /分身/i })\nExpected: visible\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m - Expect \"toBeVisible\" with timeout 10000ms\u001b[22m\n\u001b[2m - waiting for getByRole('tab', { name: /分身/i })\u001b[22m\n\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\functional-scenarios.spec.ts:94:32", "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\functional-scenarios.spec.ts", "column": 32, "line": 94 }, "snippet": "\u001b[0m \u001b[90m 92 |\u001b[39m \u001b[36mfor\u001b[39m (\u001b[36mconst\u001b[39m tab \u001b[36mof\u001b[39m tabs) {\n \u001b[90m 93 |\u001b[39m \u001b[36mconst\u001b[39m tabElement \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mgetByRole(\u001b[32m'tab'\u001b[39m\u001b[33m,\u001b[39m { name\u001b[33m:\u001b[39m \u001b[36mnew\u001b[39m \u001b[33mRegExp\u001b[39m(tab\u001b[33m,\u001b[39m \u001b[32m'i'\u001b[39m) })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 94 |\u001b[39m \u001b[36mawait\u001b[39m expect(tabElement)\u001b[33m.\u001b[39mtoBeVisible()\u001b[33m;\u001b[39m\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 95 |\u001b[39m }\n \u001b[90m 96 |\u001b[39m\n \u001b[90m 97 |\u001b[39m \u001b[36mawait\u001b[39m takeScreenshot(page\u001b[33m,\u001b[39m \u001b[32m'01-app-initialized'\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m" }, "errors": [ { "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\functional-scenarios.spec.ts", "column": 32, "line": 94 }, "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: getByRole('tab', { name: /分身/i })\nExpected: visible\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m - Expect \"toBeVisible\" with timeout 10000ms\u001b[22m\n\u001b[2m - waiting for getByRole('tab', { name: /分身/i })\u001b[22m\n\n\n 92 | for (const tab of tabs) {\n 93 | const tabElement = page.getByRole('tab', { name: new RegExp(tab, 'i') });\n> 94 | await expect(tabElement).toBeVisible();\n | ^\n 95 | }\n 96 |\n 97 | await takeScreenshot(page, '01-app-initialized');\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\functional-scenarios.spec.ts:94:32" } ], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW 前端功能验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:45:39.547Z\n" }, { "text": "截图目录: test-results/screenshots\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:26.741Z", "annotations": [], "attachments": [ { "name": "screenshot", "contentType": "image/png", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\functional-scenarios-1-应用启动与初始化-1-1-应用正常启动并渲染所有核心组件-chromium\\test-failed-1.png" }, { "name": "video", "contentType": "video/webm", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\functional-scenarios-1-应用启动与初始化-1-1-应用正常启动并渲染所有核心组件-chromium\\video.webm" }, { "name": "error-context", "contentType": "text/markdown", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\functional-scenarios-1-应用启动与初始化-1-1-应用正常启动并渲染所有核心组件-chromium\\error-context.md" } ], "errorLocation": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\functional-scenarios.spec.ts", "column": 32, "line": 94 } } ], "status": "unexpected" } ], "id": "ea562bc8f2f5f42dadea-a9ad995be4600240d5d9", "file": "functional-scenarios.spec.ts", "line": 77, "column": 3 }, { "title": "1.2 Zustand 状态持久化正常加载", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 15, "parallelIndex": 6, "status": "passed", "duration": 2397, "errors": [], "stdout": [ { "text": "Chat storage exists: \u001b[33mfalse\u001b[39m\n" }, { "text": "Gateway storage exists: \u001b[33mfalse\u001b[39m\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:40.837Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-a65a3f1d80bb007eab27", "file": "functional-scenarios.spec.ts", "line": 113, "column": 3 }, { "title": "1.3 Gateway 连接状态检查", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 15, "parallelIndex": 6, "status": "passed", "duration": 7632, "errors": [], "stdout": [ { "text": "Connection logs: []\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:43.376Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-bfedf5425166cfcdfaa3", "file": "functional-scenarios.spec.ts", "line": 137, "column": 3 } ] }, { "title": "2. 聊天功能", "file": "functional-scenarios.spec.ts", "line": 168, "column": 6, "specs": [ { "title": "2.1 聊天输入框功能", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 15, "parallelIndex": 6, "status": "passed", "duration": 2268, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:51.023Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-8d75fafdc1734094d51f", "file": "functional-scenarios.spec.ts", "line": 175, "column": 3 }, { "title": "2.2 发送消息并检查响应", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 15, "parallelIndex": 6, "status": "passed", "duration": 7762, "errors": [], "stdout": [ { "text": "Messages found: 1\n" }, { "text": "User message visible: false\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:53.305Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-29f3df3e2afdf21d40d4", "file": "functional-scenarios.spec.ts", "line": 196, "column": 3 }, { "title": "2.3 会话切换功能", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 15, "parallelIndex": 6, "status": "passed", "duration": 2438, "errors": [], "stdout": [ { "text": "Conversation items found: 0\n" }, { "text": "\n========================================\n" }, { "text": "ZCLAW 前端功能验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:46:03.550Z\n" }, { "text": "截图目录: test-results/screenshots\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:46:01.088Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-7d5af09171af56333005", "file": "functional-scenarios.spec.ts", "line": 225, "column": 3 }, { "title": "2.4 新建会话功能", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 11, "parallelIndex": 7, "status": "passed", "duration": 2710, "errors": [], "stdout": [ { "text": "Messages after new chat: 1\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:36.018Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-07ab230db79d60aeeba0", "file": "functional-scenarios.spec.ts", "line": 245, "column": 3 }, { "title": "2.5 消息流式显示", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 11, "parallelIndex": 7, "status": "passed", "duration": 8898, "errors": [], "stdout": [ { "text": "Streaming indicator visible: false\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:38.744Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-1094b9a79f676d0719ae", "file": "functional-scenarios.spec.ts", "line": 262, "column": 3 }, { "title": "2.6 错误处理 - 网络断开", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 11, "parallelIndex": 7, "status": "passed", "duration": 5596, "errors": [], "stdout": [ { "text": "Error message shown: false\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:47.659Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-1b314e3f6d18541a9631", "file": "functional-scenarios.spec.ts", "line": 286, "column": 3 } ] }, { "title": "3. Agent/分身管理", "file": "functional-scenarios.spec.ts", "line": 319, "column": 6, "specs": [ { "title": "3.1 分身列表显示", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 11, "parallelIndex": 7, "status": "passed", "duration": 3391, "errors": [], "stdout": [ { "text": "Clone/Agent items found: 1\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:53.267Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-aa98d5dacb19aae6a62f", "file": "functional-scenarios.spec.ts", "line": 327, "column": 3 }, { "title": "3.2 创建新分身", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 11, "parallelIndex": 7, "status": "passed", "duration": 2662, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:56.676Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-86c06416e3c35d9f7515", "file": "functional-scenarios.spec.ts", "line": 345, "column": 3 }, { "title": "3.3 切换分身", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 11, "parallelIndex": 7, "status": "passed", "duration": 2501, "errors": [], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW 前端功能验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:46:01.873Z\n" }, { "text": "截图目录: test-results/screenshots\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:59.349Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-34bdc2473567b059beb7", "file": "functional-scenarios.spec.ts", "line": 372, "column": 3 }, { "title": "3.4 分身设置修改", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 10, "parallelIndex": 0, "status": "passed", "duration": 2354, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:46.290Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-9233421f7c81b0665491", "file": "functional-scenarios.spec.ts", "line": 393, "column": 3 } ] }, { "title": "4. Hands 系统", "file": "functional-scenarios.spec.ts", "line": 417, "column": 6, "specs": [ { "title": "4.1 Hands 列表显示", "ok": false, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 10, "parallelIndex": 0, "status": "failed", "duration": 5688, "error": { "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBeGreaterThanOrEqual\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m\n\nExpected: >= \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m", "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBeGreaterThanOrEqual\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m\n\nExpected: >= \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\functional-scenarios.spec.ts:448:21", "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\functional-scenarios.spec.ts", "column": 21, "line": 448 }, "snippet": "\u001b[0m \u001b[90m 446 |\u001b[39m \u001b[90m// 如果没有空状态,应该有至少 1 个 Hand\u001b[39m\n \u001b[90m 447 |\u001b[39m \u001b[36mif\u001b[39m (\u001b[33m!\u001b[39mhasEmptyState) {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 448 |\u001b[39m expect(count)\u001b[33m.\u001b[39mtoBeGreaterThanOrEqual(\u001b[35m1\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 449 |\u001b[39m }\n \u001b[90m 450 |\u001b[39m\n \u001b[90m 451 |\u001b[39m \u001b[36mawait\u001b[39m takeScreenshot(page\u001b[33m,\u001b[39m \u001b[32m'13-hands-list'\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m" }, "errors": [ { "location": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\functional-scenarios.spec.ts", "column": 21, "line": 448 }, "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBeGreaterThanOrEqual\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m\n\nExpected: >= \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\n\n 446 | // 如果没有空状态,应该有至少 1 个 Hand\n 447 | if (!hasEmptyState) {\n> 448 | expect(count).toBeGreaterThanOrEqual(1);\n | ^\n 449 | }\n 450 |\n 451 | await takeScreenshot(page, '13-hands-list');\n at G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\functional-scenarios.spec.ts:448:21" } ], "stdout": [ { "text": "Hand buttons found: 0\n" }, { "text": "\n========================================\n" }, { "text": "ZCLAW 前端功能验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:45:54.363Z\n" }, { "text": "截图目录: test-results/screenshots\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:48.657Z", "annotations": [], "attachments": [ { "name": "screenshot", "contentType": "image/png", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\functional-scenarios-4-Hands-系统-4-1-Hands-列表显示-chromium\\test-failed-1.png" }, { "name": "video", "contentType": "video/webm", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\functional-scenarios-4-Hands-系统-4-1-Hands-列表显示-chromium\\video.webm" }, { "name": "error-context", "contentType": "text/markdown", "path": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\test-results\\artifacts\\functional-scenarios-4-Hands-系统-4-1-Hands-列表显示-chromium\\error-context.md" } ], "errorLocation": { "file": "G:\\ZClaw_openfang\\desktop\\tests\\e2e\\specs\\functional-scenarios.spec.ts", "column": 21, "line": 448 } } ], "status": "unexpected" } ], "id": "ea562bc8f2f5f42dadea-24005574dbd87061e5f7", "file": "functional-scenarios.spec.ts", "line": 426, "column": 3 }, { "title": "4.2 Hand 触发功能", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 19, "parallelIndex": 0, "status": "passed", "duration": 3328, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:55.806Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-9ddc909591300f97d66d", "file": "functional-scenarios.spec.ts", "line": 454, "column": 3 }, { "title": "4.3 Hand 审批流程", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 19, "parallelIndex": 0, "status": "passed", "duration": 3434, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:59.297Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-08c5a6874fd4f6ae1368", "file": "functional-scenarios.spec.ts", "line": 475, "column": 3 }, { "title": "4.4 Hand 任务历史", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 19, "parallelIndex": 0, "status": "passed", "duration": 3359, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:46:02.743Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-8677f2222c2e03f27642", "file": "functional-scenarios.spec.ts", "line": 500, "column": 3 } ] }, { "title": "5. 工作流管理", "file": "functional-scenarios.spec.ts", "line": 516, "column": 6, "specs": [ { "title": "5.1 工作流列表显示", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 19, "parallelIndex": 0, "status": "passed", "duration": 3356, "errors": [], "stdout": [ { "text": "Workflow items found: 0\n" }, { "text": "\n========================================\n" }, { "text": "ZCLAW 前端功能验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:46:09.492Z\n" }, { "text": "截图目录: test-results/screenshots\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:46:06.115Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-ebe9458f4e5a4fe71b98", "file": "functional-scenarios.spec.ts", "line": 525, "column": 3 }, { "title": "5.2 创建工作流", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 18, "parallelIndex": 2, "status": "passed", "duration": 3770, "errors": [], "stdout": [ { "text": "Workflow editor visible: false\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:53.991Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-e579ea4311d8347c4b39", "file": "functional-scenarios.spec.ts", "line": 535, "column": 3 }, { "title": "5.3 工作流执行状态", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 18, "parallelIndex": 2, "status": "passed", "duration": 3296, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:45:57.774Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-d536d147b08c7a39da8f", "file": "functional-scenarios.spec.ts", "line": 553, "column": 3 }, { "title": "5.4 定时任务配置", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 18, "parallelIndex": 2, "status": "passed", "duration": 3551, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:46:01.080Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-3f29cb5de08044735b67", "file": "functional-scenarios.spec.ts", "line": 566, "column": 3 } ] }, { "title": "6. 团队协作", "file": "functional-scenarios.spec.ts", "line": 581, "column": 6, "specs": [ { "title": "6.1 团队列表显示", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 18, "parallelIndex": 2, "status": "passed", "duration": 3575, "errors": [], "stdout": [ { "text": "Team items found: 0\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:46:04.652Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-200e9c2cad3713eb164b", "file": "functional-scenarios.spec.ts", "line": 590, "column": 3 }, { "title": "6.2 创建团队", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 18, "parallelIndex": 2, "status": "passed", "duration": 3398, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:46:08.247Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-518611cb8b9dd4744bed", "file": "functional-scenarios.spec.ts", "line": 601, "column": 3 }, { "title": "6.3 团队成员管理", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 18, "parallelIndex": 2, "status": "passed", "duration": 3569, "errors": [], "stdout": [ { "text": "\n========================================\n" }, { "text": "ZCLAW 前端功能验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:46:15.257Z\n" }, { "text": "截图目录: test-results/screenshots\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:46:11.664Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-0f6ca26b248b39ef0088", "file": "functional-scenarios.spec.ts", "line": 618, "column": 3 } ] }, { "title": "7. Swarm 协作", "file": "functional-scenarios.spec.ts", "line": 640, "column": 6, "specs": [ { "title": "7.1 Swarm 仪表板显示", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 20, "parallelIndex": 4, "status": "passed", "duration": 3515, "errors": [], "stdout": [ { "text": "Swarm dashboard visible: false\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:46:00.890Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-dbf36efb0f1fe8aea83c", "file": "functional-scenarios.spec.ts", "line": 649, "column": 3 }, { "title": "7.2 创建协作任务", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 20, "parallelIndex": 4, "status": "passed", "duration": 3666, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:46:04.520Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-e60a57b2536be6ce9b76", "file": "functional-scenarios.spec.ts", "line": 659, "column": 3 }, { "title": "7.3 协作模式选择", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 20, "parallelIndex": 4, "status": "passed", "duration": 3386, "errors": [], "stdout": [], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:46:08.201Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-e43355e4f2518218e935", "file": "functional-scenarios.spec.ts", "line": 679, "column": 3 } ] }, { "title": "8. 设置页面", "file": "functional-scenarios.spec.ts", "line": 705, "column": 6, "specs": [ { "title": "8.1 打开设置页面", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 20, "parallelIndex": 4, "status": "passed", "duration": 2843, "errors": [], "stdout": [ { "text": "Settings layout visible: true\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:46:11.601Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-89aa02774ce6fda0c876", "file": "functional-scenarios.spec.ts", "line": 712, "column": 3 }, { "title": "8.2 通用设置", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 20, "parallelIndex": 4, "status": "passed", "duration": 3003, "errors": [], "stdout": [ { "text": "Username input visible: true\n" }, { "text": "Theme selector visible: false\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:46:14.457Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-cfd92e4e37065f6e419f", "file": "functional-scenarios.spec.ts", "line": 732, "column": 3 }, { "title": "8.3 模型配置", "ok": true, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 20, "parallelIndex": 4, "status": "passed", "duration": 3265, "errors": [], "stdout": [ { "text": "Model options found: 0\n" }, { "text": "\n========================================\n" }, { "text": "ZCLAW 前端功能验证测试完成\n" }, { "text": "========================================\n" }, { "text": "测试时间: 2026-03-22T01:46:20.778Z\n" }, { "text": "截图目录: test-results/screenshots\n" }, { "text": "========================================\n\n" } ], "stderr": [], "retry": 0, "startTime": "2026-03-22T01:46:17.480Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "ea562bc8f2f5f42dadea-faee21c3e777f7004b5c", "file": "functional-scenarios.spec.ts", "line": 754, "column": 3 }, { "title": "8.4 Gateway 配置", "ok": false, "tags": [], "tests": [ { "timeout": 120000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 11, "parallelIndex": 7, "status": "failed", "duration": 2887, "error": { "message": "Error: locator.isVisible: Error: strict mode violation: locator('[class*=\"gateway\"]').or(getByText(/gateway|服务器|server/i)) resolved to 3 elements:\n 1)