Skip to content

Live status header icon + redesigned videos page #1953

Live status header icon + redesigned videos page

Live status header icon + redesigned videos page #1953

Triggered via pull request April 28, 2026 15:41
Status Failure
Total duration 23m 39s
Artifacts 4

ci.yml

on: pull_request
frontend-build  /  Frontend Build
19m 33s
frontend-build / Frontend Build
apphost-build  /  AppHost Build
26s
apphost-build / AppHost Build
ci-gate
3s
ci-gate
Fit to window
Zoom out
Zoom in

Annotations

11 errors and 1 notice
[mobile-chromium] › tests/e2e/live-status.spec.ts:136:3 › live status › live header click opens site-global native picture-in-picture and suppresses strobe: src/frontend/tests/e2e/live-status.spec.ts#L205
3) [mobile-chromium] › tests/e2e/live-status.spec.ts:136:3 › live status › live header click opens site-global native picture-in-picture and suppresses strobe Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: locator.click: Test timeout of 60000ms exceeded. Call log: - waiting for locator('.live-btn').first() - locator resolved to <a data-live="true" data-source="twitch" data-pip-open="false" aria-expanded="false" href="/community/videos/" data-native-pip-bound="true" data-tour-target="live-status" aria-label="Aspire is live — watch now" class="header-icon-btn live-btn astro-zixgsetp">…</a> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 100ms 114 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 500ms 203 | const liveBtn = page.locator('.live-btn').first(); 204 | await expect(liveBtn).toHaveAttribute('data-live', 'true'); > 205 | await liveBtn.click(); | ^ 206 | 207 | await expect 208 | .poll(() => page.evaluate(() => (window as Window & { __aspirePipRequested?: number }).__aspirePipRequested)) at /home/runner/work/aspire.dev/aspire.dev/src/frontend/tests/e2e/live-status.spec.ts:205:19
[mobile-chromium] › tests/e2e/live-status.spec.ts:136:3 › live status › live header click opens site-global native picture-in-picture and suppresses strobe: src/frontend/tests/e2e/live-status.spec.ts#L0
3) [mobile-chromium] › tests/e2e/live-status.spec.ts:136:3 › live status › live header click opens site-global native picture-in-picture and suppresses strobe Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 60000ms exceeded.
[mobile-chromium] › tests/e2e/live-status.spec.ts:136:3 › live status › live header click opens site-global native picture-in-picture and suppresses strobe: src/frontend/tests/e2e/live-status.spec.ts#L205
3) [mobile-chromium] › tests/e2e/live-status.spec.ts:136:3 › live status › live header click opens site-global native picture-in-picture and suppresses strobe Error: locator.click: Test timeout of 60000ms exceeded. Call log: - waiting for locator('.live-btn').first() - locator resolved to <a data-live="true" data-source="twitch" data-pip-open="false" aria-expanded="false" href="/community/videos/" data-native-pip-bound="true" data-tour-target="live-status" aria-label="Aspire is live — watch now" class="header-icon-btn live-btn astro-zixgsetp">…</a> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 100ms 113 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 500ms 203 | const liveBtn = page.locator('.live-btn').first(); 204 | await expect(liveBtn).toHaveAttribute('data-live', 'true'); > 205 | await liveBtn.click(); | ^ 206 | 207 | await expect 208 | .poll(() => page.evaluate(() => (window as Window & { __aspirePipRequested?: number }).__aspirePipRequested)) at /home/runner/work/aspire.dev/aspire.dev/src/frontend/tests/e2e/live-status.spec.ts:205:19
[mobile-chromium] › tests/e2e/live-status.spec.ts:136:3 › live status › live header click opens site-global native picture-in-picture and suppresses strobe: src/frontend/tests/e2e/live-status.spec.ts#L0
3) [mobile-chromium] › tests/e2e/live-status.spec.ts:136:3 › live status › live header click opens site-global native picture-in-picture and suppresses strobe Test timeout of 60000ms exceeded.
[mobile-chromium] › tests/e2e/live-status.spec.ts:32:3 › live status › header icon strobes when an SSE state event flips to live: src/frontend/tests/e2e/live-status.spec.ts#L79
2) [mobile-chromium] › tests/e2e/live-status.spec.ts:32:3 › live status › header icon strobes when an SSE state event flips to live Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('.live-btn').first() Expected: visible Received: hidden Timeout: 5000ms Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for locator('.live-btn').first() 9 × locator resolved to <a data-live="false" data-source="none" data-pip-open="false" aria-expanded="false" href="/community/videos/" data-native-pip-bound="true" data-tour-target="live-status" aria-label="Watch Aspire videos" class="header-icon-btn live-btn astro-zixgsetp">…</a> - unexpected value "hidden" 77 | 78 | const liveBtn = page.locator('.live-btn').first(); > 79 | await expect(liveBtn).toBeVisible(); | ^ 80 | await expect(liveBtn).toHaveAttribute('data-live', 'false'); 81 | 82 | const liveSnapshot: LiveSnapshot = { at /home/runner/work/aspire.dev/aspire.dev/src/frontend/tests/e2e/live-status.spec.ts:79:27
[mobile-chromium] › tests/e2e/live-status.spec.ts:32:3 › live status › header icon strobes when an SSE state event flips to live: src/frontend/tests/e2e/live-status.spec.ts#L79
2) [mobile-chromium] › tests/e2e/live-status.spec.ts:32:3 › live status › header icon strobes when an SSE state event flips to live Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('.live-btn').first() Expected: visible Received: hidden Timeout: 5000ms Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for locator('.live-btn').first() 9 × locator resolved to <a data-live="false" data-source="none" data-pip-open="false" aria-expanded="false" href="/community/videos/" data-native-pip-bound="true" data-tour-target="live-status" aria-label="Watch Aspire videos" class="header-icon-btn live-btn astro-zixgsetp">…</a> - unexpected value "hidden" 77 | 78 | const liveBtn = page.locator('.live-btn').first(); > 79 | await expect(liveBtn).toBeVisible(); | ^ 80 | await expect(liveBtn).toHaveAttribute('data-live', 'false'); 81 | 82 | const liveSnapshot: LiveSnapshot = { at /home/runner/work/aspire.dev/aspire.dev/src/frontend/tests/e2e/live-status.spec.ts:79:27
[mobile-chromium] › tests/e2e/live-status.spec.ts:32:3 › live status › header icon strobes when an SSE state event flips to live: src/frontend/tests/e2e/live-status.spec.ts#L79
2) [mobile-chromium] › tests/e2e/live-status.spec.ts:32:3 › live status › header icon strobes when an SSE state event flips to live Error: expect(locator).toBeVisible() failed Locator: locator('.live-btn').first() Expected: visible Received: hidden Timeout: 5000ms Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for locator('.live-btn').first() 9 × locator resolved to <a data-live="false" data-source="none" data-pip-open="false" aria-expanded="false" href="/community/videos/" data-native-pip-bound="true" data-tour-target="live-status" aria-label="Watch Aspire videos" class="header-icon-btn live-btn astro-zixgsetp">…</a> - unexpected value "hidden" 77 | 78 | const liveBtn = page.locator('.live-btn').first(); > 79 | await expect(liveBtn).toBeVisible(); | ^ 80 | await expect(liveBtn).toHaveAttribute('data-live', 'false'); 81 | 82 | const liveSnapshot: LiveSnapshot = { at /home/runner/work/aspire.dev/aspire.dev/src/frontend/tests/e2e/live-status.spec.ts:79:27
[desktop-chromium] › tests/e2e/ui-regressions.spec.ts:91:1 › homepage header actions stay reachable at zoomed and reflow widths: src/frontend/tests/e2e/ui-regressions.spec.ts#L118
1) [desktop-chromium] › tests/e2e/ui-regressions.spec.ts:91:1 › homepage header actions stay reachable at zoomed and reflow widths Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 0 + Received + 1 Array [ "Aspire", "Search", + "Watch Aspire videos", "Open cookie preferences dialog", "Open install Aspire CLI dialog", "Docs", "Try", ] Call Log: - Timeout 5000ms exceeded while waiting on the predicate 116 | const banner = page.getByRole('banner'); 117 | > 118 | await expect | ^ 119 | .poll(() => 120 | banner.evaluate((header) => 121 | Array.from(header.querySelectorAll('a, button')) at /home/runner/work/aspire.dev/aspire.dev/src/frontend/tests/e2e/ui-regressions.spec.ts:118:5
[desktop-chromium] › tests/e2e/ui-regressions.spec.ts:91:1 › homepage header actions stay reachable at zoomed and reflow widths: src/frontend/tests/e2e/ui-regressions.spec.ts#L118
1) [desktop-chromium] › tests/e2e/ui-regressions.spec.ts:91:1 › homepage header actions stay reachable at zoomed and reflow widths Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 0 + Received + 1 Array [ "Aspire", "Search", + "Watch Aspire videos", "Open cookie preferences dialog", "Open install Aspire CLI dialog", "Docs", "Try", ] Call Log: - Timeout 5000ms exceeded while waiting on the predicate 116 | const banner = page.getByRole('banner'); 117 | > 118 | await expect | ^ 119 | .poll(() => 120 | banner.evaluate((header) => 121 | Array.from(header.querySelectorAll('a, button')) at /home/runner/work/aspire.dev/aspire.dev/src/frontend/tests/e2e/ui-regressions.spec.ts:118:5
[desktop-chromium] › tests/e2e/ui-regressions.spec.ts:91:1 › homepage header actions stay reachable at zoomed and reflow widths: src/frontend/tests/e2e/ui-regressions.spec.ts#L118
1) [desktop-chromium] › tests/e2e/ui-regressions.spec.ts:91:1 › homepage header actions stay reachable at zoomed and reflow widths Error: expect(received).toEqual(expected) // deep equality - Expected - 0 + Received + 1 Array [ "Aspire", "Search", + "Watch Aspire videos", "Open cookie preferences dialog", "Open install Aspire CLI dialog", "Docs", "Try", ] Call Log: - Timeout 5000ms exceeded while waiting on the predicate 116 | const banner = page.getByRole('banner'); 117 | > 118 | await expect | ^ 119 | .poll(() => 120 | banner.evaluate((header) => 121 | Array.from(header.querySelectorAll('a, button')) at /home/runner/work/aspire.dev/aspire.dev/src/frontend/tests/e2e/ui-regressions.spec.ts:118:5
ci-gate
Process completed with exit code 1.
🎭 Playwright Run Summary
4 failed [desktop-chromium] › tests/e2e/ui-regressions.spec.ts:91:1 › homepage header actions stay reachable at zoomed and reflow widths [mobile-chromium] › tests/e2e/live-status.spec.ts:32:3 › live status › header icon strobes when an SSE state event flips to live [mobile-chromium] › tests/e2e/live-status.spec.ts:136:3 › live status › live header click opens site-global native picture-in-picture and suppresses strobe [mobile-chromium] › tests/e2e/live-status.spec.ts:242:3 › live status › live header offers a provider choice when both streams are live 16 skipped 118 passed (6.3m)

Artifacts

Produced during runtime
Name Size Digest
apphost-release
9.06 MB
sha256:aa48d0ec6f697ae1480e2cef47044d29096492daae97bb38182243931d2c1e6b
frontend-dist
692 MB
sha256:ea243de25d56cb979336c5f9b555c01a8e1955415e150d39bdc142bb150b67a2
frontend-playwright-report
172 MB
sha256:fc7b7778b883374b237501384371a818e3ae871ad9967756a15f0eae46913955
frontend-test-results
172 MB
sha256:1ce64b42bb5375ff6f19d1635905576b2b3fca37c9ee146b3f58f5097d0da851