Files
ComfyUI_frontend/tests-ui/tests/comfyWorkflow.test.ts
Chenlei Hu 0cf5e647af Fix copy paste of widget value (#284)
* Fix copy paste of widget value

* Fix ui tests

* Allow undefined group font size

* Update test expectations [skip ci]

* nit

---------

Co-authored-by: github-actions <github-actions@github.com>
2024-08-03 14:22:43 -04:00

92 lines
3.3 KiB
TypeScript

import { validateComfyWorkflow } from '../../src/types/comfyWorkflow'
import { defaultGraph } from '../../src/scripts/defaultGraph'
import fs from 'fs'
const WORKFLOW_DIR = 'tests-ui/workflows'
describe('parseComfyWorkflow', () => {
it('parses valid workflow', async () => {
fs.readdirSync(WORKFLOW_DIR).forEach(async (file) => {
if (file.endsWith('.json')) {
const data = fs.readFileSync(`${WORKFLOW_DIR}/${file}`, 'utf-8')
expect(await validateComfyWorkflow(JSON.parse(data))).not.toBeNull()
}
})
})
it('workflow.nodes', async () => {
const workflow = JSON.parse(JSON.stringify(defaultGraph))
workflow.nodes = undefined
expect(await validateComfyWorkflow(workflow)).toBeNull()
workflow.nodes = null
expect(await validateComfyWorkflow(workflow)).toBeNull()
workflow.nodes = []
expect(await validateComfyWorkflow(workflow)).not.toBeNull()
})
it('workflow.version', async () => {
const workflow = JSON.parse(JSON.stringify(defaultGraph))
workflow.version = undefined
expect(await validateComfyWorkflow(workflow)).toBeNull()
workflow.version = '1.0.1' // Invalid format.
expect(await validateComfyWorkflow(workflow)).toBeNull()
workflow.version = 1
expect(await validateComfyWorkflow(workflow)).not.toBeNull()
})
it('workflow.extra', async () => {
const workflow = JSON.parse(JSON.stringify(defaultGraph))
workflow.extra = undefined
expect(await validateComfyWorkflow(workflow)).not.toBeNull()
workflow.extra = null
expect(await validateComfyWorkflow(workflow)).not.toBeNull()
workflow.extra = {}
expect(await validateComfyWorkflow(workflow)).not.toBeNull()
workflow.extra = { foo: 'bar' } // Should accept extra fields.
expect(await validateComfyWorkflow(workflow)).not.toBeNull()
})
it('workflow.nodes.pos', async () => {
const workflow = JSON.parse(JSON.stringify(defaultGraph))
workflow.nodes[0].pos = [1, 2, 3]
expect(await validateComfyWorkflow(workflow)).toBeNull()
workflow.nodes[0].pos = [1, 2]
expect(await validateComfyWorkflow(workflow)).not.toBeNull()
// Should automatically transform the legacy format object to array.
workflow.nodes[0].pos = { '0': 3, '1': 4 }
let validatedWorkflow = await validateComfyWorkflow(workflow)
expect(validatedWorkflow.nodes[0].pos).toEqual([3, 4])
workflow.nodes[0].pos = { 0: 3, 1: 4 }
validatedWorkflow = await validateComfyWorkflow(workflow)
expect(validatedWorkflow.nodes[0].pos).toEqual([3, 4])
})
it('workflow.nodes.widget_values', async () => {
const workflow = JSON.parse(JSON.stringify(defaultGraph))
workflow.nodes[0].widgets_values = ['foo', 'bar']
expect(await validateComfyWorkflow(workflow)).not.toBeNull()
workflow.nodes[0].widgets_values = 'foo'
expect(await validateComfyWorkflow(workflow)).toBeNull()
workflow.nodes[0].widgets_values = undefined
expect(await validateComfyWorkflow(workflow)).not.toBeNull()
// The object format of widgets_values is used by VHS nodes to perform
// dynamic widgets display.
workflow.nodes[0].widgets_values = { foo: 'bar' }
const validatedWorkflow = await validateComfyWorkflow(workflow)
expect(validatedWorkflow.nodes[0].widgets_values).toEqual({ foo: 'bar' })
})
})