Skip to content

feat(tasks): add Gantt timeline view for tasks #234

feat(tasks): add Gantt timeline view for tasks

feat(tasks): add Gantt timeline view for tasks #234

Triggered via pull request July 14, 2026 04:57
Status Failure
Total duration 14m 47s
Artifacts 2

ui-tests.yml

on: pull_request
Playwright E2E Tests
14m 43s
Playwright E2E Tests
Fit to window
Zoom out
Zoom in

Annotations

10 errors, 1 warning, and 1 notice
[chromium] › e2e/tests/tasks.spec.ts:132:6 › Tasks › should open task detail sheet and update the title: e2e/tests/tasks.spec.ts#L171
4) [chromium] › e2e/tests/tasks.spec.ts:132:6 › Tasks › should open task detail sheet and update the title Error: expect(locator).toBeVisible() failed Locator: getByText('Task updated', { exact: true }) Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for getByText('Task updated', { exact: true }) 169 | await expect( 170 | page.getByText("Task updated", { exact: true }), > 171 | ).toBeVisible({ timeout: 10000 }); | ^ 172 | 173 | // Verify updated title via API 174 | const updatedTask = await getDoc<HiveTask>( at /home/runner/work/hive/hive/e2e/tests/tasks.spec.ts:171:5
[chromium] › e2e/tests/task-pinning.spec.ts:172:6 › Task Pinning › should unpin a task via P keyboard shortcut in detail sheet: e2e/tests/task-pinning.spec.ts#L196
3) [chromium] › e2e/tests/task-pinning.spec.ts:172:6 › Task Pinning › should unpin a task via P keyboard shortcut in detail sheet Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).not.toContain(expected) // indexOf Expected value: not "TASK-00088" Received array: ["TASK-00088"] 194 | 195 | const pinned = await getPinnedFromStorage(page); > 196 | expect(pinned).not.toContain(taskB.name); | ^ 197 | }); 198 | 199 | test("should pin task via detail sheet button", async ({ page }) => { at /home/runner/work/hive/hive/e2e/tests/task-pinning.spec.ts:196:22
[chromium] › e2e/tests/task-pinning.spec.ts:172:6 › Task Pinning › should unpin a task via P keyboard shortcut in detail sheet: e2e/tests/task-pinning.spec.ts#L196
3) [chromium] › e2e/tests/task-pinning.spec.ts:172:6 › Task Pinning › should unpin a task via P keyboard shortcut in detail sheet Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).not.toContain(expected) // indexOf Expected value: not "TASK-00084" Received array: ["TASK-00084"] 194 | 195 | const pinned = await getPinnedFromStorage(page); > 196 | expect(pinned).not.toContain(taskB.name); | ^ 197 | }); 198 | 199 | test("should pin task via detail sheet button", async ({ page }) => { at /home/runner/work/hive/hive/e2e/tests/task-pinning.spec.ts:196:22
[chromium] › e2e/tests/task-pinning.spec.ts:172:6 › Task Pinning › should unpin a task via P keyboard shortcut in detail sheet: e2e/tests/task-pinning.spec.ts#L196
3) [chromium] › e2e/tests/task-pinning.spec.ts:172:6 › Task Pinning › should unpin a task via P keyboard shortcut in detail sheet Error: expect(received).not.toContain(expected) // indexOf Expected value: not "TASK-00080" Received array: ["TASK-00080"] 194 | 195 | const pinned = await getPinnedFromStorage(page); > 196 | expect(pinned).not.toContain(taskB.name); | ^ 197 | }); 198 | 199 | test("should pin task via detail sheet button", async ({ page }) => { at /home/runner/work/hive/hive/e2e/tests/task-pinning.spec.ts:196:22
[chromium] › e2e/tests/task-pinning.spec.ts:150:6 › Task Pinning › should pin a task via P keyboard shortcut in detail sheet: e2e/tests/task-pinning.spec.ts#L169
2) [chromium] › e2e/tests/task-pinning.spec.ts:150:6 › Task Pinning › should pin a task via P keyboard shortcut in detail sheet Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toContain(expected) // indexOf Expected value: "TASK-00076" Received array: [] 167 | // Verify: task appears in localStorage 168 | const pinned = await getPinnedFromStorage(page); > 169 | expect(pinned).toContain(taskB.name); | ^ 170 | }); 171 | 172 | test("should unpin a task via P keyboard shortcut in detail sheet", async ({ at /home/runner/work/hive/hive/e2e/tests/task-pinning.spec.ts:169:18
[chromium] › e2e/tests/task-pinning.spec.ts:150:6 › Task Pinning › should pin a task via P keyboard shortcut in detail sheet: e2e/tests/task-pinning.spec.ts#L169
2) [chromium] › e2e/tests/task-pinning.spec.ts:150:6 › Task Pinning › should pin a task via P keyboard shortcut in detail sheet Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toContain(expected) // indexOf Expected value: "TASK-00072" Received array: [] 167 | // Verify: task appears in localStorage 168 | const pinned = await getPinnedFromStorage(page); > 169 | expect(pinned).toContain(taskB.name); | ^ 170 | }); 171 | 172 | test("should unpin a task via P keyboard shortcut in detail sheet", async ({ at /home/runner/work/hive/hive/e2e/tests/task-pinning.spec.ts:169:18
[chromium] › e2e/tests/task-pinning.spec.ts:150:6 › Task Pinning › should pin a task via P keyboard shortcut in detail sheet: e2e/tests/task-pinning.spec.ts#L169
2) [chromium] › e2e/tests/task-pinning.spec.ts:150:6 › Task Pinning › should pin a task via P keyboard shortcut in detail sheet Error: expect(received).toContain(expected) // indexOf Expected value: "TASK-00068" Received array: [] 167 | // Verify: task appears in localStorage 168 | const pinned = await getPinnedFromStorage(page); > 169 | expect(pinned).toContain(taskB.name); | ^ 170 | }); 171 | 172 | test("should unpin a task via P keyboard shortcut in detail sheet", async ({ at /home/runner/work/hive/hive/e2e/tests/task-pinning.spec.ts:169:18
[chromium] › e2e/tests/project-types.spec.ts:124:6 › Project Types › should delete a project type: e2e/tests/project-types.spec.ts#L146
1) [chromium] › e2e/tests/project-types.spec.ts:124:6 › Project Types › should delete a project type Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByText('Project type "E2E PT Del 1784005568131" removed') Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for getByText('Project type "E2E PT Del 1784005568131" removed') 144 | await expect( 145 | page.getByText(`Project type "${typeName}" removed`), > 146 | ).toBeVisible({ timeout: 10000 }); | ^ 147 | 148 | // Verify it's no longer in the list 149 | await expect(dialog.getByText(typeName)).not.toBeVisible({ at /home/runner/work/hive/hive/e2e/tests/project-types.spec.ts:146:5
[chromium] › e2e/tests/project-types.spec.ts:124:6 › Project Types › should delete a project type: e2e/tests/project-types.spec.ts#L146
1) [chromium] › e2e/tests/project-types.spec.ts:124:6 › Project Types › should delete a project type Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByText('Project type "E2E PT Del 1784005553817" removed') Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for getByText('Project type "E2E PT Del 1784005553817" removed') 144 | await expect( 145 | page.getByText(`Project type "${typeName}" removed`), > 146 | ).toBeVisible({ timeout: 10000 }); | ^ 147 | 148 | // Verify it's no longer in the list 149 | await expect(dialog.getByText(typeName)).not.toBeVisible({ at /home/runner/work/hive/hive/e2e/tests/project-types.spec.ts:146:5
[chromium] › e2e/tests/project-types.spec.ts:124:6 › Project Types › should delete a project type: e2e/tests/project-types.spec.ts#L146
1) [chromium] › e2e/tests/project-types.spec.ts:124:6 › Project Types › should delete a project type Error: expect(locator).toBeVisible() failed Locator: getByText('Project type "E2E PT Del 1784005539839" removed') Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for getByText('Project type "E2E PT Del 1784005539839" removed') 144 | await expect( 145 | page.getByText(`Project type "${typeName}" removed`), > 146 | ).toBeVisible({ timeout: 10000 }); | ^ 147 | 148 | // Verify it's no longer in the list 149 | await expect(dialog.getByText(typeName)).not.toBeVisible({ at /home/runner/work/hive/hive/e2e/tests/project-types.spec.ts:146:5
Playwright E2E Tests
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
🎭 Playwright Run Summary
5 failed [chromium] › e2e/tests/project-types.spec.ts:124:6 › Project Types › should delete a project type [chromium] › e2e/tests/task-pinning.spec.ts:150:6 › Task Pinning › should pin a task via P keyboard shortcut in detail sheet [chromium] › e2e/tests/task-pinning.spec.ts:172:6 › Task Pinning › should unpin a task via P keyboard shortcut in detail sheet [chromium] › e2e/tests/tasks.spec.ts:132:6 › Tasks › should open task detail sheet and update the title [chromium] › e2e/tests/tasks.spec.ts:182:6 › Tasks › should update task priority via the detail sheet 136 passed (11.2m)

Artifacts

Produced during runtime
Name Size Digest
playwright-report Expired
16.9 MB
sha256:eebb76cb3561162f3f9ea0252b06d13941da33b8a549e1d0f4c388025bba665a
test-results Expired
16.1 MB
sha256:25340ebaed8a9dfc6787a9068a18f07115059f6e08007ae66aa845743a67ea17