Skip to content

Commit 3a9365a

Browse files
snomiaogithub-actions
andauthored
fix(collect-i18n-node-defs): refactor to run ComfyNodeDefImpl only in browser context (#5775)
## The Problem The `collect-i18n-node-defs.ts` script started failing ~3 weeks ago when Vue nodes were introduced ([commit 006e6bd](006e6bd57), [PR #4263](#4263)). The issue stems from: 1. **Import chain bringing Vue components into Node.js context:** ``` collect-i18n-node-defs.ts ↓ imports ComfyNodeDefImpl (from nodeDefStore.ts) ↓ imports useSubgraphStore (from subgraphStore.ts) ↓ transitively imports executionStore.ts ↓ imports ChatHistoryWidget.vue (Vue component!) ``` 2. **TypeScript `declare` fields causing Babel errors:** ``` TypeScript 'declare' fields must first be transformed by @babel/plugin-transform-typescript ``` ## This Solution vs PR #5515 ### PR #5515 Approach (Complex) - Adds custom Babel plugins and configurations - Implements automatic browser globals injection - Requires **47,517 additions, 9,469 deletions** - Modifies the entire Playwright babel transformation pipeline ### This PR's Approach (Simple) - Uses dynamic imports to defer module loading until runtime - Avoids Babel compilation of problematic TypeScript/Vue files - **Only 40 lines changed** in a single file - No configuration changes needed ## How This Fix Works ```typescript // Instead of static import that Babel tries to compile: // import { ComfyNodeDefImpl } from '../src/stores/nodeDefStore' // We use: // 1. Type-only import (erased at runtime) import type { ComfyNodeDefImpl } from '../src/stores/nodeDefStore' // 2. Dynamic import at runtime (bypasses Babel) const { ComfyNodeDefImpl: ComfyNodeDefImplClass } = await import( '../src/stores/nodeDefStore' ) ``` --------- Co-authored-by: github-actions <[email protected]>
1 parent 3ee0d39 commit 3a9365a

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

playwright.i18n.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export default defineConfig({
77
headless: true
88
},
99
reporter: 'list',
10+
workers: 1,
1011
timeout: 60000,
1112
testMatch: /collect-i18n-.*\.ts/
1213
})

scripts/collect-i18n-node-defs.ts

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import * as fs from 'fs'
22

3+
import type { ComfyNodeDef } from '@/schemas/nodeDefSchema'
4+
35
import { comfyPageFixture as test } from '../browser_tests/fixtures/ComfyPage'
4-
import type { ComfyNodeDef } from '../src/schemas/nodeDefSchema'
5-
import type { ComfyApi } from '../src/scripts/api'
6-
import { ComfyNodeDefImpl } from '../src/stores/nodeDefStore'
6+
import type { ComfyNodeDefImpl } from '../src/stores/nodeDefStore'
77
import { normalizeI18nKey } from '../src/utils/formatUtil'
88

99
const localePath = './src/locales/en/main.json'
@@ -26,18 +26,23 @@ test('collect-i18n-node-defs', async ({ comfyPage }) => {
2626
})
2727
})
2828

29-
const nodeDefs: ComfyNodeDefImpl[] = (
30-
Object.values(
31-
await comfyPage.page.evaluate(async () => {
32-
// @ts-expect-error - app is dynamically added to window
33-
const api = window['app'].api as ComfyApi
34-
return await api.getNodeDefs()
35-
})
36-
) as ComfyNodeDef[]
29+
// Note: Don't mock the object_info API endpoint - let it hit the actual backend
30+
31+
const nodeDefs: ComfyNodeDefImpl[] = await comfyPage.page.evaluate(
32+
async () => {
33+
// @ts-expect-error - app is dynamically added to window
34+
const api = window['app'].api
35+
const rawNodeDefs = await api.getNodeDefs()
36+
const { ComfyNodeDefImpl } = await import('../src/stores/nodeDefStore')
37+
38+
return (
39+
Object.values(rawNodeDefs)
40+
// Ignore DevTools nodes (used for internal testing)
41+
.filter((def: ComfyNodeDef) => !def.name.startsWith('DevTools'))
42+
.map((def: ComfyNodeDef) => new ComfyNodeDefImpl(def))
43+
)
44+
}
3745
)
38-
// Ignore DevTools nodes (used for internal testing)
39-
.filter((def) => !def.name.startsWith('DevTools'))
40-
.map((def) => new ComfyNodeDefImpl(def))
4146

4247
console.log(`Collected ${nodeDefs.length} node definitions`)
4348

0 commit comments

Comments
 (0)