diff --git a/browser_tests/tests/bottomPanelShortcuts.spec.ts b/browser_tests/tests/bottomPanelShortcuts.spec.ts index 915e56ade..4b3d39783 100644 --- a/browser_tests/tests/bottomPanelShortcuts.spec.ts +++ b/browser_tests/tests/bottomPanelShortcuts.spec.ts @@ -144,7 +144,7 @@ test.describe('Bottom Panel Shortcuts', { tag: '@ui' }, () => { expect(hasModifiers).toBeTruthy() }) - test('should maintain panel state when switching to terminal', async ({ + test('should maintain panel state when switching between panels', async ({ comfyPage }) => { // Open shortcuts panel first @@ -152,25 +152,43 @@ test.describe('Bottom Panel Shortcuts', { tag: '@ui' }, () => { .locator('button[aria-label*="Keyboard Shortcuts"]') .click() await expect(comfyPage.page.locator('.bottom-panel')).toBeVisible() + await expect( + comfyPage.page.locator('[id*="tab_shortcuts-essentials"]') + ).toBeVisible() - // Open terminal panel (should switch panels) - // Note: Terminal tabs load asynchronously, so this may show shortcuts fallback + // Try to open terminal panel - may show terminal OR close shortcuts + // depending on whether terminal tabs have loaded (async loading) await comfyPage.page .locator('button[aria-label*="Toggle Bottom Panel"]') .click() - // Panel should still be visible but showing terminal content - await expect(comfyPage.page.locator('.bottom-panel')).toBeVisible() + // Check if terminal tabs loaded (Logs tab visible) or fell back to shortcuts toggle + const logsTab = comfyPage.page.getByRole('tab', { name: /Logs/i }) + const hasTerminalTabs = await logsTab.isVisible().catch(() => false) - // Switch back to shortcuts - await comfyPage.page - .locator('button[aria-label*="Keyboard Shortcuts"]') - .click() + if (hasTerminalTabs) { + // Terminal panel is visible - verify we can switch back to shortcuts + await expect(comfyPage.page.locator('.bottom-panel')).toBeVisible() - // Should show shortcuts content again - await expect( - comfyPage.page.locator('[id*="tab_shortcuts-essentials"]') - ).toBeVisible() + // Switch back to shortcuts + await comfyPage.page + .locator('button[aria-label*="Keyboard Shortcuts"]') + .click() + + // Should show shortcuts content again + await expect( + comfyPage.page.locator('[id*="tab_shortcuts-essentials"]') + ).toBeVisible() + } else { + // Terminal tabs not loaded - button toggled shortcuts off, reopen for verification + await comfyPage.page + .locator('button[aria-label*="Keyboard Shortcuts"]') + .click() + await expect(comfyPage.page.locator('.bottom-panel')).toBeVisible() + await expect( + comfyPage.page.locator('[id*="tab_shortcuts-essentials"]') + ).toBeVisible() + } }) test('should handle keyboard navigation', async ({ comfyPage }) => { diff --git a/src/stores/workspace/bottomPanelStore.ts b/src/stores/workspace/bottomPanelStore.ts index 230adf225..5a5e7090e 100644 --- a/src/stores/workspace/bottomPanelStore.ts +++ b/src/stores/workspace/bottomPanelStore.ts @@ -72,13 +72,16 @@ export const useBottomPanelStore = defineStore('bottomPanel', () => { } const toggleBottomPanel = () => { - // Legacy method - toggles terminal panel, falls back to shortcuts if no terminal tabs + // Toggles the terminal panel if available, otherwise falls back to shortcuts // Terminal tabs are loaded asynchronously, so may not be available immediately const terminalPanel = panels.value.terminal if (terminalPanel.tabs.length > 0) { togglePanel('terminal') } else { - // Fall back to shortcuts panel if terminal tabs aren't loaded yet + // Terminal tabs not loaded yet - fall back to shortcuts panel + // If no panel is open, open shortcuts + // If shortcuts is already open, close it + // If another panel is open (shouldn't happen), switch to shortcuts togglePanel('shortcuts') } }