mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-20 06:20:11 +00:00
## Summary Add Vue Testing Library (VTL) infrastructure and pilot-migrate ComfyQueueButton.test.ts as Phase 0 of an incremental VTL adoption. ## Changes - **What**: Install `@testing-library/vue`, `@testing-library/user-event`, `@testing-library/jest-dom`, and `eslint-plugin-testing-library`. Configure jest-dom matchers globally via `vitest.setup.ts` and `tsconfig.json`. Create shared render wrapper at `src/utils/test-utils.ts` (pre-configures PrimeVue, Pinia, i18n). Migrate `ComfyQueueButton.test.ts` from `@vue/test-utils` to VTL. Add warn-level `testing-library/*` ESLint rules for test files. - **Dependencies**: `@testing-library/vue`, `@testing-library/user-event`, `@testing-library/jest-dom`, `eslint-plugin-testing-library` ## Review Focus - `src/utils/test-utils.ts` — shared render wrapper typing approach (uses `ComponentMountingOptions` from VTU since VTL's `RenderOptions` requires a generic parameter) - ESLint rules are all set to `warn` during migration to avoid breaking existing VTU tests - VTL coexists with VTU — no existing tests are broken ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-10319-test-add-Vue-Testing-Library-infrastructure-and-pilot-migration-3286d73d3650812793ccd8a839550a04) by [Unito](https://www.unito.io) --------- Co-authored-by: Amp <amp@ampcode.com> Co-authored-by: GitHub Action <action@github.com>
76 lines
2.0 KiB
TypeScript
76 lines
2.0 KiB
TypeScript
import '@testing-library/jest-dom/vitest'
|
|
import { vi } from 'vitest'
|
|
import 'vue'
|
|
|
|
// Mock @sparkjsdev/spark which uses WASM that doesn't work in Node.js
|
|
vi.mock('@sparkjsdev/spark', () => ({
|
|
SplatMesh: class SplatMesh {
|
|
constructor() {}
|
|
}
|
|
}))
|
|
|
|
// Augment Window interface for tests
|
|
declare global {
|
|
interface Window {
|
|
__CONFIG__: {
|
|
mixpanel_token?: string
|
|
require_whitelist?: boolean
|
|
subscription_required?: boolean
|
|
max_upload_size?: number
|
|
comfy_api_base_url?: string
|
|
comfy_platform_base_url?: string
|
|
firebase_config?: {
|
|
apiKey: string
|
|
authDomain: string
|
|
databaseURL?: string
|
|
projectId: string
|
|
storageBucket: string
|
|
messagingSenderId: string
|
|
appId: string
|
|
measurementId?: string
|
|
}
|
|
server_health_alert?: {
|
|
message: string
|
|
tooltip?: string
|
|
severity?: 'info' | 'warning' | 'error'
|
|
badge?: string
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Define global variables for tests
|
|
globalThis.__COMFYUI_FRONTEND_VERSION__ = '1.24.0'
|
|
globalThis.__SENTRY_ENABLED__ = false
|
|
globalThis.__SENTRY_DSN__ = ''
|
|
globalThis.__ALGOLIA_APP_ID__ = ''
|
|
globalThis.__ALGOLIA_API_KEY__ = ''
|
|
globalThis.__USE_PROD_CONFIG__ = false
|
|
globalThis.__DISTRIBUTION__ = 'localhost'
|
|
globalThis.__IS_NIGHTLY__ = false
|
|
|
|
// Define runtime config for tests
|
|
window.__CONFIG__ = {
|
|
subscription_required: true,
|
|
mixpanel_token: 'test-token',
|
|
comfy_api_base_url: 'https://stagingapi.comfy.org',
|
|
comfy_platform_base_url: 'https://stagingplatform.comfy.org',
|
|
firebase_config: {
|
|
apiKey: 'test',
|
|
authDomain: 'test.firebaseapp.com',
|
|
projectId: 'test',
|
|
storageBucket: 'test.appspot.com',
|
|
messagingSenderId: '123',
|
|
appId: '123'
|
|
}
|
|
}
|
|
|
|
// Mock Worker for extendable-media-recorder
|
|
globalThis.Worker = vi.fn().mockImplementation(() => ({
|
|
postMessage: vi.fn(),
|
|
terminate: vi.fn(),
|
|
addEventListener: vi.fn(),
|
|
removeEventListener: vi.fn(),
|
|
dispatchEvent: vi.fn()
|
|
}))
|