Skip to content

fix(shell): compose the runtime manifest instead of replacing the app… #899

fix(shell): compose the runtime manifest instead of replacing the app…

fix(shell): compose the runtime manifest instead of replacing the app… #899

Triggered via push September 5, 2026 20:30
Status Failure
Total duration 28m 51s
Artifacts 29

code-quality.yml

on: push
Matrix: quality / security
quality  /  Nextcloud test matrix
8s
quality / Nextcloud test matrix
quality  /  Changed paths
10s
quality / Changed paths
quality  /  Frontend Build
1m 26s
quality / Frontend Build
Matrix: quality / frontend-checks
Matrix: quality / license
Matrix: quality / php-quality
Matrix: quality / vue-quality
quality  /  Nextcloud API check (app:check-code)
quality / Nextcloud API check (app:check-code)
quality  /  REUSE compliance
18s
quality / REUSE compliance
quality  /  info.xml lint
16s
quality / info.xml lint
quality  /  Frontend Tests (unit)
1m 19s
quality / Frontend Tests (unit)
quality  /  Coverage Baseline Protection
quality / Coverage Baseline Protection
quality  /  Features Check
quality / Features Check
quality  /  Features Extract
9s
quality / Features Extract
quality  /  Integration Tests (Newman)
2m 10s
quality / Integration Tests (Newman)
quality  /  Journeydoc Capture (screenshots)
quality / Journeydoc Capture (screenshots)
Matrix: quality / phpunit
quality  /  E2E Tests (Playwright)
20m 49s
quality / E2E Tests (Playwright)
quality  /  Quality Report
26s
quality / Quality Report
Fit to window
Zoom out
Zoom in

Annotations

12 errors, 34 warnings, and 2 notices
[chromium] › tests/e2e/dashboard-sharing.spec.ts:196:6 › dashboard-sharing UI (REQ-SHARE-001/002/004) › owner removes a share and it stays gone across reload: server/apps/launchpad/tests/e2e/dashboard-sharing.spec.ts#L116
10) [chromium] › tests/e2e/dashboard-sharing.spec.ts:196:6 › dashboard-sharing UI (REQ-SHARE-001/002/004) › owner removes a share and it stays gone across reload TimeoutError: locator.click: Timeout 10000ms exceeded. Call log: - waiting for locator('.sharee-option').filter({ hasText: /recipient/i }).first() - locator resolved to <span data-v-645b00cb="" class="sharee-option">…</span> - attempting click action - waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div data-v-645b00cb="" class="dashboard-config__field dashboard-config__public">…</div> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-645b00cb="" data-v-048c9b6c="" class="modal-mask" data-v-owner="304" aria-labelledby="modal-name-nc-vue-40" aria-describedby="modal-description-nc-vue-40">…</div> subtree intercepts pointer events - retrying click action - waiting for element to be visible, enabled and stable - element is not stable - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <p data-v-645b00cb="" class="dashboard-config__hint">Not shared with anyone yet.</p> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-645b00cb="" data-v-048c9b6c="" class="modal-mask" data-v-owner="304" aria-labelledby="modal-name-nc-vue-40" aria-describedby="modal-description-nc-vue-40">…</div> subtree intercepts pointer events - retrying click action - waiting 100ms 19 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <p data-v-645b00cb="" class="dashboard-config__hint">Not shared with anyone yet.</p> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-645b00cb="" data-v-048c9b6c="" class="modal-mask" data-v-owner="304" aria-labelledby="modal-name-nc-vue-40" aria-describedby="modal-description-nc-vue-40">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms 114 | .first() 115 | await expect(option).toBeVisible({ timeout: 8_000 }) > 116 | await option.click() | ^ 117 | } 118 | 119 | /** at addSharee (/home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/dashboard-sharing.spec.ts:116:15) at /home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/dashboard-sharing.spec.ts:204:4
[chromium] › tests/e2e/dashboard-sharing.spec.ts:157:6 › dashboard-sharing UI (REQ-SHARE-001/002/004) › owner changes a share permission level and it persists across reload: server/apps/launchpad/tests/e2e/dashboard-sharing.spec.ts#L116
9) [chromium] › tests/e2e/dashboard-sharing.spec.ts:157:6 › dashboard-sharing UI (REQ-SHARE-001/002/004) › owner changes a share permission level and it persists across reload TimeoutError: locator.click: Timeout 10000ms exceeded. Call log: - waiting for locator('.sharee-option').filter({ hasText: /recipient/i }).first() - locator resolved to <span data-v-645b00cb="" class="sharee-option">…</span> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div data-v-645b00cb="" class="dashboard-config__field dashboard-config__public">…</div> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-645b00cb="" data-v-048c9b6c="" class="modal-mask" data-v-owner="304" aria-labelledby="modal-name-nc-vue-40" aria-describedby="modal-description-nc-vue-40">…</div> subtree intercepts pointer events - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <p data-v-645b00cb="" class="dashboard-config__hint">Not shared with anyone yet.</p> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-645b00cb="" data-v-048c9b6c="" class="modal-mask" data-v-owner="304" aria-labelledby="modal-name-nc-vue-40" aria-describedby="modal-description-nc-vue-40">…</div> subtree intercepts pointer events - retrying click action - waiting 100ms 19 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <p data-v-645b00cb="" class="dashboard-config__hint">Not shared with anyone yet.</p> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-645b00cb="" data-v-048c9b6c="" class="modal-mask" data-v-owner="304" aria-labelledby="modal-name-nc-vue-40" aria-describedby="modal-description-nc-vue-40">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms 114 | .first() 115 | await expect(option).toBeVisible({ timeout: 8_000 }) > 116 | await option.click() | ^ 117 | } 118 | 119 | /** at addSharee (/home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/dashboard-sharing.spec.ts:116:15) at /home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/dashboard-sharing.spec.ts:166:4
[chromium] › tests/e2e/dashboard-sharing.spec.ts:134:6 › dashboard-sharing UI (REQ-SHARE-001/002/004) › owner adds a user share and it appears in the shares list: server/apps/launchpad/tests/e2e/dashboard-sharing.spec.ts#L116
8) [chromium] › tests/e2e/dashboard-sharing.spec.ts:134:6 › dashboard-sharing UI (REQ-SHARE-001/002/004) › owner adds a user share and it appears in the shares list TimeoutError: locator.click: Timeout 10000ms exceeded. Call log: - waiting for locator('.sharee-option').filter({ hasText: /recipient/i }).first() - locator resolved to <span data-v-645b00cb="" class="sharee-option">…</span> - attempting click action - waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div data-v-645b00cb="" class="dashboard-config__field dashboard-config__public">…</div> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-645b00cb="" data-v-048c9b6c="" class="modal-mask" data-v-owner="304" aria-labelledby="modal-name-nc-vue-40" aria-describedby="modal-description-nc-vue-40">…</div> subtree intercepts pointer events - retrying click action - waiting for element to be visible, enabled and stable - element is not stable - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <p data-v-645b00cb="" class="dashboard-config__hint">Not shared with anyone yet.</p> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-645b00cb="" data-v-048c9b6c="" class="modal-mask" data-v-owner="304" aria-labelledby="modal-name-nc-vue-40" aria-describedby="modal-description-nc-vue-40">…</div> subtree intercepts pointer events - retrying click action - waiting 100ms 19 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <p data-v-645b00cb="" class="dashboard-config__hint">Not shared with anyone yet.</p> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-645b00cb="" data-v-048c9b6c="" class="modal-mask" data-v-owner="304" aria-labelledby="modal-name-nc-vue-40" aria-describedby="modal-description-nc-vue-40">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms 114 | .first() 115 | await expect(option).toBeVisible({ timeout: 8_000 }) > 116 | await option.click() | ^ 117 | } 118 | 119 | /** at addSharee (/home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/dashboard-sharing.spec.ts:116:15) at /home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/dashboard-sharing.spec.ts:140:3
[chromium] › tests/e2e/conditional-visibility-editor.spec.ts:1100:6 › conditional-visibility editor — preview (REQ-CVUI-004: server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts#L458
7) [chromium] › tests/e2e/conditional-visibility-editor.spec.ts:1100:6 › conditional-visibility editor — preview (REQ-CVUI-004, REQ-CVUI-005) › the preview request carries byte-identical ruleConfig to the one the row persists TimeoutError: locator.click: Timeout 10000ms exceeded. Call log: - waiting for locator('.vs__dropdown-option').nth(3) - locator resolved to <li role="option" aria-selected="false" id="vs-nc-vue-52__option-3" class="vs__dropdown-option">…</li> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div data-v-c19740b0="" class="visibility-rule-row__actions">…</div> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div data-v-c19740b0="" class="visibility-rule-row__actions">…</div> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 100ms 19 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div data-v-c19740b0="" class="visibility-rule-row__actions">…</div> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms 456 | 'the rule-type select must offer all four types', 457 | ).toHaveCount(4) > 458 | await options.nth(index).click() | ^ 459 | } 460 | 461 | /** The single visible rule row, whichever section it currently sits in. */ at chooseType (/home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts:458:27) at /home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts:1108:3
[chromium] › tests/e2e/conditional-visibility-editor.spec.ts:1031:6 › conditional-visibility editor — preview (REQ-CVUI-004: server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts#L458
6) [chromium] › tests/e2e/conditional-visibility-editor.spec.ts:1031:6 › conditional-visibility editor — preview (REQ-CVUI-004, REQ-CVUI-005) › preview evaluates a row that was never saved, and stores nothing TimeoutError: locator.click: Timeout 10000ms exceeded. Call log: - waiting for locator('.vs__dropdown-option').nth(2) - locator resolved to <li role="option" aria-selected="false" id="vs-nc-vue-52__option-2" class="vs__dropdown-option">…</li> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <span id="nc-vue-59" data-v-5ca1e30f="" class="checkbox-content__text checkbox-radio-switch__text">Exclude — hide when matched</span> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <span id="nc-vue-59" data-v-5ca1e30f="" class="checkbox-content__text checkbox-radio-switch__text">Exclude — hide when matched</span> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 100ms 19 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <span id="nc-vue-59" data-v-5ca1e30f="" class="checkbox-content__text checkbox-radio-switch__text">Exclude — hide when matched</span> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms 456 | 'the rule-type select must offer all four types', 457 | ).toHaveCount(4) > 458 | await options.nth(index).click() | ^ 459 | } 460 | 461 | /** The single visible rule row, whichever section it currently sits in. */ at chooseType (/home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts:458:27) at /home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts:1039:3
[chromium] › tests/e2e/conditional-visibility-editor.spec.ts:922:6 › conditional-visibility editor — legible semantics (REQ-CVUI-003) › the include/exclude distinction survives with colour removed: server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts#L458
5) [chromium] › tests/e2e/conditional-visibility-editor.spec.ts:922:6 › conditional-visibility editor — legible semantics (REQ-CVUI-003) › the include/exclude distinction survives with colour removed TimeoutError: locator.click: Timeout 10000ms exceeded. Call log: - waiting for locator('.vs__dropdown-option').nth(2) - locator resolved to <li role="option" aria-selected="false" id="vs-nc-vue-62__option-2" class="vs__dropdown-option">…</li> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div data-v-c19740b0="" class="visibility-rule-row__actions">…</div> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div data-v-c19740b0="" class="visibility-rule-row__actions">…</div> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 100ms 19 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div data-v-c19740b0="" class="visibility-rule-row__actions">…</div> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms 456 | 'the rule-type select must offer all four types', 457 | ).toHaveCount(4) > 458 | await options.nth(index).click() | ^ 459 | } 460 | 461 | /** The single visible rule row, whichever section it currently sits in. */ at chooseType (/home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts:458:27) at /home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts:934:3
[chromium] › tests/e2e/conditional-visibility-editor.spec.ts:821:6 › conditional-visibility editor — per-row operands (REQ-CVUI-002) › toggling a row to exclude emits isInclude false and moves the row to the Hide-when section: server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts#L458
4) [chromium] › tests/e2e/conditional-visibility-editor.spec.ts:821:6 › conditional-visibility editor — per-row operands (REQ-CVUI-002) › toggling a row to exclude emits isInclude false and moves the row to the Hide-when section TimeoutError: locator.click: Timeout 10000ms exceeded. Call log: - waiting for locator('.vs__dropdown-option').nth(2) - locator resolved to <li role="option" aria-selected="false" id="vs-nc-vue-52__option-2" class="vs__dropdown-option">…</li> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <span id="nc-vue-59" data-v-5ca1e30f="" class="checkbox-content__text checkbox-radio-switch__text">Exclude — hide when matched</span> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <span id="nc-vue-59" data-v-5ca1e30f="" class="checkbox-content__text checkbox-radio-switch__text">Exclude — hide when matched</span> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 100ms 19 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <span id="nc-vue-59" data-v-5ca1e30f="" class="checkbox-content__text checkbox-radio-switch__text">Exclude — hide when matched</span> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms 456 | 'the rule-type select must offer all four types', 457 | ).toHaveCount(4) > 458 | await options.nth(index).click() | ^ 459 | } 460 | 461 | /** The single visible rule row, whichever section it currently sits in. */ at chooseType (/home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts:458:27) at /home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts:841:3
[chromium] › tests/e2e/conditional-visibility-editor.spec.ts:788:6 › conditional-visibility editor — per-row operands (REQ-CVUI-002) › an attribute row emits attribute: server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts#L458
3) [chromium] › tests/e2e/conditional-visibility-editor.spec.ts:788:6 › conditional-visibility editor — per-row operands (REQ-CVUI-002) › an attribute row emits attribute, operator and value TimeoutError: locator.click: Timeout 10000ms exceeded. Call log: - waiting for locator('.vs__dropdown-option').nth(3) - locator resolved to <li role="option" aria-selected="false" id="vs-nc-vue-52__option-3" class="vs__dropdown-option">…</li> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div data-v-c19740b0="" class="visibility-rule-row__actions">…</div> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div data-v-c19740b0="" class="visibility-rule-row__actions">…</div> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 100ms 19 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div data-v-c19740b0="" class="visibility-rule-row__actions">…</div> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms 456 | 'the rule-type select must offer all four types', 457 | ).toHaveCount(4) > 458 | await options.nth(index).click() | ^ 459 | } 460 | 461 | /** The single visible rule row, whichever section it currently sits in. */ at chooseType (/home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts:458:27) at /home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts:796:3
[chromium] › tests/e2e/conditional-visibility-editor.spec.ts:754:6 › conditional-visibility editor — per-row operands (REQ-CVUI-002) › a date row with only a start date omits endDate entirely rather than sending it empty: server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts#L458
2) [chromium] › tests/e2e/conditional-visibility-editor.spec.ts:754:6 › conditional-visibility editor — per-row operands (REQ-CVUI-002) › a date row with only a start date omits endDate entirely rather than sending it empty TimeoutError: locator.click: Timeout 10000ms exceeded. Call log: - waiting for locator('.vs__dropdown-option').nth(2) - locator resolved to <li role="option" aria-selected="false" id="vs-nc-vue-52__option-2" class="vs__dropdown-option">…</li> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <span id="nc-vue-59" data-v-5ca1e30f="" class="checkbox-content__text checkbox-radio-switch__text">Exclude — hide when matched</span> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <span id="nc-vue-59" data-v-5ca1e30f="" class="checkbox-content__text checkbox-radio-switch__text">Exclude — hide when matched</span> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 100ms 19 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <span id="nc-vue-59" data-v-5ca1e30f="" class="checkbox-content__text checkbox-radio-switch__text">Exclude — hide when matched</span> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms 456 | 'the rule-type select must offer all four types', 457 | ).toHaveCount(4) > 458 | await options.nth(index).click() | ^ 459 | } 460 | 461 | /** The single visible rule row, whichever section it currently sits in. */ at chooseType (/home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts:458:27) at /home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts:762:3
[chromium] › tests/e2e/conditional-visibility-editor.spec.ts:707:6 › conditional-visibility editor — per-row operands (REQ-CVUI-002) › a time row emits startTime: server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts#L458
1) [chromium] › tests/e2e/conditional-visibility-editor.spec.ts:707:6 › conditional-visibility editor — per-row operands (REQ-CVUI-002) › a time row emits startTime, endTime and a camelCase days array TimeoutError: locator.click: Timeout 10000ms exceeded. Call log: - waiting for locator('.vs__dropdown-option').nth(1) - locator resolved to <li role="option" aria-selected="false" id="vs-nc-vue-52__option-1" class="vs__dropdown-option">…</li> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <span id="nc-vue-56" data-v-5ca1e30f="" class="checkbox-content__text checkbox-radio-switch__text">Include — show when matched</span> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <span id="nc-vue-56" data-v-5ca1e30f="" class="checkbox-content__text checkbox-radio-switch__text">Include — show when matched</span> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 100ms 19 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <span id="nc-vue-56" data-v-5ca1e30f="" class="checkbox-content__text checkbox-radio-switch__text">Include — show when matched</span> from <div role="dialog" tabindex="-1" aria-modal="true" data-v-3c357e2d="" data-v-305ab947="" data-v-048c9b6c="" class="modal-mask" data-v-owner="358" aria-labelledby="modal-name-nc-vue-46" aria-describedby="modal-description-nc-vue-46">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms 456 | 'the rule-type select must offer all four types', 457 | ).toHaveCount(4) > 458 | await options.nth(index).click() | ^ 459 | } 460 | 461 | /** The single visible rule row, whichever section it currently sits in. */ at chooseType (/home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts:458:27) at /home/runner/work/launchpad/launchpad/server/apps/launchpad/tests/e2e/conditional-visibility-editor.spec.ts:715:3
quality / Quality Report
Process completed with exit code 1.
quality / Quality Report
One or more quality jobs failed — see the report above.
quality / Nextcloud test matrix
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / Features Extract
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-python@v5. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / Changed paths
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / info.xml lint
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / REUSE compliance
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / REUSE compliance
REUSE reported findings. Not blocking yet — set reuse-blocking: true once this app ships a REUSE.toml and a LICENSES/ directory.
quality / Security (composer)
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/checkout@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / Security (npm)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / PHP Quality (phpstan)
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/checkout@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / Vue Quality (stylelint)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / Frontend Check (check:schema-l10n)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / Frontend Check (check:manifest)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / PHP Quality (phpcs)
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/checkout@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / License (composer)
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/checkout@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / Vue Quality (eslint)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / PHP Quality (phpmd)
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/checkout@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / Frontend Check (format)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / PHP Quality (psalm)
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/checkout@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / PHP Quality (phpmetrics)
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/checkout@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / PHP Quality (lint)
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/checkout@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / License (npm)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / Frontend Tests (unit)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / Frontend Build
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / SBOM
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/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4, anchore/scan-action/download-grype@v5. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / PHPUnit (PHP 8.4, NC stable34, pgsql)
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/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / PHPUnit (PHP 8.4, NC stable33, pgsql)
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/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / PHPUnit (PHP 8.3, NC stable34, pgsql)
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/checkout@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / PHPUnit (PHP 8.3, NC stable32, pgsql)
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/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / PHPUnit (PHP 8.4, NC stable32, pgsql)
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/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / PHPUnit (PHP 8.3, NC stable33, pgsql)
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/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / Integration Tests (Newman)
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/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / E2E Tests (Playwright)
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/checkout@v4, actions/download-artifact@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / Hydra Gates
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / Quality Report
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/download-artifact@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
quality / Changed paths
Heavy tier WILL run — path filtering is not enabled for this repository (enable-path-filtering=false).
🎭 Playwright Run Summary
11 failed [chromium] › tests/e2e/conditional-visibility-editor.spec.ts:707:6 › conditional-visibility editor — per-row operands (REQ-CVUI-002) › a time row emits startTime, endTime and a camelCase days array [chromium] › tests/e2e/conditional-visibility-editor.spec.ts:754:6 › conditional-visibility editor — per-row operands (REQ-CVUI-002) › a date row with only a start date omits endDate entirely rather than sending it empty [chromium] › tests/e2e/conditional-visibility-editor.spec.ts:788:6 › conditional-visibility editor — per-row operands (REQ-CVUI-002) › an attribute row emits attribute, operator and value [chromium] › tests/e2e/conditional-visibility-editor.spec.ts:821:6 › conditional-visibility editor — per-row operands (REQ-CVUI-002) › toggling a row to exclude emits isInclude false and moves the row to the Hide-when section [chromium] › tests/e2e/conditional-visibility-editor.spec.ts:922:6 › conditional-visibility editor — legible semantics (REQ-CVUI-003) › the include/exclude distinction survives with colour removed [chromium] › tests/e2e/conditional-visibility-editor.spec.ts:1031:6 › conditional-visibility editor — preview (REQ-CVUI-004, REQ-CVUI-005) › preview evaluates a row that was never saved, and stores nothing [chromium] › tests/e2e/conditional-visibility-editor.spec.ts:1100:6 › conditional-visibility editor — preview (REQ-CVUI-004, REQ-CVUI-005) › the preview request carries byte-identical ruleConfig to the one the row persists [chromium] › tests/e2e/dashboard-sharing.spec.ts:134:6 › dashboard-sharing UI (REQ-SHARE-001/002/004) › owner adds a user share and it appears in the shares list [chromium] › tests/e2e/dashboard-sharing.spec.ts:157:6 › dashboard-sharing UI (REQ-SHARE-001/002/004) › owner changes a share permission level and it persists across reload [chromium] › tests/e2e/dashboard-sharing.spec.ts:196:6 › dashboard-sharing UI (REQ-SHARE-001/002/004) › owner removes a share and it stays gone across reload [chromium] › tests/e2e/dashboard-sharing.spec.ts:228:6 › dashboard-sharing UI (REQ-SHARE-001/002/004) › recipient sees the shared dashboard in their switcher 3 skipped 136 passed (18.4m)

Artifacts

Produced during runtime
Name Size Digest
coverage-report
103 KB
sha256:e6a0a107cfb063ade8c32d600207084148255decc737503678127d6b4997ba4a
frontend-build-output Expired
27.2 MB
sha256:ff19682b4f0ac1494e10f6b1ce0208135fc2b32a342644d0746563eb493867f8
license-report-composer
3.64 KB
sha256:a95a30f7c61c1f15b30dd5c5da4429b284564cc2a5000d53cd4694aae96cf582
license-report-npm
11.9 KB
sha256:2515174b784b8c54cd0161b66cfe6c9a8f00b5e0acb8db480fb6dca1de7c7584
nextcloud-log-e2e
11.7 KB
sha256:87fa74247d219abc3c953d3cb77f5f1cf6c6edf4951e24bd9230c7e984a1901b
playwright-report
64 MB
sha256:af76b0b1a2af121c73b8af31ccd883d6e1dd23812b0ec3e65c0a4fecb895622a
playwright-traces
64 MB
sha256:d101d71ad437b4ee5372b2aec18999c9d13b4c6fb6e0f3a463dc8369a0025a2c
quality-report
28.4 KB
sha256:038065500a758c7f87ff3254862900012a9328de3f8b44113fa12fffe0597726
result-frontend-build
160 Bytes
sha256:65f0ea977a3fd630951e51d0af8e5662fd3634dbd540ebad999727b7e9600f65
result-frontend-check-0
160 Bytes
sha256:ca9e4290211545f3b4a7c4cb7f11dee3ddd91950d0bd904941b464ace1a2ef3f
result-frontend-check-1
144 Bytes
sha256:6109e13a55f38580cb9295f2d53680afec23b9d33a70f8fc6898471910640f8f
result-frontend-check-2
166 Bytes
sha256:15e88411f119fced1ee43676ebab7f1c6124682b9a676d4090df26e37a7e1075
result-frontend-tests
160 Bytes
sha256:34f06369eb3b64bc003d4646814181544ed1851bc9857bbea6f6b03b6c9e3f17
result-hydra-gates
154 Bytes
sha256:32228f7386a85331ea0eab0db8482cb24753948131f85205853cd55bb13199cd
result-info-xml
148 Bytes
sha256:dba97a0e60f4176ab5e93f5df0c8f61b18eaea2c441bad541685281746f43dfe
result-license-composer
148 Bytes
sha256:083111d921c24680ecd7114f5b1d4d64c415b9b0b8e17eea536837589d900ab6
result-license-npm
138 Bytes
sha256:7709b02f89ca15cb33243dba13e43bbe4768921cc310d48549252996d8520f1c
result-php-quality-lint
140 Bytes
sha256:95528d82f24221a6770a6a4968552226ca508c7337ea768d93bb177812878292
result-php-quality-phpcs
142 Bytes
sha256:cbb37ff7db1d0506742ea81ebacfb26e8b69a18b0d3241a175b8a7d3f32c25a4
result-php-quality-phpmd
142 Bytes
sha256:7e12b773c35d39e91a4bc7443ca1a92fba680ccbd44fa763f8560faf9ec4631c
result-php-quality-phpmetrics
152 Bytes
sha256:be03a1104c51f5e6dbd00434e9c1e55ffa2c1615f68acff7211b060d39663298
result-php-quality-phpstan
146 Bytes
sha256:be7efd0ec5db014e9bdfa841407858a027ca0b706c7abd5944d4737807097613
result-php-quality-psalm
142 Bytes
sha256:e17f893317b31108a910a23d13cad984d984dd3be9dd19de1488e95dbcfb15f2
result-reuse
142 Bytes
sha256:f138c2165ea775b692813727c3fda414db1e69191bb5ad6e569b48558bbb744a
result-security-composer
148 Bytes
sha256:fec9aebb0ead5255e0985a57087ed66cf96d1fa9c590fb39b843e46d2ca92660
result-security-npm
138 Bytes
sha256:39a1b590c1958310a943d21bbae9160e68f55e58aed528895be5497f9bfb1d84
result-vue-quality-eslint
144 Bytes
sha256:3e3cef2d95c7ba1320651dc80527a341a01ffe2cba4f83f291faa19387bdf074
result-vue-quality-stylelint
150 Bytes
sha256:5e4b93d056a5229dc1be8d1b495cbb566442d332ef7b2f00862e9f255356051c
sbom-launchpad
76 KB
sha256:e774c8c77cc2c0774358c47e6b398d1f15f13a095ef9b6e8bc33f504c7bc607d