import { type ComfyPage, comfyExpect as expect, comfyPageFixture as test } from '../../../../fixtures/ComfyPage' test.describe('Vue Multiline String Widget', () => { test.beforeEach(async ({ comfyPage }) => { await comfyPage.setSetting('Comfy.VueNodes.Enabled', true) await comfyPage.vueNodes.waitForNodes() }) const getFirstClipNode = (comfyPage: ComfyPage) => comfyPage.vueNodes.getNodeByTitle('CLIP Text Encode (Prompt)').first() const getFirstMultilineStringWidget = (comfyPage: ComfyPage) => getFirstClipNode(comfyPage).getByRole('textbox', { name: 'text' }) test('should allow entering text', async ({ comfyPage }) => { const textarea = getFirstMultilineStringWidget(comfyPage) await textarea.fill('Hello World') await expect(textarea).toHaveValue('Hello World') await textarea.fill('Hello World 2') await expect(textarea).toHaveValue('Hello World 2') }) test('should support entering multiline content', async ({ comfyPage }) => { const textarea = getFirstMultilineStringWidget(comfyPage) const multilineValue = ['Line 1', 'Line 2', 'Line 3'].join('\n') await textarea.fill(multilineValue) await expect(textarea).toHaveValue(multilineValue) }) test('should retain value after focus changes', async ({ comfyPage }) => { const textarea = getFirstMultilineStringWidget(comfyPage) await textarea.fill('Keep me around') // Click another node const loadCheckpointNode = comfyPage.vueNodes.getNodeByTitle('Load Checkpoint') await loadCheckpointNode.click() await getFirstClipNode(comfyPage).click() await expect(textarea).toHaveValue('Keep me around') }) })