mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-05-23 06:10:32 +00:00
Removing the 'Convert to Group Node (Deprecated)' entry from the node right-click menu made the menu just short enough to fit in the 520px viewport these tests use, breaking their overflow precondition. Lower the viewport to 420px so the menu reliably overflows again.
66 lines
2.3 KiB
TypeScript
66 lines
2.3 KiB
TypeScript
import { expect } from '@playwright/test'
|
|
|
|
import type { ComfyPage } from '@e2e/fixtures/ComfyPage'
|
|
import { comfyPageFixture as test } from '@e2e/fixtures/ComfyPage'
|
|
import { openMoreOptionsMenu } from '@e2e/fixtures/utils/selectionToolboxMoreOptions'
|
|
|
|
test.describe(
|
|
'Node context menu shape submenu (FE-570)',
|
|
{ tag: '@ui' },
|
|
() => {
|
|
test.beforeEach(async ({ comfyPage }) => {
|
|
await comfyPage.settings.setSetting('Comfy.UseNewMenu', 'Top')
|
|
await comfyPage.settings.setSetting('Comfy.Canvas.SelectionToolbox', true)
|
|
await comfyPage.workflow.loadWorkflow('nodes/single_ksampler')
|
|
})
|
|
|
|
async function expectShapePopoverVisible(comfyPage: ComfyPage) {
|
|
const popover = comfyPage.page
|
|
.locator('.p-popover')
|
|
.filter({ hasText: 'Default' })
|
|
await expect(popover).toBeVisible()
|
|
await expect(popover).toContainText('Box')
|
|
await expect(popover).toContainText('Card')
|
|
|
|
const popoverBox = await popover.boundingBox()
|
|
expect(popoverBox).not.toBeNull()
|
|
expect(popoverBox!.width).toBeGreaterThan(0)
|
|
expect(popoverBox!.height).toBeGreaterThan(0)
|
|
}
|
|
|
|
test('Shape popover opens when the menu fits in the viewport', async ({
|
|
comfyPage
|
|
}) => {
|
|
await comfyPage.page.setViewportSize({ width: 1280, height: 900 })
|
|
const menu = await openMoreOptionsMenu(comfyPage, 'KSampler')
|
|
const rootList = menu.locator(':scope > ul')
|
|
|
|
await expect
|
|
.poll(() => rootList.evaluate((el) => getComputedStyle(el).overflowY))
|
|
.toBe('visible')
|
|
|
|
await menu.getByRole('menuitem', { name: 'Shape' }).click()
|
|
await expectShapePopoverVisible(comfyPage)
|
|
})
|
|
|
|
test('Shape popover opens even when the menu must scroll', async ({
|
|
comfyPage
|
|
}) => {
|
|
await comfyPage.page.setViewportSize({ width: 1280, height: 420 })
|
|
const menu = await openMoreOptionsMenu(comfyPage, 'KSampler')
|
|
const rootList = menu.locator(':scope > ul')
|
|
|
|
await expect
|
|
.poll(() =>
|
|
rootList.evaluate((el) => el.scrollHeight > el.clientHeight)
|
|
)
|
|
.toBe(true)
|
|
|
|
const shapeItem = menu.getByRole('menuitem', { name: 'Shape' })
|
|
await shapeItem.scrollIntoViewIfNeeded()
|
|
await shapeItem.click()
|
|
await expectShapePopoverVisible(comfyPage)
|
|
})
|
|
}
|
|
)
|