Skip to content

Responsively 2.0: full redesign, canvas layout, present mode and built-in MCP server #1492

Responsively 2.0: full redesign, canvas layout, present mode and built-in MCP server

Responsively 2.0: full redesign, canvas layout, present mode and built-in MCP server #1492

Triggered via pull request September 1, 2026 14:32
Status Failure
Total duration 54m 56s
Artifacts

test.yml

on: pull_request
Matrix: test
Fit to window
Zoom out
Zoom in

Annotations

10 errors, 2 warnings, and 1 notice
e2e/tests/bookmarks.spec.ts:47:7 › Bookmarks › bookmarked page shows filled star on revisit: desktop-app/e2e/models/app.ts#L75
5) e2e/tests/bookmarks.spec.ts:47:7 › Bookmarks › bookmarked page shows filled star on revisit ─── Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── TimeoutError: locator.fill: Timeout 30000ms exceeded. Call log: - waiting for locator('[data-testid="address-bar"]') - locator resolved to <input type="text" data-testid="address-bar" class="min-w-0 flex-1 bg-transparent text-sm text-fg outline-none placeholder:text-muted" value="file:///Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/fixtures/pages/test-page.html"/> - fill("http://127.0.0.1:49753/test-page.html") - attempting fill action 2 × waiting for element to be visible, enabled and editable - element is not visible - retrying fill action - waiting 20ms 2 × waiting for element to be visible, enabled and editable - element is not visible - retrying fill action - waiting 100ms 50 × waiting for element to be visible, enabled and editable - element is not visible - retrying fill action - waiting 500ms at ../models/app.ts:75 73 | 74 | async navigateTo(url: string, opts?: {timeout?: number}) { > 75 | await this.addressBar.fill(url); | ^ 76 | await this.addressBar.press('Enter'); 77 | await this.page.waitForTimeout(opts?.timeout ?? 2000); 78 | } at ResponsivelyApp.navigateTo (/Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/models/app.ts:75:27) at /Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/tests/bookmarks.spec.ts:51:15
e2e/tests/bookmarks.spec.ts:47:7 › Bookmarks › bookmarked page shows filled star on revisit: desktop-app/e2e/models/app.ts#L75
5) e2e/tests/bookmarks.spec.ts:47:7 › Bookmarks › bookmarked page shows filled star on revisit ─── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── TimeoutError: locator.fill: Timeout 30000ms exceeded. Call log: - waiting for locator('[data-testid="address-bar"]') - locator resolved to <input type="text" data-testid="address-bar" class="min-w-0 flex-1 bg-transparent text-sm text-fg outline-none placeholder:text-muted" value="file:///Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/fixtures/pages/test-page.html"/> - fill("http://127.0.0.1:49691/test-page.html") - attempting fill action 2 × waiting for element to be visible, enabled and editable - element is not visible - retrying fill action - waiting 20ms 2 × waiting for element to be visible, enabled and editable - element is not visible - retrying fill action - waiting 100ms 51 × waiting for element to be visible, enabled and editable - element is not visible - retrying fill action - waiting 500ms at ../models/app.ts:75 73 | 74 | async navigateTo(url: string, opts?: {timeout?: number}) { > 75 | await this.addressBar.fill(url); | ^ 76 | await this.addressBar.press('Enter'); 77 | await this.page.waitForTimeout(opts?.timeout ?? 2000); 78 | } at ResponsivelyApp.navigateTo (/Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/models/app.ts:75:27) at /Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/tests/bookmarks.spec.ts:51:15
e2e/tests/address-bar-features.spec.ts:42:7 › Address Bar Features › setting a page as homepage changes the home icon to filled: desktop-app/e2e/models/app.ts#L75
4) e2e/tests/address-bar-features.spec.ts:42:7 › Address Bar Features › setting a page as homepage changes the home icon to filled Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── TimeoutError: locator.fill: Timeout 30000ms exceeded. Call log: - waiting for locator('[data-testid="address-bar"]') - locator resolved to <input type="text" data-testid="address-bar" class="min-w-0 flex-1 bg-transparent text-sm text-fg outline-none placeholder:text-muted" value="file:///Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/fixtures/pages/test-page.html"/> - fill("http://127.0.0.1:49651/test-page.html") - attempting fill action 2 × waiting for element to be visible, enabled and editable - element is not visible - retrying fill action - waiting 20ms 2 × waiting for element to be visible, enabled and editable - element is not visible - retrying fill action - waiting 100ms 50 × waiting for element to be visible, enabled and editable - element is not visible - retrying fill action - waiting 500ms at ../models/app.ts:75 73 | 74 | async navigateTo(url: string, opts?: {timeout?: number}) { > 75 | await this.addressBar.fill(url); | ^ 76 | await this.addressBar.press('Enter'); 77 | await this.page.waitForTimeout(opts?.timeout ?? 2000); 78 | } at ResponsivelyApp.navigateTo (/Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/models/app.ts:75:27) at /Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/tests/address-bar-features.spec.ts:49:15
e2e/tests/address-bar-features.spec.ts:42:7 › Address Bar Features › setting a page as homepage changes the home icon to filled: desktop-app/e2e/models/app.ts#L75
4) e2e/tests/address-bar-features.spec.ts:42:7 › Address Bar Features › setting a page as homepage changes the home icon to filled Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── TimeoutError: locator.fill: Timeout 30000ms exceeded. Call log: - waiting for locator('[data-testid="address-bar"]') - locator resolved to <input type="text" data-testid="address-bar" class="min-w-0 flex-1 bg-transparent text-sm text-fg outline-none placeholder:text-muted" value="file:///Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/fixtures/pages/test-page.html"/> - fill("http://127.0.0.1:49606/test-page.html") - attempting fill action 2 × waiting for element to be visible, enabled and editable - element is not visible - retrying fill action - waiting 20ms 2 × waiting for element to be visible, enabled and editable - element is not visible - retrying fill action - waiting 100ms 50 × waiting for element to be visible, enabled and editable - element is not visible - retrying fill action - waiting 500ms at ../models/app.ts:75 73 | 74 | async navigateTo(url: string, opts?: {timeout?: number}) { > 75 | await this.addressBar.fill(url); | ^ 76 | await this.addressBar.press('Enter'); 77 | await this.page.waitForTimeout(opts?.timeout ?? 2000); 78 | } at ResponsivelyApp.navigateTo (/Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/models/app.ts:75:27) at /Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/tests/address-bar-features.spec.ts:49:15
e2e/tests/bookmarks.spec.ts:15:7 › Bookmarks › clicking star bookmarks the current page: desktop-app/e2e/models/app.ts#L75
3) e2e/tests/bookmarks.spec.ts:15:7 › Bookmarks › clicking star bookmarks the current page ─────── Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── TimeoutError: locator.fill: Timeout 30000ms exceeded. Call log: - waiting for locator('[data-testid="address-bar"]') - locator resolved to <input type="text" data-testid="address-bar" class="min-w-0 flex-1 bg-transparent text-sm text-fg outline-none placeholder:text-muted" value="file:///Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/fixtures/pages/test-page.html"/> - fill("http://127.0.0.1:49576/test-page.html") - attempting fill action 2 × waiting for element to be visible, enabled and editable - element is not visible - retrying fill action - waiting 20ms 2 × waiting for element to be visible, enabled and editable - element is not visible - retrying fill action - waiting 100ms 50 × waiting for element to be visible, enabled and editable - element is not visible - retrying fill action - waiting 500ms at ../models/app.ts:75 73 | 74 | async navigateTo(url: string, opts?: {timeout?: number}) { > 75 | await this.addressBar.fill(url); | ^ 76 | await this.addressBar.press('Enter'); 77 | await this.page.waitForTimeout(opts?.timeout ?? 2000); 78 | } at ResponsivelyApp.navigateTo (/Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/models/app.ts:75:27) at /Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/tests/bookmarks.spec.ts:19:15
e2e/tests/bookmarks.spec.ts:15:7 › Bookmarks › clicking star bookmarks the current page: desktop-app/e2e/models/app.ts#L75
3) e2e/tests/bookmarks.spec.ts:15:7 › Bookmarks › clicking star bookmarks the current page ─────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── TimeoutError: locator.fill: Timeout 30000ms exceeded. Call log: - waiting for locator('[data-testid="address-bar"]') - locator resolved to <input type="text" data-testid="address-bar" class="min-w-0 flex-1 bg-transparent text-sm text-fg outline-none placeholder:text-muted" value="file:///Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/fixtures/pages/test-page.html"/> - fill("http://127.0.0.1:49511/test-page.html") - attempting fill action 2 × waiting for element to be visible, enabled and editable - element is not visible - retrying fill action - waiting 20ms 2 × waiting for element to be visible, enabled and editable - element is not visible - retrying fill action - waiting 100ms 51 × waiting for element to be visible, enabled and editable - element is not visible - retrying fill action - waiting 500ms at ../models/app.ts:75 73 | 74 | async navigateTo(url: string, opts?: {timeout?: number}) { > 75 | await this.addressBar.fill(url); | ^ 76 | await this.addressBar.press('Enter'); 77 | await this.page.waitForTimeout(opts?.timeout ?? 2000); 78 | } at ResponsivelyApp.navigateTo (/Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/models/app.ts:75:27) at /Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/tests/bookmarks.spec.ts:19:15
e2e/tests/address-bar-features.spec.ts:4:7 › Address Bar Features › clicking address bar selects all text: desktop-app/e2e/tests/address-bar-features.spec.ts#L7
2) e2e/tests/address-bar-features.spec.ts:4:7 › Address Bar Features › clicking address bar selects all text Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── TimeoutError: locator.click: Timeout 30000ms exceeded. Call log: - waiting for locator('[data-testid="address-bar"]') - locator resolved to <input type="text" data-testid="address-bar" class="min-w-0 flex-1 bg-transparent text-sm text-fg outline-none placeholder:text-muted" value="file:///Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/fixtures/pages/test-page.html"/> - 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 49 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 500ms 5 | await app.dismissModals(); 6 | > 7 | await app.addressBar.click(); | ^ 8 | await app.page.waitForTimeout(300); 9 | 10 | // The input's onSelect handler should select all text on focus at /Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/tests/address-bar-features.spec.ts:7:26
e2e/tests/address-bar-features.spec.ts:4:7 › Address Bar Features › clicking address bar selects all text: desktop-app/e2e/tests/address-bar-features.spec.ts#L7
2) e2e/tests/address-bar-features.spec.ts:4:7 › Address Bar Features › clicking address bar selects all text Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── TimeoutError: locator.click: Timeout 30000ms exceeded. Call log: - waiting for locator('[data-testid="address-bar"]') - locator resolved to <input type="text" data-testid="address-bar" class="min-w-0 flex-1 bg-transparent text-sm text-fg outline-none placeholder:text-muted" value="file:///Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/fixtures/pages/test-page.html"/> - 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 53 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 500ms 5 | await app.dismissModals(); 6 | > 7 | await app.addressBar.click(); | ^ 8 | await app.page.waitForTimeout(300); 9 | 10 | // The input's onSelect handler should select all text on focus at /Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/tests/address-bar-features.spec.ts:7:26
e2e/tests/app-launch.spec.ts:29:7 › App Launch › address bar is visible with default homepage: desktop-app/e2e/tests/app-launch.spec.ts#L31
1) e2e/tests/app-launch.spec.ts:29:7 › App Launch › address bar is visible with default homepage ─ Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('[data-testid="address-bar"]') Expected: visible Received: hidden Timeout: 10000ms Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for locator('[data-testid="address-bar"]') 24 × locator resolved to <input type="text" data-testid="address-bar" class="min-w-0 flex-1 bg-transparent text-sm text-fg outline-none placeholder:text-muted" value="file:///Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/fixtures/pages/test-page.html"/> - unexpected value "hidden" 29 | test('address bar is visible with default homepage', async ({mainWindow}) => { 30 | const addressBar = mainWindow.locator('[data-testid="address-bar"]'); > 31 | await expect(addressBar).toBeVisible(); | ^ 32 | 33 | const value = await addressBar.inputValue(); 34 | expect(value.length).toBeGreaterThan(0); at /Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/tests/app-launch.spec.ts:31:30
e2e/tests/app-launch.spec.ts:29:7 › App Launch › address bar is visible with default homepage: desktop-app/e2e/tests/app-launch.spec.ts#L31
1) e2e/tests/app-launch.spec.ts:29:7 › App Launch › address bar is visible with default homepage ─ Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('[data-testid="address-bar"]') Expected: visible Received: hidden Timeout: 10000ms Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for locator('[data-testid="address-bar"]') 23 × locator resolved to <input type="text" data-testid="address-bar" class="min-w-0 flex-1 bg-transparent text-sm text-fg outline-none placeholder:text-muted" value="file:///Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/fixtures/pages/test-page.html"/> - unexpected value "hidden" 29 | test('address bar is visible with default homepage', async ({mainWindow}) => { 30 | const addressBar = mainWindow.locator('[data-testid="address-bar"]'); > 31 | await expect(addressBar).toBeVisible(); | ^ 32 | 33 | const value = await addressBar.inputValue(); 34 | expect(value.length).toBeGreaterThan(0); at /Users/runner/work/responsively-app/responsively-app/desktop-app/e2e/tests/app-launch.spec.ts:31:30
test (macos-latest)
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/
test (macos-latest)
No files were found with the provided path: desktop-app/e2e/playwright-report/. No artifacts will be uploaded.
🎭 Playwright Run Summary
60 failed e2e/tests/address-bar-features.spec.ts:4:7 › Address Bar Features › clicking address bar selects all text e2e/tests/address-bar-features.spec.ts:42:7 › Address Bar Features › setting a page as homepage changes the home icon to filled e2e/tests/app-launch.spec.ts:29:7 › App Launch › address bar is visible with default homepage ── e2e/tests/bookmarks.spec.ts:15:7 › Bookmarks › clicking star bookmarks the current page ──────── e2e/tests/bookmarks.spec.ts:47:7 › Bookmarks › bookmarked page shows filled star on revisit ──── e2e/tests/bookmarks.spec.ts:95:7 › Bookmarks › removing a bookmark returns star to outline state e2e/tests/canvas-mode.spec.ts:182:7 › Canvas mode › present mode hides the chrome and Esc restores it e2e/tests/color-blindness.spec.ts:105:7 › Color Blindness Simulation › simulation persists across page navigation within session e2e/tests/color-blindness.spec.ts:120:7 › Color Blindness Simulation › no filter shows pure red, green, blue colors e2e/tests/color-blindness.spec.ts:144:7 › Color Blindness Simulation › achromatopsia makes all colors grayscale e2e/tests/color-blindness.spec.ts:167:7 › Color Blindness Simulation › deuteranopia shifts red toward yellow-green e2e/tests/color-blindness.spec.ts:191:7 › Color Blindness Simulation › tritanopia shifts blue toward cyan e2e/tests/color-blindness.spec.ts:214:7 › Color Blindness Simulation › disabling filter restores original colors e2e/tests/cross-device-mirroring.spec.ts:116:7 › Cross-Device Event Mirroring › scrolling one device mirrors scroll position to other devices e2e/tests/cross-device-mirroring.spec.ts:138:7 › Cross-Device Event Mirroring › clicking a button on one device mirrors the click to other devices e2e/tests/cross-device-mirroring.spec.ts:166:7 › Cross-Device Event Mirroring › typing in an input on one device mirrors text to other devices e2e/tests/cross-device-mirroring.spec.ts:200:7 › Cross-Device Event Mirroring › toggling a checkbox on one device mirrors to other devices e2e/tests/cross-device-mirroring.spec.ts:230:7 › Cross-Device Event Mirroring › device with mirroring disabled does not receive scroll events e2e/tests/cross-device-mirroring.spec.ts:274:7 › Cross-Device Event Mirroring › device with mirroring disabled does not receive click events e2e/tests/device-color-scheme.spec.ts:98:7 › Device Color Scheme › dark color scheme changes webview background color e2e/tests/device-color-scheme.spec.ts:125:7 › Device Color Scheme › toggling back to light restores light background e2e/tests/device-interaction-mirroring.spec.ts:7:9 › Device Interaction Mirroring › Navigation Mirroring › navigate to test page updates ALL webviews e2e/tests/device-interaction-mirroring.spec.ts:24:9 › Device Interaction Mirroring › Navigation Mirroring › back navigation returns to previous page e2e/tests/device-interaction-mirroring.spec.ts:54:9 › Device Interaction Mirroring › Navigation Mirroring › forward navigation returns to next page e2e/tests/device-interaction-mirroring.spec.ts:92:9 › Device Interaction Mirroring › Navigation Mirroring › global refresh reloads ALL webviews e2e/tests/device-interaction-mirroring.spec.ts:115:9 › Device Interaction Mirroring › BrowserSync / Event Mirroring › BrowserSync client is injected into webviews e2e/tests/device-interaction-mirroring.spec.ts:156:9 › Device Interaction Mirroring › BrowserSync / Event Mirroring › disabling mirroring closes BrowserSync socket e2e/tests/device-interaction-mirroring.spec.ts:192:9 › Device Interaction Mirroring › BrowserSync / Event Mirroring › re-enabling mirroring reconnects BrowserSync socket e2e/tests/device-interaction-mirroring.spec.ts:236:9 › Device Interaction Mirroring › Scroll Mirroring › scroll to top button resets scroll in webview e2e/tests/device-manager.spec.ts:15