Skip to content

Update compeek-vnc.html #7

Update compeek-vnc.html

Update compeek-vnc.html #7

Triggered via push February 15, 2026 21:49
Status Success
Total duration 3m 52s
Artifacts 2

e2e.yml

on: push
Fit to window
Zoom out
Zoom in

Annotations

20 errors and 2 notices
[integration] › e2e/integration/tool-execution.spec.ts:44:3 › Integration: Tool Execution › key action completes without error: e2e/integration/tool-execution.spec.ts#L48
4) [integration] › e2e/integration/tool-execution.spec.ts:44:3 › Integration: Tool Execution › key action completes without error Error: expect(received).toBeTruthy() Received: false 46 | data: { action: 'key', text: 'Return' }, 47 | }); > 48 | expect(response.ok()).toBeTruthy(); | ^ 49 | 50 | const body = await response.json(); 51 | expect(body.error).toBeUndefined(); at /home/runner/work/compeek/compeek/e2e/integration/tool-execution.spec.ts:48:27
[integration] › e2e/integration/tool-execution.spec.ts:34:3 › Integration: Tool Execution › bash execution returns output: e2e/integration/tool-execution.spec.ts#L38
3) [integration] › e2e/integration/tool-execution.spec.ts:34:3 › Integration: Tool Execution › bash execution returns output Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toBeTruthy() Received: false 36 | data: { command: 'echo hello-from-integration-test' }, 37 | }); > 38 | expect(response.ok()).toBeTruthy(); | ^ 39 | 40 | const body = await response.json(); 41 | expect(body.output).toContain('hello-from-integration-test'); at /home/runner/work/compeek/compeek/e2e/integration/tool-execution.spec.ts:38:27
[integration] › e2e/integration/tool-execution.spec.ts:34:3 › Integration: Tool Execution › bash execution returns output: e2e/integration/tool-execution.spec.ts#L38
3) [integration] › e2e/integration/tool-execution.spec.ts:34:3 › Integration: Tool Execution › bash execution returns output Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toBeTruthy() Received: false 36 | data: { command: 'echo hello-from-integration-test' }, 37 | }); > 38 | expect(response.ok()).toBeTruthy(); | ^ 39 | 40 | const body = await response.json(); 41 | expect(body.output).toContain('hello-from-integration-test'); at /home/runner/work/compeek/compeek/e2e/integration/tool-execution.spec.ts:38:27
[integration] › e2e/integration/tool-execution.spec.ts:34:3 › Integration: Tool Execution › bash execution returns output: e2e/integration/tool-execution.spec.ts#L38
3) [integration] › e2e/integration/tool-execution.spec.ts:34:3 › Integration: Tool Execution › bash execution returns output Error: expect(received).toBeTruthy() Received: false 36 | data: { command: 'echo hello-from-integration-test' }, 37 | }); > 38 | expect(response.ok()).toBeTruthy(); | ^ 39 | 40 | const body = await response.json(); 41 | expect(body.output).toContain('hello-from-integration-test'); at /home/runner/work/compeek/compeek/e2e/integration/tool-execution.spec.ts:38:27
[integration] › e2e/integration/tool-execution.spec.ts:24:3 › Integration: Tool Execution › mouse_move action completes without error: e2e/integration/tool-execution.spec.ts#L28
2) [integration] › e2e/integration/tool-execution.spec.ts:24:3 › Integration: Tool Execution › mouse_move action completes without error Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toBeTruthy() Received: false 26 | data: { action: 'mouse_move', coordinate: [640, 360] }, 27 | }); > 28 | expect(response.ok()).toBeTruthy(); | ^ 29 | 30 | const body = await response.json(); 31 | expect(body.error).toBeUndefined(); at /home/runner/work/compeek/compeek/e2e/integration/tool-execution.spec.ts:28:27
[integration] › e2e/integration/tool-execution.spec.ts:24:3 › Integration: Tool Execution › mouse_move action completes without error: e2e/integration/tool-execution.spec.ts#L28
2) [integration] › e2e/integration/tool-execution.spec.ts:24:3 › Integration: Tool Execution › mouse_move action completes without error Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toBeTruthy() Received: false 26 | data: { action: 'mouse_move', coordinate: [640, 360] }, 27 | }); > 28 | expect(response.ok()).toBeTruthy(); | ^ 29 | 30 | const body = await response.json(); 31 | expect(body.error).toBeUndefined(); at /home/runner/work/compeek/compeek/e2e/integration/tool-execution.spec.ts:28:27
[integration] › e2e/integration/tool-execution.spec.ts:24:3 › Integration: Tool Execution › mouse_move action completes without error: e2e/integration/tool-execution.spec.ts#L28
2) [integration] › e2e/integration/tool-execution.spec.ts:24:3 › Integration: Tool Execution › mouse_move action completes without error Error: expect(received).toBeTruthy() Received: false 26 | data: { action: 'mouse_move', coordinate: [640, 360] }, 27 | }); > 28 | expect(response.ok()).toBeTruthy(); | ^ 29 | 30 | const body = await response.json(); 31 | expect(body.error).toBeUndefined(); at /home/runner/work/compeek/compeek/e2e/integration/tool-execution.spec.ts:28:27
[integration] › e2e/integration/tool-execution.spec.ts:12:3 › Integration: Tool Execution › screenshot action returns a base64 PNG: e2e/integration/tool-execution.spec.ts#L16
1) [integration] › e2e/integration/tool-execution.spec.ts:12:3 › Integration: Tool Execution › screenshot action returns a base64 PNG Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toBeTruthy() Received: false 14 | data: { action: 'screenshot' }, 15 | }); > 16 | expect(response.ok()).toBeTruthy(); | ^ 17 | 18 | const body = await response.json(); 19 | expect(body.base64).toBeDefined(); at /home/runner/work/compeek/compeek/e2e/integration/tool-execution.spec.ts:16:27
[integration] › e2e/integration/tool-execution.spec.ts:12:3 › Integration: Tool Execution › screenshot action returns a base64 PNG: e2e/integration/tool-execution.spec.ts#L16
1) [integration] › e2e/integration/tool-execution.spec.ts:12:3 › Integration: Tool Execution › screenshot action returns a base64 PNG Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toBeTruthy() Received: false 14 | data: { action: 'screenshot' }, 15 | }); > 16 | expect(response.ok()).toBeTruthy(); | ^ 17 | 18 | const body = await response.json(); 19 | expect(body.base64).toBeDefined(); at /home/runner/work/compeek/compeek/e2e/integration/tool-execution.spec.ts:16:27
[integration] › e2e/integration/tool-execution.spec.ts:12:3 › Integration: Tool Execution › screenshot action returns a base64 PNG: e2e/integration/tool-execution.spec.ts#L16
1) [integration] › e2e/integration/tool-execution.spec.ts:12:3 › Integration: Tool Execution › screenshot action returns a base64 PNG Error: expect(received).toBeTruthy() Received: false 14 | data: { action: 'screenshot' }, 15 | }); > 16 | expect(response.ok()).toBeTruthy(); | ^ 17 | 18 | const body = await response.json(); 19 | expect(body.base64).toBeDefined(); at /home/runner/work/compeek/compeek/e2e/integration/tool-execution.spec.ts:16:27
[ui] › e2e/ui/workflow-panel.spec.ts:49:3 › Workflow Panel › shows mode toggle with General Goal and Document modes: e2e/ui/workflow-panel.spec.ts#L50
4) [ui] › e2e/ui/workflow-panel.spec.ts:49:3 › Workflow Panel › shows mode toggle with General Goal and Document modes Error: expect(locator).toBeVisible() failed Locator: getByRole('button', { name: 'General Goal' }) Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByRole('button', { name: 'General Goal' }) 48 | 49 | test('shows mode toggle with General Goal and Document modes', async ({ page }) => { > 50 | await expect(page.getByRole('button', { name: 'General Goal' })).toBeVisible(); | ^ 51 | await expect(page.getByRole('button', { name: /Document/ })).toBeVisible(); 52 | }); 53 | at /home/runner/work/compeek/compeek/e2e/ui/workflow-panel.spec.ts:50:70
[ui] › e2e/ui/url-hash.spec.ts:31:3 › URL Hash Auto-Connect › does not duplicate session on page reload after hash is cleared: e2e/ui/url-hash.spec.ts#L45
3) [ui] › e2e/ui/url-hash.spec.ts:31:3 › URL Hash Auto-Connect › does not duplicate session on page reload after hash is cleared Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toHaveCount(expected) failed Locator: locator('button').filter({ hasText: 'Reload Test' }) Expected: 1 Received: 0 Timeout: 5000ms Call log: - Expect "toHaveCount" with timeout 5000ms - waiting for locator('button').filter({ hasText: 'Reload Test' }) 9 × locator resolved to 0 elements - unexpected value "0" 43 | // Count tabs — should not have duplicates 44 | const tabs = page.locator('button', { hasText: 'Reload Test' }); > 45 | await expect(tabs).toHaveCount(1); | ^ 46 | }); 47 | }); 48 | at /home/runner/work/compeek/compeek/e2e/ui/url-hash.spec.ts:45:24
[ui] › e2e/ui/url-hash.spec.ts:31:3 › URL Hash Auto-Connect › does not duplicate session on page reload after hash is cleared: e2e/ui/url-hash.spec.ts#L45
3) [ui] › e2e/ui/url-hash.spec.ts:31:3 › URL Hash Auto-Connect › does not duplicate session on page reload after hash is cleared Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toHaveCount(expected) failed Locator: locator('button').filter({ hasText: 'Reload Test' }) Expected: 1 Received: 0 Timeout: 5000ms Call log: - Expect "toHaveCount" with timeout 5000ms - waiting for locator('button').filter({ hasText: 'Reload Test' }) 9 × locator resolved to 0 elements - unexpected value "0" 43 | // Count tabs — should not have duplicates 44 | const tabs = page.locator('button', { hasText: 'Reload Test' }); > 45 | await expect(tabs).toHaveCount(1); | ^ 46 | }); 47 | }); 48 | at /home/runner/work/compeek/compeek/e2e/ui/url-hash.spec.ts:45:24
[ui] › e2e/ui/url-hash.spec.ts:31:3 › URL Hash Auto-Connect › does not duplicate session on page reload after hash is cleared: e2e/ui/url-hash.spec.ts#L45
3) [ui] › e2e/ui/url-hash.spec.ts:31:3 › URL Hash Auto-Connect › does not duplicate session on page reload after hash is cleared Error: expect(locator).toHaveCount(expected) failed Locator: locator('button').filter({ hasText: 'Reload Test' }) Expected: 1 Received: 0 Timeout: 5000ms Call log: - Expect "toHaveCount" with timeout 5000ms - waiting for locator('button').filter({ hasText: 'Reload Test' }) 9 × locator resolved to 0 elements - unexpected value "0" 43 | // Count tabs — should not have duplicates 44 | const tabs = page.locator('button', { hasText: 'Reload Test' }); > 45 | await expect(tabs).toHaveCount(1); | ^ 46 | }); 47 | }); 48 | at /home/runner/work/compeek/compeek/e2e/ui/url-hash.spec.ts:45:24
[ui] › e2e/ui/persistence.spec.ts:6:3 › Persistence across page reload › settings survive page reload: e2e/ui/persistence.spec.ts#L20
2) [ui] › e2e/ui/persistence.spec.ts:6:3 › Persistence across page reload › settings survive page reload Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).not.toBeVisible() failed Locator: getByText('Setup needed') Expected: not visible Received: visible Timeout: 5000ms Call log: - Expect "not toBeVisible" with timeout 5000ms - waiting for getByText('Setup needed') 9 × locator resolved to <button class="text-[10px] px-2 py-0.5 rounded-full bg-compeek-warning/15 text-compeek-warning border border-compeek-warning/30 hover:bg-compeek-warning/25 transition-colors">Setup needed</button> - unexpected value "visible" 18 | 19 | // "Setup needed" should still be gone > 20 | await expect(page.getByText('Setup needed')).not.toBeVisible(); | ^ 21 | 22 | // Open settings to verify key is still there 23 | await page.locator('header').getByRole('button').filter({ has: page.locator('svg') }).click(); at /home/runner/work/compeek/compeek/e2e/ui/persistence.spec.ts:20:54
[ui] › e2e/ui/persistence.spec.ts:6:3 › Persistence across page reload › settings survive page reload: e2e/ui/persistence.spec.ts#L20
2) [ui] › e2e/ui/persistence.spec.ts:6:3 › Persistence across page reload › settings survive page reload Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).not.toBeVisible() failed Locator: getByText('Setup needed') Expected: not visible Received: visible Timeout: 5000ms Call log: - Expect "not toBeVisible" with timeout 5000ms - waiting for getByText('Setup needed') 9 × locator resolved to <button class="text-[10px] px-2 py-0.5 rounded-full bg-compeek-warning/15 text-compeek-warning border border-compeek-warning/30 hover:bg-compeek-warning/25 transition-colors">Setup needed</button> - unexpected value "visible" 18 | 19 | // "Setup needed" should still be gone > 20 | await expect(page.getByText('Setup needed')).not.toBeVisible(); | ^ 21 | 22 | // Open settings to verify key is still there 23 | await page.locator('header').getByRole('button').filter({ has: page.locator('svg') }).click(); at /home/runner/work/compeek/compeek/e2e/ui/persistence.spec.ts:20:54
[ui] › e2e/ui/persistence.spec.ts:6:3 › Persistence across page reload › settings survive page reload: e2e/ui/persistence.spec.ts#L20
2) [ui] › e2e/ui/persistence.spec.ts:6:3 › Persistence across page reload › settings survive page reload Error: expect(locator).not.toBeVisible() failed Locator: getByText('Setup needed') Expected: not visible Received: visible Timeout: 5000ms Call log: - Expect "not toBeVisible" with timeout 5000ms - waiting for getByText('Setup needed') 9 × locator resolved to <button class="text-[10px] px-2 py-0.5 rounded-full bg-compeek-warning/15 text-compeek-warning border border-compeek-warning/30 hover:bg-compeek-warning/25 transition-colors">Setup needed</button> - unexpected value "visible" 18 | 19 | // "Setup needed" should still be gone > 20 | await expect(page.getByText('Setup needed')).not.toBeVisible(); | ^ 21 | 22 | // Open settings to verify key is still there 23 | await page.locator('header').getByRole('button').filter({ has: page.locator('svg') }).click(); at /home/runner/work/compeek/compeek/e2e/ui/persistence.spec.ts:20:54
[ui] › e2e/ui/app-load.spec.ts:10:3 › App Load › shows the welcome guide when no sessions are connected: e2e/ui/app-load.spec.ts#L14
1) [ui] › e2e/ui/app-load.spec.ts:10:3 › App Load › shows the welcome guide when no sessions are connected Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByText('AI eyes & hands') Expected: visible Error: strict mode violation: getByText('AI eyes & hands') resolved to 2 elements: 1) <span class="text-xs text-compeek-text-dim ml-1 hidden sm:inline">AI eyes & hands for any desktop</span> aka getByText('AI eyes & hands for any') 2) <h1 class="text-6xl font-bold text-compeek-text tracking-tight leading-[1.1] mb-6 animate-step-in">…</h1> aka getByRole('heading', { name: 'AI eyes & hands for any' }) Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByText('AI eyes & hands') 12 | 13 | await expect(page.locator('header')).toContainText('compeek'); > 14 | await expect(page.getByText('AI eyes & hands')).toBeVisible(); | ^ 15 | await expect(page.getByText('for any desktop')).toBeVisible(); 16 | await expect(page.getByText('Get started')).toBeVisible(); 17 | }); at /home/runner/work/compeek/compeek/e2e/ui/app-load.spec.ts:14:53
[ui] › e2e/ui/app-load.spec.ts:10:3 › App Load › shows the welcome guide when no sessions are connected: e2e/ui/app-load.spec.ts#L14
1) [ui] › e2e/ui/app-load.spec.ts:10:3 › App Load › shows the welcome guide when no sessions are connected Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByText('AI eyes & hands') Expected: visible Error: strict mode violation: getByText('AI eyes & hands') resolved to 2 elements: 1) <span class="text-xs text-compeek-text-dim ml-1 hidden sm:inline">AI eyes & hands for any desktop</span> aka getByText('AI eyes & hands for any') 2) <h1 class="text-6xl font-bold text-compeek-text tracking-tight leading-[1.1] mb-6 animate-step-in">…</h1> aka getByRole('heading', { name: 'AI eyes & hands for any' }) Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByText('AI eyes & hands') 12 | 13 | await expect(page.locator('header')).toContainText('compeek'); > 14 | await expect(page.getByText('AI eyes & hands')).toBeVisible(); | ^ 15 | await expect(page.getByText('for any desktop')).toBeVisible(); 16 | await expect(page.getByText('Get started')).toBeVisible(); 17 | }); at /home/runner/work/compeek/compeek/e2e/ui/app-load.spec.ts:14:53
[ui] › e2e/ui/app-load.spec.ts:10:3 › App Load › shows the welcome guide when no sessions are connected: e2e/ui/app-load.spec.ts#L14
1) [ui] › e2e/ui/app-load.spec.ts:10:3 › App Load › shows the welcome guide when no sessions are connected Error: expect(locator).toBeVisible() failed Locator: getByText('AI eyes & hands') Expected: visible Error: strict mode violation: getByText('AI eyes & hands') resolved to 2 elements: 1) <span class="text-xs text-compeek-text-dim ml-1 hidden sm:inline">AI eyes & hands for any desktop</span> aka getByText('AI eyes & hands for any') 2) <h1 class="text-6xl font-bold text-compeek-text tracking-tight leading-[1.1] mb-6 animate-step-in">…</h1> aka getByRole('heading', { name: 'AI eyes & hands for any' }) Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByText('AI eyes & hands') 12 | 13 | await expect(page.locator('header')).toContainText('compeek'); > 14 | await expect(page.getByText('AI eyes & hands')).toBeVisible(); | ^ 15 | await expect(page.getByText('for any desktop')).toBeVisible(); 16 | await expect(page.getByText('Get started')).toBeVisible(); 17 | }); at /home/runner/work/compeek/compeek/e2e/ui/app-load.spec.ts:14:53
🎭 Playwright Run Summary
4 failed [integration] › e2e/integration/tool-execution.spec.ts:12:3 › Integration: Tool Execution › screenshot action returns a base64 PNG [integration] › e2e/integration/tool-execution.spec.ts:24:3 › Integration: Tool Execution › mouse_move action completes without error [integration] › e2e/integration/tool-execution.spec.ts:34:3 › Integration: Tool Execution › bash execution returns output [integration] › e2e/integration/tool-execution.spec.ts:44:3 › Integration: Tool Execution › key action completes without error 3 passed (16.2s)
🎭 Playwright Run Summary
5 failed [ui] › e2e/ui/app-load.spec.ts:10:3 › App Load › shows the welcome guide when no sessions are connected [ui] › e2e/ui/persistence.spec.ts:6:3 › Persistence across page reload › settings survive page reload [ui] › e2e/ui/url-hash.spec.ts:31:3 › URL Hash Auto-Connect › does not duplicate session on page reload after hash is cleared [ui] › e2e/ui/workflow-panel.spec.ts:49:3 › Workflow Panel › shows mode toggle with General Goal and Document modes [ui] › e2e/ui/workflow-panel.spec.ts:54:3 › Workflow Panel › switching to Document mode shows upload area 31 passed (3.1m)

Artifacts

Produced during runtime
Name Size Digest
playwright-report-integration Expired
19.5 KB
sha256:700a61ccdc73a09e15f503cac3d5d1fa9fa4a8336f447318862910c25de98f13
playwright-report-ui Expired
4.66 MB
sha256:a31f8eb25c45219033bedffe9e5dabf31a69fb94c489aea07a4d54b8cf22e3f1