playwright-cucumber-ts-steps
Version:
A collection of reusable Playwright step definitions for Cucumber in TypeScript, designed to streamline end-to-end testing across web, API, and mobile applications.
65 lines (56 loc) • 2.4 kB
text/typescript
import { faker } from "@faker-js/faker";
import dayjs from "dayjs";
// Supports optional parameters
type FakerMapping = Record<string, ((param?: string) => string) | (() => string)>;
const fakerMapping: FakerMapping = {
"First Name": () => faker.person.middleName(),
Name: () => faker.person.middleName(),
"Last Name": () => faker.person.middleName(),
Email: () => faker.internet.email(),
"Phone Number": () => faker.string.numeric(10),
Number: () => faker.string.numeric(11),
"Complete Number": () => faker.string.numeric(11),
"App Colour": () => faker.color.rgb(),
"App Name": () => faker.commerce.productName(),
"Role Name": () => faker.person.jobTitle(),
"Company Name": () => faker.company.name(),
"Full Name": () => faker.person.fullName(),
"Disposable Email": () => faker.internet.email({ provider: "inboxkitten.com" }),
"ALpha Numeric": () => faker.string.numeric(11) + "e",
"Lorem Word": () => faker.lorem.sentences({ min: 1, max: 3 }),
Word: () => faker.lorem.word({ length: { min: 5, max: 11 } }),
"Current Date": () => dayjs().format("YYYY-MM-DD"),
"Current Date2": () => new Date().toISOString().split("T")[0],
MonthsFromNow: (months?: string) => {
const monthsToAdd = parseInt(months || "0", 10);
return dayjs().add(monthsToAdd, "month").format("YYYY-MM-DD");
},
MonthsAgo: (months?: string) => {
const monthsToSubtract = parseInt(months || "0", 10);
return dayjs().subtract(monthsToSubtract, "month").format("YYYY-MM-DD");
},
WeeksFromNow: (weeks?: string) => {
const weeksToAdd = parseInt(weeks || "0", 10);
return dayjs().add(weeksToAdd, "week").format("YYYY-MM-DD");
},
WeeksAgo: (weeks?: string) => {
const weeksToSubtract = parseInt(weeks || "0", 10);
return dayjs().subtract(weeksToSubtract, "week").format("YYYY-MM-DD");
},
DaysFromNow: (days?: string) => {
const daysToAdd = parseInt(days || "0", 10);
return dayjs().add(daysToAdd, "day").format("YYYY-MM-DD");
},
DaysAgo: (days?: string) => {
const daysToSubtract = parseInt(days || "0", 10);
return dayjs().subtract(daysToSubtract, "day").format("YYYY-MM-DD");
},
};
export function evaluateFaker(value: string): string {
const [key, param] = value.split(":");
const fn = fakerMapping[key];
if (typeof fn === "function") {
return fn(param);
}
return value; // fallback to raw value if not mapped
}