Skip to content

Jupyternaut persona extension #890

Jupyternaut persona extension

Jupyternaut persona extension #890

Triggered via pull request June 26, 2026 12:40
Status Failure
Total duration 1h 14m 19s
Artifacts 1

tests.yml

on: pull_request
Fit to window
Zoom out
Zoom in

Annotations

10 errors, 1 warning, and 1 notice
tests/browser-fetch-tool.spec.ts:32:7 › #browserFetchTool › should fetch local CORS-enabled URL with browser_fetch: ui-tests/tests/browser-fetch-tool.spec.ts#L47
4) tests/browser-fetch-tool.spec.ts:32:7 › #browserFetchTool › should fetch local CORS-enabled URL with browser_fetch Error: locator.pressSequentially: Test timeout of 120000ms exceeded. Call log: - waiting for locator('[id="@jupyterlite/ai:chat-panel"]').locator('.jp-chat-input-container').getByRole('combobox') 45 | const prompt = `Use browser_fetch to fetch this exact URL: ${FIXTURE_URL}`; 46 | > 47 | await input.pressSequentially(prompt); | ^ 48 | await sendButton.click(); 49 | 50 | await expect( at /home/runner/work/ai/ai/ui-tests/tests/browser-fetch-tool.spec.ts:47:17
tests/chat-panel.spec.ts:75:9 › #chatWithModelGeneric › should have a model: ui-tests/tests/chat-panel.spec.ts#L88
3) tests/chat-panel.spec.ts:75:9 › #chatWithModelGeneric › should have a model ─────────────────── Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: locator.pressSequentially: Test timeout of 60000ms exceeded. Call log: - waiting for locator('[id="@jupyterlite/ai:chat-panel"]').locator('.jp-chat-input-container').getByRole('combobox') 86 | const messages = panel.locator('.jp-chat-message'); 87 | > 88 | await input.pressSequentially(content); | ^ 89 | await sendButton.click(); 90 | await expect( 91 | panel.locator('.jp-chat-message-header:has-text("Jupyternaut")') at /home/runner/work/ai/ai/ui-tests/tests/chat-panel.spec.ts:88:19
tests/chat-panel.spec.ts:75:9 › #chatWithModelGeneric › should have a model: ui-tests/tests/chat-panel.spec.ts#L0
3) tests/chat-panel.spec.ts:75:9 › #chatWithModelGeneric › should have a model ─────────────────── Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 60000ms exceeded.
tests/chat-panel.spec.ts:75:9 › #chatWithModelGeneric › should have a model: ui-tests/tests/chat-panel.spec.ts#L88
3) tests/chat-panel.spec.ts:75:9 › #chatWithModelGeneric › should have a model ─────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: locator.pressSequentially: Test timeout of 60000ms exceeded. Call log: - waiting for locator('[id="@jupyterlite/ai:chat-panel"]').locator('.jp-chat-input-container').getByRole('combobox') 86 | const messages = panel.locator('.jp-chat-message'); 87 | > 88 | await input.pressSequentially(content); | ^ 89 | await sendButton.click(); 90 | await expect( 91 | panel.locator('.jp-chat-message-header:has-text("Jupyternaut")') at /home/runner/work/ai/ai/ui-tests/tests/chat-panel.spec.ts:88:19
tests/chat-panel.spec.ts:75:9 › #chatWithModelGeneric › should have a model: ui-tests/tests/chat-panel.spec.ts#L0
3) tests/chat-panel.spec.ts:75:9 › #chatWithModelGeneric › should have a model ─────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 60000ms exceeded.
tests/chat-panel.spec.ts:75:9 › #chatWithModelGeneric › should have a model: ui-tests/tests/chat-panel.spec.ts#L88
3) tests/chat-panel.spec.ts:75:9 › #chatWithModelGeneric › should have a model ─────────────────── Error: locator.pressSequentially: Test timeout of 60000ms exceeded. Call log: - waiting for locator('[id="@jupyterlite/ai:chat-panel"]').locator('.jp-chat-input-container').getByRole('combobox') 86 | const messages = panel.locator('.jp-chat-message'); 87 | > 88 | await input.pressSequentially(content); | ^ 89 | await sendButton.click(); 90 | await expect( 91 | panel.locator('.jp-chat-message-header:has-text("Jupyternaut")') at /home/runner/work/ai/ai/ui-tests/tests/chat-panel.spec.ts:88:19
tests/chat-panel.spec.ts:57:9 › #chatWithModelGeneric › should have a default chat: ui-tests/tests/chat-panel.spec.ts#L67
2) tests/chat-panel.spec.ts:57:9 › #chatWithModelGeneric › should have a default chat ──────────── Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('[id="@jupyterlite/ai:chat-panel"] .jp-chat-sidepanel-widget-toolbar') Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for locator('[id="@jupyterlite/ai:chat-panel"] .jp-chat-sidepanel-widget-toolbar') 65 | `[id="${CHAT_PANEL_ID}"] .jp-chat-sidepanel-widget-toolbar` 66 | ); > 67 | await expect(chatWidgetToolbar).toBeVisible(); | ^ 68 | 69 | // Check that the default chat has the name of the default model 70 | await expect( at /home/runner/work/ai/ai/ui-tests/tests/chat-panel.spec.ts:67:39
tests/chat-panel.spec.ts:57:9 › #chatWithModelGeneric › should have a default chat: ui-tests/tests/chat-panel.spec.ts#L67
2) tests/chat-panel.spec.ts:57:9 › #chatWithModelGeneric › should have a default chat ──────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('[id="@jupyterlite/ai:chat-panel"] .jp-chat-sidepanel-widget-toolbar') Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for locator('[id="@jupyterlite/ai:chat-panel"] .jp-chat-sidepanel-widget-toolbar') 65 | `[id="${CHAT_PANEL_ID}"] .jp-chat-sidepanel-widget-toolbar` 66 | ); > 67 | await expect(chatWidgetToolbar).toBeVisible(); | ^ 68 | 69 | // Check that the default chat has the name of the default model 70 | await expect( at /home/runner/work/ai/ai/ui-tests/tests/chat-panel.spec.ts:67:39
tests/chat-panel.spec.ts:30:7 › #withoutModel › should not create a chat if there is no provider: ui-tests/tests/chat-panel.spec.ts#L39
1) tests/chat-panel.spec.ts:30:7 › #withoutModel › should not create a chat if there is no provider Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('#jupyterlite-ai-settings') Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for locator('#jupyterlite-ai-settings') 37 | 38 | // Should open the AI settings > 39 | await expect(page.locator('#jupyterlite-ai-settings')).toBeVisible(); | ^ 40 | }); 41 | }); 42 | at /home/runner/work/ai/ai/ui-tests/tests/chat-panel.spec.ts:39:60
tests/chat-panel.spec.ts:30:7 › #withoutModel › should not create a chat if there is no provider: ui-tests/tests/chat-panel.spec.ts#L39
1) tests/chat-panel.spec.ts:30:7 › #withoutModel › should not create a chat if there is no provider Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('#jupyterlite-ai-settings') Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for locator('#jupyterlite-ai-settings') 37 | 38 | // Should open the AI settings > 39 | await expect(page.locator('#jupyterlite-ai-settings')).toBeVisible(); | ^ 40 | }); 41 | }); 42 | at /home/runner/work/ai/ai/ui-tests/tests/chat-panel.spec.ts:39:60
ui-tests
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/
🎭 Playwright Run Summary
30 failed tests/browser-fetch-tool.spec.ts:32:7 › #browserFetchTool › should fetch local CORS-enabled URL with browser_fetch tests/chat-panel.spec.ts:30:7 › #withoutModel › should not create a chat if there is no provider tests/chat-panel.spec.ts:57:9 › #chatWithModelGeneric › should have a default chat ───────────── tests/chat-panel.spec.ts:75:9 › #chatWithModelGeneric › should have a model ──────────────────── tests/chat-panel.spec.ts:103:9 › #chatWithModelGeneric › should suggest /clear when typing /cl ─ tests/chat-panel.spec.ts:114:9 › #chatWithModelGeneric › should clear messages with /clear ───── tests/chat-panel.spec.ts:145:9 › #chatWithModelGeneric › should receive an error message when removing the model tests/chat-panel.spec.ts:185:9 › #chatWithModelGeneric › should rename the chat ──────────────── tests/chat-panel.spec.ts:205:9 › #chatWithModelGeneric › should move the chat between areas ──── tests/chat-panel.spec.ts:231:9 › #chatWithModelGeneric › should show a context badge placeholder when enabled tests/chat-panel.spec.ts:248:9 › #chatWithModelGeneric › should prefill and reveal chats through public commands tests/chat-save-restore.spec.ts:37:7 › #chatSaveRestore › should show the save and auto-save buttons in the toolbar tests/chat-save-restore.spec.ts:48:7 › #chatSaveRestore › should save the chat to a backup file tests/chat-save-restore.spec.ts:58:7 › #chatSaveRestore › should toggle auto-save on and off ─── tests/chat-save-restore.spec.ts:75:7 › #chatSaveRestore › should auto-save the chat after a message is sent tests/chat-save-restore.spec.ts:105:7 › #chatSaveRestore › should restore messages after page reload tests/chat-save-restore.spec.ts:153:7 › #chatSaveRestore › should restore messages from a custom backup directory tests/chat-save-restore.spec.ts:218:7 › #chatSaveRestore › should save and restore autosave state and messages tests/code-completion.spec.ts:28:9 › #completionWithModelGeneric › should suggest inline completion tests/code-completion.spec.ts:103:7 › #CompletionStatus › completion status indicator should be enabled tests/code-completion.spec.ts:117:7 › #CompletionStatus › completion status should toggle ────── tests/commands-tool.spec.ts:31:7 › #commandsTool › should filter commands using query parameter tests/commands-tool.spec.ts:86:7 › #commandsTool › should support multi-word query filtering ─── tests/commands-tool.spec.ts:136:7 › #commandsTool › should return all commands without query parameter tests/commands-tool.spec.ts:194:7 › #commandsTool › should display command name when executing command tests/mcp-integration.spec.ts:40:7 › #mcpIntegration › should display tool call from MCP server tests/mcp-integration.spec.ts:69:7 › #mcpIntegration › should show MCP server as Connected in AI Settings tests/mime-bundles.spec.ts:85:7 › #mimeBundles › should render MIME bundles from configured command outputs in chat tests/mime-bundles.spec.ts:137:7 › #mimeBundles › should allow follow-up messages after MIME bundle auto-render tests/skills.spec.ts:47:7 › #skills › should follow instructions from a skill ────────────────── 3 passed (1.2h)

Artifacts

Produced during runtime
Name Size Digest
jupyterlite-ai-ui-tests-report-28238607742
254 MB
sha256:0845dcca8ab709fd36da63d8bdb9e69554c756d050a0340d493c6ac34b96b836