|
import { test, expect } from "@gradio/tootils"; |
|
|
|
test("when using an iterative function the UI should update over time as iteration results are received", async ({ |
|
page |
|
}) => { |
|
const start_button = await page.locator("button", { |
|
hasText: /Start Iterating/ |
|
}); |
|
const textbox = await page.getByLabel("Iterative Output"); |
|
|
|
let output_values: string[] = []; |
|
let last_output_value = ""; |
|
let interval = setInterval(async () => { |
|
let value = await textbox.inputValue(); |
|
if (value !== last_output_value) { |
|
output_values.push(value); |
|
last_output_value = value; |
|
} |
|
}, 100); |
|
|
|
await start_button.click(); |
|
await expect(textbox).toHaveValue("8"); |
|
clearInterval(interval); |
|
for (let i = 1; i < 8; i++) { |
|
expect(output_values).toContain(i.toString()); |
|
} |
|
}); |
|
|
|
test("when using an iterative function it should be possible to cancel the function, after which the UI should stop updating", async ({ |
|
page |
|
}) => { |
|
const start_button = await page.locator("button", { |
|
hasText: /Start Iterating/ |
|
}); |
|
const stop_button = await page.locator("button", { |
|
hasText: /Stop Iterating/ |
|
}); |
|
const textbox = await page.getByLabel("Iterative Output"); |
|
|
|
await start_button.click(); |
|
await expect(textbox).toHaveValue("0"); |
|
await stop_button.click(); |
|
await expect(textbox).toHaveValue("0"); |
|
await page.waitForTimeout(1000); |
|
await expect(textbox).toHaveValue("0"); |
|
}); |
|
|