53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
import { expect } from "@playwright/test";
|
|
import { test, Timeout } from "./helpers/test_helper";
|
|
|
|
const tests = [
|
|
{
|
|
testName: "with history",
|
|
newAppName: "copied-app-with-history",
|
|
buttonName: "Copy app with history",
|
|
expectedVersion: "Version 2",
|
|
},
|
|
{
|
|
testName: "without history",
|
|
newAppName: "copied-app-without-history",
|
|
buttonName: "Copy app without history",
|
|
expectedVersion: "Version 1",
|
|
},
|
|
];
|
|
|
|
for (const { testName, newAppName, buttonName, expectedVersion } of tests) {
|
|
test(`copy app ${testName}`, async ({ po }) => {
|
|
await po.setUp({ autoApprove: true });
|
|
await po.sendPrompt("hi");
|
|
await po.snapshotAppFiles({ name: "app" });
|
|
|
|
await po.getTitleBarAppNameButton().click();
|
|
|
|
// Open the dropdown menu
|
|
await po.clickAppDetailsMoreOptions();
|
|
await po.clickAppDetailsCopyAppButton();
|
|
|
|
await po.page.getByLabel("New app name").fill(newAppName);
|
|
|
|
// Click the "Copy app" button
|
|
await po.page.getByRole("button", { name: buttonName }).click();
|
|
|
|
// Expect to be on the new app's detail page
|
|
await expect(
|
|
po.page.getByRole("heading", { name: newAppName }),
|
|
).toBeVisible({
|
|
// Potentially takes a while for the copy to complete
|
|
timeout: Timeout.MEDIUM,
|
|
});
|
|
|
|
const currentAppName = await po.getCurrentAppName();
|
|
expect(currentAppName).toBe(newAppName);
|
|
|
|
await po.clickOpenInChatButton();
|
|
|
|
await expect(po.page.getByText(expectedVersion)).toBeVisible();
|
|
await po.snapshotAppFiles({ name: "app" });
|
|
});
|
|
}
|