55 lines
1.5 KiB
TypeScript
55 lines
1.5 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
import {
|
|
isImageGenerationModelDescriptor,
|
|
isStillImageGenerationModelDescriptor,
|
|
isVideoModelDescriptor,
|
|
} from "@/lib/ai/model-classification";
|
|
|
|
test.describe("model classification", () => {
|
|
test("keeps multi-reference BananaImage models classified as image models", () => {
|
|
const descriptor = {
|
|
providerType: "bananaimage",
|
|
modelId: "gemini-3-pro-image-preview",
|
|
capabilities: {
|
|
supportedModes: [
|
|
"text-to-image",
|
|
"image-to-image",
|
|
"reference-images",
|
|
],
|
|
},
|
|
supportsImageGen: true,
|
|
};
|
|
|
|
expect(isVideoModelDescriptor(descriptor)).toBe(false);
|
|
expect(isImageGenerationModelDescriptor(descriptor)).toBe(true);
|
|
});
|
|
|
|
test("still recognizes explicit video generation modes", () => {
|
|
expect(
|
|
isVideoModelDescriptor({
|
|
providerType: "custom",
|
|
modelId: "custom-video-model",
|
|
capabilities: { supportedModes: ["text-to-video"] },
|
|
})
|
|
).toBe(true);
|
|
});
|
|
|
|
test("uses one image-only rule for canvas and Style Pro model pools", () => {
|
|
expect(
|
|
isStillImageGenerationModelDescriptor({
|
|
providerType: "ruxa-image",
|
|
modelId: "google/nano-banana-2",
|
|
supportsImageGen: true,
|
|
})
|
|
).toBe(true);
|
|
|
|
expect(
|
|
isStillImageGenerationModelDescriptor({
|
|
providerType: "ruxa-video",
|
|
modelId: "kling-video",
|
|
supportsImageGen: true,
|
|
})
|
|
).toBe(false);
|
|
});
|
|
});
|