2022-05-27 16:53:50 +08:00
|
|
|
import { test, expect, Page } from "@playwright/test";
|
2023-03-27 22:52:07 +08:00
|
|
|
import { mock_theme, wait_for_page } from "./utils";
|
2022-05-27 16:53:50 +08:00
|
|
|
|
|
|
|
function mock_demo(page: Page, demo: string) {
|
|
|
|
return page.route("**/config", (route) => {
|
|
|
|
return route.fulfill({
|
|
|
|
headers: {
|
|
|
|
"Access-Control-Allow-Origin": "*"
|
|
|
|
},
|
2023-03-28 07:12:58 +08:00
|
|
|
path: `../../demo/${demo}/config.json`
|
2022-05-27 16:53:50 +08:00
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
function mock_api(page: Page, body: Array<unknown>) {
|
2023-03-08 00:36:25 +08:00
|
|
|
return page.route("**/run/predict", (route) => {
|
2022-05-27 16:53:50 +08:00
|
|
|
const id = JSON.parse(route.request().postData()!).fn_index;
|
|
|
|
return route.fulfill({
|
|
|
|
headers: {
|
|
|
|
"Access-Control-Allow-Origin": "*"
|
|
|
|
},
|
|
|
|
body: JSON.stringify({
|
|
|
|
data: body[id]
|
|
|
|
})
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
test("renders the correct elements", async ({ page }) => {
|
2022-08-18 03:43:26 +08:00
|
|
|
await mock_demo(page, "blocks_inputs");
|
|
|
|
await mock_api(page, [["hi dawood"]]);
|
2023-03-27 22:52:07 +08:00
|
|
|
await mock_theme(page);
|
|
|
|
await wait_for_page(page);
|
2022-05-27 16:53:50 +08:00
|
|
|
|
2022-10-13 00:30:42 +08:00
|
|
|
const textboxes = await page.getByLabel("Input");
|
|
|
|
|
|
|
|
const textboxOne = await textboxes.first();
|
|
|
|
const textboxTwo = await textboxes.last();
|
2022-05-27 16:53:50 +08:00
|
|
|
|
2022-08-18 03:43:26 +08:00
|
|
|
await textboxOne.fill("hi");
|
|
|
|
await textboxTwo.fill("dawood");
|
2022-10-13 00:30:42 +08:00
|
|
|
await Promise.all([
|
|
|
|
page.click('text="Submit"'),
|
2023-03-08 00:36:25 +08:00
|
|
|
page.waitForResponse("**/run/predict")
|
2022-10-13 00:30:42 +08:00
|
|
|
]);
|
|
|
|
|
|
|
|
await expect(await page.getByLabel("Output")).toHaveValue("hi dawood");
|
2022-05-27 16:53:50 +08:00
|
|
|
});
|