@bigbinary/neeto-playwright-commons 4.0.1 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/index.d.ts +5 -1
  2. package/index.js +106 -72
  3. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -3593,6 +3593,7 @@ declare class EditorPage {
3593
3593
  calloutSelector: Locator;
3594
3594
  videoUploadOption: Locator;
3595
3595
  todoListSelector: Locator;
3596
+ textColorSelector: Locator;
3596
3597
  filePath: string;
3597
3598
  videoPath: string;
3598
3599
  linkUrl: string;
@@ -3624,6 +3625,7 @@ declare class EditorPage {
3624
3625
  private verifyVideoUploadOption;
3625
3626
  private verifyTodoListSelector;
3626
3627
  verifyDynamicVariables: (dynamicVariables: KeyValuePair[]) => Promise<void>;
3628
+ private verifyTextColor;
3627
3629
  private verifyCalloutSelector;
3628
3630
  private buttonsAndVerifications;
3629
3631
  private fillRandomText;
@@ -6174,6 +6176,7 @@ declare const LIST_MODIFIER_TAGS: {
6174
6176
  bulletList: string;
6175
6177
  orderedList: string;
6176
6178
  };
6179
+ declare const EDITOR_VERIFY_TEXT_COLOR = "#e60000";
6177
6180
  declare const PHONE_NUMBER_FORMATS: {
6178
6181
  name: string;
6179
6182
  code: string;
@@ -6728,6 +6731,7 @@ declare const NEETO_EDITOR_SELECTORS: {
6728
6731
  strikeOption: string;
6729
6732
  codeBlockOption: string;
6730
6733
  highlightOption: string;
6734
+ textColorOption: string;
6731
6735
  emojiOption: string;
6732
6736
  emojiDropdownIcon: string;
6733
6737
  linkInput: string;
@@ -9290,5 +9294,5 @@ interface Overrides {
9290
9294
  * @endexample
9291
9295
  */
9292
9296
  declare const definePlaywrightConfig: (overrides: Overrides) => PlaywrightTestConfig<{}, {}>;
9293
- export { ACTIONS, ADMIN_PANEL_SELECTORS, ALL_RESOURCES, ANALYTICS_RESOURCES, API_KEYS_SELECTORS, API_ROUTES, APP_RESOURCES, AUDIT_LOGS_SELECTORS, ApiKeysApi, ApiKeysPage, AuditLogsPage, BASE_URL, CALENDAR_LABELS, CERTIFICATE_LIMIT_EXCEEDED_MESSAGE, CERTIFICATE_LIMIT_EXCEEDED_REGEXP, CHANGELOG_WIDGET_SELECTORS, CHAT_WIDGET_SELECTORS, CHAT_WIDGET_TEXTS, COLOR, COMMON_SELECTORS, COMMON_TEXTS, COMMUNITY_TEXTS, CREDENTIALS, CURRENT_TIME_RANGES, CUSTOM_DOMAIN_SELECTORS, CUSTOM_DOMAIN_SUFFIX, ColorPickerUtils, CustomCommands, CustomDomainApi, CustomDomainPage, DATE_FORMATS, DATE_PICKER_SELECTORS, DATE_RANGES, DATE_TEXTS, DEFAULT_WEBHOOKS_RESPONSE_TEXT, DESCRIPTION_EDITOR_TEXTS, EMBED_SELECTORS, EMOJI_LABEL, EMPTY_STORAGE_STATE, ENGAGE_TEXTS, ENVIRONMENT, EXAMPLE_URL, EXPANDED_FONT_SIZE, EXPORT_FILE_TYPES, EditorPage, EmailDeliveryUtils, EmbedBase, FILE_FORMATS, FONTS_RESOURCES, FONT_SIZE_SELECTORS, FROM_EMAIL_ENV_KEYS, GLOBAL_TRANSLATIONS_PATTERN, GOOGLE_ANALYTICS_SELECTORS, GOOGLE_CALENDAR_DATE_FORMAT, GOOGLE_LOGIN_SELECTORS, GOOGLE_LOGIN_TEXTS, GOOGLE_SHEETS_SELECTORS, GooglePage, HELP_CENTER_ROUTES, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IPRestrictionsPage, IP_RESTRICTIONS_SELECTORS, IS_CI, IS_DEV_ENV, IS_STAGING_ENV, ImageUploader, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, KEYBOARD_SHORTCUT_TEST_CASES, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MICROSOFT_LOGIN_SELECTORS, MICROSOFT_LOGIN_TEXTS, MailerUtils, Member, MemberApis, MicrosoftPage, NEETO_AUTH_BASE_URL, NEETO_EDITOR_SELECTORS, NEETO_FILTERS_SELECTORS, NEETO_IMAGE_UPLOADER_SELECTORS, NEETO_ROUTES, NEETO_SEO_SELECTORS, NEETO_TEXT_MODIFIER_SELECTORS, NeetoAuthServer, NeetoChatWidget, NeetoEmailDeliveryApi, NeetoTowerApi, ONBOARDING_SELECTORS, ORGANIZATION_TEXTS, OTP_EMAIL_PATTERN, OrganizationPage, PAST_TIME_RANGES, PHONE_NUMBER_FORMATS, PLURAL, PRODUCT_ROLES_ROUTE_MAP, PROFILE_LINKS, PROFILE_SECTION_SELECTORS, PROJECT_NAMES, PROJECT_TRANSLATIONS_PATH, ROLES_SELECTORS, ROUTES, RailsEmailApiClient, RailsEmailUtils, RoleApis, RolesPage, SIGNUP_SELECTORS, SINGULAR, SLACK_DATA_QA_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STATUS_TEXTS, STORAGE_STATE, SecurityApi, SidebarSection, SlackApi, SlackPage, TABLE_SELECTORS, TAB_SELECTORS, TAGS_SELECTORS, TEAM_MEMBER_TEXTS, TEXT_MODIFIER_ROLES, TEXT_MODIFIER_SELECTORS, TEXT_MODIFIER_TAGS, THANK_YOU_SELECTORS, THEMES_SELECTORS, THEMES_TEXTS, THIRD_PARTY_RESOURCES, THIRD_PARTY_ROUTES, TIME_RANGES, TOASTR_MESSAGES, TWILIO_SELECTORS, TagsApi, TagsPage, TeamMembers, ThankYouApi, ThankYouPage, TwilioApi, USER_AGENTS, WEBHOOK_SELECTORS, WebhookSiteApi, WebhooksPage, ZAPIER_LIMIT_EXHAUSTED_MESSAGE, ZAPIER_SELECTORS, ZAPIER_TEST_EMAIL, ZAPIER_WEB_TEXTS, ZapierPage, baseURLGenerator, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, createOrganizationViaRake, currencyUtils, dataQa, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, fillCredentialsAndSubmit, filterUtils, generatePhoneNumber, generatePhoneNumberDetails, generateRandomBypassEmail, generateRandomFile, generateStagingData, getByDataQA, getClipboardContent, getDirname, getFormattedPhoneNumber, getFullUrl, getGlobalUserProps, getGlobalUserState, getImagePathAndName, getIsoCodeFromPhoneCode, getListCount, globalShortcuts, grantClipboardPermissions, hexToRGB, hexToRGBA, i18nFixture, imageRegex, initializeCredentials, initializeTestData, initializeTotp, isGithubIssueOpen, isStagingOrganizationExpired, joinHyphenCase, joinString, login, loginWithoutSSO, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, _default as stealthTest, tableUtils, toCamelCase, updateCredentials, warmup, withCookieCache, writeDataToFile };
9297
+ 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_STAGING_ENV, ImageUploader, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, KEYBOARD_SHORTCUT_TEST_CASES, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MICROSOFT_LOGIN_SELECTORS, MICROSOFT_LOGIN_TEXTS, MailerUtils, Member, MemberApis, MicrosoftPage, NEETO_AUTH_BASE_URL, NEETO_EDITOR_SELECTORS, NEETO_FILTERS_SELECTORS, NEETO_IMAGE_UPLOADER_SELECTORS, NEETO_ROUTES, NEETO_SEO_SELECTORS, NEETO_TEXT_MODIFIER_SELECTORS, NeetoAuthServer, NeetoChatWidget, NeetoEmailDeliveryApi, NeetoTowerApi, ONBOARDING_SELECTORS, ORGANIZATION_TEXTS, OTP_EMAIL_PATTERN, OrganizationPage, PAST_TIME_RANGES, PHONE_NUMBER_FORMATS, PLURAL, PRODUCT_ROLES_ROUTE_MAP, PROFILE_LINKS, PROFILE_SECTION_SELECTORS, PROJECT_NAMES, PROJECT_TRANSLATIONS_PATH, ROLES_SELECTORS, ROUTES, RailsEmailApiClient, RailsEmailUtils, RoleApis, RolesPage, SIGNUP_SELECTORS, SINGULAR, SLACK_DATA_QA_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STATUS_TEXTS, STORAGE_STATE, SecurityApi, SidebarSection, SlackApi, SlackPage, TABLE_SELECTORS, TAB_SELECTORS, TAGS_SELECTORS, TEAM_MEMBER_TEXTS, TEXT_MODIFIER_ROLES, TEXT_MODIFIER_SELECTORS, TEXT_MODIFIER_TAGS, THANK_YOU_SELECTORS, THEMES_SELECTORS, THEMES_TEXTS, THIRD_PARTY_RESOURCES, THIRD_PARTY_ROUTES, TIME_RANGES, TOASTR_MESSAGES, TWILIO_SELECTORS, TagsApi, TagsPage, TeamMembers, ThankYouApi, ThankYouPage, TwilioApi, USER_AGENTS, WEBHOOK_SELECTORS, WebhookSiteApi, WebhooksPage, ZAPIER_LIMIT_EXHAUSTED_MESSAGE, ZAPIER_SELECTORS, ZAPIER_TEST_EMAIL, ZAPIER_WEB_TEXTS, ZapierPage, baseURLGenerator, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, createOrganizationViaRake, currencyUtils, dataQa, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, fillCredentialsAndSubmit, filterUtils, generatePhoneNumber, generatePhoneNumberDetails, generateRandomBypassEmail, generateRandomFile, generateStagingData, getByDataQA, getClipboardContent, getDirname, getFormattedPhoneNumber, getFullUrl, getGlobalUserProps, getGlobalUserState, getImagePathAndName, getIsoCodeFromPhoneCode, getListCount, globalShortcuts, grantClipboardPermissions, hexToRGB, hexToRGBA, i18nFixture, imageRegex, initializeCredentials, initializeTestData, initializeTotp, isGithubIssueOpen, isStagingOrganizationExpired, joinHyphenCase, joinString, login, loginWithoutSSO, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, _default as stealthTest, tableUtils, toCamelCase, updateCredentials, warmup, withCookieCache, writeDataToFile };
9294
9298
  export type { BaseThemeStyle, BaseThemeStyleType, ColumnMenuAction, CountryProps, CustomFixture, EmailDeliveryConnectParams, EmailDeliveryProvider, EmailDeliveryVerifiedEmail, EmailDeliveryVerifyEmailParams, EmailDeliveryVerifyEmailResponse, EmailMatchCriteria, IntroPageThemeStyle, IntroPageThemeStyleType, OAuthEmailDeliveryProvider, ProjectName, ThemeCategory, ValueOf };
package/index.js CHANGED
@@ -1300,8 +1300,78 @@ const imageRegex = (imageName) => {
1300
1300
  return new RegExp(`${baseName}.*\\.${extension}$`);
1301
1301
  };
1302
1302
 
1303
+ const DESCRIPTION_EDITOR_TEXTS = {
1304
+ fontSize: "Font size",
1305
+ paragraph: "Paragraph",
1306
+ normalText: "Normal text",
1307
+ pasteLink: "Paste the link here...",
1308
+ invalidURLError: "Please enter a valid URL",
1309
+ pasteURL: "Paste URL",
1310
+ delete: "Delete",
1311
+ linkTag: "a",
1312
+ link: "Link",
1313
+ cannedResponseHeader: "Canned responses",
1314
+ paragraphOption: "paragraph",
1315
+ search: "Search",
1316
+ emoji: "Emoji",
1317
+ };
1318
+ const EXPANDED_FONT_SIZE = {
1319
+ h1: "Heading 1",
1320
+ h2: "Heading 2",
1321
+ h3: "Heading 3",
1322
+ h4: "Heading 4",
1323
+ h5: "Heading 5",
1324
+ };
1325
+ const TEXT_MODIFIER_TAGS = {
1326
+ underline: "u",
1327
+ strike: "s",
1328
+ };
1329
+ const TEXT_MODIFIER_ROLES = {
1330
+ bold: "strong",
1331
+ italic: "emphasis",
1332
+ code: "code",
1333
+ blockquote: "blockquote",
1334
+ codeBlock: "code",
1335
+ };
1336
+ const LIST_MODIFIER_TAGS = {
1337
+ bulletList: "ul",
1338
+ orderedList: "ol",
1339
+ };
1340
+ const EDITOR_VERIFY_TEXT_COLOR = "#e60000";
1341
+
1342
+ const basicHTMLContent = (content) => `
1343
+ <!DOCTYPE html>
1344
+ <html lang="en">
1345
+ <head>
1346
+ <meta charset="UTF-8" />
1347
+ <meta name="viewport" content="width=device-width" />
1348
+ </head>
1349
+ <body>
1350
+ ${content}
1351
+ </body>
1352
+ </html>`;
1353
+ const hexToRGB = (hex) => {
1354
+ let r = "", g = "", b = "";
1355
+ if (hex.length === 4) {
1356
+ r = `0x${hex[1]}${hex[1]}`;
1357
+ g = `0x${hex[2]}${hex[2]}`;
1358
+ b = `0x${hex[3]}${hex[3]}`;
1359
+ }
1360
+ else if (hex.length === 7) {
1361
+ r = `0x${hex[1]}${hex[2]}`;
1362
+ g = `0x${hex[3]}${hex[4]}`;
1363
+ b = `0x${hex[5]}${hex[6]}`;
1364
+ }
1365
+ return `rgb(${Number(r)}, ${Number(g)}, ${Number(b)})`;
1366
+ };
1367
+
1303
1368
  const optionSelector = (option) => `neeto-editor-fixed-menu-${option}-option`;
1304
1369
  const fixedMenuSelector = (selector) => `neeto-editor-fixed-menu-${selector}`;
1370
+ const editorTextColorStylePattern = (hex = EDITOR_VERIFY_TEXT_COLOR) => {
1371
+ const normalized = hex.replace("#", "");
1372
+ const [r, g, b] = hexToRGB(hex).match(/\d+/g) ?? [];
1373
+ return new RegExp(`color:\\s*(#${normalized}|rgb\\(\\s*${r}\\s*,\\s*${g}\\s*,\\s*${b}\\s*\\))`, "i");
1374
+ };
1305
1375
 
1306
1376
  const NEETO_EDITOR_SELECTORS = {
1307
1377
  fontSize: optionSelector("font-size"),
@@ -1311,6 +1381,7 @@ const NEETO_EDITOR_SELECTORS = {
1311
1381
  strikeOption: optionSelector("strike"),
1312
1382
  codeBlockOption: optionSelector("code"),
1313
1383
  highlightOption: optionSelector("highlight"),
1384
+ textColorOption: optionSelector("text-color"),
1314
1385
  emojiOption: optionSelector("emoji"),
1315
1386
  emojiDropdownIcon: "emoji-dropdown-icon",
1316
1387
  linkInput: fixedMenuSelector("link-option-input"),
@@ -69526,32 +69597,6 @@ class FastmailApi {
69526
69597
  });
69527
69598
  }
69528
69599
 
69529
- const basicHTMLContent = (content) => `
69530
- <!DOCTYPE html>
69531
- <html lang="en">
69532
- <head>
69533
- <meta charset="UTF-8" />
69534
- <meta name="viewport" content="width=device-width" />
69535
- </head>
69536
- <body>
69537
- ${content}
69538
- </body>
69539
- </html>`;
69540
- const hexToRGB = (hex) => {
69541
- let r = "", g = "", b = "";
69542
- if (hex.length === 4) {
69543
- r = `0x${hex[1]}${hex[1]}`;
69544
- g = `0x${hex[2]}${hex[2]}`;
69545
- b = `0x${hex[3]}${hex[3]}`;
69546
- }
69547
- else if (hex.length === 7) {
69548
- r = `0x${hex[1]}${hex[2]}`;
69549
- g = `0x${hex[3]}${hex[4]}`;
69550
- b = `0x${hex[5]}${hex[6]}`;
69551
- }
69552
- return `rgb(${Number(r)}, ${Number(g)}, ${Number(b)})`;
69553
- };
69554
-
69555
69600
  class RailsEmailUtils {
69556
69601
  neetoPlaywrightUtilities;
69557
69602
  railsEmailClient;
@@ -119526,44 +119571,6 @@ class Member {
119526
119571
  };
119527
119572
  }
119528
119573
 
119529
- const DESCRIPTION_EDITOR_TEXTS = {
119530
- fontSize: "Font size",
119531
- paragraph: "Paragraph",
119532
- normalText: "Normal text",
119533
- pasteLink: "Paste the link here...",
119534
- invalidURLError: "Please enter a valid URL",
119535
- pasteURL: "Paste URL",
119536
- delete: "Delete",
119537
- linkTag: "a",
119538
- link: "Link",
119539
- cannedResponseHeader: "Canned responses",
119540
- paragraphOption: "paragraph",
119541
- search: "Search",
119542
- emoji: "Emoji",
119543
- };
119544
- const EXPANDED_FONT_SIZE = {
119545
- h1: "Heading 1",
119546
- h2: "Heading 2",
119547
- h3: "Heading 3",
119548
- h4: "Heading 4",
119549
- h5: "Heading 5",
119550
- };
119551
- const TEXT_MODIFIER_TAGS = {
119552
- underline: "u",
119553
- strike: "s",
119554
- };
119555
- const TEXT_MODIFIER_ROLES = {
119556
- bold: "strong",
119557
- italic: "emphasis",
119558
- code: "code",
119559
- blockquote: "blockquote",
119560
- codeBlock: "code",
119561
- };
119562
- const LIST_MODIFIER_TAGS = {
119563
- bulletList: "ul",
119564
- orderedList: "ol",
119565
- };
119566
-
119567
119574
  const __dirname$4 = getDirname(import.meta.url);
119568
119575
  class SlashCommandEditorPage {
119569
119576
  page;
@@ -119787,6 +119794,7 @@ class EditorPage {
119787
119794
  calloutSelector;
119788
119795
  videoUploadOption;
119789
119796
  todoListSelector;
119797
+ textColorSelector;
119790
119798
  filePath = "../../../e2e/assets/images/sample.png";
119791
119799
  videoPath = "../../../e2e/assets/files/sample.mp4";
119792
119800
  linkUrl = faker.internet.url();
@@ -119824,6 +119832,7 @@ class EditorPage {
119824
119832
  this.tableOption = this.editorWrapper.getByTestId(NEETO_EDITOR_SELECTORS.tableOption);
119825
119833
  this.videoUploadOption = this.editorWrapper.getByTestId(NEETO_EDITOR_SELECTORS.videoUploadOption);
119826
119834
  this.todoListSelector = this.editorWrapper.getByTestId(NEETO_EDITOR_SELECTORS.todoListOption);
119835
+ this.textColorSelector = this.editorWrapper.getByTestId(NEETO_EDITOR_SELECTORS.textColorOption);
119827
119836
  }
119828
119837
  cleanString = (selector = "") => selector?.replace("neeto-editor-fixed-menu-", "").replace("-option", "") ||
119829
119838
  "";
@@ -119892,10 +119901,9 @@ class EditorPage {
119892
119901
  .filter({ hasText: randomText })).toBeVisible();
119893
119902
  await this.neetoPlaywrightUtilities.moveCursorAtBottom();
119894
119903
  await this.page.keyboard.press("Enter");
119895
- if (modifierKey !== "codeBlock") {
119896
- isButtonInMoreMenu && (await this.moreMenuSelector.click());
119897
- await textModifierSelector.click();
119898
- }
119904
+ await this.contentField.click();
119905
+ isButtonInMoreMenu && (await this.moreMenuSelector.click());
119906
+ await textModifierSelector.click();
119899
119907
  return [{ key: modifierKey, value: randomText }];
119900
119908
  };
119901
119909
  verifyTextDeskModifier = async (modifier, isButtonInMoreMenu) => {
@@ -119965,7 +119973,6 @@ class EditorPage {
119965
119973
  await expect(this.contentField
119966
119974
  .locator(LIST_MODIFIER_TAGS[modifierKey])
119967
119975
  .filter({ hasText: randomText })).toBeVisible();
119968
- await this.neetoPlaywrightUtilities.moveCursorAtBottom();
119969
119976
  isButtonInMoreMenu && (await this.moreMenuSelector.click());
119970
119977
  await listModifierSelector.click();
119971
119978
  return [{ key: modifierKey, value: randomText }];
@@ -120160,6 +120167,31 @@ class EditorPage {
120160
120167
  await expect(this.contentField.getByText(truncate(`${key}:${value}`, 25))).toBeVisible();
120161
120168
  }
120162
120169
  };
120170
+ verifyTextColor = async (isButtonInMoreMenu) => {
120171
+ const randomText = await this.fillRandomText();
120172
+ const colorPickerInput = this.page
120173
+ .getByTestId(COMMON_SELECTORS.customDropdownContainer())
120174
+ .getByTestId(COMMON_SELECTORS.inputField);
120175
+ await expect(async () => {
120176
+ isButtonInMoreMenu && (await this.moreMenuSelector.click());
120177
+ await this.textColorSelector.click();
120178
+ await expect(colorPickerInput).toBeVisible({ timeout: 5_000 });
120179
+ await colorPickerInput.fill(EDITOR_VERIFY_TEXT_COLOR);
120180
+ // Using .first() to target the button rendered by the Formik editor.
120181
+ await this.page
120182
+ .getByTestId(COMMON_SELECTORS.customDropdownContainer())
120183
+ .getByRole("button")
120184
+ // eslint-disable-next-line playwright/no-nth-methods
120185
+ .first()
120186
+ .click();
120187
+ await expect(colorPickerInput).toBeHidden({ timeout: 5_000 });
120188
+ }).toPass({ timeout: 40_000 });
120189
+ const coloredText = this.contentField.locator("[style]", {
120190
+ hasText: randomText,
120191
+ });
120192
+ await expect(coloredText).toHaveAttribute("style", editorTextColorStylePattern());
120193
+ return [{ key: "text-color", value: randomText }];
120194
+ };
120163
120195
  verifyCalloutSelector = async (isButtonInMoreMenu) => {
120164
120196
  isButtonInMoreMenu && (await this.moreMenuSelector.click());
120165
120197
  const calloutTypes = ["default", "info", "warning", "error", "success"];
@@ -120195,6 +120227,7 @@ class EditorPage {
120195
120227
  underline: isButtonInMoreMenu => this.verifyTextDeskModifier("underline", isButtonInMoreMenu),
120196
120228
  strike: isButtonInMoreMenu => this.verifyTextDeskModifier("strike", isButtonInMoreMenu),
120197
120229
  highlight: isButtonInMoreMenu => this.verifyTextHighlighter(isButtonInMoreMenu),
120230
+ "text-color": isButtonInMoreMenu => this.verifyTextColor(isButtonInMoreMenu),
120198
120231
  bulletList: isButtonInMoreMenu => this.verifyListModifiers("bulletList", isButtonInMoreMenu),
120199
120232
  orderedList: isButtonInMoreMenu => this.verifyListModifiers("orderedList", isButtonInMoreMenu),
120200
120233
  link: isButtonInMoreMenu => this.verifyEditorLinkButton(this.linkUrl, isButtonInMoreMenu),
@@ -120203,6 +120236,7 @@ class EditorPage {
120203
120236
  imageUrl: this.imageUrl,
120204
120237
  filePath: this.filePath,
120205
120238
  isButtonInMoreMenu,
120239
+ shouldRemoveImage: true,
120206
120240
  }),
120207
120241
  "canned-responses": isButtonInMoreMenu => this.verifyCannedResponseOption(isButtonInMoreMenu),
120208
120242
  "video-embed": isButtonInMoreMenu => this.verifyVideoEmbedOption(this.videoUrl, isButtonInMoreMenu),
@@ -120221,9 +120255,9 @@ class EditorPage {
120221
120255
  do {
120222
120256
  randomText = faker.lorem.word(10);
120223
120257
  } while (this.wordsUsedInEditor.includes(randomText));
120224
- await this.contentField.focus();
120258
+ await this.contentField.click();
120225
120259
  await this.neetoPlaywrightUtilities.moveCursorAtBottom();
120226
- await this.page.keyboard.type(randomText);
120260
+ await this.contentField.fill(randomText);
120227
120261
  this.wordsUsedInEditor.push(randomText);
120228
120262
  const randomTextLocator = this.contentField.getByText(randomText);
120229
120263
  await randomTextLocator.scrollIntoViewIfNeeded();
@@ -126083,4 +126117,4 @@ const definePlaywrightConfig = (overrides) => {
126083
126117
  });
126084
126118
  };
126085
126119
 
126086
- export { ACTIONS, ADMIN_PANEL_SELECTORS, ALL_RESOURCES, ANALYTICS_RESOURCES, API_KEYS_SELECTORS, API_ROUTES, APP_RESOURCES, AUDIT_LOGS_SELECTORS, ApiKeysApi, ApiKeysPage, AuditLogsPage, BASE_URL, CALENDAR_LABELS, CERTIFICATE_LIMIT_EXCEEDED_MESSAGE, CERTIFICATE_LIMIT_EXCEEDED_REGEXP, CHANGELOG_WIDGET_SELECTORS, CHAT_WIDGET_SELECTORS, CHAT_WIDGET_TEXTS, COLOR, COMMON_SELECTORS, COMMON_TEXTS, COMMUNITY_TEXTS, CREDENTIALS, CURRENT_TIME_RANGES, CUSTOM_DOMAIN_SELECTORS, CUSTOM_DOMAIN_SUFFIX, ColorPickerUtils, CustomCommands, CustomDomainApi, CustomDomainPage, DATE_FORMATS, DATE_PICKER_SELECTORS, DATE_RANGES, DATE_TEXTS, DEFAULT_WEBHOOKS_RESPONSE_TEXT, DESCRIPTION_EDITOR_TEXTS, EMBED_SELECTORS, EMOJI_LABEL, EMPTY_STORAGE_STATE, ENGAGE_TEXTS, ENVIRONMENT, EXAMPLE_URL, EXPANDED_FONT_SIZE, EXPORT_FILE_TYPES, EditorPage, EmailDeliveryUtils, EmbedBase, FILE_FORMATS, FONTS_RESOURCES, FONT_SIZE_SELECTORS, FROM_EMAIL_ENV_KEYS, GLOBAL_TRANSLATIONS_PATTERN, GOOGLE_ANALYTICS_SELECTORS, GOOGLE_CALENDAR_DATE_FORMAT, GOOGLE_LOGIN_SELECTORS, GOOGLE_LOGIN_TEXTS, GOOGLE_SHEETS_SELECTORS, GooglePage, HELP_CENTER_ROUTES, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IPRestrictionsPage, IP_RESTRICTIONS_SELECTORS, IS_CI, IS_DEV_ENV, IS_STAGING_ENV, ImageUploader, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, KEYBOARD_SHORTCUT_TEST_CASES, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MICROSOFT_LOGIN_SELECTORS, MICROSOFT_LOGIN_TEXTS, MailerUtils, Member, MemberApis, MicrosoftPage, NEETO_AUTH_BASE_URL, NEETO_EDITOR_SELECTORS, NEETO_FILTERS_SELECTORS, NEETO_IMAGE_UPLOADER_SELECTORS, NEETO_ROUTES, NEETO_SEO_SELECTORS, NEETO_TEXT_MODIFIER_SELECTORS, NeetoAuthServer, NeetoChatWidget, NeetoEmailDeliveryApi, NeetoTowerApi, ONBOARDING_SELECTORS, ORGANIZATION_TEXTS, OTP_EMAIL_PATTERN, OrganizationPage, PAST_TIME_RANGES, PHONE_NUMBER_FORMATS, PLURAL, PRODUCT_ROLES_ROUTE_MAP, PROFILE_LINKS, PROFILE_SECTION_SELECTORS, PROJECT_NAMES, PROJECT_TRANSLATIONS_PATH, ROLES_SELECTORS, ROUTES, RailsEmailApiClient, RailsEmailUtils, RoleApis, RolesPage, SIGNUP_SELECTORS, SINGULAR, SLACK_DATA_QA_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STATUS_TEXTS, STORAGE_STATE, SecurityApi, SidebarSection, SlackApi, SlackPage, TABLE_SELECTORS, TAB_SELECTORS, TAGS_SELECTORS, TEAM_MEMBER_TEXTS, TEXT_MODIFIER_ROLES, TEXT_MODIFIER_SELECTORS, TEXT_MODIFIER_TAGS, THANK_YOU_SELECTORS, THEMES_SELECTORS, THEMES_TEXTS, THIRD_PARTY_RESOURCES, THIRD_PARTY_ROUTES, TIME_RANGES, TOASTR_MESSAGES, TWILIO_SELECTORS, TagsApi, TagsPage, TeamMembers, ThankYouApi, ThankYouPage, TwilioApi, USER_AGENTS, WEBHOOK_SELECTORS, WebhookSiteApi, WebhooksPage, ZAPIER_LIMIT_EXHAUSTED_MESSAGE, ZAPIER_SELECTORS, ZAPIER_TEST_EMAIL, ZAPIER_WEB_TEXTS, ZapierPage, baseURLGenerator, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, createOrganizationViaRake, currencyUtils, dataQa, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, fillCredentialsAndSubmit, filterUtils, generatePhoneNumber, generatePhoneNumberDetails, generateRandomBypassEmail, generateRandomFile, generateStagingData, getByDataQA, getClipboardContent, getDirname, getFormattedPhoneNumber, getFullUrl, getGlobalUserProps, getGlobalUserState, getImagePathAndName, getIsoCodeFromPhoneCode, getListCount, globalShortcuts, grantClipboardPermissions, hexToRGB, hexToRGBA, i18nFixture, imageRegex, initializeCredentials, initializeTestData, initializeTotp, isGithubIssueOpen, isStagingOrganizationExpired, joinHyphenCase, joinString, login, loginWithoutSSO, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, stealth as stealthTest, tableUtils, toCamelCase, updateCredentials, warmup, withCookieCache, writeDataToFile };
126120
+ 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_STAGING_ENV, ImageUploader, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, KEYBOARD_SHORTCUT_TEST_CASES, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MICROSOFT_LOGIN_SELECTORS, MICROSOFT_LOGIN_TEXTS, MailerUtils, Member, MemberApis, MicrosoftPage, NEETO_AUTH_BASE_URL, NEETO_EDITOR_SELECTORS, NEETO_FILTERS_SELECTORS, NEETO_IMAGE_UPLOADER_SELECTORS, NEETO_ROUTES, NEETO_SEO_SELECTORS, NEETO_TEXT_MODIFIER_SELECTORS, NeetoAuthServer, NeetoChatWidget, NeetoEmailDeliveryApi, NeetoTowerApi, ONBOARDING_SELECTORS, ORGANIZATION_TEXTS, OTP_EMAIL_PATTERN, OrganizationPage, PAST_TIME_RANGES, PHONE_NUMBER_FORMATS, PLURAL, PRODUCT_ROLES_ROUTE_MAP, PROFILE_LINKS, PROFILE_SECTION_SELECTORS, PROJECT_NAMES, PROJECT_TRANSLATIONS_PATH, ROLES_SELECTORS, ROUTES, RailsEmailApiClient, RailsEmailUtils, RoleApis, RolesPage, SIGNUP_SELECTORS, SINGULAR, SLACK_DATA_QA_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STATUS_TEXTS, STORAGE_STATE, SecurityApi, SidebarSection, SlackApi, SlackPage, TABLE_SELECTORS, TAB_SELECTORS, TAGS_SELECTORS, TEAM_MEMBER_TEXTS, TEXT_MODIFIER_ROLES, TEXT_MODIFIER_SELECTORS, TEXT_MODIFIER_TAGS, THANK_YOU_SELECTORS, THEMES_SELECTORS, THEMES_TEXTS, THIRD_PARTY_RESOURCES, THIRD_PARTY_ROUTES, TIME_RANGES, TOASTR_MESSAGES, TWILIO_SELECTORS, TagsApi, TagsPage, TeamMembers, ThankYouApi, ThankYouPage, TwilioApi, USER_AGENTS, WEBHOOK_SELECTORS, WebhookSiteApi, WebhooksPage, ZAPIER_LIMIT_EXHAUSTED_MESSAGE, ZAPIER_SELECTORS, ZAPIER_TEST_EMAIL, ZAPIER_WEB_TEXTS, ZapierPage, baseURLGenerator, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, createOrganizationViaRake, currencyUtils, dataQa, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, fillCredentialsAndSubmit, filterUtils, generatePhoneNumber, generatePhoneNumberDetails, generateRandomBypassEmail, generateRandomFile, generateStagingData, getByDataQA, getClipboardContent, getDirname, getFormattedPhoneNumber, getFullUrl, getGlobalUserProps, getGlobalUserState, getImagePathAndName, getIsoCodeFromPhoneCode, getListCount, globalShortcuts, grantClipboardPermissions, hexToRGB, hexToRGBA, i18nFixture, imageRegex, initializeCredentials, initializeTestData, initializeTotp, isGithubIssueOpen, isStagingOrganizationExpired, joinHyphenCase, joinString, login, loginWithoutSSO, networkConditions, networkThrottlingUsingCDP, 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.0.1",
3
+ "version": "4.1.0",
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",