1
import { test, expect } from "@gradio/tootils";
3
test("when using an iterative function the UI should update over time as iteration results are received", async ({
6
const start_button = await page.locator("button", {
7
hasText: /Start Iterating/
9
const textbox = await page.getByLabel("Iterative Output");
11
let output_values: string[] = [];
12
let last_output_value = "";
13
let interval = setInterval(async () => {
14
let value = await textbox.inputValue();
15
if (value !== last_output_value) {
16
output_values.push(value);
17
last_output_value = value;
21
await start_button.click();
22
await expect(textbox).toHaveValue("8");
23
clearInterval(interval);
24
for (let i = 1; i < 8; i++) {
25
expect(output_values).toContain(i.toString());
29
test("when using an iterative function it should be possible to cancel the function, after which the UI should stop updating", async ({
32
const start_button = await page.locator("button", {
33
hasText: /Start Iterating/
35
const stop_button = await page.locator("button", {
36
hasText: /Stop Iterating/
38
const textbox = await page.getByLabel("Iterative Output");
40
await start_button.click();
41
await expect(textbox).toHaveValue("0");
42
await stop_button.click();
43
await expect(textbox).toHaveValue("0");
44
await page.waitForTimeout(1000);
45
await expect(textbox).toHaveValue("0");