fix: restore ExtensionManager API contract

- Revert extensionManager type from WorkspaceStore to ExtensionManager

- Remove WorkspaceStore export from workspaceStore.ts

- Add WorkspaceStore type to browser_tests/types/globals.d.ts

- Update browser tests to use specific 'as WorkspaceStore' casts

- Consolidate Window augmentation into single globals.d.ts file

Amp-Thread-ID: https://ampcode.com/threads/T-019c1854-3c3c-723d-8ce6-183ce06fcf1b
Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
Alexander Brown
2026-02-01 00:54:53 -08:00
parent 4b95f22737
commit f96a700621
12 changed files with 59 additions and 37 deletions

View File

@@ -34,6 +34,7 @@ import { SubgraphHelper } from './helpers/SubgraphHelper'
import { ToastHelper } from './helpers/ToastHelper'
import { WorkflowHelper } from './helpers/WorkflowHelper'
import type { NodeReference } from './utils/litegraphUtils'
import type { WorkspaceStore } from '../types/globals'
dotenv.config()
@@ -139,7 +140,9 @@ class ConfirmDialog {
// Wait for workflow service to finish if it's busy
await this.page.waitForFunction(
() => window.app?.extensionManager?.workflow?.isBusy === false,
() =>
(window.app?.extensionManager as WorkspaceStore | undefined)?.workflow
?.isBusy === false,
undefined,
{ timeout: 3000 }
)
@@ -387,7 +390,7 @@ export class ComfyPage {
async setFocusMode(focusMode: boolean) {
await this.page.evaluate((focusMode) => {
window.app!.extensionManager.focusMode = focusMode
;(window.app!.extensionManager as WorkspaceStore).focusMode = focusMode
}, focusMode)
await this.nextFrame()
}

View File

@@ -1,5 +1,6 @@
import type { Locator, Page } from '@playwright/test'
import type { WorkspaceStore } from '../../types/globals'
import { TestIds } from '../selectors'
class SidebarTab {
@@ -154,7 +155,9 @@ export class WorkflowsSidebarTab extends SidebarTab {
// Wait for workflow service to finish renaming
await this.page.waitForFunction(
() => !window.app?.extensionManager?.workflow?.isBusy,
() =>
!(window.app?.extensionManager as WorkspaceStore | undefined)?.workflow
?.isBusy,
undefined,
{ timeout: 3000 }
)

View File

@@ -1,5 +1,7 @@
import type { Locator, Page } from '@playwright/test'
import type { WorkspaceStore } from '../../types/globals'
export class Topbar {
private readonly menuLocator: Locator
private readonly menuTrigger: Locator
@@ -85,7 +87,7 @@ export class Topbar {
// Wait for workflow service to finish saving
await this.page.waitForFunction(
() => !window.app!.extensionManager.workflow.isBusy,
() => !(window.app!.extensionManager as WorkspaceStore).workflow.isBusy,
undefined,
{ timeout: 3000 }
)

View File

@@ -1,10 +1,8 @@
import { readFileSync } from 'fs'
import type { useWorkspaceStore } from '../../../src/stores/workspaceStore'
import type { WorkspaceStore } from '../../types/globals'
import type { ComfyPage } from '../ComfyPage'
type WorkspaceStore = ReturnType<typeof useWorkspaceStore>
export type FolderStructure = {
[key: string]: FolderStructure | string
}
@@ -45,7 +43,9 @@ export class WorkflowHelper {
}
await this.comfyPage.page.evaluate(async () => {
await window.app!.extensionManager.workflow.syncWorkflows()
await (
window.app!.extensionManager as WorkspaceStore
).workflow.syncWorkflows()
})
// Wait for Vue to re-render the workflow list