67 lines
2.3 KiB
JavaScript
67 lines
2.3 KiB
JavaScript
import { expect } from "@playwright/test";
|
||
|
||
const formatToday = () => {
|
||
const today = new Date();
|
||
const month = String(today.getMonth() + 1).padStart(2, "0");
|
||
const day = String(today.getDate()).padStart(2, "0");
|
||
const year = today.getFullYear();
|
||
return `${month}/${day}/${year}`;
|
||
};
|
||
|
||
export async function acceptEulaIfPresent(page) {
|
||
const eulaDialog = page.getByRole("dialog", { name: "Terms and Conditions" });
|
||
|
||
const eulaVisible =
|
||
(await eulaDialog.isVisible().catch(() => false)) ||
|
||
(await eulaDialog
|
||
.waitFor({
|
||
state: "visible",
|
||
timeout: 5000
|
||
})
|
||
.then(() => true)
|
||
.catch(() => false));
|
||
|
||
if (!eulaVisible) {
|
||
return;
|
||
}
|
||
|
||
const markdownCard = page.locator(".eula-markdown-card");
|
||
await markdownCard.evaluate((element) => {
|
||
element.scrollTop = element.scrollHeight;
|
||
element.dispatchEvent(new Event("scroll", { bubbles: true }));
|
||
});
|
||
|
||
await page.getByRole("textbox", { name: "First Name" }).fill("Codex");
|
||
await page.getByRole("textbox", { name: "Last Name" }).fill("Tester");
|
||
await page.getByRole("textbox", { name: "Legal Business Name" }).fill("Codex QA");
|
||
await page.getByRole("textbox", { name: "Date Accepted" }).fill(formatToday());
|
||
await page.getByRole("checkbox", { name: "I accept the terms and conditions of this agreement." }).check();
|
||
|
||
const acceptButton = page.getByRole("button", { name: "Accept EULA" });
|
||
await expect(acceptButton).toBeEnabled({ timeout: 10000 });
|
||
await acceptButton.click();
|
||
await expect(eulaDialog).not.toBeVisible({ timeout: 10000 });
|
||
}
|
||
|
||
export async function login(page, { email, password }) {
|
||
// Navigate to the login page
|
||
await page.goto("/"); // Adjust if your login route differs (e.g., '/login')
|
||
|
||
// Fill email field
|
||
await page.fill('input[placeholder="Username"]', email); // Matches Ant Design Input placeholder
|
||
|
||
// Fill password field
|
||
await page.fill('input[placeholder="Password"]', password);
|
||
|
||
// Click login button
|
||
await page.click("button.login-btn");
|
||
|
||
// Wait for navigation or success indicator (e.g., redirect to /manage/)
|
||
await page.waitForURL(/\/manage\//, { timeout: 10000 }); // Adjust based on redirect
|
||
|
||
await acceptEulaIfPresent(page);
|
||
|
||
// Verify successful login (e.g., check for a dashboard element)
|
||
await expect(page.locator("text=Manage")).toBeVisible(); // Adjust to your app’s post-login UI
|
||
}
|