@bigbinary/neeto-playwright-commons 3.3.9 → 3.3.10

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.
package/index.js CHANGED
@@ -62,7 +62,7 @@ const ROUTES = {
62
62
  dashboard: "/dashboard",
63
63
  neetoThankYou: "/neeto_thank_you_engine",
64
64
  adminPanel: {
65
- roles: "/admin/general/admin-panel/roles",
65
+ roles: "/admin/admin-panel/general/roles",
66
66
  index: "/admin/admin-panel",
67
67
  auditLogs: "/admin/admin-panel/general/audit-logs",
68
68
  apiKeys: "/admin/admin-panel/general/apiKeys",
@@ -224,6 +224,14 @@ const APP_RESOURCES = [
224
224
  "**/neeto_widget_tokens",
225
225
  ];
226
226
  const ALL_RESOURCES = Array.from(new Set([...THIRD_PARTY_RESOURCES, ...APP_RESOURCES]));
227
+ const PRODUCT_ROLES_ROUTE_MAP = {
228
+ crm: "/admin/admin-panel/manageUsers/roles",
229
+ planner: "/admin-panel/general/roles",
230
+ ...Object.fromEntries(["code", "runner", "ci", "git", "tower", "quiz"].map(product => [
231
+ product,
232
+ "/admin/admin-panel/roles",
233
+ ])),
234
+ };
227
235
 
228
236
  class ApiKeysApi {
229
237
  neetoPlaywrightUtilities;
@@ -2457,278 +2465,6 @@ const THEMES_TEXTS = {
2457
2465
  darkThemeClass: /neeto-ui-theme--dark/,
2458
2466
  };
2459
2467
 
2460
- const openFilterPane = async (page) => {
2461
- await page
2462
- .getByTestId(NEETO_FILTERS_SELECTORS.filterButton)
2463
- .or(page.getByTestId(COMMON_SELECTORS.filterButon))
2464
- .click();
2465
- await expect(page.getByTestId(COMMON_SELECTORS.paneHeader)).toHaveText(getI18nInstance().t("neetoFilters.common.filters"));
2466
- };
2467
- const clearFiltersFromActionBlock = async (page) => {
2468
- const isClearButtonVisible = await page
2469
- .getByTestId(NEETO_FILTERS_SELECTORS.neetoFiltersBarClearButton)
2470
- .isVisible();
2471
- if (isClearButtonVisible) {
2472
- await page
2473
- .getByTestId(NEETO_FILTERS_SELECTORS.neetoFiltersBarClearButton)
2474
- .click();
2475
- await Promise.all([
2476
- expect(page.getByTestId(NEETO_FILTERS_SELECTORS.neetoFiltersBarClearButton)).toBeHidden(),
2477
- expect(page.locator(COMMON_SELECTORS.tableSpinner)).toHaveCount(0, {
2478
- timeout: 15_000,
2479
- }),
2480
- ]);
2481
- }
2482
- };
2483
- const filterUtils = {
2484
- openFilterPane,
2485
- clearFiltersFromActionBlock,
2486
- };
2487
-
2488
- class TeamMembers {
2489
- page;
2490
- neetoPlaywrightUtilities;
2491
- t;
2492
- constructor({ page, neetoPlaywrightUtilities, }) {
2493
- this.page = page;
2494
- this.neetoPlaywrightUtilities = neetoPlaywrightUtilities;
2495
- this.t = getI18nInstance().t;
2496
- }
2497
- navigateToTeamMembers = async () => {
2498
- await this.neetoPlaywrightUtilities.waitForPageLoad();
2499
- await this.page.getByTestId(MEMBER_SELECTORS.membersTab).click();
2500
- await this.neetoPlaywrightUtilities.waitForPageLoad();
2501
- };
2502
- openMemberPane = async () => {
2503
- await this.page.getByTestId(MEMBER_SELECTORS.newButton).click();
2504
- await this.neetoPlaywrightUtilities.waitForPageLoad();
2505
- const continueButton = this.page.getByTestId(MEMBER_SELECTORS.continueButton);
2506
- await expect(continueButton).toBeVisible();
2507
- await expect(continueButton.getByTestId(COMMON_SELECTORS.uiSpinner)).toBeHidden({ timeout: 35_000 });
2508
- };
2509
- fillMemberForm = async (emails, role) => {
2510
- await this.page
2511
- .getByTestId(MEMBER_FORM_SELECTORS.emailTextField)
2512
- .fill(emails.join(", "));
2513
- await this.page.keyboard.press("Enter");
2514
- role &&
2515
- (await this.neetoPlaywrightUtilities.toggleElement({
2516
- locator: this.page.getByTestId(MEMBER_SELECTORS.roleLabel(role)),
2517
- }));
2518
- const continueBtn = this.page.getByTestId(MEMBER_SELECTORS.continueButton);
2519
- await continueBtn.click();
2520
- if (IS_DEV_ENV)
2521
- return;
2522
- await this.page
2523
- .getByTestId(COMMON_SELECTORS.paneBody)
2524
- .getByTestId(COMMON_SELECTORS.checkboxLabel)
2525
- .click();
2526
- await continueBtn.click();
2527
- };
2528
- addMemberViaUI = async ({ emails = [faker.internet.exampleEmail()], role = "standard", } = {}) => {
2529
- await this.openMemberPane();
2530
- await this.fillMemberForm(emails, role);
2531
- await this.submit();
2532
- await this.neetoPlaywrightUtilities.waitForPageLoad();
2533
- };
2534
- submit = async () => {
2535
- const pane = this.page.getByTestId(COMMON_SELECTORS.paneBody);
2536
- const submitBtn = this.page.getByTestId(MEMBER_SELECTORS.submitButton);
2537
- const buttonSpinner = submitBtn.getByTestId(COMMON_SELECTORS.uiSpinner);
2538
- await expect(submitBtn).toBeVisible({ timeout: 10_000 });
2539
- await expect(async () => {
2540
- if (await pane.isHidden())
2541
- return;
2542
- (await buttonSpinner.isHidden()) && (await submitBtn.click());
2543
- await expect(buttonSpinner).toBeHidden({ timeout: 10_000 });
2544
- await expect(pane).toBeHidden();
2545
- }).toPass({ timeout: 60_000 });
2546
- await this.neetoPlaywrightUtilities.verifyToast();
2547
- };
2548
- searchAndVerifyMemberByEmail = async ({ email }) => {
2549
- await this.neetoPlaywrightUtilities.waitForPageLoad();
2550
- await this.page.getByTestId(MEMBER_SELECTORS.searchTextField).fill(email);
2551
- const emailSubstr = email.length > 20 ? email.substring(0, 20) : email;
2552
- await expect(this.page.getByTestId(NEETO_FILTERS_SELECTORS.searchTermBlock)).toContainText(emailSubstr);
2553
- await this.neetoPlaywrightUtilities.waitForPageLoad();
2554
- await expect(this.page.locator(COMMON_SELECTORS.tableSpinner)).toBeHidden();
2555
- await expect(this.page.getByRole("cell", { name: email, exact: true })).toBeVisible();
2556
- };
2557
- editMemberViaUI = async ({ email = "", firstName = "", lastName = "", role = "standard", } = {}) => {
2558
- await this.page.getByTestId(MEMBER_SELECTORS.dropDownIcon).click();
2559
- await this.page.getByTestId(MEMBER_SELECTORS.editButton).click();
2560
- await this.neetoPlaywrightUtilities.waitForPageLoad();
2561
- isPresent(email) &&
2562
- (await this.page
2563
- .getByTestId(MEMBER_FORM_SELECTORS.emailInput)
2564
- .fill(email));
2565
- isPresent(firstName) &&
2566
- (await this.page
2567
- .getByTestId(MEMBER_FORM_SELECTORS.firstNameTextField)
2568
- .fill(firstName));
2569
- isPresent(lastName) &&
2570
- (await this.page
2571
- .getByTestId(MEMBER_FORM_SELECTORS.lastNameTextField)
2572
- .fill(lastName));
2573
- await this.neetoPlaywrightUtilities.toggleElement({
2574
- locator: this.page.getByTestId(MEMBER_SELECTORS.roleLabel(role)),
2575
- });
2576
- await this.submit();
2577
- await this.neetoPlaywrightUtilities.waitForPageLoad();
2578
- };
2579
- removeMemberViaUI = async (parentLocator = this.page) => {
2580
- await parentLocator.getByTestId(MEMBER_SELECTORS.dropDownIcon).click();
2581
- await this.page.getByTestId(MEMBER_SELECTORS.removeMember).click();
2582
- await this.page
2583
- .getByTestId(COMMON_SELECTORS.alertModalSubmitButton)
2584
- .click();
2585
- await this.neetoPlaywrightUtilities.verifyToast();
2586
- await this.neetoPlaywrightUtilities.waitForPageLoad();
2587
- };
2588
- filterMembersByMultiSelect = async ({ selectedOptions = [], selectContainerLocator = NEETO_FILTERS_SELECTORS.roleSelectContainer, }) => {
2589
- await this.page
2590
- .getByTestId(selectContainerLocator)
2591
- .getByTestId(COMMON_SELECTORS.actionSelectIndicator)
2592
- .click();
2593
- for (const option of selectedOptions) {
2594
- await this.page
2595
- .getByTestId(COMMON_SELECTORS.selectOption(option))
2596
- .click();
2597
- }
2598
- await this.neetoPlaywrightUtilities.waitForPageLoad();
2599
- await expect(this.page.locator(COMMON_SELECTORS.tableSpinner)).toBeHidden();
2600
- };
2601
- filterMembers = async ({ email = { id: "", condition: "Is" }, roles = [], name = "", }) => {
2602
- await filterUtils.clearFiltersFromActionBlock(this.page);
2603
- await filterUtils.openFilterPane(this.page);
2604
- if (isPresent(email.id)) {
2605
- await this.page
2606
- .getByTestId(NEETO_FILTERS_SELECTORS.emailSelectContainer)
2607
- .getByTestId(COMMON_SELECTORS.actionSelectIndicator)
2608
- .click();
2609
- await this.page
2610
- .getByTestId(COMMON_SELECTORS.selectOption(email.condition))
2611
- .click();
2612
- await this.page
2613
- .getByTestId(NEETO_FILTERS_SELECTORS.filtersEmailFilter)
2614
- .fill(email.id);
2615
- }
2616
- isPresent(name) &&
2617
- (await this.page
2618
- .getByTestId(NEETO_FILTERS_SELECTORS.neetoFiltersNameFilterField)
2619
- .fill(name));
2620
- isPresent(roles) &&
2621
- (await this.filterMembersByMultiSelect({ selectedOptions: roles }));
2622
- await this.applyFilter();
2623
- };
2624
- getMemberRowByName = (name) => this.page.getByRole("row").filter({
2625
- has: this.page.getByTestId(MEMBER_SELECTORS.memberNameCell(name)),
2626
- });
2627
- takeActionOnMembers = async ({ names = [], state, action, }) => {
2628
- if (isPresent(names)) {
2629
- for (const name of names) {
2630
- await this.getMemberRowByName(name).getByRole("checkbox").click();
2631
- }
2632
- }
2633
- else {
2634
- await this.page
2635
- .getByRole("columnheader", { name: MEMBER_TEXTS.selectAll })
2636
- .click();
2637
- }
2638
- await this.page.getByTestId(COMMON_SELECTORS.takeActionDropdown).click();
2639
- if (isPresent(state)) {
2640
- await this.page
2641
- .getByTestId(MEMBER_SELECTORS.takeActionStateOption(state))
2642
- .click();
2643
- }
2644
- else {
2645
- await this.page
2646
- .getByRole("button", { name: action?.actionButtonText })
2647
- .click();
2648
- await this.page
2649
- .getByRole("button", { name: action?.valueButtonText })
2650
- .click();
2651
- }
2652
- await this.page
2653
- .getByTestId(COMMON_SELECTORS.alertModalSubmitButton)
2654
- .click();
2655
- await this.neetoPlaywrightUtilities.verifyToast();
2656
- await this.neetoPlaywrightUtilities.waitForPageLoad();
2657
- };
2658
- performColumnAction = async ({ columnName = "Name", actionButtonText = "Ascending", } = {}) => {
2659
- await this.page
2660
- .getByTestId(MEMBER_SELECTORS.teamMembersTable)
2661
- .getByLabel(columnName)
2662
- .getByTestId(TABLE_SELECTORS.columnMenuButton)
2663
- .click();
2664
- await this.page.getByRole("button", { name: actionButtonText }).click();
2665
- await this.neetoPlaywrightUtilities.waitForPageLoad();
2666
- await expect(this.page.locator(COMMON_SELECTORS.tableSpinner)).toBeHidden();
2667
- };
2668
- toggleMemberColumns = async ({ columns = [], bulkAction, }) => {
2669
- await expect(async () => {
2670
- await this.page
2671
- .getByTestId(COMMON_SELECTORS.columnsDropdownButton)
2672
- .click();
2673
- await expect(this.page.getByTestId(COMMON_SELECTORS.columnsSearchInput)).toBeVisible();
2674
- }).toPass({ timeout: 15_000 });
2675
- if (isPresent(bulkAction)) {
2676
- await this.page
2677
- .getByTestId(COMMON_SELECTORS.columnVisibilityBtn(bulkAction === "hide" ? "hide-all" : "reset"))
2678
- .click();
2679
- }
2680
- else {
2681
- for (const column of columns) {
2682
- await this.page
2683
- .getByTestId(COMMON_SELECTORS.columnsSearchInput)
2684
- .fill(column);
2685
- const columnCheckbox = this.page
2686
- .getByTestId(COMMON_SELECTORS.nuiCheckboxContainer)
2687
- .filter({ hasText: column })
2688
- .getByTestId(MEMBER_SELECTORS.columnCheckBox);
2689
- const isChecked = await columnCheckbox.isChecked();
2690
- await columnCheckbox.click();
2691
- await expect(columnCheckbox).toBeChecked({ checked: !isChecked });
2692
- }
2693
- }
2694
- await this.page.getByTestId(COMMON_SELECTORS.columnsDropdownButton).click();
2695
- };
2696
- verifyMemberInTable = ({ name, email }) => expect(this.getMemberRowByName(name).getByRole("cell", {
2697
- name: email,
2698
- exact: true,
2699
- })).toBeVisible();
2700
- applyFilter = async () => {
2701
- await expect(this.page.getByTestId(NEETO_FILTERS_SELECTORS.neetoFiltersBarClearButton)).toBeVisible();
2702
- await this.neetoPlaywrightUtilities.waitForPageLoad();
2703
- await expect(this.page.locator(COMMON_SELECTORS.tableSpinner)).toBeHidden({
2704
- timeout: 30_000,
2705
- });
2706
- await this.page
2707
- .getByTestId(NEETO_FILTERS_SELECTORS.filterDoneButton)
2708
- .click();
2709
- };
2710
- exportDetails = async (fileType, adminEmail) => {
2711
- await this.page.getByTestId(MEMBER_SELECTORS.downloadButton).click();
2712
- await expect(this.page.getByTestId(MEMBER_SELECTORS.exportMemberHeading)).toHaveText(this.t("neetoTeamMembers.exportPane.title"));
2713
- await this.page
2714
- .getByTestId(MEMBER_SELECTORS.downloadAsRadioItem(fileType))
2715
- .check();
2716
- const exportStartTime = new Date();
2717
- await this.page.getByTestId(MEMBER_SELECTORS.exportSubmitBtn).click();
2718
- await this.neetoPlaywrightUtilities.verifyToast({
2719
- message: this.t("toastr.success.exportMembers", { email: adminEmail }),
2720
- });
2721
- return exportStartTime;
2722
- };
2723
- verifyNoDataTitle = async (email) => {
2724
- await this.neetoPlaywrightUtilities.waitForPageLoad();
2725
- await this.page.getByTestId(MEMBER_SELECTORS.searchTextField).fill(email);
2726
- await expect(this.page.getByTestId(NEETO_FILTERS_SELECTORS.neetoFiltersBarClearButton)).toBeVisible();
2727
- await expect(this.page.getByTestId(COMMON_SELECTORS.noDataTitle)).toBeVisible({ timeout: 10_000 });
2728
- await filterUtils.clearFiltersFromActionBlock(this.page);
2729
- };
2730
- }
2731
-
2732
2468
  const fillCredentialsAndSubmit = async ({ page, loginPath, email = CREDENTIALS.email, }) => {
2733
2469
  loginPath && (await page.goto(loginPath, { timeout: 30_000 }));
2734
2470
  await page.waitForLoadState("load", { timeout: 35_000 });
@@ -18315,18 +18051,23 @@ class Health {
18315
18051
  neetoPlaywrightUtilities;
18316
18052
  email = process.env.PLAYWRIGHT_PRODUCTION_EMAIL;
18317
18053
  loginPage;
18318
- teamMembers;
18319
18054
  constructor(page, neetoPlaywrightUtilities) {
18320
18055
  this.page = page;
18321
18056
  this.neetoPlaywrightUtilities = neetoPlaywrightUtilities;
18322
18057
  if (!process.env.PLAYWRIGHT_PRODUCTION_EMAIL ||
18323
- !process.env.PLAYWRIGHT_PRODUCTION_2FA_SECRET_KEY ||
18324
- !process.env.FASTMAIL_DOMAIN_NAME) {
18325
- throw new Error("One or more required env variables are missing: PLAYWRIGHT_PRODUCTION_EMAIL, PLAYWRIGHT_PRODUCTION_2FA_SECRET_KEY, FASTMAIL_DOMAIN_NAME");
18058
+ !process.env.PLAYWRIGHT_PRODUCTION_2FA_SECRET_KEY) {
18059
+ throw new Error("One or more required env variables are missing: PLAYWRIGHT_PRODUCTION_EMAIL, PLAYWRIGHT_PRODUCTION_2FA_SECRET_KEY");
18326
18060
  }
18327
18061
  this.loginPage = new OrganizationPage(page, neetoPlaywrightUtilities);
18328
- this.teamMembers = new TeamMembers({ page, neetoPlaywrightUtilities });
18329
18062
  }
18063
+ getProductSpecificRolesRoute = () => {
18064
+ const { hostname } = new URL(process.env.PLAYWRIGHT_PRODUCTION_BASE_URL);
18065
+ const domain = hostname
18066
+ .split(".")
18067
+ .find(domain => domain.startsWith("neeto"));
18068
+ const product = domain.replace(/^neeto/, "").toLowerCase();
18069
+ return PRODUCT_ROLES_ROUTE_MAP[product] ?? ROUTES.adminPanel.roles;
18070
+ };
18330
18071
  loginToApp = async (route = ROUTES.adminPanel.index) => {
18331
18072
  await this.page.goto(route);
18332
18073
  await this.neetoPlaywrightUtilities.waitForPageLoad();
@@ -18340,25 +18081,30 @@ class Health {
18340
18081
  verifyAppIsLive = async (customSteps) => {
18341
18082
  await test.step("1: Login to the application", () => this.loginToApp());
18342
18083
  await test.step("2: Verify application UI", this.verifyAppUI);
18343
- await test.step("3: Navigate to team members page", async () => {
18344
- await this.page.goto(ROUTES.members);
18084
+ await test.step("3: Navigate to roles page", async () => {
18085
+ await this.page.goto(this.getProductSpecificRolesRoute());
18345
18086
  await this.neetoPlaywrightUtilities.waitForFloatingMenu();
18346
18087
  await this.neetoPlaywrightUtilities.waitForPageLoad();
18347
18088
  });
18348
- await test.step("4: Verify adding & removing members", async () => {
18349
- const email = faker.internet
18350
- .email({ provider: process.env.FASTMAIL_DOMAIN_NAME })
18351
- .toLowerCase();
18352
- const memberRow = this.page.getByRole("row").filter({
18353
- has: this.page.getByRole("cell", { name: email, exact: true }),
18089
+ await test.step("4: Verify adding & removing roles", async () => {
18090
+ const roleName = faker.string.alphanumeric(8);
18091
+ await this.page.getByTestId(ROLES_SELECTORS.newButton).click();
18092
+ await this.page.getByTestId(ROLES_SELECTORS.nameTextField).fill(roleName);
18093
+ await this.neetoPlaywrightUtilities.clickButtonAndAwaitLoad({
18094
+ locator: this.page.getByTestId(ROLES_SELECTORS.proceedButton),
18354
18095
  });
18355
- await this.teamMembers.openMemberPane();
18356
- await this.teamMembers.fillMemberForm([email]);
18357
- await this.teamMembers.submit();
18358
- await this.neetoPlaywrightUtilities.waitForPageLoad();
18359
- await expect(memberRow).toBeVisible();
18360
- await this.teamMembers.removeMemberViaUI(memberRow);
18361
- await expect(memberRow).toBeHidden();
18096
+ await this.neetoPlaywrightUtilities.verifyToast();
18097
+ const roleHeaderDropDown = this.page
18098
+ .getByTestId(ROLES_SELECTORS.tableHeaderRoleName)
18099
+ .filter({ hasText: roleName })
18100
+ .getByTestId(ROLES_SELECTORS.dropDownIcon);
18101
+ await roleHeaderDropDown.click();
18102
+ await this.page.getByTestId(ROLES_SELECTORS.deleteRoleButton).click();
18103
+ await this.neetoPlaywrightUtilities.clickButtonAndAwaitLoad({
18104
+ locator: this.page.getByTestId(COMMON_SELECTORS.alertModalSubmitButton),
18105
+ });
18106
+ await this.neetoPlaywrightUtilities.verifyToast();
18107
+ await expect(roleHeaderDropDown).toBeHidden({ timeout: 10_000 });
18362
18108
  });
18363
18109
  await customSteps?.();
18364
18110
  };
@@ -121600,6 +121346,278 @@ class ImageUploader {
121600
121346
  };
121601
121347
  }
121602
121348
 
121349
+ const openFilterPane = async (page) => {
121350
+ await page
121351
+ .getByTestId(NEETO_FILTERS_SELECTORS.filterButton)
121352
+ .or(page.getByTestId(COMMON_SELECTORS.filterButon))
121353
+ .click();
121354
+ await expect(page.getByTestId(COMMON_SELECTORS.paneHeader)).toHaveText(getI18nInstance().t("neetoFilters.common.filters"));
121355
+ };
121356
+ const clearFiltersFromActionBlock = async (page) => {
121357
+ const isClearButtonVisible = await page
121358
+ .getByTestId(NEETO_FILTERS_SELECTORS.neetoFiltersBarClearButton)
121359
+ .isVisible();
121360
+ if (isClearButtonVisible) {
121361
+ await page
121362
+ .getByTestId(NEETO_FILTERS_SELECTORS.neetoFiltersBarClearButton)
121363
+ .click();
121364
+ await Promise.all([
121365
+ expect(page.getByTestId(NEETO_FILTERS_SELECTORS.neetoFiltersBarClearButton)).toBeHidden(),
121366
+ expect(page.locator(COMMON_SELECTORS.tableSpinner)).toHaveCount(0, {
121367
+ timeout: 15_000,
121368
+ }),
121369
+ ]);
121370
+ }
121371
+ };
121372
+ const filterUtils = {
121373
+ openFilterPane,
121374
+ clearFiltersFromActionBlock,
121375
+ };
121376
+
121377
+ class TeamMembers {
121378
+ page;
121379
+ neetoPlaywrightUtilities;
121380
+ t;
121381
+ constructor({ page, neetoPlaywrightUtilities, }) {
121382
+ this.page = page;
121383
+ this.neetoPlaywrightUtilities = neetoPlaywrightUtilities;
121384
+ this.t = getI18nInstance().t;
121385
+ }
121386
+ navigateToTeamMembers = async () => {
121387
+ await this.neetoPlaywrightUtilities.waitForPageLoad();
121388
+ await this.page.getByTestId(MEMBER_SELECTORS.membersTab).click();
121389
+ await this.neetoPlaywrightUtilities.waitForPageLoad();
121390
+ };
121391
+ openMemberPane = async () => {
121392
+ await this.page.getByTestId(MEMBER_SELECTORS.newButton).click();
121393
+ await this.neetoPlaywrightUtilities.waitForPageLoad();
121394
+ const continueButton = this.page.getByTestId(MEMBER_SELECTORS.continueButton);
121395
+ await expect(continueButton).toBeVisible();
121396
+ await expect(continueButton.getByTestId(COMMON_SELECTORS.uiSpinner)).toBeHidden({ timeout: 35_000 });
121397
+ };
121398
+ fillMemberForm = async (emails, role) => {
121399
+ await this.page
121400
+ .getByTestId(MEMBER_FORM_SELECTORS.emailTextField)
121401
+ .fill(emails.join(", "));
121402
+ await this.page.keyboard.press("Enter");
121403
+ role &&
121404
+ (await this.neetoPlaywrightUtilities.toggleElement({
121405
+ locator: this.page.getByTestId(MEMBER_SELECTORS.roleLabel(role)),
121406
+ }));
121407
+ const continueBtn = this.page.getByTestId(MEMBER_SELECTORS.continueButton);
121408
+ await continueBtn.click();
121409
+ if (IS_DEV_ENV)
121410
+ return;
121411
+ await this.page
121412
+ .getByTestId(COMMON_SELECTORS.paneBody)
121413
+ .getByTestId(COMMON_SELECTORS.checkboxLabel)
121414
+ .click();
121415
+ await continueBtn.click();
121416
+ };
121417
+ addMemberViaUI = async ({ emails = [faker.internet.exampleEmail()], role = "standard", } = {}) => {
121418
+ await this.openMemberPane();
121419
+ await this.fillMemberForm(emails, role);
121420
+ await this.submit();
121421
+ await this.neetoPlaywrightUtilities.waitForPageLoad();
121422
+ };
121423
+ submit = async () => {
121424
+ const pane = this.page.getByTestId(COMMON_SELECTORS.paneBody);
121425
+ const submitBtn = this.page.getByTestId(MEMBER_SELECTORS.submitButton);
121426
+ const buttonSpinner = submitBtn.getByTestId(COMMON_SELECTORS.uiSpinner);
121427
+ await expect(submitBtn).toBeVisible({ timeout: 10_000 });
121428
+ await expect(async () => {
121429
+ if (await pane.isHidden())
121430
+ return;
121431
+ (await buttonSpinner.isHidden()) && (await submitBtn.click());
121432
+ await expect(buttonSpinner).toBeHidden({ timeout: 10_000 });
121433
+ await expect(pane).toBeHidden();
121434
+ }).toPass({ timeout: 60_000 });
121435
+ await this.neetoPlaywrightUtilities.verifyToast();
121436
+ };
121437
+ searchAndVerifyMemberByEmail = async ({ email }) => {
121438
+ await this.neetoPlaywrightUtilities.waitForPageLoad();
121439
+ await this.page.getByTestId(MEMBER_SELECTORS.searchTextField).fill(email);
121440
+ const emailSubstr = email.length > 20 ? email.substring(0, 20) : email;
121441
+ await expect(this.page.getByTestId(NEETO_FILTERS_SELECTORS.searchTermBlock)).toContainText(emailSubstr);
121442
+ await this.neetoPlaywrightUtilities.waitForPageLoad();
121443
+ await expect(this.page.locator(COMMON_SELECTORS.tableSpinner)).toBeHidden();
121444
+ await expect(this.page.getByRole("cell", { name: email, exact: true })).toBeVisible();
121445
+ };
121446
+ editMemberViaUI = async ({ email = "", firstName = "", lastName = "", role = "standard", } = {}) => {
121447
+ await this.page.getByTestId(MEMBER_SELECTORS.dropDownIcon).click();
121448
+ await this.page.getByTestId(MEMBER_SELECTORS.editButton).click();
121449
+ await this.neetoPlaywrightUtilities.waitForPageLoad();
121450
+ isPresent(email) &&
121451
+ (await this.page
121452
+ .getByTestId(MEMBER_FORM_SELECTORS.emailInput)
121453
+ .fill(email));
121454
+ isPresent(firstName) &&
121455
+ (await this.page
121456
+ .getByTestId(MEMBER_FORM_SELECTORS.firstNameTextField)
121457
+ .fill(firstName));
121458
+ isPresent(lastName) &&
121459
+ (await this.page
121460
+ .getByTestId(MEMBER_FORM_SELECTORS.lastNameTextField)
121461
+ .fill(lastName));
121462
+ await this.neetoPlaywrightUtilities.toggleElement({
121463
+ locator: this.page.getByTestId(MEMBER_SELECTORS.roleLabel(role)),
121464
+ });
121465
+ await this.submit();
121466
+ await this.neetoPlaywrightUtilities.waitForPageLoad();
121467
+ };
121468
+ removeMemberViaUI = async (parentLocator = this.page) => {
121469
+ await parentLocator.getByTestId(MEMBER_SELECTORS.dropDownIcon).click();
121470
+ await this.page.getByTestId(MEMBER_SELECTORS.removeMember).click();
121471
+ await this.page
121472
+ .getByTestId(COMMON_SELECTORS.alertModalSubmitButton)
121473
+ .click();
121474
+ await this.neetoPlaywrightUtilities.verifyToast();
121475
+ await this.neetoPlaywrightUtilities.waitForPageLoad();
121476
+ };
121477
+ filterMembersByMultiSelect = async ({ selectedOptions = [], selectContainerLocator = NEETO_FILTERS_SELECTORS.roleSelectContainer, }) => {
121478
+ await this.page
121479
+ .getByTestId(selectContainerLocator)
121480
+ .getByTestId(COMMON_SELECTORS.actionSelectIndicator)
121481
+ .click();
121482
+ for (const option of selectedOptions) {
121483
+ await this.page
121484
+ .getByTestId(COMMON_SELECTORS.selectOption(option))
121485
+ .click();
121486
+ }
121487
+ await this.neetoPlaywrightUtilities.waitForPageLoad();
121488
+ await expect(this.page.locator(COMMON_SELECTORS.tableSpinner)).toBeHidden();
121489
+ };
121490
+ filterMembers = async ({ email = { id: "", condition: "Is" }, roles = [], name = "", }) => {
121491
+ await filterUtils.clearFiltersFromActionBlock(this.page);
121492
+ await filterUtils.openFilterPane(this.page);
121493
+ if (isPresent(email.id)) {
121494
+ await this.page
121495
+ .getByTestId(NEETO_FILTERS_SELECTORS.emailSelectContainer)
121496
+ .getByTestId(COMMON_SELECTORS.actionSelectIndicator)
121497
+ .click();
121498
+ await this.page
121499
+ .getByTestId(COMMON_SELECTORS.selectOption(email.condition))
121500
+ .click();
121501
+ await this.page
121502
+ .getByTestId(NEETO_FILTERS_SELECTORS.filtersEmailFilter)
121503
+ .fill(email.id);
121504
+ }
121505
+ isPresent(name) &&
121506
+ (await this.page
121507
+ .getByTestId(NEETO_FILTERS_SELECTORS.neetoFiltersNameFilterField)
121508
+ .fill(name));
121509
+ isPresent(roles) &&
121510
+ (await this.filterMembersByMultiSelect({ selectedOptions: roles }));
121511
+ await this.applyFilter();
121512
+ };
121513
+ getMemberRowByName = (name) => this.page.getByRole("row").filter({
121514
+ has: this.page.getByTestId(MEMBER_SELECTORS.memberNameCell(name)),
121515
+ });
121516
+ takeActionOnMembers = async ({ names = [], state, action, }) => {
121517
+ if (isPresent(names)) {
121518
+ for (const name of names) {
121519
+ await this.getMemberRowByName(name).getByRole("checkbox").click();
121520
+ }
121521
+ }
121522
+ else {
121523
+ await this.page
121524
+ .getByRole("columnheader", { name: MEMBER_TEXTS.selectAll })
121525
+ .click();
121526
+ }
121527
+ await this.page.getByTestId(COMMON_SELECTORS.takeActionDropdown).click();
121528
+ if (isPresent(state)) {
121529
+ await this.page
121530
+ .getByTestId(MEMBER_SELECTORS.takeActionStateOption(state))
121531
+ .click();
121532
+ }
121533
+ else {
121534
+ await this.page
121535
+ .getByRole("button", { name: action?.actionButtonText })
121536
+ .click();
121537
+ await this.page
121538
+ .getByRole("button", { name: action?.valueButtonText })
121539
+ .click();
121540
+ }
121541
+ await this.page
121542
+ .getByTestId(COMMON_SELECTORS.alertModalSubmitButton)
121543
+ .click();
121544
+ await this.neetoPlaywrightUtilities.verifyToast();
121545
+ await this.neetoPlaywrightUtilities.waitForPageLoad();
121546
+ };
121547
+ performColumnAction = async ({ columnName = "Name", actionButtonText = "Ascending", } = {}) => {
121548
+ await this.page
121549
+ .getByTestId(MEMBER_SELECTORS.teamMembersTable)
121550
+ .getByLabel(columnName)
121551
+ .getByTestId(TABLE_SELECTORS.columnMenuButton)
121552
+ .click();
121553
+ await this.page.getByRole("button", { name: actionButtonText }).click();
121554
+ await this.neetoPlaywrightUtilities.waitForPageLoad();
121555
+ await expect(this.page.locator(COMMON_SELECTORS.tableSpinner)).toBeHidden();
121556
+ };
121557
+ toggleMemberColumns = async ({ columns = [], bulkAction, }) => {
121558
+ await expect(async () => {
121559
+ await this.page
121560
+ .getByTestId(COMMON_SELECTORS.columnsDropdownButton)
121561
+ .click();
121562
+ await expect(this.page.getByTestId(COMMON_SELECTORS.columnsSearchInput)).toBeVisible();
121563
+ }).toPass({ timeout: 15_000 });
121564
+ if (isPresent(bulkAction)) {
121565
+ await this.page
121566
+ .getByTestId(COMMON_SELECTORS.columnVisibilityBtn(bulkAction === "hide" ? "hide-all" : "reset"))
121567
+ .click();
121568
+ }
121569
+ else {
121570
+ for (const column of columns) {
121571
+ await this.page
121572
+ .getByTestId(COMMON_SELECTORS.columnsSearchInput)
121573
+ .fill(column);
121574
+ const columnCheckbox = this.page
121575
+ .getByTestId(COMMON_SELECTORS.nuiCheckboxContainer)
121576
+ .filter({ hasText: column })
121577
+ .getByTestId(MEMBER_SELECTORS.columnCheckBox);
121578
+ const isChecked = await columnCheckbox.isChecked();
121579
+ await columnCheckbox.click();
121580
+ await expect(columnCheckbox).toBeChecked({ checked: !isChecked });
121581
+ }
121582
+ }
121583
+ await this.page.getByTestId(COMMON_SELECTORS.columnsDropdownButton).click();
121584
+ };
121585
+ verifyMemberInTable = ({ name, email }) => expect(this.getMemberRowByName(name).getByRole("cell", {
121586
+ name: email,
121587
+ exact: true,
121588
+ })).toBeVisible();
121589
+ applyFilter = async () => {
121590
+ await expect(this.page.getByTestId(NEETO_FILTERS_SELECTORS.neetoFiltersBarClearButton)).toBeVisible();
121591
+ await this.neetoPlaywrightUtilities.waitForPageLoad();
121592
+ await expect(this.page.locator(COMMON_SELECTORS.tableSpinner)).toBeHidden({
121593
+ timeout: 30_000,
121594
+ });
121595
+ await this.page
121596
+ .getByTestId(NEETO_FILTERS_SELECTORS.filterDoneButton)
121597
+ .click();
121598
+ };
121599
+ exportDetails = async (fileType, adminEmail) => {
121600
+ await this.page.getByTestId(MEMBER_SELECTORS.downloadButton).click();
121601
+ await expect(this.page.getByTestId(MEMBER_SELECTORS.exportMemberHeading)).toHaveText(this.t("neetoTeamMembers.exportPane.title"));
121602
+ await this.page
121603
+ .getByTestId(MEMBER_SELECTORS.downloadAsRadioItem(fileType))
121604
+ .check();
121605
+ const exportStartTime = new Date();
121606
+ await this.page.getByTestId(MEMBER_SELECTORS.exportSubmitBtn).click();
121607
+ await this.neetoPlaywrightUtilities.verifyToast({
121608
+ message: this.t("toastr.success.exportMembers", { email: adminEmail }),
121609
+ });
121610
+ return exportStartTime;
121611
+ };
121612
+ verifyNoDataTitle = async (email) => {
121613
+ await this.neetoPlaywrightUtilities.waitForPageLoad();
121614
+ await this.page.getByTestId(MEMBER_SELECTORS.searchTextField).fill(email);
121615
+ await expect(this.page.getByTestId(NEETO_FILTERS_SELECTORS.neetoFiltersBarClearButton)).toBeVisible();
121616
+ await expect(this.page.getByTestId(COMMON_SELECTORS.noDataTitle)).toBeVisible({ timeout: 10_000 });
121617
+ await filterUtils.clearFiltersFromActionBlock(this.page);
121618
+ };
121619
+ }
121620
+
121603
121621
  dayjs.extend(customParseFormat);
121604
121622
  class ApiKeysPage {
121605
121623
  page;
@@ -127092,5 +127110,5 @@ const definePlaywrightConfig = (overrides) => {
127092
127110
  });
127093
127111
  };
127094
127112
 
127095
- export { ACTIONS, ADMIN_PANEL_SELECTORS, ALL_RESOURCES, ANALYTICS_RESOURCES, API_KEYS_SELECTORS, API_ROUTES, APP_RESOURCES, AUDIT_LOGS_SELECTORS, ApiKeysApi, ApiKeysPage, AuditLogsPage, BASE_URL, CALENDAR_LABELS, CERTIFICATE_LIMIT_EXCEEDED_MESSAGE, CERTIFICATE_LIMIT_EXCEEDED_REGEXP, CHANGELOG_WIDGET_SELECTORS, CHAT_WIDGET_SELECTORS, CHAT_WIDGET_TEXTS, COLOR, COMMON_SELECTORS, COMMON_TEXTS, COMMUNITY_TEXTS, CREDENTIALS, CURRENT_TIME_RANGES, CUSTOM_DOMAIN_SELECTORS, CUSTOM_DOMAIN_SUFFIX, ColorPickerUtils, CustomCommands, CustomDomainApi, CustomDomainPage, DATE_FORMATS, DATE_PICKER_SELECTORS, DATE_RANGES, DATE_TEXTS, DEFAULT_WEBHOOKS_RESPONSE_TEXT, DESCRIPTION_EDITOR_TEXTS, EMBED_SELECTORS, EMOJI_LABEL, EMPTY_STORAGE_STATE, ENGAGE_TEXTS, ENVIRONMENT, EXAMPLE_URL, EXPANDED_FONT_SIZE, EXPORT_FILE_TYPES, EditorPage, EmailDeliveryUtils, EmbedBase, FILE_FORMATS, FONTS_RESOURCES, FONT_SIZE_SELECTORS, FROM_EMAIL_ENV_KEYS, GLOBAL_TRANSLATIONS_PATTERN, GOOGLE_ANALYTICS_SELECTORS, GOOGLE_CALENDAR_DATE_FORMAT, GOOGLE_LOGIN_SELECTORS, GOOGLE_LOGIN_TEXTS, GOOGLE_SHEETS_SELECTORS, GooglePage, HELP_CENTER_ROUTES, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IPRestrictionsPage, IP_RESTRICTIONS_SELECTORS, IS_CI, IS_DEV_ENV, IS_STAGING_ENV, ImageUploader, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, KEYBOARD_SHORTCUT_TEST_CASES, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MICROSOFT_LOGIN_SELECTORS, MICROSOFT_LOGIN_TEXTS, MailerUtils, Member, MemberApis, MicrosoftPage, NEETO_AUTH_BASE_URL, NEETO_EDITOR_SELECTORS, NEETO_FILTERS_SELECTORS, NEETO_IMAGE_UPLOADER_SELECTORS, NEETO_ROUTES, NEETO_SEO_SELECTORS, NEETO_TEXT_MODIFIER_SELECTORS, NeetoAuthServer, NeetoChatWidget, NeetoEmailDeliveryApi, NeetoTowerApi, ONBOARDING_SELECTORS, ORGANIZATION_TEXTS, OTP_EMAIL_PATTERN, OrganizationPage, PAST_TIME_RANGES, PHONE_NUMBER_FORMATS, PLURAL, PROFILE_LINKS, PROFILE_SECTION_SELECTORS, PROJECT_NAMES, PROJECT_TRANSLATIONS_PATH, ROLES_SELECTORS, ROUTES, RailsEmailApiClient, RailsEmailUtils, RoleApis, RolesPage, SIGNUP_SELECTORS, SINGULAR, SLACK_DATA_QA_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STATUS_TEXTS, STORAGE_STATE, SecurityApi, SidebarSection, SlackApi, SlackPage, TABLE_SELECTORS, TAB_SELECTORS, TAGS_SELECTORS, TEAM_MEMBER_TEXTS, TEXT_MODIFIER_ROLES, TEXT_MODIFIER_SELECTORS, TEXT_MODIFIER_TAGS, THANK_YOU_SELECTORS, THEMES_SELECTORS, THEMES_TEXTS, THIRD_PARTY_RESOURCES, THIRD_PARTY_ROUTES, TIME_RANGES, TOASTR_MESSAGES, TWILIO_SELECTORS, TagsApi, TagsPage, TeamMembers, ThankYouApi, ThankYouPage, TwilioApi, USER_AGENTS, WEBHOOK_SELECTORS, WebhookSiteApi, WebhooksPage, ZAPIER_LIMIT_EXHAUSTED_MESSAGE, ZAPIER_SELECTORS, ZAPIER_TEST_EMAIL, ZAPIER_WEB_TEXTS, ZapierPage, baseURLGenerator, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, createOrganizationViaRake, currencyUtils, dataQa, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, fillCredentialsAndSubmit, filterUtils, generatePhoneNumber, generatePhoneNumberDetails, generateRandomBypassEmail, generateRandomFile, generateStagingData, getByDataQA, getClipboardContent, getFormattedPhoneNumber, getFullUrl, getGlobalUserProps, getGlobalUserState, getImagePathAndName, getIsoCodeFromPhoneCode, getListCount, globalShortcuts, grantClipboardPermissions, hexToRGB, hexToRGBA, i18nFixture, imageRegex, initializeCredentials, initializeTestData, initializeTotp, isGithubIssueOpen, joinHyphenCase, joinString, login, loginWithoutSSO, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, stealth as stealthTest, tableUtils, toCamelCase, updateCredentials, warmup, withCookieCache, writeDataToFile };
127113
+ export { ACTIONS, ADMIN_PANEL_SELECTORS, ALL_RESOURCES, ANALYTICS_RESOURCES, API_KEYS_SELECTORS, API_ROUTES, APP_RESOURCES, AUDIT_LOGS_SELECTORS, ApiKeysApi, ApiKeysPage, AuditLogsPage, BASE_URL, CALENDAR_LABELS, CERTIFICATE_LIMIT_EXCEEDED_MESSAGE, CERTIFICATE_LIMIT_EXCEEDED_REGEXP, CHANGELOG_WIDGET_SELECTORS, CHAT_WIDGET_SELECTORS, CHAT_WIDGET_TEXTS, COLOR, COMMON_SELECTORS, COMMON_TEXTS, COMMUNITY_TEXTS, CREDENTIALS, CURRENT_TIME_RANGES, CUSTOM_DOMAIN_SELECTORS, CUSTOM_DOMAIN_SUFFIX, ColorPickerUtils, CustomCommands, CustomDomainApi, CustomDomainPage, DATE_FORMATS, DATE_PICKER_SELECTORS, DATE_RANGES, DATE_TEXTS, DEFAULT_WEBHOOKS_RESPONSE_TEXT, DESCRIPTION_EDITOR_TEXTS, EMBED_SELECTORS, EMOJI_LABEL, EMPTY_STORAGE_STATE, ENGAGE_TEXTS, ENVIRONMENT, EXAMPLE_URL, EXPANDED_FONT_SIZE, EXPORT_FILE_TYPES, EditorPage, EmailDeliveryUtils, EmbedBase, FILE_FORMATS, FONTS_RESOURCES, FONT_SIZE_SELECTORS, FROM_EMAIL_ENV_KEYS, GLOBAL_TRANSLATIONS_PATTERN, GOOGLE_ANALYTICS_SELECTORS, GOOGLE_CALENDAR_DATE_FORMAT, GOOGLE_LOGIN_SELECTORS, GOOGLE_LOGIN_TEXTS, GOOGLE_SHEETS_SELECTORS, GooglePage, HELP_CENTER_ROUTES, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IPRestrictionsPage, IP_RESTRICTIONS_SELECTORS, IS_CI, IS_DEV_ENV, IS_STAGING_ENV, ImageUploader, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, KEYBOARD_SHORTCUT_TEST_CASES, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MICROSOFT_LOGIN_SELECTORS, MICROSOFT_LOGIN_TEXTS, MailerUtils, Member, MemberApis, MicrosoftPage, NEETO_AUTH_BASE_URL, NEETO_EDITOR_SELECTORS, NEETO_FILTERS_SELECTORS, NEETO_IMAGE_UPLOADER_SELECTORS, NEETO_ROUTES, NEETO_SEO_SELECTORS, NEETO_TEXT_MODIFIER_SELECTORS, NeetoAuthServer, NeetoChatWidget, NeetoEmailDeliveryApi, NeetoTowerApi, ONBOARDING_SELECTORS, ORGANIZATION_TEXTS, OTP_EMAIL_PATTERN, OrganizationPage, PAST_TIME_RANGES, PHONE_NUMBER_FORMATS, PLURAL, PRODUCT_ROLES_ROUTE_MAP, PROFILE_LINKS, PROFILE_SECTION_SELECTORS, PROJECT_NAMES, PROJECT_TRANSLATIONS_PATH, ROLES_SELECTORS, ROUTES, RailsEmailApiClient, RailsEmailUtils, RoleApis, RolesPage, SIGNUP_SELECTORS, SINGULAR, SLACK_DATA_QA_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STATUS_TEXTS, STORAGE_STATE, SecurityApi, SidebarSection, SlackApi, SlackPage, TABLE_SELECTORS, TAB_SELECTORS, TAGS_SELECTORS, TEAM_MEMBER_TEXTS, TEXT_MODIFIER_ROLES, TEXT_MODIFIER_SELECTORS, TEXT_MODIFIER_TAGS, THANK_YOU_SELECTORS, THEMES_SELECTORS, THEMES_TEXTS, THIRD_PARTY_RESOURCES, THIRD_PARTY_ROUTES, TIME_RANGES, TOASTR_MESSAGES, TWILIO_SELECTORS, TagsApi, TagsPage, TeamMembers, ThankYouApi, ThankYouPage, TwilioApi, USER_AGENTS, WEBHOOK_SELECTORS, WebhookSiteApi, WebhooksPage, ZAPIER_LIMIT_EXHAUSTED_MESSAGE, ZAPIER_SELECTORS, ZAPIER_TEST_EMAIL, ZAPIER_WEB_TEXTS, ZapierPage, baseURLGenerator, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, createOrganizationViaRake, currencyUtils, dataQa, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, fillCredentialsAndSubmit, filterUtils, generatePhoneNumber, generatePhoneNumberDetails, generateRandomBypassEmail, generateRandomFile, generateStagingData, getByDataQA, getClipboardContent, getFormattedPhoneNumber, getFullUrl, getGlobalUserProps, getGlobalUserState, getImagePathAndName, getIsoCodeFromPhoneCode, getListCount, globalShortcuts, grantClipboardPermissions, hexToRGB, hexToRGBA, i18nFixture, imageRegex, initializeCredentials, initializeTestData, initializeTotp, isGithubIssueOpen, joinHyphenCase, joinString, login, loginWithoutSSO, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, stealth as stealthTest, tableUtils, toCamelCase, updateCredentials, warmup, withCookieCache, writeDataToFile };
127096
127114
  //# sourceMappingURL=index.js.map