|
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); |
|
}); |
|
|