Skip to content

feat(tasks): allow changing a task's project from the detail sheet #232

feat(tasks): allow changing a task's project from the detail sheet

feat(tasks): allow changing a task's project from the detail sheet #232

Triggered via pull request July 13, 2026 04:59
Status Failure
Total duration 16m 47s
Artifacts 2

ui-tests.yml

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

Annotations

10 errors, 1 warning, and 1 notice
[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
4) [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-00101" Received array: ["TASK-00101"] 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
3) [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-00097" 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
3) [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-00093" 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
3) [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-00089" 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
2) [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 1783919348022" 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 1783919348022" 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
2) [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 1783919333261" 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 1783919333261" 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
2) [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 1783919319062" 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 1783919319062" 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/lock-due-date.spec.ts:163:6 › Lock Due Date Config › due date is locked (read-only) for task with past due date: e2e/tests/lock-due-date.spec.ts#L180
1) [chromium] › e2e/tests/lock-due-date.spec.ts:163:6 › Lock Due Date Config › due date is locked (read-only) for task with past due date Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toHaveCount(expected) failed Locator: locator('[role="dialog"]').locator('.grid.gap-2').filter({ hasText: 'Due Date' }).locator('button') Expected: 0 Received: 1 Timeout: 10000ms Call log: - Expect "toHaveCount" with timeout 10000ms - waiting for locator('[role="dialog"]').locator('.grid.gap-2').filter({ hasText: 'Due Date' }).locator('button') 14 × locator resolved to 1 element - unexpected value "1" 178 | // There should be no DatePicker button in the Due Date section 179 | const datePickerBtn = dueDateLabel.locator("button"); > 180 | await expect(datePickerBtn).toHaveCount(0); | ^ 181 | }); 182 | 183 | test("due date is editable for task with future due date", async ({ at /home/runner/work/hive/hive/e2e/tests/lock-due-date.spec.ts:180:31
[chromium] › e2e/tests/lock-due-date.spec.ts:163:6 › Lock Due Date Config › due date is locked (read-only) for task with past due date: e2e/tests/lock-due-date.spec.ts#L180
1) [chromium] › e2e/tests/lock-due-date.spec.ts:163:6 › Lock Due Date Config › due date is locked (read-only) for task with past due date Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toHaveCount(expected) failed Locator: locator('[role="dialog"]').locator('.grid.gap-2').filter({ hasText: 'Due Date' }).locator('button') Expected: 0 Received: 1 Timeout: 10000ms Call log: - Expect "toHaveCount" with timeout 10000ms - waiting for locator('[role="dialog"]').locator('.grid.gap-2').filter({ hasText: 'Due Date' }).locator('button') 14 × locator resolved to 1 element - unexpected value "1" 178 | // There should be no DatePicker button in the Due Date section 179 | const datePickerBtn = dueDateLabel.locator("button"); > 180 | await expect(datePickerBtn).toHaveCount(0); | ^ 181 | }); 182 | 183 | test("due date is editable for task with future due date", async ({ at /home/runner/work/hive/hive/e2e/tests/lock-due-date.spec.ts:180:31
[chromium] › e2e/tests/lock-due-date.spec.ts:163:6 › Lock Due Date Config › due date is locked (read-only) for task with past due date: e2e/tests/lock-due-date.spec.ts#L180
1) [chromium] › e2e/tests/lock-due-date.spec.ts:163:6 › Lock Due Date Config › due date is locked (read-only) for task with past due date Error: expect(locator).toHaveCount(expected) failed Locator: locator('[role="dialog"]').locator('.grid.gap-2').filter({ hasText: 'Due Date' }).locator('button') Expected: 0 Received: 1 Timeout: 10000ms Call log: - Expect "toHaveCount" with timeout 10000ms - waiting for locator('[role="dialog"]').locator('.grid.gap-2').filter({ hasText: 'Due Date' }).locator('button') 14 × locator resolved to 1 element - unexpected value "1" 178 | // There should be no DatePicker button in the Due Date section 179 | const datePickerBtn = dueDateLabel.locator("button"); > 180 | await expect(datePickerBtn).toHaveCount(0); | ^ 181 | }); 182 | 183 | test("due date is editable for task with future due date", async ({ at /home/runner/work/hive/hive/e2e/tests/lock-due-date.spec.ts:180:31
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
6 failed [chromium] › e2e/tests/lock-due-date.spec.ts:163:6 › Lock Due Date Config › due date is locked (read-only) for task with past due date [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 2 flaky [chromium] › e2e/tests/lock-due-date.spec.ts:183:6 › Lock Due Date Config › due date is editable for task with future due date [chromium] › e2e/tests/lock-due-date.spec.ts:201:6 › Lock Due Date Config › due date is editable when lock setting is disabled 133 passed (13.1m)

Artifacts

Produced during runtime
Name Size Digest
playwright-report Expired
23.6 MB
sha256:9d5758f378894b97b16769d2a6a3255fc0a9181565807f65e35307f3378d80ed
test-results Expired
22.8 MB
sha256:17e3d2258821dda59aa8dbb6c25c60cefdedf66d72c9779d8a5413b5a31ba24d