[Test] Add integration test: LGraph snapshot (#591)

- Runs basic Litegraph init before performing the snapshot
- Allows a significantly more useful verification of the public API
This commit is contained in:
filtered
2025-02-25 19:58:29 +11:00
committed by GitHub
parent a4b9704a80
commit 2c3535c983
10 changed files with 692 additions and 334 deletions

View File

@@ -2,14 +2,19 @@ import { test as baseTest } from "vitest"
import type { ISerialisedGraph, SerialisableGraph } from "../src/types/serialisation"
import { LGraph } from "@/LGraph"
import { basicSerialisableGraph, minimalSerialisableGraph, oldSchemaGraph } from "./assets/testGraphs"
import { LiteGraph } from "@/litegraph"
interface LitegraphFixtures {
minimalGraph: LGraph
minimalSerialisableGraph: SerialisableGraph
basicSerialisableGraph: SerialisableGraph
oldSchemaGraph: ISerialisedGraph
}
/** These fixtures alter global state, and are difficult to reset. Relies on a single test per-file to reset state. */
interface DirtyFixtures {
basicSerialisableGraph: SerialisableGraph
}
export const test = baseTest.extend<LitegraphFixtures>({
minimalGraph: async ({ }, use) => {
// Before each test function
@@ -18,10 +23,21 @@ export const test = baseTest.extend<LitegraphFixtures>({
// use the fixture value
await use(lGraph)
// After each test function
},
basicSerialisableGraph: structuredClone(basicSerialisableGraph),
minimalSerialisableGraph: structuredClone(minimalSerialisableGraph),
oldSchemaGraph: structuredClone(oldSchemaGraph),
})
/** Test that use {@link DirtyFixtures}. One test per file. */
export const dirtyTest = test.extend<DirtyFixtures>({
basicSerialisableGraph: async ({}, use) => {
if (!basicSerialisableGraph.nodes) throw new Error("Invalid test object")
// Register node types
for (const node of basicSerialisableGraph.nodes) {
LiteGraph.registerNodeType(node.type!, LiteGraph.LGraphNode)
}
await use(structuredClone(basicSerialisableGraph))
},
})