@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.cjs.js +312 -293
- package/index.cjs.js.map +1 -1
- package/index.d.ts +6 -9
- package/index.js +312 -294
- package/index.js.map +1 -1
- package/package.json +1 -1
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/
|
|
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
|
-
|
|
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
|
|
18344
|
-
await this.page.goto(
|
|
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
|
|
18349
|
-
const
|
|
18350
|
-
|
|
18351
|
-
|
|
18352
|
-
|
|
18353
|
-
|
|
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.
|
|
18356
|
-
|
|
18357
|
-
|
|
18358
|
-
|
|
18359
|
-
|
|
18360
|
-
await
|
|
18361
|
-
await
|
|
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
|