difuse-playwright/utils/utils.js

85 lines
1.9 KiB
JavaScript

import IPCIDR from "ip-cidr";
import IPAddress from "ip-address";
export function isValidMacAddress(mac) {
try {
const regex = /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/;
return regex.test(mac);
} catch (error) {
return false;
}
}
export function isValidCidr(cidr, type = 0) {
let [isV4, isV6] = [false, false];
let tempCidr = null;
try {
if (type === 4) {
tempCidr = new IPCIDR(cidr);
if (tempCidr.address.v4) {
isV4 = true;
}
}
if (type === 6) {
tempCidr = new IPAddress.Address6(cidr);
if (!tempCidr.address.v4) {
isV6 = true;
}
}
if (type === 0) {
tempCidr = new IPCIDR(cidr);
if (tempCidr.address.v4) {
isV4 = true;
} else {
isV6 = true;
}
}
return isV4 || isV6;
} catch (error) {
return false;
}
}
export async function clickSelect2Dropdown(page, selectSelector) {
const select2ContainerSelector = `${selectSelector} + .select2-container`;
const select2ContainerExists =
(await page.$(select2ContainerSelector)) !== null;
if (!select2ContainerExists) {
throw new Error("Select2 container not found");
}
const select2Selection = `${select2ContainerSelector} .select2-selection`;
await page.click(select2Selection);
await page.waitForSelector(".select2-dropdown .select2-results__option");
}
export async function hasToastText(page, text) {
try {
return (
await (
await page.waitForSelector(".swal2-popup", { state: "visible" })
).textContent()
).includes(text);
} catch (error) {
console.log(error);
return false;
}
}
export async function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
export function isValidDate(date) {
try {
const dateRegex = /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/;
return dateRegex.test(date);
} catch (error) {
return false;
}
}