playwright-cucumber-ts-steps 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/actions/clickSteps.js +35 -33
  2. package/dist/actions/cookieSteps.js +7 -5
  3. package/dist/actions/debugSteps.js +5 -3
  4. package/dist/actions/elementFindSteps.js +50 -48
  5. package/dist/actions/inputSteps.js +40 -35
  6. package/dist/actions/interceptionSteps.js +9 -7
  7. package/dist/actions/miscSteps.js +41 -36
  8. package/dist/actions/mouseSteps.js +10 -8
  9. package/dist/actions/scrollSteps.js +7 -5
  10. package/dist/actions/storageSteps.js +10 -8
  11. package/dist/assertions/buttonAndTextVisibilitySteps.js +25 -23
  12. package/dist/assertions/cookieSteps.js +7 -5
  13. package/dist/assertions/elementSteps.js +24 -22
  14. package/dist/assertions/formInputSteps.js +28 -26
  15. package/dist/assertions/interceptionRequestsSteps.js +27 -25
  16. package/dist/assertions/locationSteps.js +17 -15
  17. package/dist/assertions/roleTestIdSteps.js +12 -10
  18. package/dist/assertions/semanticSteps.js +9 -7
  19. package/dist/assertions/storageSteps.js +23 -18
  20. package/dist/assertions/visualSteps.js +41 -36
  21. package/dist/custom_setups/globalLogin.js +10 -5
  22. package/dist/custom_setups/loginHooks.js +30 -25
  23. package/dist/helpers/checkPeerDeps.d.ts +1 -0
  24. package/dist/helpers/checkPeerDeps.js +19 -0
  25. package/dist/helpers/compareSnapshots.js +15 -9
  26. package/dist/helpers/hooks.js +73 -35
  27. package/dist/helpers/utils/fakerUtils.js +32 -26
  28. package/dist/helpers/utils/index.js +19 -3
  29. package/dist/helpers/utils/optionsUtils.js +18 -8
  30. package/dist/helpers/utils/resolveUtils.js +19 -11
  31. package/dist/helpers/world.js +45 -8
  32. package/dist/iframes/frames.js +4 -2
  33. package/dist/index.js +43 -27
  34. package/dist/register.js +9 -1
  35. package/package.json +24 -8
@@ -1,50 +1,56 @@
1
- import { faker } from "@faker-js/faker";
2
- import dayjs from "dayjs";
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.evaluateFaker = evaluateFaker;
7
+ const faker_1 = require("@faker-js/faker");
8
+ const dayjs_1 = __importDefault(require("dayjs"));
3
9
  const fakerMapping = {
4
- "First Name": () => faker.person.middleName(),
5
- Name: () => faker.person.middleName(),
6
- "Last Name": () => faker.person.middleName(),
7
- Email: () => faker.internet.email(),
8
- "Phone Number": () => faker.string.numeric(10),
9
- Number: () => faker.string.numeric(11),
10
- "Complete Number": () => faker.string.numeric(11),
11
- "App Colour": () => faker.color.rgb(),
12
- "App Name": () => faker.commerce.productName(),
13
- "Role Name": () => faker.person.jobTitle(),
14
- "Company Name": () => faker.company.name(),
15
- "Full Name": () => faker.person.fullName(),
16
- "Disposable Email": () => faker.internet.email({ provider: "inboxkitten.com" }),
17
- "ALpha Numeric": () => faker.string.numeric(11) + "e",
18
- "Lorem Word": () => faker.lorem.sentences({ min: 1, max: 3 }),
19
- Word: () => faker.lorem.word({ length: { min: 5, max: 11 } }),
20
- "Current Date": () => dayjs().format("YYYY-MM-DD"),
10
+ "First Name": () => faker_1.faker.person.middleName(),
11
+ Name: () => faker_1.faker.person.middleName(),
12
+ "Last Name": () => faker_1.faker.person.middleName(),
13
+ Email: () => faker_1.faker.internet.email(),
14
+ "Phone Number": () => faker_1.faker.string.numeric(10),
15
+ Number: () => faker_1.faker.string.numeric(11),
16
+ "Complete Number": () => faker_1.faker.string.numeric(11),
17
+ "App Colour": () => faker_1.faker.color.rgb(),
18
+ "App Name": () => faker_1.faker.commerce.productName(),
19
+ "Role Name": () => faker_1.faker.person.jobTitle(),
20
+ "Company Name": () => faker_1.faker.company.name(),
21
+ "Full Name": () => faker_1.faker.person.fullName(),
22
+ "Disposable Email": () => faker_1.faker.internet.email({ provider: "inboxkitten.com" }),
23
+ "ALpha Numeric": () => faker_1.faker.string.numeric(11) + "e",
24
+ "Lorem Word": () => faker_1.faker.lorem.sentences({ min: 1, max: 3 }),
25
+ Word: () => faker_1.faker.lorem.word({ length: { min: 5, max: 11 } }),
26
+ "Current Date": () => (0, dayjs_1.default)().format("YYYY-MM-DD"),
21
27
  "Current Date2": () => new Date().toISOString().split("T")[0],
22
28
  MonthsFromNow: (months) => {
23
29
  const monthsToAdd = parseInt(months || "0", 10);
24
- return dayjs().add(monthsToAdd, "month").format("YYYY-MM-DD");
30
+ return (0, dayjs_1.default)().add(monthsToAdd, "month").format("YYYY-MM-DD");
25
31
  },
26
32
  MonthsAgo: (months) => {
27
33
  const monthsToSubtract = parseInt(months || "0", 10);
28
- return dayjs().subtract(monthsToSubtract, "month").format("YYYY-MM-DD");
34
+ return (0, dayjs_1.default)().subtract(monthsToSubtract, "month").format("YYYY-MM-DD");
29
35
  },
30
36
  WeeksFromNow: (weeks) => {
31
37
  const weeksToAdd = parseInt(weeks || "0", 10);
32
- return dayjs().add(weeksToAdd, "week").format("YYYY-MM-DD");
38
+ return (0, dayjs_1.default)().add(weeksToAdd, "week").format("YYYY-MM-DD");
33
39
  },
34
40
  WeeksAgo: (weeks) => {
35
41
  const weeksToSubtract = parseInt(weeks || "0", 10);
36
- return dayjs().subtract(weeksToSubtract, "week").format("YYYY-MM-DD");
42
+ return (0, dayjs_1.default)().subtract(weeksToSubtract, "week").format("YYYY-MM-DD");
37
43
  },
38
44
  DaysFromNow: (days) => {
39
45
  const daysToAdd = parseInt(days || "0", 10);
40
- return dayjs().add(daysToAdd, "day").format("YYYY-MM-DD");
46
+ return (0, dayjs_1.default)().add(daysToAdd, "day").format("YYYY-MM-DD");
41
47
  },
42
48
  DaysAgo: (days) => {
43
49
  const daysToSubtract = parseInt(days || "0", 10);
44
- return dayjs().subtract(daysToSubtract, "day").format("YYYY-MM-DD");
50
+ return (0, dayjs_1.default)().subtract(daysToSubtract, "day").format("YYYY-MM-DD");
45
51
  },
46
52
  };
47
- export function evaluateFaker(value) {
53
+ function evaluateFaker(value) {
48
54
  const [key, param] = value.split(":");
49
55
  const fn = fakerMapping[key];
50
56
  if (typeof fn === "function") {
@@ -1,3 +1,19 @@
1
- export * from "./fakerUtils";
2
- export * from "./optionsUtils";
3
- export * from "./resolveUtils";
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./fakerUtils"), exports);
18
+ __exportStar(require("./optionsUtils"), exports);
19
+ __exportStar(require("./resolveUtils"), exports);
@@ -1,25 +1,35 @@
1
- export function parseClickOptions(table) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseClickOptions = parseClickOptions;
4
+ exports.parseDblClickOptions = parseDblClickOptions;
5
+ exports.parseHoverOptions = parseHoverOptions;
6
+ exports.parseTypeOptions = parseTypeOptions;
7
+ exports.parseFillOptions = parseFillOptions;
8
+ exports.parseCheckOptions = parseCheckOptions;
9
+ exports.parseUncheckOptions = parseUncheckOptions;
10
+ exports.parseSelectOptions = parseSelectOptions;
11
+ function parseClickOptions(table) {
2
12
  return parseGenericOptions(table);
3
13
  }
4
- export function parseDblClickOptions(table) {
14
+ function parseDblClickOptions(table) {
5
15
  return parseGenericOptions(table);
6
16
  }
7
- export function parseHoverOptions(table) {
17
+ function parseHoverOptions(table) {
8
18
  return parseGenericOptions(table);
9
19
  }
10
- export function parseTypeOptions(table) {
20
+ function parseTypeOptions(table) {
11
21
  return parseGenericOptions(table);
12
22
  }
13
- export function parseFillOptions(table) {
23
+ function parseFillOptions(table) {
14
24
  return parseGenericOptions(table);
15
25
  }
16
- export function parseCheckOptions(table) {
26
+ function parseCheckOptions(table) {
17
27
  return parseGenericOptions(table);
18
28
  }
19
- export function parseUncheckOptions(table) {
29
+ function parseUncheckOptions(table) {
20
30
  return parseGenericOptions(table);
21
31
  }
22
- export function parseSelectOptions(table) {
32
+ function parseSelectOptions(table) {
23
33
  return parseGenericOptions(table);
24
34
  }
25
35
  function parseGenericOptions(table) {
@@ -1,7 +1,15 @@
1
- import fs from "fs";
2
- import path from "path";
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resolveValue = resolveValue;
7
+ exports.resolveLoginValue = resolveLoginValue;
8
+ exports.deriveSessionName = deriveSessionName;
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const path_1 = __importDefault(require("path"));
3
11
  // Dynamic resolver
4
- export function resolveValue(input) {
12
+ function resolveValue(input) {
5
13
  // Uppercase = environment variable (e.g. TEST_USER)
6
14
  if (/^[A-Z0-9_]+$/.test(input)) {
7
15
  const envVal = process.env[input];
@@ -13,9 +21,9 @@ export function resolveValue(input) {
13
21
  // Dot = JSON reference (e.g. userData.email)
14
22
  if (input.includes(".")) {
15
23
  const [fileName, fieldName] = input.split(".");
16
- const jsonPath = path.resolve("e2e/support/helper/test-data", `${fileName}.json`);
17
- if (fs.existsSync(jsonPath)) {
18
- const json = JSON.parse(fs.readFileSync(jsonPath, "utf-8"));
24
+ const jsonPath = path_1.default.resolve("e2e/support/helper/test-data", `${fileName}.json`);
25
+ if (fs_1.default.existsSync(jsonPath)) {
26
+ const json = JSON.parse(fs_1.default.readFileSync(jsonPath, "utf-8"));
19
27
  const value = json[fieldName];
20
28
  if (value !== undefined)
21
29
  return value;
@@ -25,7 +33,7 @@ export function resolveValue(input) {
25
33
  // Default to hardcoded value
26
34
  return input;
27
35
  }
28
- export function resolveLoginValue(raw, world) {
36
+ function resolveLoginValue(raw, world) {
29
37
  // ✅ Alias: @aliasName
30
38
  if (raw.startsWith("@")) {
31
39
  return world.data[raw.slice(1)];
@@ -33,18 +41,18 @@ export function resolveLoginValue(raw, world) {
33
41
  // ✅ JSON: user.json:key
34
42
  if (raw.includes(".json:")) {
35
43
  const [filename, key] = raw.split(".json:");
36
- const filePath = path.resolve("test-data", `${filename}.json`);
37
- if (!fs.existsSync(filePath)) {
44
+ const filePath = path_1.default.resolve("test-data", `${filename}.json`);
45
+ if (!fs_1.default.existsSync(filePath)) {
38
46
  throw new Error(`JSON fixture not found: ${filename}.json`);
39
47
  }
40
- const fileData = JSON.parse(fs.readFileSync(filePath, "utf-8"));
48
+ const fileData = JSON.parse(fs_1.default.readFileSync(filePath, "utf-8"));
41
49
  return fileData[key];
42
50
  }
43
51
  // ✅ Fallback to raw value
44
52
  return raw;
45
53
  }
46
54
  // Determine session name from email or username
47
- export function deriveSessionName(emailOrUser, fallback = "default") {
55
+ function deriveSessionName(emailOrUser, fallback = "default") {
48
56
  if (!emailOrUser)
49
57
  return `${fallback}User`;
50
58
  const base = emailOrUser.includes("@")
@@ -1,12 +1,48 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.CustomWorld = void 0;
1
37
  // support/world.ts
2
- import { setWorldConstructor, World, } from "@cucumber/cucumber";
3
- import { devices, } from "@playwright/test";
4
- import { chromium } from "playwright";
5
- import * as dotenv from "dotenv";
38
+ const cucumber_1 = require("@cucumber/cucumber");
39
+ const test_1 = require("@playwright/test");
40
+ const playwright_1 = require("playwright");
41
+ const dotenv = __importStar(require("dotenv"));
6
42
  dotenv.config();
7
43
  const isHeadless = process.env.HEADLESS !== "false";
8
44
  const slowMo = process.env.SLOWMO ? Number(process.env.SLOWMO) : 0;
9
- export class CustomWorld extends World {
45
+ class CustomWorld extends cucumber_1.World {
10
46
  constructor() {
11
47
  super(...arguments);
12
48
  this.data = {};
@@ -18,8 +54,8 @@ export class CustomWorld extends World {
18
54
  }
19
55
  async init(testInfo) {
20
56
  const isMobile = testInfo?.pickle.tags.some((tag) => tag.name === "@mobile");
21
- const device = isMobile ? devices["Pixel 5"] : undefined;
22
- this.browser = await chromium.launch({ headless: isHeadless, slowMo });
57
+ const device = isMobile ? test_1.devices["Pixel 5"] : undefined;
58
+ this.browser = await playwright_1.chromium.launch({ headless: isHeadless, slowMo });
23
59
  this.context = await this.browser.newContext({
24
60
  ...(device || {}),
25
61
  recordVideo: { dir: "e2e/test-artifacts/videos" },
@@ -57,4 +93,5 @@ export class CustomWorld extends World {
57
93
  }
58
94
  }
59
95
  }
60
- setWorldConstructor(CustomWorld);
96
+ exports.CustomWorld = CustomWorld;
97
+ (0, cucumber_1.setWorldConstructor)(CustomWorld);
@@ -1,5 +1,7 @@
1
- import { When } from "@cucumber/cucumber";
2
- When("I find href in iframe {string} and store as {string}", async function (iframeSelector, key) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const cucumber_1 = require("@cucumber/cucumber");
4
+ (0, cucumber_1.When)("I find href in iframe {string} and store as {string}", async function (iframeSelector, key) {
3
5
  const iframe = this.page.frameLocator(iframeSelector);
4
6
  const link = await iframe.locator("a[href]").first();
5
7
  const href = await link.getAttribute("href");
package/dist/index.js CHANGED
@@ -1,32 +1,48 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
1
17
  // Actions
2
- export * from "./actions/clickSteps";
3
- export * from "./actions/cookieSteps";
4
- export * from "./actions/debugSteps";
5
- export * from "./actions/elementFindSteps";
6
- export * from "./actions/inputSteps";
7
- export * from "./actions/interceptionSteps";
8
- export * from "./actions/miscSteps";
9
- export * from "./actions/mouseSteps";
10
- export * from "./actions/scrollSteps";
11
- export * from "./actions/storageSteps";
18
+ __exportStar(require("./actions/clickSteps"), exports);
19
+ __exportStar(require("./actions/cookieSteps"), exports);
20
+ __exportStar(require("./actions/debugSteps"), exports);
21
+ __exportStar(require("./actions/elementFindSteps"), exports);
22
+ __exportStar(require("./actions/inputSteps"), exports);
23
+ __exportStar(require("./actions/interceptionSteps"), exports);
24
+ __exportStar(require("./actions/miscSteps"), exports);
25
+ __exportStar(require("./actions/mouseSteps"), exports);
26
+ __exportStar(require("./actions/scrollSteps"), exports);
27
+ __exportStar(require("./actions/storageSteps"), exports);
12
28
  // Assertions
13
- export * from "./assertions/buttonAndTextVisibilitySteps";
14
- export * from "./assertions/cookieSteps";
15
- export * from "./assertions/elementSteps";
16
- export * from "./assertions/formInputSteps";
17
- export * from "./assertions/interceptionRequestsSteps";
18
- export * from "./assertions/locationSteps";
19
- export * from "./assertions/roleTestIdSteps";
20
- export * from "./assertions/semanticSteps";
21
- export * from "./assertions/storageSteps";
22
- export * from "./assertions/visualSteps";
29
+ __exportStar(require("./assertions/buttonAndTextVisibilitySteps"), exports);
30
+ __exportStar(require("./assertions/cookieSteps"), exports);
31
+ __exportStar(require("./assertions/elementSteps"), exports);
32
+ __exportStar(require("./assertions/formInputSteps"), exports);
33
+ __exportStar(require("./assertions/interceptionRequestsSteps"), exports);
34
+ __exportStar(require("./assertions/locationSteps"), exports);
35
+ __exportStar(require("./assertions/roleTestIdSteps"), exports);
36
+ __exportStar(require("./assertions/semanticSteps"), exports);
37
+ __exportStar(require("./assertions/storageSteps"), exports);
38
+ __exportStar(require("./assertions/visualSteps"), exports);
23
39
  // Iframes
24
- export * from "./iframes/frames";
40
+ __exportStar(require("./iframes/frames"), exports);
25
41
  // Setup (custom hooks, login, etc.)
26
- export * from "./custom_setups/globalLogin";
27
- export * from "./custom_setups/loginHooks";
42
+ __exportStar(require("./custom_setups/globalLogin"), exports);
43
+ __exportStar(require("./custom_setups/loginHooks"), exports);
28
44
  // Core helpers and utilities
29
- export * from "./helpers/compareSnapshots";
30
- export * from "./helpers/hooks";
31
- export * from "./helpers/utils";
32
- export * from "./helpers/world";
45
+ __exportStar(require("./helpers/compareSnapshots"), exports);
46
+ __exportStar(require("./helpers/hooks"), exports);
47
+ __exportStar(require("./helpers/utils"), exports);
48
+ __exportStar(require("./helpers/world"), exports);
package/dist/register.js CHANGED
@@ -1,2 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
1
3
  // src/register.ts
2
- import "./index";
4
+ const checkPeerDeps_1 = require("./helpers/checkPeerDeps");
5
+ (0, checkPeerDeps_1.checkPeerDependencies)([
6
+ "@cucumber/cucumber",
7
+ "@playwright/test",
8
+ "@faker-js/faker",
9
+ ]);
10
+ require("./index");
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "playwright-cucumber-ts-steps",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "A collection of reusable Playwright step definitions for Cucumber in TypeScript, designed to streamline end-to-end testing across web, API, and mobile applications.",
5
- "type": "module",
5
+ "type": "commonjs",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "exports": {
@@ -47,6 +47,27 @@
47
47
  "visual-testing"
48
48
  ],
49
49
  "author": "qaPaschalE",
50
+ "license": "MIT",
51
+ "bugs": {
52
+ "url": "https://github.com/qaPaschalE/playwright-cucumber-ts-steps/issues"
53
+ },
54
+ "homepage": "https://github.com/qaPaschalE/playwright-cucumber-ts-steps#readme",
55
+ "peerDependencies": {
56
+ "@cucumber/cucumber": "^11.3.0",
57
+ "@playwright/test": "^1.53.0",
58
+ "@faker-js/faker": "^9.8.0"
59
+ },
60
+ "peerDependenciesMeta": {
61
+ "@cucumber/cucumber": {
62
+ "optional": false
63
+ },
64
+ "@playwright/test": {
65
+ "optional": false
66
+ },
67
+ "@faker-js/faker": {
68
+ "optional": false
69
+ }
70
+ },
50
71
  "devDependencies": {
51
72
  "@cucumber/cucumber": "^11.3.0",
52
73
  "@faker-js/faker": "^9.8.0",
@@ -59,10 +80,5 @@
59
80
  "pngjs": "^7.0.0",
60
81
  "ts-node": "^10.9.2",
61
82
  "typescript": "^5.8.3"
62
- },
63
- "license": "MIT",
64
- "bugs": {
65
- "url": "https://github.com/qaPaschalE/playwright-cucumber-ts-steps/issues"
66
- },
67
- "homepage": "https://github.com/qaPaschalE/playwright-cucumber-ts-steps#readme"
83
+ }
68
84
  }