@bigbinary/neeto-playwright-commons 1.27.0 β†’ 1.27.1

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 CHANGED
@@ -2173,7 +2173,6 @@ declare class HelpAndProfilePage {
2173
2173
  kbDocsBaseURL,
2174
2174
  changelogBaseURL
2175
2175
  }: HelpAndProfilePageInitializerProps);
2176
- private hoverOnBody;
2177
2176
  /**
2178
2177
  *
2179
2178
  * Opens the Help Center and expects the chat button within it to be visible.
@@ -2898,17 +2897,6 @@ declare class WebhooksPage {
2898
2897
  /**
2899
2898
  * @deprecated This method is deprecated. Use getTokenViaAPI instead.
2900
2899
  */
2901
- /**
2902
- *
2903
- * Retrieves the webhook URL and token from a third-party site.
2904
- *
2905
- * Object containing webhook site URL and token.
2906
- *
2907
- * @example
2908
- *
2909
- * const { webhookSiteURL, webhookToken } = await webhooksPage.getWebhookURL();
2910
- * @endexample
2911
- */
2912
2900
  getWebhookURL: () => Promise<{
2913
2901
  webhookSiteURL: string;
2914
2902
  webhookToken: string | undefined;
@@ -4580,19 +4568,20 @@ declare class ApiKeysPage {
4580
4568
  neetoPlaywrightUtilities: CustomCommands;
4581
4569
  t: TFunction;
4582
4570
  constructor(page: Page, neetoPlaywrightUtilities: CustomCommands);
4571
+ private enableExpiryDate;
4583
4572
  /**
4584
4573
  *
4585
4574
  * Used to fill in the details for creating or editing an API key.
4586
4575
  *
4587
4576
  * label (required): The name for the API key.
4588
4577
  *
4589
- * expiryDate (optional): The day of the month for the expiry date, formatted as "dd".
4578
+ * expiryDate (optional): The expiry date for the API key, formatted as "DD/MM/YYYY".
4590
4579
  *
4591
4580
  * @example
4592
4581
  *
4593
4582
  * await apiKeysPage.fillApiKeyDetails({
4594
4583
  * label: "API Key",
4595
- * expiryDate: "15"
4584
+ * expiryDate: "08/11/2025"
4596
4585
  * });
4597
4586
  * @endexample
4598
4587
  */
@@ -4723,23 +4712,6 @@ declare class AuditLogsPage {
4723
4712
  messageBuilders: MessageBuilders;
4724
4713
  private admin;
4725
4714
  constructor(page: Page, neetoPlaywrightUtilities: CustomCommands, product?: NeetoProducts | undefined);
4726
- verifyAuditLogs: <T extends ActionDataKey>({
4727
- action,
4728
- adminName,
4729
- data
4730
- }: VerifyAuditLogProps<T>) => Promise<void>;
4731
- private assertAuditLogContent;
4732
- /**
4733
- * @deprecated This method is deprecated. Use verifyAuditLogs instead.
4734
- */
4735
- verifyDataInPane: ({}: {}) => void;
4736
- /**
4737
- * @deprecated This method is deprecated. Use verifyAuditLogs instead.
4738
- */
4739
- verifyAuditLog: ({}: {}) => Promise<void>;
4740
- /**
4741
- * @deprecated This method is deprecated. Use verifyAuditLogs instead.
4742
- */
4743
4715
  /**
4744
4716
  *
4745
4717
  * 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.
@@ -4752,13 +4724,30 @@ declare class AuditLogsPage {
4752
4724
  *
4753
4725
  * @example
4754
4726
  *
4755
- * await auditLogsPage.verifyAuditLogEntry({
4727
+ * await auditLogsPage.verifyAuditLogs({
4756
4728
  * action: ACTIONS.inviteUsers,
4757
4729
  * adminName: "Oliver Smith",
4758
4730
  * data: { emails: ["user1@example.com", "user2@example.com"] },
4759
4731
  * });
4760
4732
  * @endexample
4761
4733
  */
4734
+ verifyAuditLogs: <T extends ActionDataKey>({
4735
+ action,
4736
+ adminName,
4737
+ data
4738
+ }: VerifyAuditLogProps<T>) => Promise<void>;
4739
+ private assertAuditLogContent;
4740
+ /**
4741
+ * @deprecated This method is deprecated. Use verifyAuditLogs instead.
4742
+ */
4743
+ verifyDataInPane: ({}: {}) => void;
4744
+ /**
4745
+ * @deprecated This method is deprecated. Use verifyAuditLogs instead.
4746
+ */
4747
+ verifyAuditLog: ({}: {}) => Promise<void>;
4748
+ /**
4749
+ * @deprecated This method is deprecated. Use verifyAuditLogs instead.
4750
+ */
4762
4751
  verifyAuditLogEntry: ({}: {}) => Promise<void>;
4763
4752
  }
4764
4753
  interface CustomDomainPageProps {
@@ -5533,6 +5522,13 @@ declare const networkConditions: Record<"Slow 3G" | "Fast 3G" | "No Throttling",
5533
5522
  declare const TEAM_MEMBER_TEXTS: {
5534
5523
  emailSubject: string;
5535
5524
  };
5525
+ declare const KEYBOARD_SHORTCUT_TEST_CASES: readonly [{
5526
+ readonly os: "windows";
5527
+ readonly agent: string;
5528
+ }, {
5529
+ readonly os: "mac";
5530
+ readonly agent: string;
5531
+ }];
5536
5532
  /**
5537
5533
  *
5538
5534
  * newConversation: Text for initiating a new conversation.
@@ -6712,6 +6708,7 @@ declare const NEETO_FILTERS_SELECTORS: {
6712
6708
  *
6713
6709
  */
6714
6710
  declare const HELP_CENTER_SELECTORS: {
6711
+ helpMenuBtn: string;
6715
6712
  helpButton: string;
6716
6713
  documentationButton: string;
6717
6714
  keyboardShortcutButton: string;
@@ -7882,6 +7879,23 @@ declare const readFileSyncIfExists: ReadFileSyncIfExists;
7882
7879
  * @example
7883
7880
  *
7884
7881
  * const user = getGlobalUserState()
7882
+ *
7883
+ * console.log(userProps);
7884
+ *
7885
+ * Output:
7886
+ * {
7887
+ * firstName: 'AndrΓ©',
7888
+ * lastName: "O'Reilly",
7889
+ * otp: 111111,
7890
+ * domain: 'neetoform.net',
7891
+ * currentUserName: "AndrΓ© O'Reilly",
7892
+ * businessName: 'cpt-form-0903-0828-11339',
7893
+ * subdomainName: 'cpt-form-0903-0828-11339',
7894
+ * email: 'cpts9gnqty9+form+0903-0828-11339@bigbinary.com',
7895
+ * isLoggedIn: 'true',
7896
+ * baseUrl: 'https://cpt-form-0903-0828-11339.neetoform.net'
7897
+ * }
7898
+ *
7885
7899
  * @endexample
7886
7900
  */
7887
7901
  declare const getGlobalUserState: () => Record<string, string>;
@@ -7928,19 +7942,6 @@ declare const clearCredentials: ClearCredentials;
7928
7942
  /**
7929
7943
  * @deprecated Use hyphenate from neeto-cist instead.
7930
7944
  */
7931
- /**
7932
- *
7933
- * Used to hyphenize the strings. It takes the following parameters:
7934
- *
7935
- * input: The string that need to hyphenized.
7936
- *
7937
- * @example
7938
- *
7939
- * import {hyphenize} from "@bigbinary/neeto-playwright-commons"
7940
- * const name = hyphenize("hello world")
7941
- * console.log(name) // hello-world
7942
- * @endexample
7943
- */
7944
7945
  declare const hyphenize: Hyphenize;
7945
7946
  /**
7946
7947
  *
@@ -8806,5 +8807,5 @@ interface Overrides {
8806
8807
  * @endexample
8807
8808
  */
8808
8809
  declare const definePlaywrightConfig: (overrides: Overrides) => PlaywrightTestConfig<{}, {}>;
8809
- export { ACTIONS, ADMIN_PANEL_SELECTORS, API_KEYS_SELECTORS, API_ROUTES, AUDIT_LOGS_SELECTORS, AdminPanelPage, 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, 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, EmbedBase, FILE_FORMATS, FONT_SIZE_SELECTORS, GLOBAL_TRANSLATIONS_PATTERN, GOOGLE_ANALYTICS_SELECTORS, GOOGLE_CALENDAR_DATE_FORMAT, GOOGLE_LOGIN_SELECTORS, GOOGLE_LOGIN_TEXTS, GOOGLE_SHEETS_SELECTORS, GooglePage, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IPRestrictionsPage, IP_RESTRICTIONS_SELECTORS, IS_DEV_ENV, IS_STAGING_ENV, ImageUploader, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, 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, 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, RailsEmailRakeClient, 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_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, headerUtils, hexToRGB, hexToRGBA, hyphenize, i18nFixture, initializeCredentials, initializeTestData, initializeTotp, isGithubIssueOpen, joinHyphenCase, joinString, login, loginWithoutSSO, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, _default as stealthTest, tableUtils, toCamelCase, updateCredentials, writeDataToFile };
8810
+ export { ACTIONS, ADMIN_PANEL_SELECTORS, API_KEYS_SELECTORS, API_ROUTES, AUDIT_LOGS_SELECTORS, AdminPanelPage, 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, 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, EmbedBase, FILE_FORMATS, FONT_SIZE_SELECTORS, GLOBAL_TRANSLATIONS_PATTERN, GOOGLE_ANALYTICS_SELECTORS, GOOGLE_CALENDAR_DATE_FORMAT, GOOGLE_LOGIN_SELECTORS, GOOGLE_LOGIN_TEXTS, GOOGLE_SHEETS_SELECTORS, GooglePage, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IPRestrictionsPage, IP_RESTRICTIONS_SELECTORS, 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, 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, RailsEmailRakeClient, 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_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, headerUtils, hexToRGB, hexToRGBA, hyphenize, i18nFixture, initializeCredentials, initializeTestData, initializeTotp, isGithubIssueOpen, joinHyphenCase, joinString, login, loginWithoutSSO, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, _default as stealthTest, tableUtils, toCamelCase, updateCredentials, writeDataToFile };
8810
8811
  export type { BaseThemeStyle, BaseThemeStyleType, ColumnMenuAction, CountryProps, CustomFixture, IntroPageThemeStyle, IntroPageThemeStyleType, ProjectName, ThemeCategory, ValueOf };
package/index.js CHANGED
@@ -5025,7 +5025,6 @@ const generateStagingData = (product = "invoice") => {
5025
5025
  };
5026
5026
  };
5027
5027
 
5028
- /* eslint-disable playwright/no-skipped-test */
5029
5028
  const execCommand = (command) => execSync(command)
5030
5029
  .toString("utf-8")
5031
5030
  .replace(/[\n\r\s]+$/, "");
@@ -5190,7 +5189,7 @@ const globalShortcuts = (t) => [
5190
5189
  },
5191
5190
  {
5192
5191
  description: t("neetoMolecules.keyboardShortcuts.global.openProductSwitcher"),
5193
- sequence: "ctrl+e",
5192
+ sequence: "ctrl+u",
5194
5193
  },
5195
5194
  ];
5196
5195
  const generatePhoneNumber = () => `${"+91"} 9${faker.string.numeric(4)} ${faker.string.numeric(5)}`;
@@ -5356,8 +5355,9 @@ const NEETO_FILTERS_SELECTORS = {
5356
5355
  };
5357
5356
 
5358
5357
  const HELP_CENTER_SELECTORS = {
5358
+ helpMenuBtn: "help-menu-button",
5359
5359
  helpButton: "help-button",
5360
- documentationButton: "help-link-help-center-button",
5360
+ documentationButton: "help-link-help-articles-button",
5361
5361
  keyboardShortcutButton: "help-link-keyboard-shortcut-button",
5362
5362
  chatButton: "help-link-live-chat-button",
5363
5363
  whatsNewButton: "help-link-engage-button",
@@ -114395,29 +114395,21 @@ const THEMES_TEXTS = {
114395
114395
 
114396
114396
  class HelpAndProfilePage {
114397
114397
  constructor({ page, neetoPlaywrightUtilities, chatApiBaseURL, kbDocsBaseURL, changelogBaseURL, }) {
114398
- this.hoverOnBody = () => this.page.locator("body").hover({ timeout: 10000 });
114399
114398
  this.openHelpCenter = async () => {
114399
+ const floatingActionMenuBtn = this.page.getByTestId(COMMON_SELECTORS.floatingActionMenuButton);
114400
114400
  await expect(async () => {
114401
- await this.hoverOnBody();
114402
- const floatingActionMenuButton = this.page.getByTestId(COMMON_SELECTORS.floatingActionMenuButton);
114403
- await floatingActionMenuButton.scrollIntoViewIfNeeded();
114404
- await floatingActionMenuButton.hover();
114405
- await expect(this.page.getByTestId(HELP_CENTER_SELECTORS.chatButton)).toBeVisible();
114401
+ await floatingActionMenuBtn.scrollIntoViewIfNeeded();
114402
+ await floatingActionMenuBtn.hover();
114403
+ await expect(this.page.getByTestId(HELP_CENTER_SELECTORS.whatsNewButton)).toBeVisible();
114406
114404
  }).toPass({ timeout: 60000 });
114407
114405
  };
114408
- this.openLiveChatAndVerify = async (widgetVisibilityTimeout = 10000) => {
114409
- await expect(async () => {
114410
- await this.openHelpCenter();
114411
- await this.page.getByTestId(HELP_CENTER_SELECTORS.chatButton).click();
114412
- await expect(this.neetoChatWidget).toBeVisible({
114413
- timeout: widgetVisibilityTimeout,
114414
- });
114415
- await expect(this.neetoChatSpinner).toBeHidden({ timeout: 20 * 1000 });
114416
- await expect(this.neetoChatWidget).toBeVisible({
114417
- timeout: widgetVisibilityTimeout,
114418
- });
114419
- }).toPass({ timeout: 35000 + widgetVisibilityTimeout * 2 });
114420
- };
114406
+ this.openLiveChatAndVerify = () => expect(async () => {
114407
+ await this.openHelpCenter();
114408
+ await this.page.getByTestId(HELP_CENTER_SELECTORS.helpMenuBtn).click();
114409
+ await this.page.getByTestId(HELP_CENTER_SELECTORS.chatButton).click();
114410
+ await expect(this.neetoChatSpinner).toBeHidden({ timeout: 20000 });
114411
+ await expect(this.neetoChatWidget).toBeVisible({ timeout: 10000 });
114412
+ }).toPass({ timeout: 60000 });
114421
114413
  /**
114422
114414
  * @deprecated This method is deprecated. Use openAndVerifyChatWidget instead.
114423
114415
  */
@@ -114437,7 +114429,7 @@ class HelpAndProfilePage {
114437
114429
  this.openAndVerifyChatWidget = async () => {
114438
114430
  await this.page.reload();
114439
114431
  await this.neetoPlaywrightUtilities.waitForPageLoad();
114440
- await test$1.step("1: Open live chat and verify iframe", () => this.openLiveChatAndVerify());
114432
+ await test$1.step("1: Open live chat", this.openLiveChatAndVerify);
114441
114433
  await test$1.step("2: Close and reopen live chat frame", async () => {
114442
114434
  await this.page.getByTestId(CHAT_WIDGET_SELECTORS.closeChat).click();
114443
114435
  await expect(this.neetoChatWidget).toBeHidden({ timeout: 35000 });
@@ -114466,6 +114458,7 @@ class HelpAndProfilePage {
114466
114458
  this.openAndVerifyHelpArticles = async () => {
114467
114459
  await test$1.step("1: Open Help Center links", this.openHelpCenter);
114468
114460
  await test$1.step("2: Open and verify help articles link", async () => {
114461
+ await this.page.getByTestId(HELP_CENTER_SELECTORS.helpMenuBtn).click();
114469
114462
  const helpArticlesPromise = this.page.waitForEvent("popup");
114470
114463
  await this.page
114471
114464
  .getByTestId(HELP_CENTER_SELECTORS.documentationButton)
@@ -114506,7 +114499,7 @@ class HelpAndProfilePage {
114506
114499
  });
114507
114500
  };
114508
114501
  this.openAndVerifyChangelog = async () => {
114509
- await test$1.step("1: Open Help Center links and changelog", this.openChangelogPane);
114502
+ await test$1.step("1: Open changelog", this.openChangelogPane);
114510
114503
  await test$1.step("2: Close and reopen changelog pane", async () => {
114511
114504
  await this.page
114512
114505
  .getByTestId(CHANGELOG_WIDGET_SELECTORS.closeButton)
@@ -114523,8 +114516,10 @@ class HelpAndProfilePage {
114523
114516
  await this.neetoPlaywrightUtilities.waitForPageLoad({
114524
114517
  customPageContext: changelogPage,
114525
114518
  });
114526
- await expect(changelogPage.getByRole("button", { name: ENGAGE_TEXTS.subscribe })).toBeVisible({ timeout: 10000 });
114527
- await expect(changelogPage).toHaveURL(this.changelogBaseURL);
114519
+ await Promise.all([
114520
+ expect(changelogPage).toHaveURL(this.changelogBaseURL),
114521
+ expect(changelogPage.getByRole("button", { name: ENGAGE_TEXTS.subscribe })).toBeVisible({ timeout: 10000 }),
114522
+ ]);
114528
114523
  await changelogPage.close();
114529
114524
  });
114530
114525
  };
@@ -114643,21 +114638,21 @@ class HelpAndProfilePage {
114643
114638
  await expect(this.page.getByTestId(COMMON_SELECTORS.appSwitcherWrapper)).toBeVisible();
114644
114639
  }).toPass({ timeout: 45000 }));
114645
114640
  await test$1.step("2: Verify search functionality", async () => {
114646
- const playdashAppLink = this.page.getByTestId(COMMON_SELECTORS.appLink(productName));
114647
- const replayAppLink = this.page.getByTestId(COMMON_SELECTORS.appLink("Replay"));
114641
+ const playdash = this.page.getByTestId(COMMON_SELECTORS.appLink(productName));
114642
+ const replay = this.page.getByTestId(COMMON_SELECTORS.appLink("Replay"));
114648
114643
  const searchInput = this.page.getByTestId(COMMON_SELECTORS.productSwitcherSearchInput);
114649
114644
  await searchInput.fill(faker.word.words(3));
114650
114645
  //TODO: Use data-testid label when this https://github.com/bigbinary/neeto-molecules/issues/2114 is resolved
114651
114646
  await expect(this.page.getByText(this.t("neetoMolecules.productSwitcher.noApps"))).toBeVisible();
114652
114647
  await searchInput.fill(searchQueryPartial);
114653
114648
  await Promise.all([
114654
- expect(playdashAppLink).toBeVisible(),
114655
- expect(replayAppLink).toBeVisible(),
114649
+ expect(playdash).toBeVisible(),
114650
+ expect(replay).toBeVisible(),
114656
114651
  ]);
114657
114652
  await searchInput.fill(searchQueryFull);
114658
114653
  await Promise.all([
114659
- expect(playdashAppLink).toBeVisible(),
114660
- expect(replayAppLink).toBeHidden(),
114654
+ expect(playdash).toBeVisible(),
114655
+ expect(replay).toBeHidden(),
114661
114656
  ]);
114662
114657
  });
114663
114658
  };
@@ -114684,7 +114679,7 @@ class HelpAndProfilePage {
114684
114679
  this.verifyLogout = async () => {
114685
114680
  if (shouldSkipSetupAndTeardown())
114686
114681
  return;
114687
- await test$1.step("1: Open Help center and verify", this.openHelpCenter);
114682
+ await test$1.step("1: Open Help center", this.openHelpCenter);
114688
114683
  await test$1.step("2: Click logout and verify", async () => {
114689
114684
  await this.page
114690
114685
  .getByTestId(PROFILE_SECTION_SELECTORS.logoutButton)
@@ -114766,6 +114761,7 @@ class HelpAndProfilePage {
114766
114761
  this.openAndVerifyStatus = async (appName) => {
114767
114762
  await test$1.step("1: Open Help Center links", this.openHelpCenter);
114768
114763
  await test$1.step("2: Open and verify status page", async () => {
114764
+ await this.page.getByTestId(HELP_CENTER_SELECTORS.helpMenuBtn).click();
114769
114765
  const statusPagePromise = this.page.waitForEvent("popup");
114770
114766
  await this.page.getByTestId(HELP_CENTER_SELECTORS.statusButton).click();
114771
114767
  const statusPage = await statusPagePromise;
@@ -114779,6 +114775,7 @@ class HelpAndProfilePage {
114779
114775
  this.openAndVerifyCommunity = async () => {
114780
114776
  await test$1.step("1: Open Help Center links", this.openHelpCenter);
114781
114777
  await test$1.step("2: Open and verify community", async () => {
114778
+ await this.page.getByTestId(HELP_CENTER_SELECTORS.helpMenuBtn).click();
114782
114779
  const communityPagePromise = this.page.waitForEvent("popup");
114783
114780
  await this.page
114784
114781
  .getByTestId(HELP_CENTER_SELECTORS.communityButton)
@@ -119227,36 +119224,45 @@ class OrganizationPage {
119227
119224
  }
119228
119225
  }
119229
119226
 
119227
+ dayjs.extend(customParseFormat);
119230
119228
  class ApiKeysPage {
119231
119229
  constructor(page, neetoPlaywrightUtilities) {
119230
+ this.page = page;
119231
+ this.neetoPlaywrightUtilities = neetoPlaywrightUtilities;
119232
+ this.enableExpiryDate = async (expiryDate) => {
119233
+ const userProps = await getGlobalUserProps(this.page);
119234
+ const normalizedDate = dayjs(expiryDate, DATE_FORMATS.date);
119235
+ const formattedExpiryDate = normalizedDate.format(userProps === null || userProps === void 0 ? void 0 : userProps.dateFormat);
119236
+ const expiryDateInput = this.page
119237
+ .getByTestId(COMMON_SELECTORS.paneBody)
119238
+ .getByTestId(ADMIN_PANEL_SELECTORS.expiryDateInput);
119239
+ const nextYearBtn = this.page.getByLabel(DATE_TEXTS.nextYear, {
119240
+ exact: true,
119241
+ });
119242
+ await this.page
119243
+ .getByTestId(COMMON_SELECTORS.checkboxInput("never-expires"))
119244
+ .uncheck();
119245
+ await expiryDateInput.click();
119246
+ await expect(nextYearBtn).toBeVisible();
119247
+ await expiryDateInput.pressSequentially(formattedExpiryDate, {
119248
+ delay: 250,
119249
+ });
119250
+ await Promise.all([
119251
+ expect(expiryDateInput).toHaveValue(formattedExpiryDate),
119252
+ expect(this.page.getByRole("button", { name: CALENDAR_LABELS.month })).toHaveText(normalizedDate.format(DATE_FORMATS.month)),
119253
+ expect(this.page.getByRole("button", { name: CALENDAR_LABELS.year })).toHaveText(normalizedDate.format(DATE_FORMATS.year)),
119254
+ expect(this.page.getByTitle(normalizedDate.format(DATE_FORMATS.calendarDate))).toHaveClass(RegExp(DATE_PICKER_SELECTORS.selectedDateInCalendarClass)),
119255
+ ]);
119256
+ await this.page.keyboard.press("Enter");
119257
+ await expect(nextYearBtn).toBeHidden();
119258
+ };
119232
119259
  this.fillApiKeyDetails = async ({ label, expiryDate }) => {
119233
119260
  await this.page
119234
119261
  .getByTestId(COMMON_SELECTORS.paneBody)
119235
119262
  .getByTestId(COMMON_SELECTORS.customInputField("label"))
119236
119263
  .fill(label);
119237
- if (expiryDate) {
119238
- await this.page
119239
- .getByTestId(COMMON_SELECTORS.checkboxInput("never-expires"))
119240
- .uncheck();
119241
- const expiryDateInput = this.page
119242
- .getByTestId(COMMON_SELECTORS.paneBody)
119243
- .getByTestId(ADMIN_PANEL_SELECTORS.expiryDateInput);
119244
- await expiryDateInput.click();
119245
- await expect(this.page.getByLabel(DATE_TEXTS.nextYear, { exact: true })).toBeVisible();
119246
- await expiryDateInput.pressSequentially(expiryDate, { delay: 250 });
119247
- dayjs.extend(customParseFormat);
119248
- const parsedExpiryDate = dayjs(expiryDate, DATE_FORMATS.date);
119249
- await Promise.all([
119250
- expect(expiryDateInput).toHaveValue(expiryDate),
119251
- expect(this.page.getByRole("button", { name: CALENDAR_LABELS.month })).toHaveText(parsedExpiryDate.format(DATE_FORMATS.month)),
119252
- expect(this.page.getByRole("button", { name: CALENDAR_LABELS.year })).toHaveText(parsedExpiryDate.format(DATE_FORMATS.year)),
119253
- expect(this.page.getByTitle(parsedExpiryDate.format(DATE_FORMATS.calendarDate))).toHaveClass(RegExp(DATE_PICKER_SELECTORS.selectedDateInCalendarClass)),
119254
- ]);
119255
- await this.page.keyboard.press("Enter");
119256
- await expect(this.page.getByLabel(DATE_TEXTS.nextYear, { exact: true })).toBeHidden();
119257
- }
119258
- await this.page.getByTestId(COMMON_SELECTORS.saveChangesButton).click();
119259
- await this.neetoPlaywrightUtilities.verifyToast();
119264
+ isPresent(expiryDate) && (await this.enableExpiryDate(expiryDate));
119265
+ await this.neetoPlaywrightUtilities.saveChanges({ isPane: true });
119260
119266
  };
119261
119267
  this.verifyApiKey = ({ targetRow, label, date }) => Promise.all([
119262
119268
  expect(targetRow.getByRole("cell", { name: label })).toBeVisible(),
@@ -119285,8 +119291,6 @@ class ApiKeysPage {
119285
119291
  await this.neetoPlaywrightUtilities.verifyToast();
119286
119292
  await expect(targetRow).toBeHidden();
119287
119293
  };
119288
- this.page = page;
119289
- this.neetoPlaywrightUtilities = neetoPlaywrightUtilities;
119290
119294
  this.t = getI18nInstance().t;
119291
119295
  }
119292
119296
  }
@@ -119903,6 +119907,11 @@ const TEAM_MEMBER_TEXTS = {
119903
119907
  emailSubject: "Your team members export is here",
119904
119908
  };
119905
119909
 
119910
+ const KEYBOARD_SHORTCUT_TEST_CASES = [
119911
+ { os: "windows", agent: USER_AGENTS.windows },
119912
+ { os: "mac", agent: USER_AGENTS.mac },
119913
+ ];
119914
+
119906
119915
  const PHONE_NUMBER_FORMATS = [
119907
119916
  { name: "Afghanistan", code: "+93", format: "70#######", flag: "πŸ‡¦πŸ‡«" },
119908
119917
  { name: "Aland", code: "+358", format: "5####", flag: "πŸ‡¦πŸ‡½" },
@@ -125328,5 +125337,5 @@ const definePlaywrightConfig = (overrides) => {
125328
125337
  });
125329
125338
  };
125330
125339
 
125331
- export { ACTIONS, ADMIN_PANEL_SELECTORS, API_KEYS_SELECTORS, API_ROUTES, AUDIT_LOGS_SELECTORS, AdminPanelPage, 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, 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, EmbedBase, FILE_FORMATS, FONT_SIZE_SELECTORS, GLOBAL_TRANSLATIONS_PATTERN, GOOGLE_ANALYTICS_SELECTORS, GOOGLE_CALENDAR_DATE_FORMAT, GOOGLE_LOGIN_SELECTORS, GOOGLE_LOGIN_TEXTS, GOOGLE_SHEETS_SELECTORS, GooglePage, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IPRestrictionsPage, IP_RESTRICTIONS_SELECTORS, IS_DEV_ENV, IS_STAGING_ENV, ImageUploader, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, 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, 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, RailsEmailRakeClient, 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_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, headerUtils, hexToRGB, hexToRGBA, hyphenize, i18nFixture, 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, writeDataToFile };
125340
+ export { ACTIONS, ADMIN_PANEL_SELECTORS, API_KEYS_SELECTORS, API_ROUTES, AUDIT_LOGS_SELECTORS, AdminPanelPage, 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, 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, EmbedBase, FILE_FORMATS, FONT_SIZE_SELECTORS, GLOBAL_TRANSLATIONS_PATTERN, GOOGLE_ANALYTICS_SELECTORS, GOOGLE_CALENDAR_DATE_FORMAT, GOOGLE_LOGIN_SELECTORS, GOOGLE_LOGIN_TEXTS, GOOGLE_SHEETS_SELECTORS, GooglePage, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IPRestrictionsPage, IP_RESTRICTIONS_SELECTORS, 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, 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, RailsEmailRakeClient, 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_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, headerUtils, hexToRGB, hexToRGBA, hyphenize, i18nFixture, 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, writeDataToFile };
125332
125341
  //# sourceMappingURL=index.js.map