64 lines
1.9 KiB
TypeScript
64 lines
1.9 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
import { readFileSync } from "fs";
|
|
|
|
test("user must be able to update outdated components", async ({ page }) => {
|
|
await page.goto("/");
|
|
|
|
let modalCount = 0;
|
|
try {
|
|
const modalTitleElement = await page?.getByTestId("modal-title");
|
|
if (modalTitleElement) {
|
|
modalCount = await modalTitleElement.count();
|
|
}
|
|
} catch (error) {
|
|
modalCount = 0;
|
|
}
|
|
|
|
while (modalCount === 0) {
|
|
await page.getByText("New Flow", { exact: true }).click();
|
|
await page.waitForSelector('[data-testid="modal-title"]', {
|
|
timeout: 3000,
|
|
});
|
|
modalCount = await page.getByTestId("modal-title")?.count();
|
|
}
|
|
await page.locator("span").filter({ hasText: "Close" }).first().click();
|
|
|
|
await page.locator("span").filter({ hasText: "My Collection" }).isVisible();
|
|
// Read your file into a buffer.
|
|
const jsonContent = readFileSync("tests/assets/outdated_flow.json", "utf-8");
|
|
|
|
// Create the DataTransfer and File
|
|
const dataTransfer = await page.evaluateHandle((data) => {
|
|
const dt = new DataTransfer();
|
|
// Convert the buffer to a hex array
|
|
const file = new File([data], "outdated_flow.json", {
|
|
type: "application/json",
|
|
});
|
|
dt.items.add(file);
|
|
return dt;
|
|
}, jsonContent);
|
|
|
|
// Now dispatch
|
|
await page.getByTestId("cards-wrapper").dispatchEvent("drop", {
|
|
dataTransfer,
|
|
});
|
|
|
|
await page.waitForSelector("data-testid=list-card", {
|
|
timeout: 3000,
|
|
});
|
|
|
|
await page.getByTestId("list-card").first().click();
|
|
|
|
await expect(page.getByText("components are ready to update")).toBeVisible({
|
|
timeout: 30000,
|
|
});
|
|
|
|
let outdatedComponents = await page.getByTestId("icon-AlertTriangle").count();
|
|
expect(outdatedComponents).toBeGreaterThan(0);
|
|
|
|
await page.getByText("Update All", { exact: true }).click();
|
|
|
|
await expect(page.getByTestId("icon-AlertTriangle")).toHaveCount(0, {
|
|
timeout: 5000,
|
|
});
|
|
});
|