import { expect } from '@playwright/test' import { comfyPageFixture as test } from './ComfyPage' test.describe('Menu', () => { test.beforeEach(async ({ comfyPage }) => { await comfyPage.setSetting('Comfy.UseNewMenu', 'Top') }) test.afterEach(async ({ comfyPage }) => { const currentThemeId = await comfyPage.menu.getThemeId() if (currentThemeId !== 'dark') { await comfyPage.menu.toggleTheme() } await comfyPage.setSetting('Comfy.UseNewMenu', 'Disabled') }) // Skip reason: Flaky. test.skip('Toggle theme', async ({ comfyPage }) => { test.setTimeout(30000) expect(await comfyPage.menu.getThemeId()).toBe('dark') await comfyPage.menu.toggleTheme() expect(await comfyPage.menu.getThemeId()).toBe('light') // Theme id should persist after reload. await comfyPage.page.reload() await comfyPage.setup() expect(await comfyPage.menu.getThemeId()).toBe('light') await comfyPage.menu.toggleTheme() expect(await comfyPage.menu.getThemeId()).toBe('dark') }) test('Can register sidebar tab', async ({ comfyPage }) => { const initialChildrenCount = await comfyPage.menu.sideToolbar.evaluate( (el) => el.children.length ) await comfyPage.page.evaluate(async () => { window['app'].extensionManager.registerSidebarTab({ id: 'search', icon: 'pi pi-search', title: 'search', tooltip: 'search', type: 'custom', render: (el) => { el.innerHTML = '
Custom search tab
' } }) }) await comfyPage.nextFrame() const newChildrenCount = await comfyPage.menu.sideToolbar.evaluate( (el) => el.children.length ) expect(newChildrenCount).toBe(initialChildrenCount + 1) }) test.describe('Node library sidebar', () => { test('Node preview and drag to canvas', async ({ comfyPage }) => { // Open the sidebar const tab = comfyPage.menu.nodeLibraryTab await tab.open() await tab.getFolder('sampling').click() // Hover over a node to display the preview const nodeSelector = '.p-tree-node-leaf' await comfyPage.page.hover(nodeSelector) // Verify the preview is displayed const previewVisible = await comfyPage.page.isVisible( '.node-lib-node-preview' ) expect(previewVisible).toBe(true) const count = await comfyPage.getGraphNodesCount() // Drag the node onto the canvas const canvasSelector = '#graph-canvas' await comfyPage.page.dragAndDrop(nodeSelector, canvasSelector) // Verify the node is added to the canvas expect(await comfyPage.getGraphNodesCount()).toBe(count + 1) }) test('Bookmark node', async ({ comfyPage }) => { await comfyPage.setSetting('Comfy.NodeLibrary.Bookmarks', []) // Open the sidebar const tab = comfyPage.menu.nodeLibraryTab await tab.open() await tab.getFolder('sampling').click() // Bookmark the node await tab .getNode('KSampler (Advanced)') .locator('.bookmark-button') .click() // Verify the bookmark is added to the bookmarks tab expect(await comfyPage.getSetting('Comfy.NodeLibrary.Bookmarks')).toEqual( ['KSampler (Advanced)'] ) // Verify the bookmark node with the same name is added to the tree. expect(await tab.getNode('KSampler (Advanced)').count()).toBe(2) }) test('Ignores unrecognized node', async ({ comfyPage }) => { await comfyPage.setSetting('Comfy.NodeLibrary.Bookmarks', ['foo']) // Open the sidebar const tab = comfyPage.menu.nodeLibraryTab await tab.open() expect(await tab.getFolder('sampling').count()).toBe(1) expect(await tab.getNode('foo').count()).toBe(0) await comfyPage.setSetting('Comfy.NodeLibrary.Bookmarks', []) }) }) test('Can change canvas zoom speed setting', async ({ comfyPage }) => { const [defaultSpeed, maxSpeed] = [1.1, 2.5] expect(await comfyPage.getSetting('Comfy.Graph.ZoomSpeed')).toBe( defaultSpeed ) await comfyPage.setSetting('Comfy.Graph.ZoomSpeed', maxSpeed) expect(await comfyPage.getSetting('Comfy.Graph.ZoomSpeed')).toBe(maxSpeed) await comfyPage.page.reload() await comfyPage.setup() expect(await comfyPage.getSetting('Comfy.Graph.ZoomSpeed')).toBe(maxSpeed) await comfyPage.setSetting('Comfy.Graph.ZoomSpeed', defaultSpeed) }) })