mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-28 10:12:11 +00:00
Adds Playwright tests for cloud environment with Firebase auth. Changes: - Refactor ComfyPage to abstract base class - Add LocalhostComfyPage (existing devtools implementation) - Add CloudComfyPage (cloud settings API, Firebase auth) - Add cloud fixture with auth state persistence - Add globalSetupCloud for Firebase login - Add playwright.cloud.config with 5x timeout - Add basic cloud tests (load app, canvas interaction, settings) - Update .gitignore for auth state files - Update tsconfig to include playwright.cloud.config Architecture: - ComfyPage abstract with 3 backend-specific methods - LocalhostComfyPage uses /api/devtools + multi-user - CloudComfyPage uses /api/settings + Firebase localStorage - No code duplication (95% shared) Setup: - Requires CLOUD_TEST_EMAIL and CLOUD_TEST_PASSWORD env vars - globalSetup logs in once, saves auth to browser_tests/.auth/ - Tests reuse saved auth state (no login per test)
41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
import type { APIRequestContext, Page } from '@playwright/test'
|
|
|
|
import { ComfyPage } from './ComfyPage'
|
|
import type { FolderStructure } from './ComfyPage'
|
|
|
|
/**
|
|
* Cloud-specific implementation of ComfyPage.
|
|
* Uses Firebase auth persistence and cloud API for settings.
|
|
*/
|
|
export class CloudComfyPage extends ComfyPage {
|
|
constructor(page: Page, request: APIRequestContext) {
|
|
super(page, request)
|
|
}
|
|
|
|
async setupUser(username: string): Promise<string | null> {
|
|
// No-op for cloud - user already authenticated via Firebase in globalSetup
|
|
// Firebase auth is persisted via storageState in the fixture
|
|
return null
|
|
}
|
|
|
|
async setupSettings(settings: Record<string, any>): Promise<void> {
|
|
// Cloud uses batch settings API (not devtools)
|
|
// Firebase auth token is automatically included from restored localStorage
|
|
const resp = await this.request.post(`${this.url}/api/settings`, {
|
|
data: settings
|
|
})
|
|
|
|
if (!resp.ok()) {
|
|
throw new Error(`Failed to setup cloud settings: ${await resp.text()}`)
|
|
}
|
|
}
|
|
|
|
async setupWorkflowsDirectory(structure: FolderStructure): Promise<void> {
|
|
// Cloud workflow API not yet implemented
|
|
// For initial smoke tests, we can skip this functionality
|
|
console.warn(
|
|
'setupWorkflowsDirectory: not yet implemented for cloud mode - skipping'
|
|
)
|
|
}
|
|
}
|