mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-05-23 14:16:00 +00:00
## Summary
Resolve the queue progress node label from queued prompt metadata so
subgraph execution IDs show the correct node name without depending on
the live canvas.
## Changes
- **What**: Store a prompt-scoped `executionId -> { title, type }`
lookup from `p.output` when queueing a job, and use that lookup for the
active job's executing node label.
- **What**: Reuse the same job-scoped node info for the browser tab
title so it stays aligned with the queue overlay.
- **What**: Add unit coverage for root and subgraph execution IDs, and
merge the branch forward to current `main`.
## Review Focus
This keeps the fix scoped to the existing singular `activeJobId` path.
It fixes subgraph labels and avoids the workflow-switching regression
from resolving against `app.rootGraph`, but it does not redesign
concurrent multi-job selection yet.
Longer term, the cleaner solution is still prompt-scoped execution
metadata from the backend rather than frontend reconstruction.
## Screenshots (if applicable)
N/A
---------
Co-authored-by: Alexander Brown <drjkl@comfy.org>
Co-authored-by: Benjamin Lu <benjaminlu1107@gmail.com>
43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import {
|
|
comfyPageFixture as test,
|
|
comfyExpect as expect
|
|
} from '@e2e/fixtures/ComfyPage'
|
|
|
|
test.describe('Preview as Text node', () => {
|
|
test('does not include preview widget values in the API prompt', async ({
|
|
comfyPage
|
|
}) => {
|
|
await comfyPage.page.evaluate(() => {
|
|
const node = window.LiteGraph!.createNode('PreviewAny')!
|
|
node.pos = [500, 200]
|
|
window.app!.graph.add(node)
|
|
})
|
|
|
|
// Simulate a previous execution: backend returned text and the frontend
|
|
// populated the preview widget values. The next prompt submission must
|
|
// NOT echo those values back as inputs (which would change the cache
|
|
// signature and trigger a redundant re-execution).
|
|
await comfyPage.page.evaluate(() => {
|
|
const node = window.app!.graph.nodes.find((n) => n.type === 'PreviewAny')!
|
|
for (const widget of node.widgets ?? []) {
|
|
if (widget.name?.startsWith('preview_')) {
|
|
widget.value = 'rendered preview content from previous execution'
|
|
}
|
|
}
|
|
})
|
|
|
|
const apiWorkflow = await comfyPage.workflow.getExportedWorkflow({
|
|
api: true
|
|
})
|
|
|
|
const previewEntry = Object.values(apiWorkflow).find(
|
|
(n) => n.class_type === 'PreviewAny'
|
|
)
|
|
expect(previewEntry).toBeDefined()
|
|
|
|
expect(previewEntry!.inputs).not.toHaveProperty('preview_markdown')
|
|
expect(previewEntry!.inputs).not.toHaveProperty('preview_text')
|
|
expect(previewEntry!.inputs).not.toHaveProperty('previewMode')
|
|
})
|
|
})
|