mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-05-11 16:30:57 +00:00
## Summary Refactor E2E tests added in #11210 that repeated full prior-test bodies as setup, combining duplicate pairs into single tests with named `test.step()` blocks. ## Changes - **What**: In [`browser_tests/tests/keyboardShortcutActions.spec.ts`](../blob/batch-dispatch/cr-11556/browser_tests/tests/keyboardShortcutActions.spec.ts): - Merge `Ctrl+Z undoes` + `Ctrl+Shift+Z redoes` → single test with two `test.step()` blocks. - Merge `Ctrl+, opens settings dialog` + `Escape closes settings dialog` → single test with two `test.step()` blocks. - **What**: In [`browser_tests/tests/topbarMenuCommands.spec.ts`](../blob/batch-dispatch/cr-11556/browser_tests/tests/topbarMenuCommands.spec.ts): - Merge `Edit > Undo` + `Edit > Redo` → single test with two `test.step()` blocks. The redo step now reuses the post-undo state from its preceding step instead of re-creating and re-undoing the node, removing the duplicated setup the reviewer flagged. ## Review Focus - Naming of combined tests and `test.step()` labels. - Note: per @AustinMroz's [comment thread](https://github.com/Comfy-Org/ComfyUI_frontend/pull/11210#discussion_r3113526265), location 2 in the issue refers to the `Escape closes settings dialog` test (which duplicated the `Ctrl+,` test body), not the `Delete` test (which has unique logic). Treated accordingly. Fixes #11556 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-11835-test-combine-duplicated-undo-redo-and-settings-dialog-E2E-tests-with-test-step-3546d73d365081689df3c56bfbb6f4e4) by [Unito](https://www.unito.io)
73 lines
2.3 KiB
TypeScript
73 lines
2.3 KiB
TypeScript
import {
|
|
comfyExpect as expect,
|
|
comfyPageFixture as test
|
|
} from '@e2e/fixtures/ComfyPage'
|
|
|
|
test.describe('Topbar menu commands', { tag: '@ui' }, () => {
|
|
test.beforeEach(async ({ comfyPage }) => {
|
|
await comfyPage.settings.setSetting('Comfy.UseNewMenu', 'Top')
|
|
await comfyPage.settings.setSetting(
|
|
'Comfy.Workflow.WorkflowTabsPosition',
|
|
'Topbar'
|
|
)
|
|
await comfyPage.setup()
|
|
})
|
|
|
|
test('New command creates a new workflow tab', async ({ comfyPage }) => {
|
|
const topbar = comfyPage.menu.topbar
|
|
await expect.poll(() => topbar.getTabNames()).toHaveLength(1)
|
|
|
|
await topbar.triggerTopbarCommand(['New'])
|
|
|
|
await expect.poll(() => topbar.getTabNames()).toHaveLength(2)
|
|
})
|
|
|
|
test('Edit > Undo undoes and Edit > Redo restores the last action', async ({
|
|
comfyPage
|
|
}) => {
|
|
const initialNodeCount = await comfyPage.nodeOps.getNodeCount()
|
|
|
|
await test.step('Edit > Undo undoes the last action', async () => {
|
|
await comfyPage.page.evaluate(() => {
|
|
const node = window.LiteGraph!.createNode('Note')
|
|
window.app!.graph!.add(node)
|
|
})
|
|
await comfyPage.nextFrame()
|
|
|
|
await expect
|
|
.poll(() => comfyPage.nodeOps.getNodeCount())
|
|
.toBe(initialNodeCount + 1)
|
|
|
|
await comfyPage.menu.topbar.triggerTopbarCommand(['Edit', 'Undo'])
|
|
|
|
await expect
|
|
.poll(() => comfyPage.nodeOps.getNodeCount())
|
|
.toBe(initialNodeCount)
|
|
})
|
|
|
|
await test.step('Edit > Redo restores an undone action', async () => {
|
|
await comfyPage.menu.topbar.triggerTopbarCommand(['Edit', 'Redo'])
|
|
await expect
|
|
.poll(() => comfyPage.nodeOps.getNodeCount())
|
|
.toBe(initialNodeCount + 1)
|
|
})
|
|
})
|
|
|
|
test('File > Save opens save dialog', async ({ comfyPage }) => {
|
|
await comfyPage.menu.topbar.triggerTopbarCommand(['File', 'Save'])
|
|
|
|
const saveDialog = comfyPage.menu.topbar.getSaveDialog()
|
|
await expect(saveDialog).toBeVisible()
|
|
})
|
|
|
|
test('View > Bottom Panel toggles bottom panel', async ({ comfyPage }) => {
|
|
await expect(comfyPage.bottomPanel.root).toBeHidden()
|
|
|
|
await comfyPage.menu.topbar.triggerTopbarCommand(['View', 'Bottom Panel'])
|
|
await expect(comfyPage.bottomPanel.root).toBeVisible()
|
|
|
|
await comfyPage.menu.topbar.triggerTopbarCommand(['View', 'Bottom Panel'])
|
|
await expect(comfyPage.bottomPanel.root).toBeHidden()
|
|
})
|
|
})
|