@bigbinary/neeto-playwright-commons 4.1.9 → 4.1.11

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 +52 -4
  2. package/index.js +64 -5
  3. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -33,7 +33,7 @@ interface VerifyToastParams {
33
33
  timeout?: number;
34
34
  toastCloseTimeout?: number;
35
35
  closeAfterVerification: boolean;
36
- toastType: "success" | "error";
36
+ toastType: "success" | "error" | "info" | "warning";
37
37
  customPageContext?: Page;
38
38
  }
39
39
  interface AssertCardDetailsProps {
@@ -212,6 +212,12 @@ declare class CustomCommands {
212
212
  condition,
213
213
  timeout
214
214
  }: ExecuteRecursivelyParams) => Promise<unknown>;
215
+ /**
216
+ * @deprecated Targets the react-toastify-based Toastr from
217
+ * @bigbinary/neetoui. Use verifyToastV2 instead for apps whose Toastr
218
+ * comes from @bigbinary/neeto-atoms (sonner-based, e.g. neeto-engage-web).
219
+ * Kept only for apps still on the legacy neetoui Toastr.
220
+ */
215
221
  /**
216
222
  *
217
223
  * Command to assert the toastr message. It takes the following parameters:
@@ -220,7 +226,7 @@ declare class CustomCommands {
220
226
  *
221
227
  * message(optional): Text that should be on toast.
222
228
  *
223
- * toastType(optional): Type of toast. It takes either success or error as it's value. Default is success.
229
+ * toastType(optional): Type of toast. It takes success, error, info or warning as it's value. Default is success.
224
230
  *
225
231
  * timeout(optional): Timeout in milliseconds to wait for the toast to appear. Default is 10_000.
226
232
  *
@@ -248,6 +254,42 @@ declare class CustomCommands {
248
254
  toastCloseTimeout,
249
255
  customPageContext
250
256
  }?: Partial<VerifyToastParams>) => Promise<void>;
257
+ /**
258
+ *
259
+ * Command to assert the toastr message rendered by @bigbinary/neeto-atoms's sonner-based Toastr. Use this instead of verifyToast for apps that have moved to @bigbinary/neeto-atoms (e.g. neeto-engage-web). It takes the following parameters:
260
+ *
261
+ * closeAfterVerification(optional): Boolean to close the toast after verification. Default is true.
262
+ *
263
+ * message(optional): Text that should be on toast.
264
+ *
265
+ * toastType(optional): Type of toast. It takes success, error, info or warning as it's value. Default is success.
266
+ *
267
+ * timeout(optional): Timeout in milliseconds to wait for the toast to appear. Default is 10_000.
268
+ *
269
+ * toastCloseTimeout(optional): Timeout in milliseconds to wait for the toast to disappear after closing. Default is 10_000.
270
+ *
271
+ * customPageContext(optional): Custom page context on which to verify the toast.
272
+ *
273
+ * @example
274
+ *
275
+ * await neetoPlaywrightUtilities.verifyToastV2({
276
+ * message: "Toastr message",
277
+ * closeAfterVerification: false,
278
+ * toastType: "error",
279
+ * timeout: 20_000,
280
+ * toastCloseTimeout: 15_000,
281
+ * customPageContext: this.page,
282
+ * });
283
+ * @endexample
284
+ */
285
+ verifyToastV2: ({
286
+ message,
287
+ toastType,
288
+ closeAfterVerification,
289
+ timeout,
290
+ toastCloseTimeout,
291
+ customPageContext
292
+ }?: Partial<VerifyToastParams>) => Promise<void>;
251
293
  /**
252
294
  *
253
295
  * Command to wait until the page has no loaders or spinners.
@@ -255,7 +297,7 @@ declare class CustomCommands {
255
297
  * @example
256
298
  *
257
299
  * await neetoPlaywrightUtilities.waitForPageLoad({
258
- * visiblityTimeout = 35_000,
300
+ * visibilityTimeout: 35_000,
259
301
  * customPageContext,
260
302
  * });
261
303
  * @endexample
@@ -3612,6 +3654,7 @@ declare class EditorPage {
3612
3654
  calloutSelector: Locator;
3613
3655
  videoUploadOption: Locator;
3614
3656
  todoListSelector: Locator;
3657
+ textColorSelector: Locator;
3615
3658
  filePath: string;
3616
3659
  videoPath: string;
3617
3660
  linkUrl: string;
@@ -3643,6 +3686,7 @@ declare class EditorPage {
3643
3686
  private verifyVideoUploadOption;
3644
3687
  private verifyTodoListSelector;
3645
3688
  verifyDynamicVariables: (dynamicVariables: KeyValuePair[]) => Promise<void>;
3689
+ private verifyTextColor;
3646
3690
  private verifyCalloutSelector;
3647
3691
  private buttonsAndVerifications;
3648
3692
  private fillRandomText;
@@ -6201,6 +6245,7 @@ declare const LIST_MODIFIER_TAGS: {
6201
6245
  bulletList: string;
6202
6246
  orderedList: string;
6203
6247
  };
6248
+ declare const EDITOR_VERIFY_TEXT_COLOR = "#e60000";
6204
6249
  declare const PHONE_NUMBER_FORMATS: {
6205
6250
  name: string;
6206
6251
  code: string;
@@ -6676,6 +6721,8 @@ declare const THANK_YOU_SELECTORS: {
6676
6721
  thankYouMessageWrapper: string;
6677
6722
  countLabel: string;
6678
6723
  };
6724
+ declare const optionSelector: (option: string) => string;
6725
+ declare const fixedMenuSelector: (selector: string) => string;
6679
6726
  /**
6680
6727
  *
6681
6728
  * Selectors for Neeto editor components.
@@ -6755,6 +6802,7 @@ declare const NEETO_EDITOR_SELECTORS: {
6755
6802
  strikeOption: string;
6756
6803
  codeBlockOption: string;
6757
6804
  highlightOption: string;
6805
+ textColorOption: string;
6758
6806
  emojiOption: string;
6759
6807
  emojiDropdownIcon: string;
6760
6808
  linkInput: string;
@@ -9295,5 +9343,5 @@ interface Overrides {
9295
9343
  * @endexample
9296
9344
  */
9297
9345
  declare const definePlaywrightConfig: (overrides: Overrides) => PlaywrightTestConfig<{}, {}>;
9298
- 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, authenticateUser, baseURLGenerator, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, createOrganizationViaRake, currencyUtils, dataQa, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, 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, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, _default as stealthTest, tableUtils, toCamelCase, updateCredentials, warmup, withCookieCache, writeDataToFile };
9346
+ 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, 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, networkConditions, networkThrottlingUsingCDP, optionSelector, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, _default as stealthTest, tableUtils, toCamelCase, updateCredentials, warmup, withCookieCache, writeDataToFile };
9299
9347
  export type { BaseThemeStyle, BaseThemeStyleType, ColumnMenuAction, CountryProps, CustomFixture, EmailDeliveryConnectParams, EmailDeliveryProvider, EmailDeliveryVerifiedEmail, EmailDeliveryVerifyEmailParams, EmailDeliveryVerifyEmailResponse, EmailMatchCriteria, IntroPageThemeStyle, IntroPageThemeStyleType, OAuthEmailDeliveryProvider, ProjectName, ThemeCategory, ValueOf };
package/index.js CHANGED
@@ -1302,7 +1302,6 @@ const imageRegex = (imageName) => {
1302
1302
 
1303
1303
  const optionSelector = (option) => `neeto-editor-fixed-menu-${option}-option`;
1304
1304
  const fixedMenuSelector = (selector) => `neeto-editor-fixed-menu-${selector}`;
1305
-
1306
1305
  const NEETO_EDITOR_SELECTORS = {
1307
1306
  fontSize: optionSelector("font-size"),
1308
1307
  boldOption: optionSelector("bold"),
@@ -1311,6 +1310,7 @@ const NEETO_EDITOR_SELECTORS = {
1311
1310
  strikeOption: optionSelector("strike"),
1312
1311
  codeBlockOption: optionSelector("code"),
1313
1312
  highlightOption: optionSelector("highlight"),
1313
+ textColorOption: optionSelector("text-color"),
1314
1314
  emojiOption: optionSelector("emoji"),
1315
1315
  emojiDropdownIcon: "emoji-dropdown-icon",
1316
1316
  linkInput: fixedMenuSelector("link-option-input"),
@@ -1988,6 +1988,7 @@ const getImagePathAndName = (localImagePath) => {
1988
1988
  };
1989
1989
 
1990
1990
  const __dirname$5 = getDirname(import.meta.url);
1991
+ const TOAST_DEFAULT_MESSAGE = "👍";
1991
1992
  class CustomCommands {
1992
1993
  page;
1993
1994
  t;
@@ -2048,8 +2049,13 @@ class CustomCommands {
2048
2049
  const startTime = Date.now();
2049
2050
  return await this.recursiveMethod(callback, condition, timeout, startTime, 1);
2050
2051
  };
2052
+ /**
2053
+ * @deprecated Targets the react-toastify-based Toastr from
2054
+ * @bigbinary/neetoui. Use verifyToastV2 instead for apps whose Toastr
2055
+ * comes from @bigbinary/neeto-atoms (sonner-based, e.g. neeto-engage-web).
2056
+ * Kept only for apps still on the legacy neetoui Toastr.
2057
+ */
2051
2058
  verifyToast = async ({ message = "", toastType = "success", closeAfterVerification = true, timeout = 10_000, toastCloseTimeout = 10_000, customPageContext = this.page, } = {}) => {
2052
- // React-toastify does not support adding data-* attributes to toast DOM elements: https://github.com/fkhadra/react-toastify/issues/1106
2053
2059
  const toastrLocator = customPageContext
2054
2060
  .locator(COMMON_SELECTORS.neetoUiToastr)
2055
2061
  .filter({
@@ -2060,10 +2066,10 @@ class CustomCommands {
2060
2066
  : toastrLocator.filter({ hasText: message }))
2061
2067
  // eslint-disable-next-line playwright/no-nth-methods
2062
2068
  .first();
2063
- await expect(filteredToastrLocator).toContainText(isEmpty(message) ? "👍" : message, { timeout });
2064
- const toastrCloseButton = filteredToastrLocator.getByTestId(COMMON_SELECTORS.toastCloseButton);
2069
+ await expect(filteredToastrLocator).toContainText(isEmpty(message) ? TOAST_DEFAULT_MESSAGE : message, { timeout });
2065
2070
  if (!closeAfterVerification)
2066
2071
  return;
2072
+ const toastrCloseButton = filteredToastrLocator.getByTestId(COMMON_SELECTORS.toastCloseButton);
2067
2073
  const buttonHandle = await toastrCloseButton.elementHandle();
2068
2074
  if (buttonHandle) {
2069
2075
  await customPageContext.evaluate(button => {
@@ -2074,6 +2080,27 @@ class CustomCommands {
2074
2080
  });
2075
2081
  }
2076
2082
  };
2083
+ verifyToastV2 = async ({ message = "", toastType = "success", closeAfterVerification = true, timeout = 10_000, toastCloseTimeout = 10_000, customPageContext = this.page, } = {}) => {
2084
+ const toastLocator = customPageContext.getByTestId(COMMON_SELECTORS.toastMessage(toastType));
2085
+ const filteredToastLocator = (isEmpty(message)
2086
+ ? toastLocator
2087
+ : toastLocator.filter({ hasText: message }))
2088
+ // eslint-disable-next-line playwright/no-nth-methods
2089
+ .first();
2090
+ await expect(filteredToastLocator).toContainText(isEmpty(message) ? TOAST_DEFAULT_MESSAGE : message, { timeout });
2091
+ if (!closeAfterVerification)
2092
+ return;
2093
+ const toastCloseButton = filteredToastLocator.getByTestId(COMMON_SELECTORS.toastCloseButton);
2094
+ const buttonHandle = await toastCloseButton.elementHandle();
2095
+ if (buttonHandle) {
2096
+ await customPageContext.evaluate(button => {
2097
+ button.dispatchEvent(new Event("click", { bubbles: true }));
2098
+ }, buttonHandle);
2099
+ await expect(toastCloseButton).toBeHidden({
2100
+ timeout: toastCloseTimeout,
2101
+ });
2102
+ }
2103
+ };
2077
2104
  waitForPageLoad = async ({ visibilityTimeout = 35_000, customPageContext = this.page, waitForOption = "serial", } = {}) => {
2078
2105
  await customPageContext.waitForLoadState();
2079
2106
  const loaders = [
@@ -119574,6 +119601,7 @@ const LIST_MODIFIER_TAGS = {
119574
119601
  bulletList: "ul",
119575
119602
  orderedList: "ol",
119576
119603
  };
119604
+ const EDITOR_VERIFY_TEXT_COLOR = "#e60000";
119577
119605
 
119578
119606
  const __dirname$4 = getDirname(import.meta.url);
119579
119607
  class SlashCommandEditorPage {
@@ -119798,6 +119826,7 @@ class EditorPage {
119798
119826
  calloutSelector;
119799
119827
  videoUploadOption;
119800
119828
  todoListSelector;
119829
+ textColorSelector;
119801
119830
  filePath = "../../../e2e/assets/images/sample.png";
119802
119831
  videoPath = "../../../e2e/assets/files/sample.mp4";
119803
119832
  linkUrl = faker.internet.url();
@@ -119835,6 +119864,7 @@ class EditorPage {
119835
119864
  this.tableOption = this.editorWrapper.getByTestId(NEETO_EDITOR_SELECTORS.tableOption);
119836
119865
  this.videoUploadOption = this.editorWrapper.getByTestId(NEETO_EDITOR_SELECTORS.videoUploadOption);
119837
119866
  this.todoListSelector = this.editorWrapper.getByTestId(NEETO_EDITOR_SELECTORS.todoListOption);
119867
+ this.textColorSelector = this.editorWrapper.getByTestId(NEETO_EDITOR_SELECTORS.textColorOption);
119838
119868
  }
119839
119869
  cleanString = (selector = "") => selector?.replace("neeto-editor-fixed-menu-", "").replace("-option", "") ||
119840
119870
  "";
@@ -120171,6 +120201,31 @@ class EditorPage {
120171
120201
  await expect(this.contentField.getByText(truncate(`${key}:${value}`, 25))).toBeVisible();
120172
120202
  }
120173
120203
  };
120204
+ verifyTextColor = async (isButtonInMoreMenu) => {
120205
+ const randomText = await this.fillRandomText();
120206
+ const colorPickerInput = this.page
120207
+ .getByTestId(COMMON_SELECTORS.customDropdownContainer())
120208
+ .getByTestId(COMMON_SELECTORS.inputField);
120209
+ isButtonInMoreMenu && (await this.moreMenuSelector.click());
120210
+ await expect(async () => {
120211
+ await this.textColorSelector.click();
120212
+ await expect(colorPickerInput).toBeVisible({ timeout: 5_000 });
120213
+ await colorPickerInput.fill(EDITOR_VERIFY_TEXT_COLOR);
120214
+ // Using .first() to target the button rendered by the Formik editor.
120215
+ await this.page
120216
+ .getByTestId(COMMON_SELECTORS.customDropdownContainer())
120217
+ .getByRole("button")
120218
+ // eslint-disable-next-line playwright/no-nth-methods
120219
+ .first()
120220
+ .click();
120221
+ await expect(colorPickerInput).toBeHidden({ timeout: 5_000 });
120222
+ }).toPass({ timeout: 20_000 });
120223
+ const coloredText = this.contentField.locator("[style]", {
120224
+ hasText: randomText,
120225
+ });
120226
+ await expect(coloredText).toHaveCSS("color", hexToRGB(EDITOR_VERIFY_TEXT_COLOR));
120227
+ return [{ key: "text-color", value: randomText }];
120228
+ };
120174
120229
  verifyCalloutSelector = async (isButtonInMoreMenu) => {
120175
120230
  isButtonInMoreMenu && (await this.moreMenuSelector.click());
120176
120231
  const calloutTypes = ["default", "info", "warning", "error", "success"];
@@ -120206,6 +120261,7 @@ class EditorPage {
120206
120261
  underline: isButtonInMoreMenu => this.verifyTextDeskModifier("underline", isButtonInMoreMenu),
120207
120262
  strike: isButtonInMoreMenu => this.verifyTextDeskModifier("strike", isButtonInMoreMenu),
120208
120263
  highlight: isButtonInMoreMenu => this.verifyTextHighlighter(isButtonInMoreMenu),
120264
+ "text-color": isButtonInMoreMenu => this.verifyTextColor(isButtonInMoreMenu),
120209
120265
  bulletList: isButtonInMoreMenu => this.verifyListModifiers("bulletList", isButtonInMoreMenu),
120210
120266
  orderedList: isButtonInMoreMenu => this.verifyListModifiers("orderedList", isButtonInMoreMenu),
120211
120267
  link: isButtonInMoreMenu => this.verifyEditorLinkButton(this.linkUrl, isButtonInMoreMenu),
@@ -120266,6 +120322,9 @@ class EditorPage {
120266
120322
  hasText: value,
120267
120323
  })).toBeVisible();
120268
120324
  }
120325
+ if (key === "text-color") {
120326
+ return expect(previewLocator.locator("[style]", { hasText: value })).toHaveCSS("color", hexToRGB(EDITOR_VERIFY_TEXT_COLOR));
120327
+ }
120269
120328
  const replacement = elementReplacement?.[key] ?? key;
120270
120329
  if (value === undefined) {
120271
120330
  return expect(
@@ -126101,4 +126160,4 @@ const definePlaywrightConfig = (overrides) => {
126101
126160
  });
126102
126161
  };
126103
126162
 
126104
- 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, authenticateUser, baseURLGenerator, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, createOrganizationViaRake, currencyUtils, dataQa, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, 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, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, stealth as stealthTest, tableUtils, toCamelCase, updateCredentials, warmup, withCookieCache, writeDataToFile };
126163
+ 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, 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, networkConditions, networkThrottlingUsingCDP, optionSelector, 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.1.9",
3
+ "version": "4.1.11",
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",