mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-09 17:40:09 +00:00
[fix] Fix i18n collection script issues - Remove Nx from repository, fix TypeScript declare fields compilation, update Playwright configuration
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import * as fs from 'fs'
|
||||
|
||||
import { comfyPageFixture as test } from '../browser_tests/fixtures/ComfyPage'
|
||||
import { test } from '@playwright/test'
|
||||
import { CORE_MENU_COMMANDS } from '../src/constants/coreMenuCommands'
|
||||
import { SERVER_CONFIG_ITEMS } from '../src/constants/serverConfig'
|
||||
import type { ComfyCommandImpl } from '../src/stores/commandStore'
|
||||
@@ -19,9 +19,26 @@ const extractMenuCommandLocaleStrings = (): Set<string> => {
|
||||
return labels
|
||||
}
|
||||
|
||||
test('collect-i18n-general', async ({ comfyPage }) => {
|
||||
test('collect-i18n-general', async ({ page }) => {
|
||||
// Navigate to the page and wait for app to be available
|
||||
console.log('Navigating to page...')
|
||||
await page.goto('/')
|
||||
console.log('Waiting for app to be available...')
|
||||
|
||||
// Check if we're on electron page
|
||||
const title = await page.title()
|
||||
console.log('Page title:', title)
|
||||
|
||||
// Debug: Check what's available on window
|
||||
const windowKeys = await page.evaluate(() => {
|
||||
return Object.keys(window).filter(key => !key.startsWith('__')).slice(0, 20)
|
||||
})
|
||||
console.log('Window keys:', windowKeys)
|
||||
|
||||
await page.waitForFunction(() => window['app'] != null, { timeout: 30000 })
|
||||
|
||||
const commands = (
|
||||
await comfyPage.page.evaluate(() => {
|
||||
await page.evaluate(() => {
|
||||
const workspace = window['app'].extensionManager
|
||||
const commands = workspace.command.commands as ComfyCommandImpl[]
|
||||
return commands.map((command) => ({
|
||||
@@ -58,7 +75,7 @@ test('collect-i18n-general', async ({ comfyPage }) => {
|
||||
)
|
||||
|
||||
// Settings
|
||||
const settings = await comfyPage.page.evaluate(() => {
|
||||
const settings = await page.evaluate(() => {
|
||||
const workspace = window['app'].extensionManager
|
||||
const settings = workspace.setting.settings as Record<string, SettingParams>
|
||||
return Object.values(settings)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import * as fs from 'fs'
|
||||
|
||||
import { comfyPageFixture as test } from '../browser_tests/fixtures/ComfyPage'
|
||||
import { test } from '@playwright/test'
|
||||
import type { ComfyNodeDef } from '../src/schemas/nodeDefSchema'
|
||||
import type { ComfyApi } from '../src/scripts/api'
|
||||
import { ComfyNodeDefImpl } from '../src/stores/nodeDefStore'
|
||||
@@ -9,17 +9,23 @@ import { normalizeI18nKey } from '../src/utils/formatUtil'
|
||||
const localePath = './src/locales/en/main.json'
|
||||
const nodeDefsPath = './src/locales/en/nodeDefs.json'
|
||||
|
||||
test('collect-i18n-node-defs', async ({ comfyPage }) => {
|
||||
test('collect-i18n-node-defs', async ({ page }) => {
|
||||
// Navigate to the page
|
||||
await page.goto('/')
|
||||
|
||||
// Mock view route
|
||||
comfyPage.page.route('**/view**', async (route) => {
|
||||
await page.route('**/view**', async (route) => {
|
||||
await route.fulfill({
|
||||
body: JSON.stringify({})
|
||||
})
|
||||
})
|
||||
|
||||
// Wait for app to be available
|
||||
await page.waitForFunction(() => window['app'] != null, { timeout: 30000 })
|
||||
|
||||
const nodeDefs: ComfyNodeDefImpl[] = (
|
||||
Object.values(
|
||||
await comfyPage.page.evaluate(async () => {
|
||||
await page.evaluate(async () => {
|
||||
const api = window['app'].api as ComfyApi
|
||||
return await api.getNodeDefs()
|
||||
})
|
||||
@@ -62,7 +68,7 @@ test('collect-i18n-node-defs', async ({ comfyPage }) => {
|
||||
if (!inputNames.length) continue
|
||||
|
||||
try {
|
||||
const widgetsMappings = await comfyPage.page.evaluate(
|
||||
const widgetsMappings = await page.evaluate(
|
||||
(args) => {
|
||||
const [nodeName, displayName, inputNames] = args
|
||||
const node = window['LiteGraph'].createNode(nodeName, displayName)
|
||||
@@ -91,7 +97,7 @@ test('collect-i18n-node-defs', async ({ comfyPage }) => {
|
||||
`Failed to extract widgets from ${nodeDef.name}: ${error}`
|
||||
)
|
||||
} finally {
|
||||
await comfyPage.nextFrame()
|
||||
await page.waitForTimeout(10)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
50
scripts/debug-i18n.cjs
Normal file
50
scripts/debug-i18n.cjs
Normal file
@@ -0,0 +1,50 @@
|
||||
const { chromium } = require('playwright');
|
||||
|
||||
(async () => {
|
||||
const browser = await chromium.launch({ headless: true });
|
||||
const page = await browser.newPage();
|
||||
|
||||
// Check console messages
|
||||
page.on('console', msg => {
|
||||
console.log(`[${msg.type()}]`, msg.text());
|
||||
});
|
||||
|
||||
page.on('pageerror', error => {
|
||||
console.log('Page error:', error.message);
|
||||
});
|
||||
|
||||
console.log('Navigating to http://localhost:5173...');
|
||||
await page.goto('http://localhost:5173');
|
||||
|
||||
const title = await page.title();
|
||||
console.log('Page title:', title);
|
||||
|
||||
// Wait for page to load
|
||||
await page.waitForTimeout(5000);
|
||||
|
||||
// Check console errors
|
||||
page.on('console', msg => {
|
||||
if (msg.type() === 'error') {
|
||||
console.log('Console error:', msg.text());
|
||||
}
|
||||
});
|
||||
|
||||
// Wait a bit more and check again
|
||||
await page.waitForTimeout(5000);
|
||||
|
||||
// Check what's on window
|
||||
const windowInfo = await page.evaluate(() => {
|
||||
const keys = Object.keys(window).filter(key => !key.startsWith('__'));
|
||||
return {
|
||||
hasApp: 'app' in window,
|
||||
hasLiteGraph: 'LiteGraph' in window,
|
||||
hasComfyApp: 'ComfyApp' in window,
|
||||
topKeys: keys.slice(0, 30),
|
||||
appType: typeof window['app']
|
||||
};
|
||||
});
|
||||
|
||||
console.log('Window info:', JSON.stringify(windowInfo, null, 2));
|
||||
|
||||
await browser.close();
|
||||
})();
|
||||
116
scripts/verify-i18n-setup.cjs
Normal file
116
scripts/verify-i18n-setup.cjs
Normal file
@@ -0,0 +1,116 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* Verification script to check if i18n collection setup is working properly
|
||||
* This script performs basic checks to ensure the environment is ready for i18n collection
|
||||
*/
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
console.log('🔍 Verifying i18n collection setup...\n');
|
||||
|
||||
let hasErrors = false;
|
||||
|
||||
// Check 1: Verify locale directories exist
|
||||
console.log('1. Checking locale directories...');
|
||||
const localeDir = path.join(__dirname, '../src/locales/en');
|
||||
if (fs.existsSync(localeDir)) {
|
||||
console.log(' ✅ Locale directory exists');
|
||||
} else {
|
||||
console.log(' ❌ Locale directory missing:', localeDir);
|
||||
hasErrors = true;
|
||||
}
|
||||
|
||||
// Check 2: Verify required locale files
|
||||
console.log('\n2. Checking locale files...');
|
||||
const requiredFiles = ['main.json', 'commands.json', 'settings.json', 'nodeDefs.json'];
|
||||
requiredFiles.forEach(file => {
|
||||
const filePath = path.join(localeDir, file);
|
||||
if (fs.existsSync(filePath)) {
|
||||
const stats = fs.statSync(filePath);
|
||||
console.log(` ✅ ${file} exists (${stats.size} bytes)`);
|
||||
} else {
|
||||
console.log(` ❌ ${file} missing`);
|
||||
hasErrors = true;
|
||||
}
|
||||
});
|
||||
|
||||
// Check 3: Verify TypeScript compilation works
|
||||
console.log('\n3. Checking TypeScript compilation...');
|
||||
const problematicFiles = [
|
||||
'src/lib/litegraph/src/subgraph/SubgraphNode.ts',
|
||||
'src/lib/litegraph/src/subgraph/SubgraphInput.ts',
|
||||
'src/lib/litegraph/src/subgraph/SubgraphOutput.ts',
|
||||
'src/lib/litegraph/src/subgraph/EmptySubgraphInput.ts',
|
||||
'src/lib/litegraph/src/subgraph/EmptySubgraphOutput.ts'
|
||||
];
|
||||
|
||||
problematicFiles.forEach(file => {
|
||||
const filePath = path.join(__dirname, '..', file);
|
||||
if (fs.existsSync(filePath)) {
|
||||
const content = fs.readFileSync(filePath, 'utf-8');
|
||||
// Check for problematic patterns that caused issues
|
||||
if (content.includes('declare inputs:') && !content.includes('override inputs:')) {
|
||||
console.log(` ⚠️ ${file} may have unfixed declare syntax`);
|
||||
} else {
|
||||
console.log(` ✅ ${file} syntax looks correct`);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Check 4: Verify Playwright configuration
|
||||
console.log('\n4. Checking Playwright configuration...');
|
||||
const playwrightConfig = path.join(__dirname, '../playwright.i18n.config.ts');
|
||||
if (fs.existsSync(playwrightConfig)) {
|
||||
const content = fs.readFileSync(playwrightConfig, 'utf-8');
|
||||
if (content.includes('testDir: \'./browser_tests\'')) {
|
||||
console.log(' ✅ Playwright config points to correct test directory');
|
||||
} else {
|
||||
console.log(' ⚠️ Playwright config may need adjustment');
|
||||
}
|
||||
} else {
|
||||
console.log(' ❌ Playwright i18n config missing');
|
||||
hasErrors = true;
|
||||
}
|
||||
|
||||
// Check 5: Verify package.json scripts
|
||||
console.log('\n5. Checking package.json scripts...');
|
||||
const packageJson = JSON.parse(fs.readFileSync(path.join(__dirname, '../package.json'), 'utf-8'));
|
||||
if (packageJson.scripts['collect-i18n']) {
|
||||
console.log(` ✅ collect-i18n script exists: "${packageJson.scripts['collect-i18n']}"`);
|
||||
} else {
|
||||
console.log(' ❌ collect-i18n script missing from package.json');
|
||||
hasErrors = true;
|
||||
}
|
||||
|
||||
// Check 6: Verify Playwright version consistency
|
||||
console.log('\n6. Checking Playwright versions...');
|
||||
const devDeps = packageJson.devDependencies || {};
|
||||
const playwrightVersion = devDeps['@playwright/test'];
|
||||
if (playwrightVersion) {
|
||||
console.log(` ✅ @playwright/test version: ${playwrightVersion}`);
|
||||
|
||||
// Check for potential conflicts
|
||||
const mcpServer = devDeps['@executeautomation/playwright-mcp-server'];
|
||||
if (mcpServer) {
|
||||
console.log(` ⚠️ MCP server present - may have version conflicts`);
|
||||
console.log(` Ensure both use compatible Playwright versions`);
|
||||
}
|
||||
} else {
|
||||
console.log(' ❌ @playwright/test not found in devDependencies');
|
||||
hasErrors = true;
|
||||
}
|
||||
|
||||
// Final summary
|
||||
console.log('\n' + '='.repeat(50));
|
||||
if (hasErrors) {
|
||||
console.log('❌ Verification failed - some issues need to be fixed');
|
||||
process.exit(1);
|
||||
} else {
|
||||
console.log('✅ All checks passed - i18n collection should work!');
|
||||
console.log('\nTo run i18n collection:');
|
||||
console.log(' 1. Start dev server: pnpm dev:electron');
|
||||
console.log(' 2. Run collection: pnpm collect-i18n');
|
||||
process.exit(0);
|
||||
}
|
||||
Reference in New Issue
Block a user