@bigbinary/neeto-playwright-commons 4.1.8 → 4.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/index.d.ts +28 -5
  2. package/index.js +59 -29
  3. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -91,6 +91,10 @@ interface WaitForPageLoadParams {
91
91
  customPageContext: Page | undefined;
92
92
  waitForOption: "serial" | "parallel";
93
93
  }
94
+ interface WaitForPaneToLoadParams {
95
+ visibilityTimeout: number;
96
+ customPageContext: Page;
97
+ }
94
98
  type ApiRequest = (props: ApiRequestProps & Record<string, unknown>) => Promise<APIResponse | undefined>;
95
99
  interface FieldValue {
96
100
  field: string;
@@ -261,6 +265,22 @@ declare class CustomCommands {
261
265
  customPageContext,
262
266
  waitForOption
263
267
  }?: Partial<WaitForPageLoadParams>) => Promise<void>;
268
+ /**
269
+ *
270
+ * Command to wait until the pane body is visible and the pane has no spinners.
271
+ *
272
+ * @example
273
+ *
274
+ * await neetoPlaywrightUtilities.waitForPaneToLoad({
275
+ * visibilityTimeout = 35_000,
276
+ * customPageContext,
277
+ * });
278
+ * @endexample
279
+ */
280
+ waitForPaneToLoad: ({
281
+ visibilityTimeout,
282
+ customPageContext
283
+ }?: Partial<WaitForPaneToLoadParams>) => Promise<void>;
264
284
  /**
265
285
  *
266
286
  * Command to send an API request.
@@ -3298,7 +3318,6 @@ declare class ZapierPage extends IntegrationBase {
3298
3318
  * @endexample
3299
3319
  */
3300
3320
  reconnectAccount: (zapierApiKey: string) => Promise<void>;
3301
- private setTextEditorValue;
3302
3321
  /**
3303
3322
  *
3304
3323
  * Logs into zapier web app. It takes the following parameters:
@@ -3593,6 +3612,7 @@ declare class EditorPage {
3593
3612
  calloutSelector: Locator;
3594
3613
  videoUploadOption: Locator;
3595
3614
  todoListSelector: Locator;
3615
+ textColorSelector: Locator;
3596
3616
  filePath: string;
3597
3617
  videoPath: string;
3598
3618
  linkUrl: string;
@@ -3624,6 +3644,7 @@ declare class EditorPage {
3624
3644
  private verifyVideoUploadOption;
3625
3645
  private verifyTodoListSelector;
3626
3646
  verifyDynamicVariables: (dynamicVariables: KeyValuePair[]) => Promise<void>;
3647
+ private verifyTextColor;
3627
3648
  private verifyCalloutSelector;
3628
3649
  private buttonsAndVerifications;
3629
3650
  private fillRandomText;
@@ -5958,7 +5979,7 @@ declare const ZAPIER_WEB_TEXTS: {
5958
5979
  password: string;
5959
5980
  editExistingDraft: string;
5960
5981
  signInTo: string;
5961
- yesContinueTo: string;
5982
+ reconnectBtn: string;
5962
5983
  testTrigger: string;
5963
5984
  editStep: string;
5964
5985
  continueWithSelectedRecord: string;
@@ -6182,6 +6203,7 @@ declare const LIST_MODIFIER_TAGS: {
6182
6203
  bulletList: string;
6183
6204
  orderedList: string;
6184
6205
  };
6206
+ declare const EDITOR_VERIFY_TEXT_COLOR = "#e60000";
6185
6207
  declare const PHONE_NUMBER_FORMATS: {
6186
6208
  name: string;
6187
6209
  code: string;
@@ -6657,6 +6679,8 @@ declare const THANK_YOU_SELECTORS: {
6657
6679
  thankYouMessageWrapper: string;
6658
6680
  countLabel: string;
6659
6681
  };
6682
+ declare const optionSelector: (option: string) => string;
6683
+ declare const fixedMenuSelector: (selector: string) => string;
6660
6684
  /**
6661
6685
  *
6662
6686
  * Selectors for Neeto editor components.
@@ -6736,6 +6760,7 @@ declare const NEETO_EDITOR_SELECTORS: {
6736
6760
  strikeOption: string;
6737
6761
  codeBlockOption: string;
6738
6762
  highlightOption: string;
6763
+ textColorOption: string;
6739
6764
  emojiOption: string;
6740
6765
  emojiDropdownIcon: string;
6741
6766
  linkInput: string;
@@ -7883,7 +7908,6 @@ declare const ZAPIER_SELECTORS: {
7883
7908
  zapAccountSubstep: string;
7884
7909
  zapOpenSubstepContainer: string;
7885
7910
  modal: string;
7886
- fmPrettytext: string;
7887
7911
  spinner: string;
7888
7912
  skeletonBlock: string;
7889
7913
  accountsLoader: string;
@@ -7904,7 +7928,6 @@ declare const ZAPIER_SELECTORS: {
7904
7928
  panelFooter: string;
7905
7929
  zapToggle: string;
7906
7930
  stepBlock: string;
7907
- fmPrettyBox: string;
7908
7931
  universalTopbar: string;
7909
7932
  accountsMenu: string;
7910
7933
  zapToggleCheckbox: string;
@@ -9278,5 +9301,5 @@ interface Overrides {
9278
9301
  * @endexample
9279
9302
  */
9280
9303
  declare const definePlaywrightConfig: (overrides: Overrides) => PlaywrightTestConfig<{}, {}>;
9281
- 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 };
9304
+ 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 };
9282
9305
  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"),
@@ -1796,7 +1796,6 @@ const ZAPIER_SELECTORS = {
1796
1796
  zapAccountSubstep: "[data-testid='substep-Account']",
1797
1797
  zapOpenSubstepContainer: "[data-testid='open-sub-step-container']",
1798
1798
  modal: "[data-testid='Modal']",
1799
- fmPrettytext: ".fm-prettytext",
1800
1799
  spinner: "spinner",
1801
1800
  skeletonBlock: "[data-testid='SkeletonBlock']",
1802
1801
  accountsLoader: "[data-testid='accounts-loader']",
@@ -1817,7 +1816,6 @@ const ZAPIER_SELECTORS = {
1817
1816
  panelFooter: "#details-panel-footer",
1818
1817
  zapToggle: "zap-toggle",
1819
1818
  stepBlock: `step-node-${process.env.ZAP_ID}`,
1820
- fmPrettyBox: ".fm-pretty-text-input.pretty-text-box",
1821
1819
  universalTopbar: "universalTopbar",
1822
1820
  accountsMenu: "accountsMenu",
1823
1821
  zapToggleCheckbox: "input[type='checkbox']",
@@ -2090,6 +2088,13 @@ class CustomCommands {
2090
2088
  }
2091
2089
  await Promise.all(loaders.map(loader => expect(loader).toHaveCount(0, { timeout: visibilityTimeout })));
2092
2090
  };
2091
+ waitForPaneToLoad = async ({ visibilityTimeout = 35_000, customPageContext = this.page, } = {}) => {
2092
+ const pane = customPageContext.getByTestId(COMMON_SELECTORS.paneBody);
2093
+ await expect(pane).toBeVisible({ timeout: visibilityTimeout });
2094
+ await expect(pane.getByTestId(COMMON_SELECTORS.uiSpinner)).toHaveCount(0, {
2095
+ timeout: visibilityTimeout,
2096
+ });
2097
+ };
2093
2098
  apiRequest = async ({ url, failOnStatusCode = true, headers: additionalHeaders, body: data, method = "get", params = {}, timeout = 30_000, ...otherOptions }) => {
2094
2099
  const csrfToken = this.csrfToken ?? (await this.initializeCsrfToken());
2095
2100
  const requestOptions = {
@@ -2404,7 +2409,7 @@ const ZAPIER_WEB_TEXTS = {
2404
2409
  password: "Password",
2405
2410
  editExistingDraft: "Edit existing draft",
2406
2411
  signInTo: "Sign in to *",
2407
- yesContinueTo: "Yes, Continue to *",
2412
+ reconnectBtn: "Reconnect",
2408
2413
  testTrigger: "Test trigger",
2409
2414
  editStep: "Edit step",
2410
2415
  continueWithSelectedRecord: "Continue with selected record",
@@ -2455,7 +2460,7 @@ const GOOGLE_LOGIN_TEXTS = {
2455
2460
  googleAccount: "Google Account:",
2456
2461
  connectYourGoogleAccount: "Connect your Google account",
2457
2462
  signInWithGoogle: "Sign in with Google",
2458
- signInHeading: (appName) => new RegExp(`(You’re signing back in to ${appName}\\.net|Sign in to ${appName}\\.net)`, "i"),
2463
+ signInHeading: (appName) => new RegExp(`^(?:You[']re signing back in to ${appName}\\.net|Sign in to ${appName}\\.net)$`, "i"),
2459
2464
  stagingAppName: (appName) => `${appName} - Staging`,
2460
2465
  continue: "Continue",
2461
2466
  selectAll: "Select All",
@@ -118733,6 +118738,7 @@ class HelpAndProfilePage {
118733
118738
  expect(statusPage).toHaveURL(PROFILE_LINKS.neetoStatus),
118734
118739
  expect(statusPage.getByRole("link", {
118735
118740
  name: STATUS_TEXTS.appName(this.product),
118741
+ exact: true,
118736
118742
  })).toBeVisible(),
118737
118743
  ]);
118738
118744
  });
@@ -119308,20 +119314,17 @@ class ZapierPage extends IntegrationBase {
119308
119314
  const reconnectPage = await reconnectPopup;
119309
119315
  await reconnectPage.waitForLoadState();
119310
119316
  await expect(reconnectPage.getByRole("heading", { name: ZAPIER_WEB_TEXTS.loading })).toBeHidden({ timeout: 15_000 });
119311
- const yesBtn = reconnectPage.getByRole("button", {
119312
- name: RegExp(ZAPIER_WEB_TEXTS.yesContinueTo),
119317
+ const reconnectBtn = reconnectPage.getByRole("button", {
119318
+ name: ZAPIER_WEB_TEXTS.reconnectBtn,
119313
119319
  });
119314
- const prettyTextBox = reconnectPage.locator(ZAPIER_SELECTORS.fmPrettytext);
119315
- const [subdomainBox, apiKeyBox] = [0, 1].map(index =>
119316
- // eslint-disable-next-line playwright/no-nth-methods
119317
- prettyTextBox.nth(index));
119318
- await expect(yesBtn).toBeVisible({ timeout: 25_000 });
119319
- const subdomain = getGlobalUserState()?.subdomainName;
119320
- await subdomainBox.click();
119321
- await this.setTextEditorValue(reconnectPage, subdomain);
119322
- await apiKeyBox.click();
119323
- await this.setTextEditorValue(reconnectPage, zapierApiKey, 1);
119324
- await yesBtn.click();
119320
+ await expect(reconnectBtn).toBeVisible({ timeout: 25_000 });
119321
+ await reconnectPage
119322
+ .getByRole("textbox", { name: ZAPIER_WEB_TEXTS.subdomain })
119323
+ .pressSequentially(getGlobalUserState()?.subdomainName);
119324
+ await reconnectPage
119325
+ .getByRole("textbox", { name: ZAPIER_WEB_TEXTS.apiKey })
119326
+ .pressSequentially(zapierApiKey);
119327
+ await reconnectBtn.click();
119325
119328
  const continueBtn = this.panelFooter.getByRole("button", {
119326
119329
  name: ZAPIER_WEB_TEXTS.continue,
119327
119330
  exact: true,
@@ -119338,14 +119341,6 @@ class ZapierPage extends IntegrationBase {
119338
119341
  })).toBeVisible({ timeout: 35_000 });
119339
119342
  await this.toggleZap();
119340
119343
  };
119341
- setTextEditorValue = (page, value, index = 0) => page.evaluate(({ selector, index, value }) => {
119342
- const container = document.querySelectorAll(selector)[index];
119343
- const cmElement = container.querySelector(".CodeMirror");
119344
- const cm = cmElement.CodeMirror;
119345
- cm.focus();
119346
- cm.setValue(value);
119347
- cm.refresh();
119348
- }, { selector: ZAPIER_SELECTORS.fmPrettyBox, index, value });
119349
119344
  loginToZapier = async (zapierWebPage) => {
119350
119345
  this.zapierWebPage = zapierWebPage;
119351
119346
  this.continueButton = this.zapierWebPage.getByRole("button", {
@@ -119579,6 +119574,7 @@ const LIST_MODIFIER_TAGS = {
119579
119574
  bulletList: "ul",
119580
119575
  orderedList: "ol",
119581
119576
  };
119577
+ const EDITOR_VERIFY_TEXT_COLOR = "#e60000";
119582
119578
 
119583
119579
  const __dirname$4 = getDirname(import.meta.url);
119584
119580
  class SlashCommandEditorPage {
@@ -119803,6 +119799,7 @@ class EditorPage {
119803
119799
  calloutSelector;
119804
119800
  videoUploadOption;
119805
119801
  todoListSelector;
119802
+ textColorSelector;
119806
119803
  filePath = "../../../e2e/assets/images/sample.png";
119807
119804
  videoPath = "../../../e2e/assets/files/sample.mp4";
119808
119805
  linkUrl = faker.internet.url();
@@ -119840,6 +119837,7 @@ class EditorPage {
119840
119837
  this.tableOption = this.editorWrapper.getByTestId(NEETO_EDITOR_SELECTORS.tableOption);
119841
119838
  this.videoUploadOption = this.editorWrapper.getByTestId(NEETO_EDITOR_SELECTORS.videoUploadOption);
119842
119839
  this.todoListSelector = this.editorWrapper.getByTestId(NEETO_EDITOR_SELECTORS.todoListOption);
119840
+ this.textColorSelector = this.editorWrapper.getByTestId(NEETO_EDITOR_SELECTORS.textColorOption);
119843
119841
  }
119844
119842
  cleanString = (selector = "") => selector?.replace("neeto-editor-fixed-menu-", "").replace("-option", "") ||
119845
119843
  "";
@@ -120176,6 +120174,31 @@ class EditorPage {
120176
120174
  await expect(this.contentField.getByText(truncate(`${key}:${value}`, 25))).toBeVisible();
120177
120175
  }
120178
120176
  };
120177
+ verifyTextColor = async (isButtonInMoreMenu) => {
120178
+ const randomText = await this.fillRandomText();
120179
+ const colorPickerInput = this.page
120180
+ .getByTestId(COMMON_SELECTORS.customDropdownContainer())
120181
+ .getByTestId(COMMON_SELECTORS.inputField);
120182
+ isButtonInMoreMenu && (await this.moreMenuSelector.click());
120183
+ await expect(async () => {
120184
+ await this.textColorSelector.click();
120185
+ await expect(colorPickerInput).toBeVisible({ timeout: 5_000 });
120186
+ await colorPickerInput.fill(EDITOR_VERIFY_TEXT_COLOR);
120187
+ // Using .first() to target the button rendered by the Formik editor.
120188
+ await this.page
120189
+ .getByTestId(COMMON_SELECTORS.customDropdownContainer())
120190
+ .getByRole("button")
120191
+ // eslint-disable-next-line playwright/no-nth-methods
120192
+ .first()
120193
+ .click();
120194
+ await expect(colorPickerInput).toBeHidden({ timeout: 5_000 });
120195
+ }).toPass({ timeout: 20_000 });
120196
+ const coloredText = this.contentField.locator("[style]", {
120197
+ hasText: randomText,
120198
+ });
120199
+ await expect(coloredText).toHaveCSS("color", hexToRGB(EDITOR_VERIFY_TEXT_COLOR));
120200
+ return [{ key: "text-color", value: randomText }];
120201
+ };
120179
120202
  verifyCalloutSelector = async (isButtonInMoreMenu) => {
120180
120203
  isButtonInMoreMenu && (await this.moreMenuSelector.click());
120181
120204
  const calloutTypes = ["default", "info", "warning", "error", "success"];
@@ -120211,6 +120234,7 @@ class EditorPage {
120211
120234
  underline: isButtonInMoreMenu => this.verifyTextDeskModifier("underline", isButtonInMoreMenu),
120212
120235
  strike: isButtonInMoreMenu => this.verifyTextDeskModifier("strike", isButtonInMoreMenu),
120213
120236
  highlight: isButtonInMoreMenu => this.verifyTextHighlighter(isButtonInMoreMenu),
120237
+ "text-color": isButtonInMoreMenu => this.verifyTextColor(isButtonInMoreMenu),
120214
120238
  bulletList: isButtonInMoreMenu => this.verifyListModifiers("bulletList", isButtonInMoreMenu),
120215
120239
  orderedList: isButtonInMoreMenu => this.verifyListModifiers("orderedList", isButtonInMoreMenu),
120216
120240
  link: isButtonInMoreMenu => this.verifyEditorLinkButton(this.linkUrl, isButtonInMoreMenu),
@@ -120271,6 +120295,9 @@ class EditorPage {
120271
120295
  hasText: value,
120272
120296
  })).toBeVisible();
120273
120297
  }
120298
+ if (key === "text-color") {
120299
+ return expect(previewLocator.locator("[style]", { hasText: value })).toHaveCSS("color", hexToRGB(EDITOR_VERIFY_TEXT_COLOR));
120300
+ }
120274
120301
  const replacement = elementReplacement?.[key] ?? key;
120275
120302
  if (value === undefined) {
120276
120303
  return expect(
@@ -120532,7 +120559,7 @@ class TeamMembers {
120532
120559
  if (await pane.isHidden())
120533
120560
  return;
120534
120561
  (await buttonSpinner.isHidden()) && (await submitBtn.click());
120535
- await expect(buttonSpinner).toBeHidden({ timeout: 10_000 });
120562
+ await expect(buttonSpinner).toHaveCount(0, { timeout: 10_000 });
120536
120563
  await expect(pane).toBeHidden();
120537
120564
  }).toPass({ timeout: 60_000 });
120538
120565
  await this.neetoPlaywrightUtilities.verifyToast();
@@ -120549,7 +120576,10 @@ class TeamMembers {
120549
120576
  editMemberViaUI = async ({ email = "", firstName = "", lastName = "", role = "standard", } = {}) => {
120550
120577
  await this.page.getByTestId(MEMBER_SELECTORS.dropDownIcon).click();
120551
120578
  await this.page.getByTestId(MEMBER_SELECTORS.editButton).click();
120552
- await this.neetoPlaywrightUtilities.waitForPageLoad();
120579
+ await this.neetoPlaywrightUtilities.waitForPaneToLoad();
120580
+ await expect(this.page
120581
+ .getByTestId(MEMBER_SELECTORS.submitButton)
120582
+ .getByTestId(COMMON_SELECTORS.uiSpinner)).toHaveCount(0, { timeout: 35_000 });
120553
120583
  isPresent(email) &&
120554
120584
  (await this.page
120555
120585
  .getByTestId(MEMBER_FORM_SELECTORS.emailInput)
@@ -126103,4 +126133,4 @@ const definePlaywrightConfig = (overrides) => {
126103
126133
  });
126104
126134
  };
126105
126135
 
126106
- 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 };
126136
+ 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.8",
3
+ "version": "4.1.10",
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",