| const { mockApi } = require("./setup"); |
| const { Ez } = require("./ezgraph"); |
| const lg = require("./litegraph"); |
| const fs = require("fs"); |
| const path = require("path"); |
|
|
| const html = fs.readFileSync(path.resolve(__dirname, "../../web/index.html")) |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| export async function start(config = {}) { |
| if(config.resetEnv) { |
| jest.resetModules(); |
| jest.resetAllMocks(); |
| lg.setup(global); |
| localStorage.clear(); |
| sessionStorage.clear(); |
| } |
|
|
| Object.assign(localStorage, config.localStorage ?? {}); |
| document.body.innerHTML = html; |
|
|
| mockApi(config); |
| const { app } = require("../../web/scripts/app"); |
| config.preSetup?.(app); |
| await app.setup(); |
|
|
| return { ...Ez.graph(app, global["LiteGraph"], global["LGraphCanvas"]), app }; |
| } |
|
|
| |
| |
| |
| |
| export async function checkBeforeAndAfterReload(graph, cb) { |
| await cb(false); |
| await graph.reload(); |
| await cb(true); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| export function makeNodeDef(name, input, output = {}) { |
| const nodeDef = { |
| name, |
| category: "test", |
| output: [], |
| output_name: [], |
| output_is_list: [], |
| input: { |
| required: {}, |
| }, |
| }; |
| for (const k in input) { |
| nodeDef.input.required[k] = typeof input[k] === "string" ? [input[k], {}] : [...input[k]]; |
| } |
| if (output instanceof Array) { |
| output = output.reduce((p, c) => { |
| p[c] = c; |
| return p; |
| }, {}); |
| } |
| for (const k in output) { |
| nodeDef.output.push(output[k]); |
| nodeDef.output_name.push(k); |
| nodeDef.output_is_list.push(false); |
| } |
|
|
| return { [name]: nodeDef }; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| export function assertNotNullOrUndefined(x) { |
| expect(x).not.toEqual(null); |
| expect(x).not.toEqual(undefined); |
| return true; |
| } |
|
|
| |
| |
| |
| |
| |
| export function createDefaultWorkflow(ez, graph) { |
| graph.clear(); |
| const ckpt = ez.CheckpointLoaderSimple(); |
|
|
| const pos = ez.CLIPTextEncode(ckpt.outputs.CLIP, { text: "positive" }); |
| const neg = ez.CLIPTextEncode(ckpt.outputs.CLIP, { text: "negative" }); |
|
|
| const empty = ez.EmptyLatentImage(); |
| const sampler = ez.KSampler( |
| ckpt.outputs.MODEL, |
| pos.outputs.CONDITIONING, |
| neg.outputs.CONDITIONING, |
| empty.outputs.LATENT |
| ); |
|
|
| const decode = ez.VAEDecode(sampler.outputs.LATENT, ckpt.outputs.VAE); |
| const save = ez.SaveImage(decode.outputs.IMAGE); |
| graph.arrange(); |
|
|
| return { ckpt, pos, neg, empty, sampler, decode, save }; |
| } |
|
|
| export async function getNodeDefs() { |
| const { api } = require("../../web/scripts/api"); |
| return api.getNodeDefs(); |
| } |
|
|
| export async function getNodeDef(nodeId) { |
| return (await getNodeDefs())[nodeId]; |
| } |