mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-01-26 19:09:52 +00:00
* move subgraph test assets into subfolder * [refactor] Organize browser test assets into logical folders Reorganized test assets for better maintainability: - groupnodes/: GroupNode feature tests - groups/: Visual grouping tests - missing/: Missing nodes/models tests - links/: Link-related tests - inputs/: Input widget tests - widgets/: Widget-specific tests - nodes/: Node-related tests - workflowInMedia/: Workflow media files Updated all loadWorkflow references to use new folder structure. Fixed programmatic filename references to prevent test failures. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * [fix] Update mobile test to use new asset path * [fix] Update remaining loadWorkflow calls to use new folder structure * [fix] Fix remaining programmatic filename references * [fix] Run prettier formatting * [fix] Fix setupWorkflowsDirectory references to use correct folder paths * [refactor] Rename subgraph folder to subgraphs for consistency * [fix] Fix breadcrumb name in subgraph DOM widget test * Update test expectations [skip ci] --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: github-actions <github-actions@github.com>
82 lines
3.3 KiB
TypeScript
82 lines
3.3 KiB
TypeScript
import { expect } from '@playwright/test'
|
|
|
|
import { comfyPageFixture as test } from '../fixtures/ComfyPage'
|
|
|
|
// If an input is optional by node definition, it should be shown as
|
|
// a hollow circle no matter what shape it was defined in the workflow JSON.
|
|
test.describe('Optional input', () => {
|
|
test('No shape specified', async ({ comfyPage }) => {
|
|
await comfyPage.loadWorkflow('inputs/optional_input_no_shape')
|
|
await expect(comfyPage.canvas).toHaveScreenshot('optional_input.png')
|
|
})
|
|
|
|
test('Wrong shape specified', async ({ comfyPage }) => {
|
|
await comfyPage.loadWorkflow('inputs/optional_input_wrong_shape')
|
|
await expect(comfyPage.canvas).toHaveScreenshot('optional_input.png')
|
|
})
|
|
|
|
test('Correct shape specified', async ({ comfyPage }) => {
|
|
await comfyPage.loadWorkflow('inputs/optional_input_correct_shape')
|
|
await expect(comfyPage.canvas).toHaveScreenshot('optional_input.png')
|
|
})
|
|
|
|
test('Force input', async ({ comfyPage }) => {
|
|
await comfyPage.loadWorkflow('inputs/force_input')
|
|
await expect(comfyPage.canvas).toHaveScreenshot('force_input.png')
|
|
})
|
|
|
|
test('Default input', async ({ comfyPage }) => {
|
|
await comfyPage.loadWorkflow('inputs/default_input')
|
|
await expect(comfyPage.canvas).toHaveScreenshot('default_input.png')
|
|
})
|
|
|
|
test('Only optional inputs', async ({ comfyPage }) => {
|
|
await comfyPage.loadWorkflow('inputs/only_optional_inputs')
|
|
expect(await comfyPage.getGraphNodesCount()).toBe(1)
|
|
await expect(
|
|
comfyPage.page.locator('.comfy-missing-nodes')
|
|
).not.toBeVisible()
|
|
|
|
// If the node's multiline text widget is visible, then it was loaded successfully
|
|
await expect(comfyPage.page.locator('.comfy-multiline-input')).toHaveCount(
|
|
1
|
|
)
|
|
})
|
|
test('Old workflow with converted input', async ({ comfyPage }) => {
|
|
await comfyPage.loadWorkflow('inputs/old_workflow_converted_input')
|
|
const node = await comfyPage.getNodeRefById('1')
|
|
const inputs = await node.getProperty('inputs')
|
|
const vaeInput = inputs.find((w) => w.name === 'vae')
|
|
const convertedInput = inputs.find((w) => w.name === 'strength')
|
|
|
|
expect(vaeInput).toBeDefined()
|
|
expect(convertedInput).toBeDefined()
|
|
expect(vaeInput.link).toBeNull()
|
|
expect(convertedInput.link).not.toBeNull()
|
|
})
|
|
test('Renamed converted input', async ({ comfyPage }) => {
|
|
await comfyPage.loadWorkflow('inputs/renamed_converted_widget')
|
|
const node = await comfyPage.getNodeRefById('3')
|
|
const inputs = await node.getProperty('inputs')
|
|
const renamedInput = inputs.find((w) => w.name === 'breadth')
|
|
expect(renamedInput).toBeUndefined()
|
|
})
|
|
test('slider', async ({ comfyPage }) => {
|
|
await comfyPage.loadWorkflow('inputs/simple_slider')
|
|
await expect(comfyPage.canvas).toHaveScreenshot('simple_slider.png')
|
|
})
|
|
test('unknown converted widget', async ({ comfyPage }) => {
|
|
await comfyPage.setSetting('Comfy.Workflow.ShowMissingNodesWarning', false)
|
|
await comfyPage.loadWorkflow('missing/missing_nodes_converted_widget')
|
|
await expect(comfyPage.canvas).toHaveScreenshot(
|
|
'missing_nodes_converted_widget.png'
|
|
)
|
|
})
|
|
test('dynamically added input', async ({ comfyPage }) => {
|
|
await comfyPage.loadWorkflow('inputs/dynamically_added_input')
|
|
await expect(comfyPage.canvas).toHaveScreenshot(
|
|
'dynamically_added_input.png'
|
|
)
|
|
})
|
|
})
|