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