import { test, expect } from "@playwright/experimental-ct-svelte"; import Label from "./Index.svelte"; import { spy } from "tinyspy"; import type { LoadingStatus } from "@gradio/statustracker"; const loading_status: LoadingStatus = { eta: 0, queue_position: 1, queue_size: 1, status: "complete", scroll_to_output: false, visible: true, fn_index: 0, show_progress: "full" }; test("gr.Label default value and label rendered with confidences", async ({ mount, page }) => { const component = await mount(Label, { props: { value: { label: "Good", confidences: [ { label: "Good", confidence: 0.9 }, { label: "Bad", confidence: 0.1 } ] }, label: "My Label", show_label: true, loading_status: loading_status, gradio: { dispatch() {} } } }); await expect(component).toContainText("My Label"); await expect(component.getByTestId("block-label")).toBeVisible(); await expect(page.getByTestId("label-output-value")).toContainText("Good"); await expect(page.getByTestId("Good-confidence-set")).toContainText("90"); await expect(page.getByTestId("Bad-confidence-set")).toContainText("10"); }); test("gr.Label hides label when show_label=false", async ({ mount, page }) => { const component = await mount(Label, { props: { value: { label: "Good", confidences: [ { label: "Good", confidence: 0.9 }, { label: "Bad", confidence: 0.1 } ] }, label: "My Label", show_label: false, loading_status: loading_status, gradio: { dispatch() {} } } }); await expect(component.getByTestId("block-label")).toBeHidden(); }); test("gr.Label confidence bars not rendered without confidences", async ({ mount }) => { const component = await mount(Label, { props: { value: { label: "Good" }, label: "My Label", show_label: true, loading_status: loading_status, gradio: { dispatch() {} } } }); await expect(component).toContainText("My Label"); expect(await component.getByTestId("Good-confidence-set").count()).toEqual(0); }); test("gr.Label confidence bars trigger select event when clicked", async ({ mount, page }) => { const events = { select: [0, null] }; function event(name: "select", value: any) { events[name] = [events[name][0]! + 1, value]; } const component = await mount(Label, { props: { value: { label: "Good", confidences: [ { label: "Good", confidence: 0.9 }, { label: "Bad", confidence: 0.1 } ] }, label: "My Label", show_label: true, loading_status: loading_status, gradio: { dispatch: event } } }); await expect(component).toContainText("My Label"); await component.getByTestId("Bad-confidence-set").click(); expect(events.select[0]).toEqual(1); expect(events.select[1]).toEqual({ index: 1, value: "Bad" }); }); test("gr.Label triggers change event", async ({ mount, page }) => { const events = { change: 0 }; function event(name: "change") { events[name] += 1; } const component = await mount(Label, { props: { value: { label: "Good", confidences: [ { label: "Good", confidence: 0.9 }, { label: "Bad", confidence: 0.1 } ] }, label: "My Label", show_label: true, loading_status: loading_status, gradio: { dispatch: event } } }); await component.update({ props: { value: { label: "Good", confidences: [ { label: "Good", confidence: 0.1 }, { label: "Bad", confidence: 0.9 } ] } } }); expect(events.change).toEqual(2); });