@bigbinary/neeto-playwright-commons 4.3.3 → 4.3.5
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.d.ts +96 -9
- package/index.js +144 -85
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -524,7 +524,7 @@ declare class CustomCommands {
|
|
|
524
524
|
}: VerifyTooltipProps) => Promise<void>;
|
|
525
525
|
/**
|
|
526
526
|
*
|
|
527
|
-
* Method to verify title, content and the help link of help popover by hovering the trigger element.
|
|
527
|
+
* Method to verify title, content and the help link of help popover by hovering the trigger element. Locates the title, content, and link directly via their own testids (rather than inside a shared tooltip container).
|
|
528
528
|
*
|
|
529
529
|
* customPageContext (optional): The custom page on which tooltip needs to be verified. Defaults to this.page.
|
|
530
530
|
*
|
|
@@ -576,6 +576,7 @@ declare class CustomCommands {
|
|
|
576
576
|
* @endexample
|
|
577
577
|
*/
|
|
578
578
|
verifyHelpText: (helpURL: string) => Promise<void>;
|
|
579
|
+
private hidePopoverContent;
|
|
579
580
|
/**
|
|
580
581
|
*
|
|
581
582
|
* Method to verify the term in the search term block.
|
|
@@ -2537,7 +2538,9 @@ declare class HelpAndProfilePage {
|
|
|
2537
2538
|
}: HelpAndProfilePageInitializerProps);
|
|
2538
2539
|
/**
|
|
2539
2540
|
*
|
|
2540
|
-
* Opens the Help Center
|
|
2541
|
+
* Opens the Help Center by clicking the floating action menu button and expects
|
|
2542
|
+
*
|
|
2543
|
+
* the chat button within it to be visible.
|
|
2541
2544
|
*
|
|
2542
2545
|
* @example
|
|
2543
2546
|
*
|
|
@@ -2643,9 +2646,9 @@ declare class HelpAndProfilePage {
|
|
|
2643
2646
|
private uploadImage;
|
|
2644
2647
|
/**
|
|
2645
2648
|
*
|
|
2646
|
-
* Updates basic profile info in the profile
|
|
2649
|
+
* Updates basic profile info in the profile sheet (image, fields, dropdowns,
|
|
2647
2650
|
*
|
|
2648
|
-
* submit, then waits for the
|
|
2651
|
+
* submit, then waits for the sheet to close).
|
|
2649
2652
|
*
|
|
2650
2653
|
* contact: First name, last name, and optional phone number. settings:
|
|
2651
2654
|
*
|
|
@@ -2688,7 +2691,7 @@ declare class HelpAndProfilePage {
|
|
|
2688
2691
|
openProfile: () => Promise<void>;
|
|
2689
2692
|
/**
|
|
2690
2693
|
*
|
|
2691
|
-
* Asserts displayed values in the My profile
|
|
2694
|
+
* Asserts displayed values in the My profile sheet. Use after the sheet is open
|
|
2692
2695
|
*
|
|
2693
2696
|
* (for example after openProfile).
|
|
2694
2697
|
*
|
|
@@ -4319,6 +4322,10 @@ interface GenerateRandomFileProps {
|
|
|
4319
4322
|
fileType: FileType;
|
|
4320
4323
|
fileName?: string;
|
|
4321
4324
|
}
|
|
4325
|
+
interface ReadFileAsBrowserFileProps {
|
|
4326
|
+
filePath: string;
|
|
4327
|
+
mimeType: string;
|
|
4328
|
+
}
|
|
4322
4329
|
/**
|
|
4323
4330
|
*
|
|
4324
4331
|
* Used to serialize a File object into a format that can be passed into the browser context using Playwright’s evaluateHandle.
|
|
@@ -4384,6 +4391,32 @@ declare const generateRandomFile: ({
|
|
|
4384
4391
|
file: File;
|
|
4385
4392
|
fileName: string;
|
|
4386
4393
|
};
|
|
4394
|
+
/**
|
|
4395
|
+
*
|
|
4396
|
+
* Used to read a file from disk and build a MIME-correct File object suitable for uploadFileViaDispatchV2, unlike generateRandomFile which fills the file with random bytes.
|
|
4397
|
+
*
|
|
4398
|
+
* filePath: Absolute (or already-resolved) path of the file to read.
|
|
4399
|
+
*
|
|
4400
|
+
* mimeType: MIME type to set on the resulting File object.
|
|
4401
|
+
*
|
|
4402
|
+
* Returns a File object named after filePath's basename.
|
|
4403
|
+
*
|
|
4404
|
+
* @example
|
|
4405
|
+
*
|
|
4406
|
+
* import path from "path";
|
|
4407
|
+
*
|
|
4408
|
+
* import { readFileAsBrowserFile } from "@utils/fileUtils";
|
|
4409
|
+
*
|
|
4410
|
+
* const file = readFileAsBrowserFile({
|
|
4411
|
+
* filePath: path.join(__dirname, "../assets/files/sample.docx"),
|
|
4412
|
+
* mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
4413
|
+
* });
|
|
4414
|
+
* @endexample
|
|
4415
|
+
*/
|
|
4416
|
+
declare const readFileAsBrowserFile: ({
|
|
4417
|
+
filePath,
|
|
4418
|
+
mimeType
|
|
4419
|
+
}: ReadFileAsBrowserFileProps) => File;
|
|
4387
4420
|
type emailCondition = "Contains" | "Does not contain" | "Is" | "Is not" | "Starts with" | "Does not start with" | "Ends with" | "Does not end with";
|
|
4388
4421
|
interface EditMemberProps {
|
|
4389
4422
|
email: string;
|
|
@@ -4509,6 +4542,21 @@ declare class TeamMembers {
|
|
|
4509
4542
|
* @endexample
|
|
4510
4543
|
*/
|
|
4511
4544
|
removeMemberViaUI: (parentLocator?: Locator | Page) => Promise<void>;
|
|
4545
|
+
/**
|
|
4546
|
+
*
|
|
4547
|
+
* Opens the filter pane on page.
|
|
4548
|
+
*
|
|
4549
|
+
* page: An instance of the Playwright Page class representing the web page where the filter pane should be opened.
|
|
4550
|
+
*
|
|
4551
|
+
* @example
|
|
4552
|
+
*
|
|
4553
|
+
* import { Page } from "@playwright/test";
|
|
4554
|
+
* import { filterUtils } from "@neetoplaywright";
|
|
4555
|
+
*
|
|
4556
|
+
* await filterUtils.openFilterPane(page);
|
|
4557
|
+
* @endexample
|
|
4558
|
+
*/
|
|
4559
|
+
openFilterPane: () => Promise<void>;
|
|
4512
4560
|
/**
|
|
4513
4561
|
*
|
|
4514
4562
|
* Used to filter members by multi select fields such as role, group, teams, etc. The filter pane should be opened and closed before and after filtering. It takes the following parameters:
|
|
@@ -4519,7 +4567,7 @@ declare class TeamMembers {
|
|
|
4519
4567
|
*
|
|
4520
4568
|
* @example
|
|
4521
4569
|
*
|
|
4522
|
-
* await
|
|
4570
|
+
* await teamMembers.openFilterPane();
|
|
4523
4571
|
* await teamMembers.filterMembersByMultiSelect({
|
|
4524
4572
|
* selectedOptions: ["Admin", "Standard"],
|
|
4525
4573
|
* selectContainerLocator: NEETO_FILTERS_SELECTORS.roleSelectContainer
|
|
@@ -5209,11 +5257,11 @@ interface VerifyAuditLogProps<T extends ActionDataKey> {
|
|
|
5209
5257
|
declare class AuditLogsPage {
|
|
5210
5258
|
private page;
|
|
5211
5259
|
private neetoPlaywrightUtilities;
|
|
5212
|
-
|
|
5260
|
+
protected currentDate: string;
|
|
5213
5261
|
messageBuilders: MessageBuilders;
|
|
5214
5262
|
private admin;
|
|
5215
5263
|
constructor(page: Page, neetoPlaywrightUtilities: CustomCommands, /** @deprecated Audit log messages no longer include the product name. */
|
|
5216
|
-
product?: NeetoProducts);
|
|
5264
|
+
product?: NeetoProducts, timeZone?: string);
|
|
5217
5265
|
/**
|
|
5218
5266
|
*
|
|
5219
5267
|
* Verifies an audit log entry by building the expected message based on the action type and data, then checking that the audit log content matches the expected message and current date.
|
|
@@ -6449,6 +6497,18 @@ declare const PHONE_NUMBER_FORMATS: {
|
|
|
6449
6497
|
*
|
|
6450
6498
|
* paneModalCrossIcon: Selector for pane modal cross icons.
|
|
6451
6499
|
*
|
|
6500
|
+
* sheetHeader: Selector for a shadcn sheet's header.
|
|
6501
|
+
*
|
|
6502
|
+
* sheetBody: Selector for a shadcn sheet's body.
|
|
6503
|
+
*
|
|
6504
|
+
* sheetCloseButton: Selector for a shadcn sheet's close button.
|
|
6505
|
+
*
|
|
6506
|
+
* dialogHeader: Selector for a shadcn dialog's header.
|
|
6507
|
+
*
|
|
6508
|
+
* dialogBody: Selector for a shadcn dialog's body.
|
|
6509
|
+
*
|
|
6510
|
+
* dialogCloseButton: Selector for a shadcn dialog's close button.
|
|
6511
|
+
*
|
|
6452
6512
|
* inputField: Selector to get NeetoUI input field.
|
|
6453
6513
|
*
|
|
6454
6514
|
* alertBox: Selector for alert box.
|
|
@@ -6467,6 +6527,8 @@ declare const PHONE_NUMBER_FORMATS: {
|
|
|
6467
6527
|
*
|
|
6468
6528
|
* inputFieldError: Selector for input field errors.
|
|
6469
6529
|
*
|
|
6530
|
+
* inputError: Selector for a generic input's error message.
|
|
6531
|
+
*
|
|
6470
6532
|
* selectDropDownError: Selector for select dropdown errors.
|
|
6471
6533
|
*
|
|
6472
6534
|
* subTitleHeading: Selector for subtitle headings.
|
|
@@ -6507,6 +6569,8 @@ declare const PHONE_NUMBER_FORMATS: {
|
|
|
6507
6569
|
*
|
|
6508
6570
|
* sidebarToggle: Selector for sidebar toggles.
|
|
6509
6571
|
*
|
|
6572
|
+
* sidebarExpander: Selector for the button that re-expands a collapsed neeto-molecules v2 sidebar.
|
|
6573
|
+
*
|
|
6510
6574
|
* subheader: Selector for subheaders.
|
|
6511
6575
|
*
|
|
6512
6576
|
* settingsLink: Selector for settings links.
|
|
@@ -6577,6 +6641,8 @@ declare const PHONE_NUMBER_FORMATS: {
|
|
|
6577
6641
|
*
|
|
6578
6642
|
* helpPopoverButton: Selector for help popover button,
|
|
6579
6643
|
*
|
|
6644
|
+
* helpPopoverTitle: Selector for help popover title,
|
|
6645
|
+
*
|
|
6580
6646
|
* helpPopoverDesc: Selector for help popover description,
|
|
6581
6647
|
*
|
|
6582
6648
|
* helpPopoverLinkButton: Selector for help popover link button,
|
|
@@ -6635,6 +6701,12 @@ declare const PHONE_NUMBER_FORMATS: {
|
|
|
6635
6701
|
*
|
|
6636
6702
|
* customMenuItem: Selector for a custom menu item.
|
|
6637
6703
|
*
|
|
6704
|
+
* badgeContainer: Selector for a shadcn badge container.
|
|
6705
|
+
*
|
|
6706
|
+
* badgeCloseButton: Selector for a shadcn badge's dismiss button.
|
|
6707
|
+
*
|
|
6708
|
+
* hotkeyDescription: Selector for a keyboard shortcut's description.
|
|
6709
|
+
*
|
|
6638
6710
|
*/
|
|
6639
6711
|
declare const COMMON_SELECTORS: {
|
|
6640
6712
|
emailInputError: string;
|
|
@@ -6669,6 +6741,12 @@ declare const COMMON_SELECTORS: {
|
|
|
6669
6741
|
toastContainer: string;
|
|
6670
6742
|
toastBody: string;
|
|
6671
6743
|
paneModalCrossIcon: string;
|
|
6744
|
+
sheetHeader: string;
|
|
6745
|
+
sheetBody: string;
|
|
6746
|
+
sheetCloseButton: string;
|
|
6747
|
+
dialogHeader: string;
|
|
6748
|
+
dialogBody: string;
|
|
6749
|
+
dialogCloseButton: string;
|
|
6672
6750
|
inputField: string;
|
|
6673
6751
|
alertBox: string;
|
|
6674
6752
|
tableContainer: string;
|
|
@@ -6678,6 +6756,7 @@ declare const COMMON_SELECTORS: {
|
|
|
6678
6756
|
saveChangesButton: string;
|
|
6679
6757
|
cancelButton: string;
|
|
6680
6758
|
inputFieldError: string;
|
|
6759
|
+
inputError: string;
|
|
6681
6760
|
selectDropDownError: string;
|
|
6682
6761
|
subTitleHeading: string;
|
|
6683
6762
|
noDataTitle: string;
|
|
@@ -6699,6 +6778,7 @@ declare const COMMON_SELECTORS: {
|
|
|
6699
6778
|
selectContainer: string;
|
|
6700
6779
|
dropdownMenu: string;
|
|
6701
6780
|
sidebarToggle: string;
|
|
6781
|
+
sidebarExpander: string;
|
|
6702
6782
|
subheader: string;
|
|
6703
6783
|
settingsLink: string;
|
|
6704
6784
|
ticketFieldTextInput: (label: string) => string;
|
|
@@ -6733,6 +6813,8 @@ declare const COMMON_SELECTORS: {
|
|
|
6733
6813
|
navigationHeader: string;
|
|
6734
6814
|
buttonSpinner: string;
|
|
6735
6815
|
pendingTagContainer: string;
|
|
6816
|
+
badgeContainer: string;
|
|
6817
|
+
badgeCloseButton: string;
|
|
6736
6818
|
nextYearButton: string;
|
|
6737
6819
|
popoverTitle: string;
|
|
6738
6820
|
productSwitcherSearchInput: string;
|
|
@@ -6740,6 +6822,7 @@ declare const COMMON_SELECTORS: {
|
|
|
6740
6822
|
helpPopoverButton: string;
|
|
6741
6823
|
helpPopoverDesc: string;
|
|
6742
6824
|
helpPopoverLinkButton: string;
|
|
6825
|
+
helpPopoverTitle: string;
|
|
6743
6826
|
copyToClipboardButton: string;
|
|
6744
6827
|
subheaderRight: string;
|
|
6745
6828
|
secretKeyInputField: string;
|
|
@@ -6774,6 +6857,7 @@ declare const COMMON_SELECTORS: {
|
|
|
6774
6857
|
switchLabel: string;
|
|
6775
6858
|
antdSliderRail: string;
|
|
6776
6859
|
card: string;
|
|
6860
|
+
hotkeyDescription: string;
|
|
6777
6861
|
columnVisibilityBtn: (action: "hide-all" | "reset") => string;
|
|
6778
6862
|
customSwitch: (switchLabel: string) => string;
|
|
6779
6863
|
customMenuItem: (label: string) => string;
|
|
@@ -7438,6 +7522,8 @@ declare const MEMBER_FORM_SELECTORS: {
|
|
|
7438
7522
|
*
|
|
7439
7523
|
* profilePopup: Selector for the profile popup.
|
|
7440
7524
|
*
|
|
7525
|
+
* profileMoreDropdownButton: Selector for the "more actions" dropdown trigger in the profile sheet.
|
|
7526
|
+
*
|
|
7441
7527
|
* myProfileButton: Selector for the "My Profile" button.
|
|
7442
7528
|
*
|
|
7443
7529
|
* profileOrganizationSettingsButton: Selector for the profile organization settings button.
|
|
@@ -7459,6 +7545,7 @@ declare const PROFILE_SECTION_SELECTORS: {
|
|
|
7459
7545
|
profileSectionButton: string;
|
|
7460
7546
|
profilePopup: string;
|
|
7461
7547
|
profileExpandMenuBtn: string;
|
|
7548
|
+
profileMoreDropdownButton: string;
|
|
7462
7549
|
myProfileButton: string;
|
|
7463
7550
|
updateEmailMenuBtn: string;
|
|
7464
7551
|
workspaceDisplay: string;
|
|
@@ -9527,5 +9614,5 @@ declare class InboundEmailApis {
|
|
|
9527
9614
|
reply: (emailParams: ReplyInboundEmailParams) => Promise<playwright_core.APIResponse | undefined>;
|
|
9528
9615
|
private deliverSource;
|
|
9529
9616
|
}
|
|
9530
|
-
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, EDITOR_VERIFY_TEXT_COLOR, 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_MAILPIT_ENABLED, IS_STAGING_ENV, ImageUploader, InboundEmailApis, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, KEYBOARD_SHORTCUT_TEST_CASES, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MAILPIT_BASE_URL, MAILPIT_DOMAIN_NAME, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MICROSOFT_LOGIN_SELECTORS, MICROSOFT_LOGIN_TEXTS, MailerUtils, MailpitApi, 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_TEST_EMAIL_V2, ZAPIER_WEB_TEXTS, ZapierPage, authenticateUser, baseURLGenerator, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, createOrganizationViaRake, currencyUtils, dataQa, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, filterUtils, fixedMenuSelector, generatePhoneNumber, generatePhoneNumberDetails, generateRandomBypassEmail, generateRandomFile, generateStagingData, getByDataQA, getClipboardContent, getDirname, getFormattedPhoneNumber, getFullUrl, getGlobalUserProps, getGlobalUserState, getImagePathAndName, getIsoCodeFromPhoneCode, getListCount, globalShortcuts, grantClipboardPermissions, hexToRGB, hexToRGBA, i18nFixture, imageRegex, initializeCredentials, initializeTestData, initializeTotp, isGithubIssueOpen, isStagingOrganizationExpired, joinHyphenCase, joinString, login, mailpitDomainName, networkConditions, networkThrottlingUsingCDP, optionSelector, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, _default as stealthTest, tableUtils, toCamelCase, updateCredentials, warmup, withCookieCache, writeDataToFile };
|
|
9617
|
+
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, EDITOR_VERIFY_TEXT_COLOR, 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_MAILPIT_ENABLED, IS_STAGING_ENV, ImageUploader, InboundEmailApis, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, KEYBOARD_SHORTCUT_TEST_CASES, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MAILPIT_BASE_URL, MAILPIT_DOMAIN_NAME, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MICROSOFT_LOGIN_SELECTORS, MICROSOFT_LOGIN_TEXTS, MailerUtils, MailpitApi, 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_TEST_EMAIL_V2, ZAPIER_WEB_TEXTS, ZapierPage, authenticateUser, baseURLGenerator, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, createOrganizationViaRake, currencyUtils, dataQa, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, filterUtils, fixedMenuSelector, generatePhoneNumber, generatePhoneNumberDetails, generateRandomBypassEmail, generateRandomFile, generateStagingData, getByDataQA, getClipboardContent, getDirname, getFormattedPhoneNumber, getFullUrl, getGlobalUserProps, getGlobalUserState, getImagePathAndName, getIsoCodeFromPhoneCode, getListCount, globalShortcuts, grantClipboardPermissions, hexToRGB, hexToRGBA, i18nFixture, imageRegex, initializeCredentials, initializeTestData, initializeTotp, isGithubIssueOpen, isStagingOrganizationExpired, joinHyphenCase, joinString, login, mailpitDomainName, networkConditions, networkThrottlingUsingCDP, optionSelector, readFileAsBrowserFile, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, _default as stealthTest, tableUtils, toCamelCase, updateCredentials, warmup, withCookieCache, writeDataToFile };
|
|
9531
9618
|
export type { BaseThemeStyle, BaseThemeStyleType, ColumnMenuAction, CountryProps, CustomFixture, EmailDeliveryConnectParams, EmailDeliveryProvider, EmailDeliveryVerifiedEmail, EmailDeliveryVerifyEmailParams, EmailDeliveryVerifyEmailResponse, EmailMatchCriteria, InboundEmailParams, IntroPageThemeStyle, IntroPageThemeStyleType, OAuthEmailDeliveryProvider, ProjectName, ReplyInboundEmailParams, ThemeCategory, ValueOf };
|
package/index.js
CHANGED
|
@@ -1007,6 +1007,12 @@ const COMMON_SELECTORS = {
|
|
|
1007
1007
|
toastContainer: ".Toastify__toast-container",
|
|
1008
1008
|
toastBody: ".Toastify__toast-body",
|
|
1009
1009
|
paneModalCrossIcon: "pane-close-button",
|
|
1010
|
+
sheetHeader: "sheet-header",
|
|
1011
|
+
sheetBody: "sheet-body",
|
|
1012
|
+
sheetCloseButton: "sheet-close-button",
|
|
1013
|
+
dialogHeader: "dialog-header",
|
|
1014
|
+
dialogBody: "dialog-body",
|
|
1015
|
+
dialogCloseButton: "dialog-close-button",
|
|
1010
1016
|
inputField: "nui-input-field",
|
|
1011
1017
|
alertBox: "alert-box",
|
|
1012
1018
|
tableContainer: "table-container",
|
|
@@ -1016,11 +1022,12 @@ const COMMON_SELECTORS = {
|
|
|
1016
1022
|
saveChangesButton: "save-changes-button",
|
|
1017
1023
|
cancelButton: "cancel-button",
|
|
1018
1024
|
inputFieldError: "nui-input-error",
|
|
1025
|
+
inputError: "input-error",
|
|
1019
1026
|
selectDropDownError: "nui-select-error",
|
|
1020
1027
|
subTitleHeading: "menubar-subtitle-heading",
|
|
1021
|
-
noDataTitle: "
|
|
1022
|
-
noDataDescription: "
|
|
1023
|
-
noDataHelpText: "
|
|
1028
|
+
noDataTitle: "empty-state-title",
|
|
1029
|
+
noDataDescription: "empty-state-description",
|
|
1030
|
+
noDataHelpText: "empty-state-help-text",
|
|
1024
1031
|
backdrop: "neeto-backdrop",
|
|
1025
1032
|
menuBarHeading: "menubar-heading",
|
|
1026
1033
|
dropdownWrapper: "nui-select-container-wrapper",
|
|
@@ -1030,13 +1037,14 @@ const COMMON_SELECTORS = {
|
|
|
1030
1037
|
tabItem: "tab-item",
|
|
1031
1038
|
labelInputError: "label-input-error",
|
|
1032
1039
|
urlInputError: "url-input-error",
|
|
1033
|
-
noDataPrimaryButton: "
|
|
1040
|
+
noDataPrimaryButton: "empty-state-primary-button",
|
|
1034
1041
|
modalHeader: "modal-header",
|
|
1035
1042
|
avatar: "nui-avatar",
|
|
1036
1043
|
nameInputError: "name-input-error",
|
|
1037
1044
|
selectContainer: "nui-select-container",
|
|
1038
1045
|
dropdownMenu: "nui-select-menu",
|
|
1039
1046
|
sidebarToggle: "neeto-molecules-sidebar-toggler",
|
|
1047
|
+
sidebarExpander: "neeto-molecules-sidebar-expander",
|
|
1040
1048
|
subheader: "subheader",
|
|
1041
1049
|
settingsLink: "Settings",
|
|
1042
1050
|
ticketFieldTextInput: (label) => `${hyphenate(label)}-text-input`,
|
|
@@ -1071,6 +1079,8 @@ const COMMON_SELECTORS = {
|
|
|
1071
1079
|
navigationHeader: "navigation-header",
|
|
1072
1080
|
buttonSpinner: ".neeto-ui-btn__spinner",
|
|
1073
1081
|
pendingTagContainer: "pending-tag-container",
|
|
1082
|
+
badgeContainer: "badge-container",
|
|
1083
|
+
badgeCloseButton: "badge-close-button",
|
|
1074
1084
|
nextYearButton: "next-year-button",
|
|
1075
1085
|
popoverTitle: "popover-title",
|
|
1076
1086
|
productSwitcherSearchInput: "product-switcher-search-input",
|
|
@@ -1078,6 +1088,7 @@ const COMMON_SELECTORS = {
|
|
|
1078
1088
|
helpPopoverButton: "help-popover-button",
|
|
1079
1089
|
helpPopoverDesc: "help-popover-description",
|
|
1080
1090
|
helpPopoverLinkButton: "help-popover-link-button",
|
|
1091
|
+
helpPopoverTitle: "help-popover-title",
|
|
1081
1092
|
copyToClipboardButton: "copy-to-clipboard-button",
|
|
1082
1093
|
subheaderRight: "subheader-right",
|
|
1083
1094
|
secretKeyInputField: "secret-key-input-field",
|
|
@@ -1112,6 +1123,7 @@ const COMMON_SELECTORS = {
|
|
|
1112
1123
|
switchLabel: "nui-switch-item",
|
|
1113
1124
|
antdSliderRail: ".ant-slider-rail",
|
|
1114
1125
|
card: "neeto-molecules-card",
|
|
1126
|
+
hotkeyDescription: "hotkey-description",
|
|
1115
1127
|
columnVisibilityBtn: (action) => `column-visibility-${action}-button`,
|
|
1116
1128
|
customSwitch: (switchLabel) => `${hyphenate(switchLabel)}-switch`,
|
|
1117
1129
|
customMenuItem: (label) => `${hyphenate(label)}-menu-item`,
|
|
@@ -1644,6 +1656,7 @@ const PROFILE_SECTION_SELECTORS = {
|
|
|
1644
1656
|
profileSectionButton: "profile-section",
|
|
1645
1657
|
profilePopup: "profile-popup",
|
|
1646
1658
|
profileExpandMenuBtn: "profile-expand-menu-button",
|
|
1659
|
+
profileMoreDropdownButton: "profile-more-dropdown-button",
|
|
1647
1660
|
myProfileButton: "profile-my-profile-button",
|
|
1648
1661
|
updateEmailMenuBtn: "update-email-menu-button",
|
|
1649
1662
|
workspaceDisplay: "workspace-display",
|
|
@@ -2056,6 +2069,10 @@ const generateRandomFile = ({ sizeInKB, fileType, fileName = `sample.${fileType}
|
|
|
2056
2069
|
const file = new File([blob], fileName, { type: mimeType });
|
|
2057
2070
|
return { file, fileName };
|
|
2058
2071
|
};
|
|
2072
|
+
const readFileAsBrowserFile = ({ filePath, mimeType, }) => {
|
|
2073
|
+
const buffer = new Uint8Array(readFileSync(filePath));
|
|
2074
|
+
return new File([buffer], path__default.basename(filePath), { type: mimeType });
|
|
2075
|
+
};
|
|
2059
2076
|
|
|
2060
2077
|
const __dirname$6 = getDirname(import.meta.url);
|
|
2061
2078
|
const getImagePathAndName = (localImagePath) => {
|
|
@@ -2228,7 +2245,7 @@ class CustomCommands {
|
|
|
2228
2245
|
retryTimeout: 20_000,
|
|
2229
2246
|
}, options);
|
|
2230
2247
|
const menu = page.getByTestId(COMMON_SELECTORS.customDropDownMenu(label));
|
|
2231
|
-
const container = page.getByTestId(COMMON_SELECTORS.
|
|
2248
|
+
const container = page.getByTestId(COMMON_SELECTORS.customSelectContainer(label));
|
|
2232
2249
|
await expect(async () => {
|
|
2233
2250
|
await container.click();
|
|
2234
2251
|
await expect(menu).toBeVisible({
|
|
@@ -2294,17 +2311,26 @@ class CustomCommands {
|
|
|
2294
2311
|
await this.hideTooltip(triggerElement, customPageContext);
|
|
2295
2312
|
};
|
|
2296
2313
|
verifyHelpPopover = async ({ triggerElement = this.page.getByTestId(COMMON_SELECTORS.helpPopoverButton), title, content, helpURL, customPageContext = this.page, }) => {
|
|
2297
|
-
const tooltipBox = customPageContext.getByTestId(COMMON_SELECTORS.tooltip);
|
|
2298
2314
|
await triggerElement.hover();
|
|
2299
|
-
|
|
2300
|
-
|
|
2301
|
-
|
|
2315
|
+
const getPopoverContentLocator = () => {
|
|
2316
|
+
if (title) {
|
|
2317
|
+
return customPageContext.getByTestId(COMMON_SELECTORS.helpPopoverTitle);
|
|
2318
|
+
}
|
|
2319
|
+
if (content) {
|
|
2320
|
+
return customPageContext.getByTestId(COMMON_SELECTORS.helpPopoverDesc);
|
|
2321
|
+
}
|
|
2322
|
+
return customPageContext.getByTestId(COMMON_SELECTORS.helpPopoverLinkButton);
|
|
2323
|
+
};
|
|
2324
|
+
const popoverContentLocator = getPopoverContentLocator();
|
|
2325
|
+
title && (await expect(popoverContentLocator).toHaveText(title));
|
|
2326
|
+
content &&
|
|
2327
|
+
(await expect(customPageContext.getByTestId(COMMON_SELECTORS.helpPopoverDesc)).toContainText(content));
|
|
2302
2328
|
helpURL &&
|
|
2303
2329
|
(await Promise.all([
|
|
2304
2330
|
this.assertHelpURLIsValid(helpURL),
|
|
2305
|
-
expect(
|
|
2331
|
+
expect(customPageContext.getByTestId(COMMON_SELECTORS.helpPopoverLinkButton)).toHaveAttribute("href", new RegExp(helpURL, "i")),
|
|
2306
2332
|
]));
|
|
2307
|
-
await this.
|
|
2333
|
+
await this.hidePopoverContent(triggerElement, popoverContentLocator, customPageContext);
|
|
2308
2334
|
};
|
|
2309
2335
|
assertHelpURLIsValid = async (helpURL) => {
|
|
2310
2336
|
const response = await this.request.get(helpURL);
|
|
@@ -2316,11 +2342,39 @@ class CustomCommands {
|
|
|
2316
2342
|
.isHidden();
|
|
2317
2343
|
if (isNoDataTitleHidden)
|
|
2318
2344
|
return;
|
|
2345
|
+
const helpLink = this.page
|
|
2346
|
+
.getByTestId(COMMON_SELECTORS.noDataHelpText)
|
|
2347
|
+
.getByRole("link")
|
|
2348
|
+
.or(this.page
|
|
2349
|
+
.getByTestId(COMMON_SELECTORS.noDataDescription)
|
|
2350
|
+
.getByRole("link"));
|
|
2319
2351
|
await Promise.all([
|
|
2320
2352
|
this.assertHelpURLIsValid(helpURL),
|
|
2321
|
-
expect(
|
|
2353
|
+
expect(helpLink).toHaveAttribute("href", new RegExp(helpURL, "i")),
|
|
2322
2354
|
]);
|
|
2323
2355
|
};
|
|
2356
|
+
hidePopoverContent = async (triggerElement, contentLocator, customPageContext = this.page) => {
|
|
2357
|
+
const boundingBox = await triggerElement.boundingBox();
|
|
2358
|
+
if (!boundingBox) {
|
|
2359
|
+
throw new Error("Trigger element bounding box not found");
|
|
2360
|
+
}
|
|
2361
|
+
const { x, y, width, height } = boundingBox;
|
|
2362
|
+
const moves = [
|
|
2363
|
+
[x + width + 10, y],
|
|
2364
|
+
[x, y + height + 10],
|
|
2365
|
+
[x - 10, y],
|
|
2366
|
+
[x, y - 10],
|
|
2367
|
+
];
|
|
2368
|
+
await expect(async () => {
|
|
2369
|
+
for (const [moveX, moveY] of moves) {
|
|
2370
|
+
await customPageContext.mouse.move(moveX, moveY);
|
|
2371
|
+
const isHidden = await contentLocator.isHidden();
|
|
2372
|
+
if (isHidden)
|
|
2373
|
+
break;
|
|
2374
|
+
}
|
|
2375
|
+
await expect(contentLocator).toBeHidden();
|
|
2376
|
+
}).toPass({ timeout: 30_000 });
|
|
2377
|
+
};
|
|
2324
2378
|
verifySearchTermBlock = async (searchTerm) => {
|
|
2325
2379
|
const filtersSearchTermBlock = this.page.getByTestId(NEETO_FILTERS_SELECTORS.filtersTermBlock());
|
|
2326
2380
|
if (searchTerm) {
|
|
@@ -2384,7 +2438,7 @@ class CustomCommands {
|
|
|
2384
2438
|
await Promise.all([
|
|
2385
2439
|
expect(header).toContainText(titles),
|
|
2386
2440
|
expect(header).toHaveCount(titlesAndRoutes.length),
|
|
2387
|
-
expect(header.getByRole("link", { name: last?.title, exact: true })).
|
|
2441
|
+
expect(header.getByRole("link", { name: last?.title, exact: true })).toHaveAttribute("aria-disabled", "true"),
|
|
2388
2442
|
...links.map(({ title, route }) => expect(header.getByRole("link", { name: title, exact: true })).toHaveAttribute("href", route)),
|
|
2389
2443
|
]);
|
|
2390
2444
|
};
|
|
@@ -118761,7 +118815,7 @@ class HelpAndProfilePage {
|
|
|
118761
118815
|
const floatingActionMenuBtn = this.page.getByTestId(COMMON_SELECTORS.floatingActionMenuButton);
|
|
118762
118816
|
await expect(async () => {
|
|
118763
118817
|
await floatingActionMenuBtn.scrollIntoViewIfNeeded();
|
|
118764
|
-
await floatingActionMenuBtn.
|
|
118818
|
+
await floatingActionMenuBtn.click();
|
|
118765
118819
|
await expect(this.helpMenuBtn).toBeVisible();
|
|
118766
118820
|
}).toPass({ timeout: 60_000 });
|
|
118767
118821
|
};
|
|
@@ -118863,7 +118917,7 @@ class HelpAndProfilePage {
|
|
|
118863
118917
|
await this.page.keyboard.press(openKeyboardShortcut);
|
|
118864
118918
|
await expect(keyboardShortcutsPane).not.toHaveCSS("width", "1px");
|
|
118865
118919
|
await Promise.all([
|
|
118866
|
-
expect(keyItem.
|
|
118920
|
+
expect(keyItem.getByTestId(COMMON_SELECTORS.hotkeyDescription)).toHaveText(shortcuts.map(shortcut => shortcut.description)),
|
|
118867
118921
|
expect(keyItem.locator("div")).toHaveText(formattedSequences),
|
|
118868
118922
|
]);
|
|
118869
118923
|
});
|
|
@@ -118911,13 +118965,9 @@ class HelpAndProfilePage {
|
|
|
118911
118965
|
};
|
|
118912
118966
|
openAuthLinkAndVerify = async ({ linkTestId, redirectLink, }) => {
|
|
118913
118967
|
await this.page
|
|
118914
|
-
.getByTestId(
|
|
118915
|
-
.getByTestId(COMMON_SELECTORS.dropdownIcon)
|
|
118916
|
-
.click();
|
|
118917
|
-
await this.page
|
|
118918
|
-
.getByTestId(COMMON_SELECTORS.dropdownContainer)
|
|
118919
|
-
.getByTestId(linkTestId)
|
|
118968
|
+
.getByTestId(PROFILE_SECTION_SELECTORS.profileMoreDropdownButton)
|
|
118920
118969
|
.click();
|
|
118970
|
+
await this.page.getByTestId(linkTestId).click();
|
|
118921
118971
|
await expect(this.page).toHaveURL(new RegExp(NEETO_AUTH_BASE_URL(readFileSyncIfExists()?.user?.subdomainName)));
|
|
118922
118972
|
await expect(this.page).toHaveURL(new RegExp(redirectLink));
|
|
118923
118973
|
await this.page.goBack();
|
|
@@ -118965,8 +119015,7 @@ class HelpAndProfilePage {
|
|
|
118965
119015
|
return;
|
|
118966
119016
|
}
|
|
118967
119017
|
await this.page
|
|
118968
|
-
.getByTestId(
|
|
118969
|
-
.getByTestId(COMMON_SELECTORS.dropdownIcon)
|
|
119018
|
+
.getByTestId(PROFILE_SECTION_SELECTORS.profileMoreDropdownButton)
|
|
118970
119019
|
.click();
|
|
118971
119020
|
await this.page
|
|
118972
119021
|
.getByTestId(PROFILE_SECTION_SELECTORS.imageUploadBtn)
|
|
@@ -118980,7 +119029,7 @@ class HelpAndProfilePage {
|
|
|
118980
119029
|
};
|
|
118981
119030
|
updateBasicInfo = async ({ contact, settings, imageName, }) => {
|
|
118982
119031
|
await expect(this.page
|
|
118983
|
-
.getByTestId(COMMON_SELECTORS.
|
|
119032
|
+
.getByTestId(COMMON_SELECTORS.sheetBody)
|
|
118984
119033
|
.getByTestId(COMMON_SELECTORS.uiSpinner)).toBeHidden();
|
|
118985
119034
|
await this.uploadImage(imageName);
|
|
118986
119035
|
await this.fillTextFields(contact);
|
|
@@ -118990,7 +119039,7 @@ class HelpAndProfilePage {
|
|
|
118990
119039
|
.or(this.page.getByTestId(PROFILE_SECTION_SELECTORS.profileSubmitBtn))
|
|
118991
119040
|
.click();
|
|
118992
119041
|
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
118993
|
-
await expect(this.page.getByTestId(COMMON_SELECTORS.
|
|
119042
|
+
await expect(this.page.getByTestId(COMMON_SELECTORS.sheetCloseButton)).toBeHidden();
|
|
118994
119043
|
};
|
|
118995
119044
|
openProfile = async () => {
|
|
118996
119045
|
await this.openHelpCenter();
|
|
@@ -119000,7 +119049,7 @@ class HelpAndProfilePage {
|
|
|
119000
119049
|
await this.page
|
|
119001
119050
|
.getByTestId(PROFILE_SECTION_SELECTORS.myProfileButton)
|
|
119002
119051
|
.click();
|
|
119003
|
-
await expect(this.page.getByTestId(COMMON_SELECTORS.
|
|
119052
|
+
await expect(this.page.getByTestId(COMMON_SELECTORS.sheetHeader)).toContainText(this.t("neetoTeamMembers.profile.common.myProfile"));
|
|
119004
119053
|
};
|
|
119005
119054
|
verifyProfileSidePane = async ({ contact, settings }) => {
|
|
119006
119055
|
const timeZone = settings?.timeZone;
|
|
@@ -119048,8 +119097,7 @@ class HelpAndProfilePage {
|
|
|
119048
119097
|
await test$1.step("3: Verify basic info", async () => {
|
|
119049
119098
|
await this.openProfile();
|
|
119050
119099
|
await this.page
|
|
119051
|
-
.getByTestId(
|
|
119052
|
-
.getByTestId(COMMON_SELECTORS.dropdownIcon)
|
|
119100
|
+
.getByTestId(PROFILE_SECTION_SELECTORS.profileMoreDropdownButton)
|
|
119053
119101
|
.click();
|
|
119054
119102
|
await this.page
|
|
119055
119103
|
.getByTestId(PROFILE_SECTION_SELECTORS.editBasicInfoMenuBtn)
|
|
@@ -120854,7 +120902,7 @@ const openFilterPane = async (page) => {
|
|
|
120854
120902
|
.getByTestId(NEETO_FILTERS_SELECTORS.filterButton)
|
|
120855
120903
|
.or(page.getByTestId(COMMON_SELECTORS.filterButon))
|
|
120856
120904
|
.click();
|
|
120857
|
-
await expect(page.getByTestId(
|
|
120905
|
+
await expect(page.getByTestId(NEETO_FILTERS_SELECTORS.filterPaneHeading)).toHaveText(getI18nInstance().t("neetoFilters.common.filters"));
|
|
120858
120906
|
};
|
|
120859
120907
|
const clearFiltersFromActionBlock = async (page) => {
|
|
120860
120908
|
const isClearButtonVisible = await page
|
|
@@ -120900,12 +120948,13 @@ class TeamMembers {
|
|
|
120900
120948
|
};
|
|
120901
120949
|
fillMemberForm = async (emails, role) => {
|
|
120902
120950
|
await this.page
|
|
120903
|
-
.getByTestId(
|
|
120951
|
+
.getByTestId(COMMON_SELECTORS.emailInputWrapper)
|
|
120952
|
+
.getByRole("textbox")
|
|
120904
120953
|
.fill(emails.join(", "));
|
|
120905
120954
|
await this.page.keyboard.press("Enter");
|
|
120906
120955
|
role &&
|
|
120907
120956
|
(await this.neetoPlaywrightUtilities.toggleElement({
|
|
120908
|
-
locator: this.page.
|
|
120957
|
+
locator: this.page.getByRole("radio", { name: role, exact: true }),
|
|
120909
120958
|
}));
|
|
120910
120959
|
const continueBtn = this.page.getByTestId(MEMBER_SELECTORS.continueButton);
|
|
120911
120960
|
await continueBtn.click();
|
|
@@ -120924,7 +120973,7 @@ class TeamMembers {
|
|
|
120924
120973
|
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
120925
120974
|
};
|
|
120926
120975
|
submit = async () => {
|
|
120927
|
-
const pane = this.page.
|
|
120976
|
+
const pane = this.page.getByRole("dialog");
|
|
120928
120977
|
const submitBtn = this.page.getByTestId(MEMBER_SELECTORS.submitButton);
|
|
120929
120978
|
const buttonSpinner = submitBtn.getByTestId(COMMON_SELECTORS.uiSpinner);
|
|
120930
120979
|
await expect(submitBtn).toBeVisible({ timeout: 10_000 });
|
|
@@ -120947,9 +120996,12 @@ class TeamMembers {
|
|
|
120947
120996
|
await expect(this.page.getByRole("cell", { name: email, exact: true })).toBeVisible();
|
|
120948
120997
|
};
|
|
120949
120998
|
editMemberViaUI = async ({ email = "", firstName = "", lastName = "", role = "standard", } = {}) => {
|
|
120999
|
+
await expect(this.page.getByTestId(MEMBER_SELECTORS.dropDownIcon)).toHaveCount(1);
|
|
120950
121000
|
await this.page.getByTestId(MEMBER_SELECTORS.dropDownIcon).click();
|
|
120951
121001
|
await this.page.getByTestId(MEMBER_SELECTORS.editButton).click();
|
|
120952
|
-
|
|
121002
|
+
const editPane = this.page.getByRole("dialog");
|
|
121003
|
+
await expect(editPane).toBeVisible({ timeout: 35_000 });
|
|
121004
|
+
await expect(editPane.getByTestId(COMMON_SELECTORS.uiSpinner)).toHaveCount(0, { timeout: 35_000 });
|
|
120953
121005
|
await expect(this.page
|
|
120954
121006
|
.getByTestId(MEMBER_SELECTORS.submitButton)
|
|
120955
121007
|
.getByTestId(COMMON_SELECTORS.uiSpinner)).toHaveCount(0, { timeout: 35_000 });
|
|
@@ -120966,7 +121018,7 @@ class TeamMembers {
|
|
|
120966
121018
|
.getByTestId(MEMBER_FORM_SELECTORS.lastNameTextField)
|
|
120967
121019
|
.fill(lastName));
|
|
120968
121020
|
await this.neetoPlaywrightUtilities.toggleElement({
|
|
120969
|
-
locator: this.page.
|
|
121021
|
+
locator: this.page.getByRole("radio", { name: role, exact: true }),
|
|
120970
121022
|
});
|
|
120971
121023
|
await this.submit();
|
|
120972
121024
|
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
@@ -120980,14 +121032,21 @@ class TeamMembers {
|
|
|
120980
121032
|
await this.neetoPlaywrightUtilities.verifyToast();
|
|
120981
121033
|
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
120982
121034
|
};
|
|
121035
|
+
openFilterPane = async () => {
|
|
121036
|
+
await this.page
|
|
121037
|
+
.getByTestId(NEETO_FILTERS_SELECTORS.filterButton)
|
|
121038
|
+
.or(this.page.getByTestId(COMMON_SELECTORS.filterButon))
|
|
121039
|
+
.click();
|
|
121040
|
+
await expect(this.page.getByTestId(NEETO_FILTERS_SELECTORS.filterPaneHeading)).toHaveText(this.t("neetoFilters.common.filters"));
|
|
121041
|
+
};
|
|
120983
121042
|
filterMembersByMultiSelect = async ({ selectedOptions = [], selectContainerLocator = NEETO_FILTERS_SELECTORS.roleSelectContainer, }) => {
|
|
120984
121043
|
await this.page
|
|
120985
121044
|
.getByTestId(selectContainerLocator)
|
|
120986
|
-
.
|
|
120987
|
-
.click();
|
|
121045
|
+
.getByRole("combobox")
|
|
121046
|
+
.click({ timeout: 30_000 });
|
|
120988
121047
|
for (const option of selectedOptions) {
|
|
120989
121048
|
await this.page
|
|
120990
|
-
.
|
|
121049
|
+
.getByRole("option", { name: option, exact: true })
|
|
120991
121050
|
.click();
|
|
120992
121051
|
}
|
|
120993
121052
|
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
@@ -120995,14 +121054,14 @@ class TeamMembers {
|
|
|
120995
121054
|
};
|
|
120996
121055
|
filterMembers = async ({ email = { id: "", condition: "Is" }, roles = [], name = "", }) => {
|
|
120997
121056
|
await filterUtils.clearFiltersFromActionBlock(this.page);
|
|
120998
|
-
await
|
|
121057
|
+
await this.openFilterPane();
|
|
120999
121058
|
if (isPresent(email.id)) {
|
|
121000
121059
|
await this.page
|
|
121001
121060
|
.getByTestId(NEETO_FILTERS_SELECTORS.emailSelectContainer)
|
|
121002
|
-
.
|
|
121061
|
+
.getByRole("combobox")
|
|
121003
121062
|
.click();
|
|
121004
121063
|
await this.page
|
|
121005
|
-
.
|
|
121064
|
+
.getByRole("option", { name: email.condition, exact: true })
|
|
121006
121065
|
.click();
|
|
121007
121066
|
await this.page
|
|
121008
121067
|
.getByTestId(NEETO_FILTERS_SELECTORS.filtersEmailFilter)
|
|
@@ -121135,39 +121194,38 @@ class ApiKeysPage {
|
|
|
121135
121194
|
this.t = getI18nInstance().t;
|
|
121136
121195
|
}
|
|
121137
121196
|
enableExpiryDate = async (expiryDate) => {
|
|
121138
|
-
const
|
|
121139
|
-
const
|
|
121140
|
-
|
|
121141
|
-
const expiryDateInput = this.page
|
|
121142
|
-
.getByTestId(COMMON_SELECTORS.paneBody)
|
|
121143
|
-
.getByTestId(ADMIN_PANEL_SELECTORS.expiryDateInput);
|
|
121144
|
-
const nextYearBtn = this.page.getByLabel(DATE_TEXTS.nextYear, {
|
|
121145
|
-
exact: true,
|
|
121197
|
+
const dialog = this.page.getByRole("dialog");
|
|
121198
|
+
const neverExpiresCheckbox = dialog.getByRole("checkbox", {
|
|
121199
|
+
name: this.t("neetoApiKeys.fields.neverExpire"),
|
|
121146
121200
|
});
|
|
121147
|
-
await
|
|
121148
|
-
.
|
|
121149
|
-
.
|
|
121150
|
-
|
|
121151
|
-
await
|
|
121152
|
-
|
|
121153
|
-
|
|
121201
|
+
await expect(async () => {
|
|
121202
|
+
await neverExpiresCheckbox.uncheck();
|
|
121203
|
+
await expect(neverExpiresCheckbox).not.toBeChecked();
|
|
121204
|
+
}).toPass({ timeout: 10_000 });
|
|
121205
|
+
const userProps = await getGlobalUserProps(this.page);
|
|
121206
|
+
const formattedExpiryDate = dayjs(expiryDate, DATE_FORMATS.date).format(userProps?.dateFormat);
|
|
121207
|
+
const expiryDateInput = dialog.getByRole("textbox", {
|
|
121208
|
+
name: this.t("neetoApiKeys.fields.expiryDate"),
|
|
121154
121209
|
});
|
|
121155
|
-
await
|
|
121156
|
-
|
|
121157
|
-
expect(
|
|
121158
|
-
|
|
121159
|
-
expect(this.page.getByTitle(normalizedDate.format(DATE_FORMATS.calendarDate))).toHaveClass(RegExp(DATE_PICKER_SELECTORS.selectedDateInCalendarClass)),
|
|
121160
|
-
]);
|
|
121161
|
-
await this.page.keyboard.press("Enter");
|
|
121162
|
-
await expect(nextYearBtn).toBeHidden({ timeout: 15_000 });
|
|
121210
|
+
await expect(async () => {
|
|
121211
|
+
await expiryDateInput.fill(formattedExpiryDate);
|
|
121212
|
+
await expect(expiryDateInput).toHaveValue(formattedExpiryDate);
|
|
121213
|
+
}).toPass({ timeout: 10_000 });
|
|
121163
121214
|
};
|
|
121164
121215
|
fillApiKeyDetails = async ({ label, expiryDate }) => {
|
|
121216
|
+
const dialog = this.page.getByRole("dialog");
|
|
121165
121217
|
await this.page
|
|
121166
121218
|
.getByTestId(COMMON_SELECTORS.paneBody)
|
|
121167
121219
|
.getByTestId(COMMON_SELECTORS.customInputField("name"))
|
|
121168
121220
|
.fill(label);
|
|
121169
121221
|
isPresent(expiryDate) && (await this.enableExpiryDate(expiryDate));
|
|
121170
|
-
|
|
121222
|
+
const saveChangesButton = this.page.getByTestId(COMMON_SELECTORS.saveChangesButton);
|
|
121223
|
+
await expect(saveChangesButton).toBeEnabled({ timeout: 10_000 });
|
|
121224
|
+
await saveChangesButton.click();
|
|
121225
|
+
await Promise.all([
|
|
121226
|
+
expect(dialog).toBeHidden(),
|
|
121227
|
+
this.neetoPlaywrightUtilities.verifyToast(),
|
|
121228
|
+
]);
|
|
121171
121229
|
};
|
|
121172
121230
|
verifyApiKey = ({ targetRow, label, date }) => Promise.all([
|
|
121173
121231
|
expect(targetRow.getByRole("cell", { name: label })).toBeVisible(),
|
|
@@ -121175,11 +121233,11 @@ class ApiKeysPage {
|
|
|
121175
121233
|
expect(targetRow.getByRole("cell", {
|
|
121176
121234
|
name: this.t("neetoApiKeys.common.never"),
|
|
121177
121235
|
})).toBeVisible(),
|
|
121178
|
-
expect(targetRow.getByTestId(
|
|
121236
|
+
expect(targetRow.getByTestId(COMMON_SELECTORS.badgeContainer)).toHaveText(this.t("neetoApiKeys.tags.active")),
|
|
121179
121237
|
]);
|
|
121180
121238
|
editApiKey = async ({ label, expiryDate }) => {
|
|
121181
121239
|
await this.page
|
|
121182
|
-
.
|
|
121240
|
+
.getByRole("menu")
|
|
121183
121241
|
.getByTestId(API_KEYS_SELECTORS.editApiKeyButton)
|
|
121184
121242
|
.click();
|
|
121185
121243
|
await this.fillApiKeyDetails({ label, expiryDate });
|
|
@@ -121187,7 +121245,7 @@ class ApiKeysPage {
|
|
|
121187
121245
|
deleteApiKey = async (targetRow) => {
|
|
121188
121246
|
await targetRow.getByTestId(COMMON_SELECTORS.dropdownIcon).click();
|
|
121189
121247
|
await this.page
|
|
121190
|
-
.
|
|
121248
|
+
.getByRole("menu")
|
|
121191
121249
|
.getByTestId(API_KEYS_SELECTORS.deleteApiKeyButton)
|
|
121192
121250
|
.click();
|
|
121193
121251
|
await this.page
|
|
@@ -121222,11 +121280,10 @@ class AuditLogsPage {
|
|
|
121222
121280
|
admin;
|
|
121223
121281
|
constructor(page, neetoPlaywrightUtilities,
|
|
121224
121282
|
/** @deprecated Audit log messages no longer include the product name. */
|
|
121225
|
-
|
|
121226
|
-
product) {
|
|
121283
|
+
product, timeZone = "Asia/Kolkata") {
|
|
121227
121284
|
this.page = page;
|
|
121228
121285
|
this.neetoPlaywrightUtilities = neetoPlaywrightUtilities;
|
|
121229
|
-
this.currentDate = dayjs().tz(
|
|
121286
|
+
this.currentDate = dayjs().tz(timeZone).format("MMM D, YYYY");
|
|
121230
121287
|
this.messageBuilders = {
|
|
121231
121288
|
[ACTIONS.inviteUsers]: (data) => `${this.admin} added ${data.emails.join(", ").toLowerCase()}.`,
|
|
121232
121289
|
[ACTIONS.updatedUser]: (data) => `${this.admin} changed ${data.emails[0].toLowerCase()}'s email from ${data.emails[0].toLowerCase()} to ${data.emails[1].toLowerCase()}.`,
|
|
@@ -121599,12 +121656,12 @@ class RolesPage {
|
|
|
121599
121656
|
: this.page;
|
|
121600
121657
|
parentPermission &&
|
|
121601
121658
|
(await parentPermissionSelector
|
|
121602
|
-
.
|
|
121603
|
-
.click(
|
|
121659
|
+
.getByLabel(parentPermission, { exact: true })
|
|
121660
|
+
.click());
|
|
121604
121661
|
for (const permission of permissions) {
|
|
121605
121662
|
await parentPermissionSelector
|
|
121606
|
-
.
|
|
121607
|
-
.click(
|
|
121663
|
+
.getByLabel(permission, { exact: true })
|
|
121664
|
+
.click();
|
|
121608
121665
|
}
|
|
121609
121666
|
await Promise.all([
|
|
121610
121667
|
this.page.getByTestId(ROLES_SELECTORS.proceedButton).click(),
|
|
@@ -122191,13 +122248,14 @@ const verifyFreezeColumnAction = async (page, t) => {
|
|
|
122191
122248
|
document.body.style.zoom = "0.25";
|
|
122192
122249
|
}));
|
|
122193
122250
|
await unFreezeAllColumns({ columnHeaders, columnOffset, page, t });
|
|
122194
|
-
await toggleColumnState({ columnHeaders, columnOffset, page });
|
|
122251
|
+
await toggleColumnState({ columnHeaders, columnOffset, page, t });
|
|
122195
122252
|
await validateColumnNames(columnHeaders, columnOffset, originalColumnNames);
|
|
122196
122253
|
await toggleColumnState({
|
|
122197
122254
|
columnHeaders,
|
|
122198
122255
|
columnOffset,
|
|
122199
122256
|
action: "Unfreeze",
|
|
122200
122257
|
page,
|
|
122258
|
+
t,
|
|
122201
122259
|
});
|
|
122202
122260
|
await expect(columnHeader).toHaveText(originalColumnNames);
|
|
122203
122261
|
moreThanFiveColumns &&
|
|
@@ -122214,21 +122272,22 @@ const unFreezeAllColumns = async ({ columnHeaders, columnOffset, page, t, }) =>
|
|
|
122214
122272
|
for (let i = columnHeaders.length - 1; i >= columnOffset; i--) {
|
|
122215
122273
|
const currentHeader = columnHeaders[i];
|
|
122216
122274
|
await currentHeader.getByTestId(TABLE_SELECTORS.columnMenuButton).click();
|
|
122217
|
-
await expect(page.
|
|
122275
|
+
await expect(page.getByRole("menu")).toBeVisible();
|
|
122218
122276
|
(await unFreezeColumnButton.isVisible())
|
|
122219
122277
|
? await unFreezeColumnButton.click()
|
|
122220
|
-
: await
|
|
122221
|
-
.getByTestId(TABLE_SELECTORS.columnMenuButton)
|
|
122222
|
-
.click();
|
|
122278
|
+
: await page.keyboard.press("Escape");
|
|
122223
122279
|
}
|
|
122224
122280
|
};
|
|
122225
|
-
const toggleColumnState = async ({ columnHeaders, columnOffset, action = "Freeze", page, }) => {
|
|
122281
|
+
const toggleColumnState = async ({ columnHeaders, columnOffset, action = "Freeze", page, t, }) => {
|
|
122226
122282
|
const firstColumnIndex = columnOffset;
|
|
122227
122283
|
const lastColumnIndex = columnHeaders.length - 1;
|
|
122228
122284
|
const targetIndex = action === "Freeze" ? lastColumnIndex : firstColumnIndex;
|
|
122285
|
+
const toggleButtonText = action === "Freeze"
|
|
122286
|
+
? t("neetoui.table.freezeColumn")
|
|
122287
|
+
: t("neetoui.table.unFreezeColumn");
|
|
122229
122288
|
const toggleButton = page
|
|
122230
122289
|
.getByTestId(TABLE_SELECTORS.freezeUnfreezeButton)
|
|
122231
|
-
.filter({ hasText:
|
|
122290
|
+
.filter({ hasText: toggleButtonText });
|
|
122232
122291
|
for (let i = firstColumnIndex; i < lastColumnIndex; i++) {
|
|
122233
122292
|
const columnHeader = columnHeaders[targetIndex];
|
|
122234
122293
|
(await page.getByTestId(COMMON_SELECTORS.tooltip).isVisible()) &&
|
|
@@ -122238,9 +122297,9 @@ const toggleColumnState = async ({ columnHeaders, columnOffset, action = "Freeze
|
|
|
122238
122297
|
}
|
|
122239
122298
|
};
|
|
122240
122299
|
const validateColumnNames = async (columnHeaders, columnOffset, originalColumnNames) => {
|
|
122241
|
-
|
|
122242
|
-
|
|
122243
|
-
await expect(columnHeaders[i]).toHaveText(
|
|
122300
|
+
const lastColumnIndex = columnHeaders.length - 1;
|
|
122301
|
+
for (let i = columnOffset; i < lastColumnIndex; i++) {
|
|
122302
|
+
await expect(columnHeaders[i]).toHaveText(originalColumnNames[columnOffset + lastColumnIndex - i]);
|
|
122244
122303
|
}
|
|
122245
122304
|
};
|
|
122246
122305
|
const verifyReorderColumns = async (page) => {
|
|
@@ -126573,4 +126632,4 @@ class InboundEmailApis {
|
|
|
126573
126632
|
};
|
|
126574
126633
|
}
|
|
126575
126634
|
|
|
126576
|
-
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, EDITOR_VERIFY_TEXT_COLOR, 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_MAILPIT_ENABLED, IS_STAGING_ENV, ImageUploader, InboundEmailApis, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, KEYBOARD_SHORTCUT_TEST_CASES, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MAILPIT_BASE_URL, MAILPIT_DOMAIN_NAME, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MICROSOFT_LOGIN_SELECTORS, MICROSOFT_LOGIN_TEXTS, MailerUtils, MailpitApi, 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_TEST_EMAIL_V2, ZAPIER_WEB_TEXTS, ZapierPage, authenticateUser, baseURLGenerator, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, createOrganizationViaRake, currencyUtils, dataQa, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, filterUtils, fixedMenuSelector, generatePhoneNumber, generatePhoneNumberDetails, generateRandomBypassEmail, generateRandomFile, generateStagingData, getByDataQA, getClipboardContent, getDirname, getFormattedPhoneNumber, getFullUrl, getGlobalUserProps, getGlobalUserState, getImagePathAndName, getIsoCodeFromPhoneCode, getListCount, globalShortcuts, grantClipboardPermissions, hexToRGB, hexToRGBA, i18nFixture, imageRegex, initializeCredentials, initializeTestData, initializeTotp, isGithubIssueOpen, isStagingOrganizationExpired, joinHyphenCase, joinString, login, mailpitDomainName, networkConditions, networkThrottlingUsingCDP, optionSelector, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, stealth as stealthTest, tableUtils, toCamelCase, updateCredentials, warmup, withCookieCache, writeDataToFile };
|
|
126635
|
+
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, EDITOR_VERIFY_TEXT_COLOR, 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_MAILPIT_ENABLED, IS_STAGING_ENV, ImageUploader, InboundEmailApis, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, KEYBOARD_SHORTCUT_TEST_CASES, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MAILPIT_BASE_URL, MAILPIT_DOMAIN_NAME, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MICROSOFT_LOGIN_SELECTORS, MICROSOFT_LOGIN_TEXTS, MailerUtils, MailpitApi, 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_TEST_EMAIL_V2, ZAPIER_WEB_TEXTS, ZapierPage, authenticateUser, baseURLGenerator, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, createOrganizationViaRake, currencyUtils, dataQa, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, filterUtils, fixedMenuSelector, generatePhoneNumber, generatePhoneNumberDetails, generateRandomBypassEmail, generateRandomFile, generateStagingData, getByDataQA, getClipboardContent, getDirname, getFormattedPhoneNumber, getFullUrl, getGlobalUserProps, getGlobalUserState, getImagePathAndName, getIsoCodeFromPhoneCode, getListCount, globalShortcuts, grantClipboardPermissions, hexToRGB, hexToRGBA, i18nFixture, imageRegex, initializeCredentials, initializeTestData, initializeTotp, isGithubIssueOpen, isStagingOrganizationExpired, joinHyphenCase, joinString, login, mailpitDomainName, networkConditions, networkThrottlingUsingCDP, optionSelector, readFileAsBrowserFile, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, stealth as stealthTest, tableUtils, toCamelCase, updateCredentials, warmup, withCookieCache, writeDataToFile };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bigbinary/neeto-playwright-commons",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.5",
|
|
4
4
|
"description": "A package encapsulating common playwright code across neeto projects.",
|
|
5
5
|
"repository": "git@github.com:bigbinary/neeto-playwright-commons.git",
|
|
6
6
|
"license": "apache-2.0",
|