Update compeek-vnc.html #7
e2e.yml
on: push
UI Tests
3m 48s
Integration Tests
1m 54s
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
|
|