@bigbinary/neeto-playwright-commons 1.26.13 → 1.26.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -2519,6 +2519,9 @@ declare class WebhooksPage {
2519
2519
  webhookToken: never;
2520
2520
  webhookSiteURL: string;
2521
2521
  }>;
2522
+ /**
2523
+ * @deprecated This method is deprecated. Use getTokenViaAPI instead.
2524
+ */
2522
2525
  /**
2523
2526
  *
2524
2527
  * Retrieves the webhook URL and token from a third-party site.
@@ -3315,6 +3318,18 @@ declare const EXAMPLE_URL = "https://example.com";
3315
3318
  * @endexample
3316
3319
  */
3317
3320
  declare const IS_STAGING_ENV: boolean;
3321
+ /**
3322
+ *
3323
+ * Boolean value indicating whether the current environment is development.
3324
+ *
3325
+ * @example
3326
+ *
3327
+ * if(IS_DEV_ENV){
3328
+ * // Perform actions specific to the development environment
3329
+ * }
3330
+ * @endexample
3331
+ */
3332
+ declare const IS_DEV_ENV: boolean;
3318
3333
  /**
3319
3334
  *
3320
3335
  * Path to the JSON file for storing authentication data.
@@ -3335,13 +3350,16 @@ declare const GLOBAL_TRANSLATIONS_PATTERN = "../node_modules/@bigbinary/**/trans
3335
3350
  declare const PROJECT_TRANSLATIONS_PATH = "../app/javascript/src/translations/en.json";
3336
3351
  /**
3337
3352
  *
3338
- * Default credentials for testing purposes.
3353
+ * Default credentials for testing purposes for development env.
3339
3354
  *
3340
3355
  */
3341
3356
  declare const CREDENTIALS: {
3357
+ firstName: string;
3358
+ lastName: string;
3342
3359
  name: string;
3343
3360
  email: string;
3344
3361
  password: string;
3362
+ subdomainName: string;
3345
3363
  };
3346
3364
  /**
3347
3365
  *
@@ -3893,7 +3911,7 @@ interface BasicUserInfo {
3893
3911
  email: string;
3894
3912
  country?: string;
3895
3913
  }
3896
- interface CreateOrganizationProps extends BasicUserInfo {
3914
+ interface CreateOrganizationProps$1 extends BasicUserInfo {
3897
3915
  businessName: string;
3898
3916
  subdomainName: string;
3899
3917
  appName: string;
@@ -3923,20 +3941,6 @@ declare class OrganizationPage {
3923
3941
  page: Page;
3924
3942
  neetoPlaywrightUtilities: CustomCommands;
3925
3943
  constructor(page: Page, neetoPlaywrightUtilities: CustomCommands);
3926
- /**
3927
- *
3928
- * Used to generate the subdomain URL. It takes the following parameters:
3929
- *
3930
- * appName(required): Name of the app.
3931
- *
3932
- * @example
3933
- *
3934
- * const domain = organizationPage.baseUrlGenerator(appName)
3935
- * console.log(domain) // https://${subdomainName}.${appName}.net
3936
- * // "subdomainName" is the loggedIn user name
3937
- * @endexample
3938
- */
3939
- baseUrlGenerator: (appName: string) => string;
3940
3944
  private fillOTP;
3941
3945
  private submitEmail;
3942
3946
  /**
@@ -3974,7 +3978,7 @@ declare class OrganizationPage {
3974
3978
  firstName,
3975
3979
  lastName,
3976
3980
  appName
3977
- }: CreateOrganizationProps) => Promise<void>;
3981
+ }: CreateOrganizationProps$1) => Promise<void>;
3978
3982
  /**
3979
3983
  *
3980
3984
  * Used to set up an Organization. Works only with staging env. It takes the following parameters:
@@ -7750,7 +7754,13 @@ interface LoginProps {
7750
7754
  */
7751
7755
  neetoPlaywrightUtilities?: CustomCommands;
7752
7756
  loginPath?: string;
7757
+ email?: string;
7753
7758
  }
7759
+ declare const fillCredentialsAndSubmit: ({
7760
+ page,
7761
+ loginPath,
7762
+ email
7763
+ }: LoginProps) => Promise<void>;
7754
7764
  /**
7755
7765
  *
7756
7766
  * Used to login by using email and password. It takes the following parameters:
@@ -7768,8 +7778,8 @@ interface LoginProps {
7768
7778
  */
7769
7779
  declare const loginWithoutSSO: ({
7770
7780
  page,
7771
- neetoPlaywrightUtilities,
7772
- loginPath
7781
+ loginPath,
7782
+ email
7773
7783
  }: LoginProps) => Promise<void>;
7774
7784
  /**
7775
7785
  *
@@ -7789,7 +7799,8 @@ declare const loginWithoutSSO: ({
7789
7799
  declare const login: ({
7790
7800
  page,
7791
7801
  neetoPlaywrightUtilities,
7792
- loginPath
7802
+ loginPath,
7803
+ email
7793
7804
  }: LoginProps) => Promise<false | void>;
7794
7805
  /**
7795
7806
  *
@@ -7811,10 +7822,56 @@ declare const generateRandomBypassEmail: () => string;
7811
7822
  *
7812
7823
  * @example
7813
7824
  *
7814
- * extractSubdomainFromError("https://wwww.bb.neetoChat.com") // bb
7825
+ * extractSubdomainFromError("https://wwww.bb.neetoChat.com"); // bb
7815
7826
  * @endexample
7816
7827
  */
7817
7828
  declare const extractSubdomainFromError: (errorString: string) => string;
7829
+ interface CreateOrganizationProps {
7830
+ email: string;
7831
+ firstName: string;
7832
+ lastName: string;
7833
+ subdomainName: string;
7834
+ }
7835
+ /**
7836
+ *
7837
+ * Creates an organization via a rake task. This method executes the
7838
+ *
7839
+ * playwright:create_organization rake task asynchronously and returns the
7840
+ *
7841
+ * output. It takes the following parameters:
7842
+ *
7843
+ * email: The email address for the organization owner.
7844
+ *
7845
+ * firstName: The first name of the organization owner.
7846
+ *
7847
+ * lastName: The last name of the organization owner.
7848
+ *
7849
+ * subdomainName: The subdomain name for the organization.
7850
+ *
7851
+ * A Promise that resolves to a string containing the rake task output.
7852
+ *
7853
+ * @example
7854
+ *
7855
+ * import { createOrganizationViaRake } from "@bigbinary/neeto-playwright-commons";
7856
+ *
7857
+ * await createOrganizationViaRake({
7858
+ * email: "user@example.com",
7859
+ * firstName: "John",
7860
+ * lastName: "Doe",
7861
+ * subdomainName: "myorganization",
7862
+ * });
7863
+ * @endexample
7864
+ * Note: The working directory defaults to process.env.RAILS_ROOT or ".." if not set. Make sure the Rails application is available at the specified
7865
+ *
7866
+ * working directory.
7867
+ *
7868
+ */
7869
+ declare const createOrganizationViaRake: ({
7870
+ email,
7871
+ firstName,
7872
+ lastName,
7873
+ subdomainName
7874
+ }: CreateOrganizationProps) => Promise<string>;
7818
7875
  interface AssertColumnHeaderVisibilityProps {
7819
7876
  page: Page;
7820
7877
  columnName: string;
@@ -8330,5 +8387,5 @@ interface Overrides {
8330
8387
  * @endexample
8331
8388
  */
8332
8389
  declare const definePlaywrightConfig: (overrides: Overrides) => PlaywrightTestConfig<{}, {}>;
8333
- export { ACTIONS, ADMIN_PANEL_SELECTORS, API_KEYS_SELECTORS, API_ROUTES, AUDIT_LOGS_SELECTORS, AdminPanelPage, ApiKeysApi, ApiKeysPage, AuditLogsPage, BASE_URL, CERTIFICATE_LIMIT_EXCEEDED_MESSAGE, CERTIFICATE_LIMIT_EXCEEDED_REGEXP, CHANGELOG_WIDGET_SELECTORS, CHAT_WIDGET_SELECTORS, CHAT_WIDGET_TEXTS, COLOR, COMMON_SELECTORS, COMMON_TEXTS, COMMUNITY_TEXTS, CREDENTIALS, CURRENT_TIME_RANGES, CUSTOM_DOMAIN_SELECTORS, CUSTOM_DOMAIN_SUFFIX, CustomCommands, CustomDomainApi, CustomDomainPage, DATE_PICKER_SELECTORS, DATE_RANGES, DATE_TEXTS, DESCRIPTION_EDITOR_TEXTS, EMBED_SELECTORS, EMOJI_LABEL, EMPTY_STORAGE_STATE, ENGAGE_TEXTS, ENVIRONMENT, EXAMPLE_URL, EXPANDED_FONT_SIZE, EXPORT_FILE_TYPES, EditorPage, EmbedBase, FILE_FORMATS, FONT_SIZE_SELECTORS, GLOBAL_TRANSLATIONS_PATTERN, GOOGLE_ANALYTICS_SELECTORS, GOOGLE_CALENDAR_DATE_FORMAT, GOOGLE_LOGIN_SELECTORS, GOOGLE_LOGIN_TEXTS, GOOGLE_SHEETS_SELECTORS, GooglePage, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IPRestrictionsPage, IP_RESTRICTIONS_SELECTORS, IS_STAGING_ENV, ImageUploader, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MICROSOFT_LOGIN_SELECTORS, MICROSOFT_LOGIN_TEXTS, MailerUtils, Member, MemberApis, MicrosoftPage, NEETO_AUTH_BASE_URL, NEETO_EDITOR_SELECTORS, NEETO_FILTERS_SELECTORS, NEETO_IMAGE_UPLOADER_SELECTORS, NEETO_ROUTES, NEETO_SEO_SELECTORS, NEETO_TEXT_MODIFIER_SELECTORS, ONBOARDING_SELECTORS, ORGANIZATION_TEXTS, OTP_EMAIL_PATTERN, OrganizationPage, PAST_TIME_RANGES, PHONE_NUMBER_FORMATS, PLURAL, PROFILE_LINKS, PROFILE_SECTION_SELECTORS, PROJECT_TRANSLATIONS_PATH, ROLES_SELECTORS, ROUTES, RoleApis, RolesPage, SIGNUP_SELECTORS, SINGULAR, SLACK_DATA_QA_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STATUS_TEXTS, STORAGE_STATE, SecurityApi, SidebarSection, SlackApi, SlackPage, TABLE_SELECTORS, TAB_SELECTORS, TAGS_SELECTORS, TEAM_MEMBER_TEXTS, TEXT_MODIFIER_ROLES, TEXT_MODIFIER_SELECTORS, TEXT_MODIFIER_TAGS, THANK_YOU_SELECTORS, THEMES_SELECTORS, THEMES_TEXTS, THIRD_PARTY_ROUTES, TIME_RANGES, TOASTR_MESSAGES, TWILIO_SELECTORS, TagsApi, TagsPage, TeamMembers, ThankYouApi, ThankYouPage, TwilioApi, USER_AGENTS, WEBHOOK_SELECTORS, WebhookSiteApi, WebhooksPage, ZAPIER_LIMIT_EXHAUSTED_MESSAGE, ZAPIER_SELECTORS, ZAPIER_TEST_EMAIL, ZAPIER_WEB_TEXTS, ZapierPage, baseURLGenerator, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, currencyUtils, dataQa, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, filterUtils, generatePhoneNumber, generatePhoneNumberDetails, generateRandomBypassEmail, generateRandomFile, generateStagingData, getByDataQA, getClipboardContent, getFormattedPhoneNumber, getFullUrl, getGlobalUserProps, getGlobalUserState, getImagePathAndName, getIsoCodeFromPhoneCode, getListCount, globalShortcuts, grantClipboardPermissions, headerUtils, hexToRGB, hexToRGBA, hyphenize, i18nFixture, initializeCredentials, initializeTestData, initializeTotp, isGithubIssueOpen, joinHyphenCase, joinString, login, loginWithoutSSO, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, _default as stealthTest, tableUtils, toCamelCase, updateCredentials, writeDataToFile };
8390
+ export { ACTIONS, ADMIN_PANEL_SELECTORS, API_KEYS_SELECTORS, API_ROUTES, AUDIT_LOGS_SELECTORS, AdminPanelPage, ApiKeysApi, ApiKeysPage, AuditLogsPage, BASE_URL, CERTIFICATE_LIMIT_EXCEEDED_MESSAGE, CERTIFICATE_LIMIT_EXCEEDED_REGEXP, CHANGELOG_WIDGET_SELECTORS, CHAT_WIDGET_SELECTORS, CHAT_WIDGET_TEXTS, COLOR, COMMON_SELECTORS, COMMON_TEXTS, COMMUNITY_TEXTS, CREDENTIALS, CURRENT_TIME_RANGES, CUSTOM_DOMAIN_SELECTORS, CUSTOM_DOMAIN_SUFFIX, CustomCommands, CustomDomainApi, CustomDomainPage, DATE_PICKER_SELECTORS, DATE_RANGES, DATE_TEXTS, DESCRIPTION_EDITOR_TEXTS, EMBED_SELECTORS, EMOJI_LABEL, EMPTY_STORAGE_STATE, ENGAGE_TEXTS, ENVIRONMENT, EXAMPLE_URL, EXPANDED_FONT_SIZE, EXPORT_FILE_TYPES, EditorPage, EmbedBase, FILE_FORMATS, FONT_SIZE_SELECTORS, GLOBAL_TRANSLATIONS_PATTERN, GOOGLE_ANALYTICS_SELECTORS, GOOGLE_CALENDAR_DATE_FORMAT, GOOGLE_LOGIN_SELECTORS, GOOGLE_LOGIN_TEXTS, GOOGLE_SHEETS_SELECTORS, GooglePage, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IPRestrictionsPage, IP_RESTRICTIONS_SELECTORS, IS_DEV_ENV, IS_STAGING_ENV, ImageUploader, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MICROSOFT_LOGIN_SELECTORS, MICROSOFT_LOGIN_TEXTS, MailerUtils, Member, MemberApis, MicrosoftPage, NEETO_AUTH_BASE_URL, NEETO_EDITOR_SELECTORS, NEETO_FILTERS_SELECTORS, NEETO_IMAGE_UPLOADER_SELECTORS, NEETO_ROUTES, NEETO_SEO_SELECTORS, NEETO_TEXT_MODIFIER_SELECTORS, ONBOARDING_SELECTORS, ORGANIZATION_TEXTS, OTP_EMAIL_PATTERN, OrganizationPage, PAST_TIME_RANGES, PHONE_NUMBER_FORMATS, PLURAL, PROFILE_LINKS, PROFILE_SECTION_SELECTORS, PROJECT_TRANSLATIONS_PATH, ROLES_SELECTORS, ROUTES, RoleApis, RolesPage, SIGNUP_SELECTORS, SINGULAR, SLACK_DATA_QA_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STATUS_TEXTS, STORAGE_STATE, SecurityApi, SidebarSection, SlackApi, SlackPage, TABLE_SELECTORS, TAB_SELECTORS, TAGS_SELECTORS, TEAM_MEMBER_TEXTS, TEXT_MODIFIER_ROLES, TEXT_MODIFIER_SELECTORS, TEXT_MODIFIER_TAGS, THANK_YOU_SELECTORS, THEMES_SELECTORS, THEMES_TEXTS, THIRD_PARTY_ROUTES, TIME_RANGES, TOASTR_MESSAGES, TWILIO_SELECTORS, TagsApi, TagsPage, TeamMembers, ThankYouApi, ThankYouPage, TwilioApi, USER_AGENTS, WEBHOOK_SELECTORS, WebhookSiteApi, WebhooksPage, ZAPIER_LIMIT_EXHAUSTED_MESSAGE, ZAPIER_SELECTORS, ZAPIER_TEST_EMAIL, ZAPIER_WEB_TEXTS, ZapierPage, baseURLGenerator, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, createOrganizationViaRake, currencyUtils, dataQa, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, fillCredentialsAndSubmit, filterUtils, generatePhoneNumber, generatePhoneNumberDetails, generateRandomBypassEmail, generateRandomFile, generateStagingData, getByDataQA, getClipboardContent, getFormattedPhoneNumber, getFullUrl, getGlobalUserProps, getGlobalUserState, getImagePathAndName, getIsoCodeFromPhoneCode, getListCount, globalShortcuts, grantClipboardPermissions, headerUtils, hexToRGB, hexToRGBA, hyphenize, i18nFixture, initializeCredentials, initializeTestData, initializeTotp, isGithubIssueOpen, joinHyphenCase, joinString, login, loginWithoutSSO, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, _default as stealthTest, tableUtils, toCamelCase, updateCredentials, writeDataToFile };
8334
8391
  export type { BaseThemeStyle, BaseThemeStyleType, CountryProps, CustomFixture, IntroPageThemeStyle, IntroPageThemeStyleType, ThemeCategory, ValueOf };
package/index.js CHANGED
@@ -9,7 +9,7 @@ import test, { expect, test as test$1, chromium as chromium$1, defineConfig, dev
9
9
  import { getI18nInstance, initI18n } from 'playwright-i18next-fixture';
10
10
  import require$$0$4 from 'util';
11
11
  import { curry, isNotNil, not, isEmpty, pluck, mergeDeepLeft, isNil, mergeAll } from 'ramda';
12
- import { execSync } from 'child_process';
12
+ import { execSync, spawn } from 'child_process';
13
13
  import dayjs from 'dayjs';
14
14
  import require$$0$7 from 'stream';
15
15
  import { createRequire } from 'node:module';
@@ -285,14 +285,18 @@ const ENVIRONMENT = {
285
285
  review: "review",
286
286
  };
287
287
  const EXAMPLE_URL = "https://example.com";
288
- const IS_STAGING_ENV = process.env.TEST_ENV === "staging";
288
+ const IS_STAGING_ENV = process.env.TEST_ENV === ENVIRONMENT.staging;
289
+ const IS_DEV_ENV = process.env.TEST_ENV === ENVIRONMENT.development;
289
290
  const STORAGE_STATE = "./e2e/auth/user.json";
290
291
  const GLOBAL_TRANSLATIONS_PATTERN = "../node_modules/@bigbinary/**/translations/en.json";
291
292
  const PROJECT_TRANSLATIONS_PATH = "../app/javascript/src/translations/en.json";
292
293
  const CREDENTIALS = {
294
+ firstName: "Oliver",
295
+ lastName: "Smith",
293
296
  name: "Oliver Smith",
294
297
  email: "oliver@example.com",
295
298
  password: "welcome",
299
+ subdomainName: "spinkart",
296
300
  };
297
301
  const OTP_EMAIL_PATTERN = "is your login code";
298
302
  const SLACK_DEFAULT_CHANNEL = "general";
@@ -4829,23 +4833,26 @@ const generateStagingData = (product = "invoice") => {
4829
4833
  const timestamp = jobCompletionIndex
4830
4834
  ? `${dateTimeString}-${jobCompletionIndex}`
4831
4835
  : dateTimeString;
4832
- const firstName = "André";
4833
- const lastName = "O'Reilly";
4836
+ const firstName = IS_STAGING_ENV ? "André" : CREDENTIALS.firstName;
4837
+ const lastName = IS_STAGING_ENV ? "O'Reilly" : CREDENTIALS.lastName;
4834
4838
  const otpBypassKey = process.env.OTP_BYPASS_KEY;
4835
- const stagingOrganization = `cpt-${product}-${timestamp}`;
4839
+ const isGlobalSetup = !getGlobalUserState(); // For dev global setup staging data, we use the default subdomain `spinkart`.
4840
+ const shouldKeepDefaultDataForDevEnv = isGlobalSetup && IS_DEV_ENV;
4841
+ const stagingOrganization = shouldKeepDefaultDataForDevEnv
4842
+ ? CREDENTIALS.subdomainName
4843
+ : `cpt-${product}-${timestamp}`;
4844
+ const email = shouldKeepDefaultDataForDevEnv
4845
+ ? CREDENTIALS.email
4846
+ : `cpt${otpBypassKey}+${product}+${timestamp}@bigbinary.com`;
4836
4847
  return {
4837
4848
  firstName,
4838
4849
  lastName,
4839
4850
  otp: 111111,
4840
- domain: `neeto${product}.net`,
4841
- currentUserName: IS_STAGING_ENV
4842
- ? joinString(firstName, lastName)
4843
- : CREDENTIALS.name,
4851
+ domain: IS_STAGING_ENV ? `neeto${product}.net` : `lvh.me`,
4852
+ currentUserName: joinString(firstName, lastName),
4844
4853
  businessName: stagingOrganization,
4845
- subdomainName: IS_STAGING_ENV ? stagingOrganization : "spinkart",
4846
- email: IS_STAGING_ENV
4847
- ? `cpt${otpBypassKey}+${product}+${timestamp}@bigbinary.com`
4848
- : CREDENTIALS.email,
4854
+ subdomainName: stagingOrganization,
4855
+ email,
4849
4856
  };
4850
4857
  };
4851
4858
 
@@ -4886,7 +4893,7 @@ const removeCredentialFile = () => {
4886
4893
  require$$0$3.unlink(STORAGE_STATE, error => {
4887
4894
  if (!error)
4888
4895
  return;
4889
- console.error(error);
4896
+ console.log(error);
4890
4897
  });
4891
4898
  };
4892
4899
  const clearCredentials = () => {
@@ -4935,7 +4942,12 @@ const shouldSkipSetupAndTeardown = () => { var _a; return ((_a = getGlobalUserSt
4935
4942
  const shouldSkipCustomDomainSetup = () => process.env.SETUP_CUSTOM_DOMAIN !== "true" || !IS_STAGING_ENV;
4936
4943
  const baseURLGenerator = (product, customSubdomain) => {
4937
4944
  const { subdomainName } = getGlobalUserState();
4938
- return `https://${customSubdomain !== null && customSubdomain !== void 0 ? customSubdomain : subdomainName}.neeto${product.toLowerCase()}.net`;
4945
+ const subdomain = customSubdomain !== null && customSubdomain !== void 0 ? customSubdomain : subdomainName;
4946
+ const railsPort = process.env.RAILS_SERVER_PORT;
4947
+ const baseURL = IS_DEV_ENV
4948
+ ? `http://${subdomain}.lvh.me:${railsPort}`
4949
+ : `https://${subdomain}.neeto${product.toLowerCase()}.net`;
4950
+ return baseURL;
4939
4951
  };
4940
4952
  // trims and replaces multiple whitespace characters in a string with a single space
4941
4953
  const squish = (text) => text.trim().replace(/\s+/g, " ");
@@ -5015,7 +5027,7 @@ const globalShortcuts = (t) => [
5015
5027
  const generatePhoneNumber = () => `${"+91"} 9${faker.string.numeric(4)} ${faker.string.numeric(5)}`;
5016
5028
  const initializeTestData = (product) => {
5017
5029
  const credentials = generateStagingData(product.toLowerCase());
5018
- const baseURL = `https://${credentials.subdomainName}.${credentials.domain}`;
5030
+ const baseURL = baseURLGenerator(product, credentials.subdomainName);
5019
5031
  return { credentials, baseURL };
5020
5032
  };
5021
5033
 
@@ -116651,7 +116663,7 @@ class MicrosoftPage extends IntegrationBase {
116651
116663
  const acceptBtn = this.page.locator(MICROSOFT_LOGIN_SELECTORS.acceptButton);
116652
116664
  await acceptBtn.click();
116653
116665
  await expect(acceptBtn).toBeHidden({ timeout: 10000 });
116654
- await this.page.waitForLoadState("load", { timeout: 25000 });
116666
+ await this.page.waitForLoadState("load", { timeout: 50000 });
116655
116667
  };
116656
116668
  this.revokePermissions = async () => {
116657
116669
  await this.page.goto(THIRD_PARTY_ROUTES.microsoft.myApps);
@@ -116874,6 +116886,9 @@ class WebhooksPage {
116874
116886
  webhookSiteURL: `${THIRD_PARTY_ROUTES.webhooks.site}${webhookToken}`,
116875
116887
  };
116876
116888
  };
116889
+ /**
116890
+ * @deprecated This method is deprecated. Use getTokenViaAPI instead.
116891
+ */
116877
116892
  this.getWebhookURL = async () => {
116878
116893
  var _a;
116879
116894
  const WEBHOOK_URL_REGEX = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/g;
@@ -118478,30 +118493,30 @@ class TeamMembers {
118478
118493
  }
118479
118494
  }
118480
118495
 
118481
- const loginWithoutSSO = async ({ page,
118482
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
118483
- neetoPlaywrightUtilities, loginPath = "/", }) => {
118484
- if (shouldSkipSetupAndTeardown())
118485
- return;
118486
- await page.goto(loginPath, { timeout: 20000 });
118496
+ const fillCredentialsAndSubmit = async ({ page, loginPath, email = CREDENTIALS.email, }) => {
118497
+ loginPath && (await page.goto(loginPath, { timeout: 30000 }));
118487
118498
  await page.waitForLoadState("load", { timeout: 35000 });
118488
- await page
118489
- .getByTestId(LOGIN_SELECTORS.emailTextField)
118490
- .fill(CREDENTIALS.email);
118499
+ await page.getByTestId(LOGIN_SELECTORS.emailTextField).fill(email);
118491
118500
  await page
118492
118501
  .getByTestId(LOGIN_SELECTORS.passwordTextField)
118493
118502
  .fill(CREDENTIALS.password);
118494
118503
  const submitButton = page.getByTestId(LOGIN_SELECTORS.submitButton);
118495
118504
  await submitButton.click();
118496
118505
  await expect(submitButton).toBeHidden({ timeout: 15000 });
118506
+ await expect(page.getByTestId(COMMON_SELECTORS.floatingActionMenuButton)).toBeVisible({ timeout: 60000 });
118507
+ };
118508
+ const loginWithoutSSO = async ({ page, loginPath = "/", email = CREDENTIALS.email, }) => {
118509
+ if (shouldSkipSetupAndTeardown())
118510
+ return;
118511
+ await fillCredentialsAndSubmit({ page, loginPath, email });
118497
118512
  const userCredentials = readFileSyncIfExists();
118498
118513
  await page.context().storageState({ path: STORAGE_STATE });
118499
118514
  const mergedCredentials = mergeAll([readFileSyncIfExists(), userCredentials]);
118500
118515
  writeDataToFile(JSON.stringify(mergedCredentials, null, 2));
118501
118516
  updateCredentials({ key: "isLoggedIn", value: "true" });
118502
118517
  };
118503
- const login = async ({ page, neetoPlaywrightUtilities, loginPath, }) => !IS_STAGING_ENV &&
118504
- (await loginWithoutSSO({ page, neetoPlaywrightUtilities, loginPath }));
118518
+ const login = async ({ page, neetoPlaywrightUtilities, loginPath, email, }) => IS_DEV_ENV &&
118519
+ (await loginWithoutSSO({ page, loginPath, email }));
118505
118520
  const generateRandomBypassEmail = () => `cpt${process.env.OTP_BYPASS_KEY}+${faker.number.int()}@bigbinary.com`;
118506
118521
 
118507
118522
  const extractSubdomainFromError = (errorString) => {
@@ -118509,13 +118524,43 @@ const extractSubdomainFromError = (errorString) => {
118509
118524
  const matches = errorString.match(regex);
118510
118525
  return matches[1];
118511
118526
  };
118527
+ const createOrganizationViaRake = async ({ email, firstName, lastName, subdomainName, }) => {
118528
+ var _a, _b;
118529
+ const workingDirectory = process.env.RAILS_ROOT || "..";
118530
+ const rakeTaskName = "playwright:create_organization";
118531
+ const childProcess = spawn("bundle", [
118532
+ "exec",
118533
+ "rake",
118534
+ rakeTaskName,
118535
+ "--",
118536
+ `--first_name=${firstName}`,
118537
+ `--last_name=${lastName}`,
118538
+ `--email=${email}`,
118539
+ `--subdomain=${subdomainName}`,
118540
+ ], {
118541
+ cwd: workingDirectory,
118542
+ stdio: ["ignore", "pipe", "pipe"],
118543
+ });
118544
+ let stdout = "";
118545
+ let stderr = "";
118546
+ (_a = childProcess.stdout) === null || _a === void 0 ? void 0 : _a.on("data", data => {
118547
+ stdout += data.toString("utf-8");
118548
+ });
118549
+ (_b = childProcess.stderr) === null || _b === void 0 ? void 0 : _b.on("data", data => {
118550
+ stderr += data.toString("utf-8");
118551
+ });
118552
+ const exitCode = await new Promise((resolve, reject) => {
118553
+ childProcess.on("error", reject);
118554
+ childProcess.on("close", resolve);
118555
+ });
118556
+ if (exitCode !== 0) {
118557
+ throw new Error(`Failed to create organization: ${stderr || stdout || `Exit code ${exitCode}`}`);
118558
+ }
118559
+ return stdout.trim();
118560
+ };
118512
118561
 
118513
118562
  class OrganizationPage {
118514
118563
  constructor(page, neetoPlaywrightUtilities) {
118515
- this.baseUrlGenerator = (appName) => {
118516
- const { subdomainName } = getGlobalUserState();
118517
- return `https://${subdomainName}.${appName}.net`;
118518
- };
118519
118564
  this.fillOTP = async (otp = faker.string.numeric(6)) => {
118520
118565
  await this.neetoPlaywrightUtilities.waitForPageLoad();
118521
118566
  const otpTextBox = this.page.getByTestId(SIGNUP_SELECTORS.otpTextBox);
@@ -118530,8 +118575,17 @@ class OrganizationPage {
118530
118575
  await expect(submitButton).toBeHidden({ timeout: 35000 });
118531
118576
  };
118532
118577
  this.createOrganization = async ({ email, businessName, subdomainName, firstName, lastName, appName, }) => {
118533
- if (!IS_STAGING_ENV || shouldSkipSetupAndTeardown())
118578
+ if (shouldSkipSetupAndTeardown())
118579
+ return;
118580
+ if (IS_DEV_ENV) {
118581
+ await createOrganizationViaRake({
118582
+ email,
118583
+ firstName,
118584
+ lastName,
118585
+ subdomainName,
118586
+ });
118534
118587
  return;
118588
+ }
118535
118589
  const appNameInLowerCase = appName.toLowerCase();
118536
118590
  const isNeetoAuth = appNameInLowerCase === "neetoauth";
118537
118591
  isNeetoAuth
@@ -118567,7 +118621,9 @@ class OrganizationPage {
118567
118621
  subdomainName: user.subdomainName,
118568
118622
  appName: `neeto${product}`,
118569
118623
  });
118570
- await expect(this.page.locator(COMMON_SELECTORS.spinner)).toBeHidden();
118624
+ await this.neetoPlaywrightUtilities.waitForPageLoad({
118625
+ customPageContext: this.page,
118626
+ });
118571
118627
  const userCredentials = readFileSyncIfExists();
118572
118628
  await this.page.context().storageState({ path: STORAGE_STATE });
118573
118629
  const mergedCredentials = mergeAll([
@@ -118578,7 +118634,7 @@ class OrganizationPage {
118578
118634
  updateCredentials({ key: "isLoggedIn", value: "true" });
118579
118635
  updateCredentials({
118580
118636
  key: "baseUrl",
118581
- value: this.baseUrlGenerator(`neeto${product}`),
118637
+ value: baseURLGenerator(product),
118582
118638
  });
118583
118639
  };
118584
118640
  this.updateSubdomainIfExists = async (appName) => {
@@ -118600,7 +118656,7 @@ class OrganizationPage {
118600
118656
  key: "businessName",
118601
118657
  value: newOrganizationName,
118602
118658
  });
118603
- process.env.BASE_URL = this.baseUrlGenerator(appName);
118659
+ process.env.BASE_URL = baseURLGenerator(appName);
118604
118660
  await this.page
118605
118661
  .getByTestId(SIGNUP_SELECTORS.organizationNameTextField)
118606
118662
  .fill(newOrganizationName);
@@ -118622,6 +118678,10 @@ class OrganizationPage {
118622
118678
  }).toPass({ timeout: loginTimeout });
118623
118679
  };
118624
118680
  this.loginViaSSO = async (email = generateRandomBypassEmail(), loginTimeout = 2 * 60 * 1000) => {
118681
+ if (IS_DEV_ENV) {
118682
+ await fillCredentialsAndSubmit({ page: this.page, email });
118683
+ return;
118684
+ }
118625
118685
  await this.fillEmailAndSubmit(email, loginTimeout);
118626
118686
  await this.fillOTP();
118627
118687
  };
@@ -118631,6 +118691,8 @@ class OrganizationPage {
118631
118691
  await this.fillOTP(otp);
118632
118692
  };
118633
118693
  this.setupProfile = async ({ firstName = faker.person.firstName(), lastName = faker.person.lastName(), country, } = {}) => {
118694
+ if (IS_DEV_ENV)
118695
+ return;
118634
118696
  await this.neetoPlaywrightUtilities.waitForPageLoad();
118635
118697
  await this.page
118636
118698
  .getByTestId(SIGNUP_SELECTORS.firstNameTextField)
@@ -118648,36 +118710,62 @@ class OrganizationPage {
118648
118710
  });
118649
118711
  };
118650
118712
  this.loginAndOnboard = async ({ email, firstName, lastName, country, handleOnboarding, baseURL = process.env.BASE_URL, fetchOtpFromEmail, }) => {
118651
- await this.page.goto(`${baseURL}${ROUTES.admin}`, { timeout: 20000 });
118652
- fetchOtpFromEmail === undefined
118653
- ? await this.loginViaSSO(email)
118654
- : await this.loginWithFastmailEmail({ email, fetchOtpFromEmail });
118655
- await this.setupProfile({ firstName, lastName, country });
118656
- await this.page.waitForURL(new RegExp(getGlobalUserState().domain), {
118657
- waitUntil: "load",
118658
- });
118713
+ if (IS_DEV_ENV) {
118714
+ await fillCredentialsAndSubmit({
118715
+ page: this.page,
118716
+ email,
118717
+ loginPath: `${baseURL}${ROUTES.admin}`,
118718
+ });
118719
+ }
118720
+ else {
118721
+ await this.page.goto(`${baseURL}${ROUTES.admin}`, { timeout: 20000 });
118722
+ fetchOtpFromEmail === undefined
118723
+ ? await this.loginViaSSO(email)
118724
+ : await this.loginWithFastmailEmail({ email, fetchOtpFromEmail });
118725
+ await this.setupProfile({ firstName, lastName, country });
118726
+ await this.page.waitForURL(new RegExp(getGlobalUserState().domain), {
118727
+ waitUntil: "load",
118728
+ });
118729
+ }
118659
118730
  await handleOnboarding();
118660
118731
  };
118661
118732
  this.signUp = async ({ credentials, fetchOtpFromEmail, appName, }) => {
118662
- let otp = "123456";
118663
- await this.page.goto(`${ROUTES.neetoAuthSignup}?redirect_uri=${credentials.domain}`, { timeout: 20000 });
118664
- await this.submitEmail(credentials.email);
118665
- if (fetchOtpFromEmail !== undefined) {
118666
- otp = await fetchOtpFromEmail({
118733
+ if (IS_DEV_ENV) {
118734
+ await createOrganizationViaRake({
118735
+ email: credentials.email,
118736
+ firstName: credentials.firstName,
118737
+ lastName: credentials.lastName,
118738
+ subdomainName: credentials.subdomainName,
118739
+ });
118740
+ await fillCredentialsAndSubmit({
118741
+ page: this.page,
118667
118742
  email: credentials.email,
118668
- timeout: 4 * 60 * 1000,
118743
+ loginPath: `${baseURLGenerator(appName, credentials.subdomainName)}${ROUTES.admin}`,
118669
118744
  });
118670
118745
  }
118671
- await this.fillOTP(otp);
118672
- await this.fillOrganizationDetails({
118673
- credentials,
118674
- appName,
118675
- });
118676
- await this.page.waitForURL(new RegExp(credentials.domain));
118746
+ else {
118747
+ let otp = "123456";
118748
+ await this.page.goto(`${ROUTES.neetoAuthSignup}?redirect_uri=${credentials.domain}`, { timeout: 20000 });
118749
+ await this.submitEmail(credentials.email);
118750
+ if (fetchOtpFromEmail !== undefined) {
118751
+ otp = await fetchOtpFromEmail({
118752
+ email: credentials.email,
118753
+ timeout: 4 * 60 * 1000,
118754
+ });
118755
+ }
118756
+ await this.fillOTP(otp);
118757
+ await this.fillOrganizationDetails({
118758
+ credentials,
118759
+ appName,
118760
+ });
118761
+ await this.page.waitForURL(new RegExp(credentials.domain));
118762
+ }
118677
118763
  const STORAGE_STATE = await this.page.context().storageState();
118678
118764
  return { STORAGE_STATE, baseURL: process.env.BASE_URL };
118679
118765
  };
118680
118766
  this.fillOrganizationDetails = async ({ credentials, appName, }) => {
118767
+ if (IS_DEV_ENV)
118768
+ return;
118681
118769
  const subdomainError = this.page.getByTestId(SIGNUP_SELECTORS.subdomainError);
118682
118770
  const organizationSubmitButton = this.page.getByTestId(SIGNUP_SELECTORS.organizationSubmitButton);
118683
118771
  await this.neetoPlaywrightUtilities.waitForPageLoad();
@@ -119656,10 +119744,7 @@ const initializeCredentials = (product) => {
119656
119744
  }
119657
119745
  const stagingData = generateStagingData(product);
119658
119746
  writeDataToFile(JSON.stringify({ user: stagingData }, null, 2));
119659
- if (IS_STAGING_ENV) {
119660
- const baseUrl = `https://${stagingData.subdomainName}.${stagingData.domain}`;
119661
- process.env.BASE_URL = baseUrl;
119662
- }
119747
+ process.env.BASE_URL = baseURLGenerator(product, stagingData.subdomainName);
119663
119748
  };
119664
119749
 
119665
119750
  const assertColumnHeaderVisibility = async ({ page, columnName, shouldBeVisible, }) => {
@@ -124602,7 +124687,6 @@ const playdashLighthouseConfig = {
124602
124687
  tags: process.env.TAG,
124603
124688
  };
124604
124689
  const isCI = isPresent(process.env.NEETO_CI_JOB_ID);
124605
- const isDevEnv = process.env.TEST_ENV === ENVIRONMENT.development;
124606
124690
  const railsPort = process.env.RAILS_SERVER_PORT;
124607
124691
  const vitePort = process.env.VITE_PORT;
124608
124692
  const definePlaywrightConfig = (overrides) => {
@@ -124645,7 +124729,7 @@ const definePlaywrightConfig = (overrides) => {
124645
124729
  timeout: 5 * 60 * 1000,
124646
124730
  workers: isCI ? 6 : 5,
124647
124731
  reporter: isCI ? reporter : [["line"]],
124648
- ...(isDevEnv && {
124732
+ ...(IS_DEV_ENV && {
124649
124733
  webServer: [
124650
124734
  {
124651
124735
  command: `bundle exec puma -b tcp://0.0.0.0:${railsPort} -C config/puma.rb`,
@@ -124709,5 +124793,5 @@ const definePlaywrightConfig = (overrides) => {
124709
124793
  });
124710
124794
  };
124711
124795
 
124712
- export { ACTIONS, ADMIN_PANEL_SELECTORS, API_KEYS_SELECTORS, API_ROUTES, AUDIT_LOGS_SELECTORS, AdminPanelPage, ApiKeysApi, ApiKeysPage, AuditLogsPage, BASE_URL, CERTIFICATE_LIMIT_EXCEEDED_MESSAGE, CERTIFICATE_LIMIT_EXCEEDED_REGEXP, CHANGELOG_WIDGET_SELECTORS, CHAT_WIDGET_SELECTORS, CHAT_WIDGET_TEXTS, COLOR, COMMON_SELECTORS, COMMON_TEXTS, COMMUNITY_TEXTS, CREDENTIALS, CURRENT_TIME_RANGES, CUSTOM_DOMAIN_SELECTORS, CUSTOM_DOMAIN_SUFFIX, CustomCommands, CustomDomainApi, CustomDomainPage, DATE_PICKER_SELECTORS, DATE_RANGES, DATE_TEXTS, DESCRIPTION_EDITOR_TEXTS, EMBED_SELECTORS, EMOJI_LABEL, EMPTY_STORAGE_STATE, ENGAGE_TEXTS, ENVIRONMENT, EXAMPLE_URL, EXPANDED_FONT_SIZE, EXPORT_FILE_TYPES, EditorPage, EmbedBase, FILE_FORMATS, FONT_SIZE_SELECTORS, GLOBAL_TRANSLATIONS_PATTERN, GOOGLE_ANALYTICS_SELECTORS, GOOGLE_CALENDAR_DATE_FORMAT, GOOGLE_LOGIN_SELECTORS, GOOGLE_LOGIN_TEXTS, GOOGLE_SHEETS_SELECTORS, GooglePage, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IPRestrictionsPage, IP_RESTRICTIONS_SELECTORS, IS_STAGING_ENV, ImageUploader, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MICROSOFT_LOGIN_SELECTORS, MICROSOFT_LOGIN_TEXTS, MailerUtils, Member, MemberApis, MicrosoftPage, NEETO_AUTH_BASE_URL, NEETO_EDITOR_SELECTORS, NEETO_FILTERS_SELECTORS, NEETO_IMAGE_UPLOADER_SELECTORS, NEETO_ROUTES, NEETO_SEO_SELECTORS, NEETO_TEXT_MODIFIER_SELECTORS, ONBOARDING_SELECTORS, ORGANIZATION_TEXTS, OTP_EMAIL_PATTERN, OrganizationPage, PAST_TIME_RANGES, PHONE_NUMBER_FORMATS, PLURAL, PROFILE_LINKS, PROFILE_SECTION_SELECTORS, PROJECT_TRANSLATIONS_PATH, ROLES_SELECTORS, ROUTES, RoleApis, RolesPage, SIGNUP_SELECTORS, SINGULAR, SLACK_DATA_QA_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STATUS_TEXTS, STORAGE_STATE, SecurityApi, SidebarSection, SlackApi, SlackPage, TABLE_SELECTORS, TAB_SELECTORS, TAGS_SELECTORS, TEAM_MEMBER_TEXTS, TEXT_MODIFIER_ROLES, TEXT_MODIFIER_SELECTORS, TEXT_MODIFIER_TAGS, THANK_YOU_SELECTORS, THEMES_SELECTORS, THEMES_TEXTS, THIRD_PARTY_ROUTES, TIME_RANGES, TOASTR_MESSAGES, TWILIO_SELECTORS, TagsApi, TagsPage, TeamMembers, ThankYouApi, ThankYouPage, TwilioApi, USER_AGENTS, WEBHOOK_SELECTORS, WebhookSiteApi, WebhooksPage, ZAPIER_LIMIT_EXHAUSTED_MESSAGE, ZAPIER_SELECTORS, ZAPIER_TEST_EMAIL, ZAPIER_WEB_TEXTS, ZapierPage, baseURLGenerator, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, currencyUtils, dataQa, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, filterUtils, generatePhoneNumber, generatePhoneNumberDetails, generateRandomBypassEmail, generateRandomFile, generateStagingData, getByDataQA, getClipboardContent, getFormattedPhoneNumber, getFullUrl, getGlobalUserProps, getGlobalUserState, getImagePathAndName, getIsoCodeFromPhoneCode, getListCount, globalShortcuts, grantClipboardPermissions, headerUtils, hexToRGB, hexToRGBA, hyphenize, i18nFixture, initializeCredentials, initializeTestData, initializeTotp, isGithubIssueOpen, joinHyphenCase, joinString, login, loginWithoutSSO, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, stealth as stealthTest, tableUtils, toCamelCase, updateCredentials, writeDataToFile };
124796
+ export { ACTIONS, ADMIN_PANEL_SELECTORS, API_KEYS_SELECTORS, API_ROUTES, AUDIT_LOGS_SELECTORS, AdminPanelPage, ApiKeysApi, ApiKeysPage, AuditLogsPage, BASE_URL, CERTIFICATE_LIMIT_EXCEEDED_MESSAGE, CERTIFICATE_LIMIT_EXCEEDED_REGEXP, CHANGELOG_WIDGET_SELECTORS, CHAT_WIDGET_SELECTORS, CHAT_WIDGET_TEXTS, COLOR, COMMON_SELECTORS, COMMON_TEXTS, COMMUNITY_TEXTS, CREDENTIALS, CURRENT_TIME_RANGES, CUSTOM_DOMAIN_SELECTORS, CUSTOM_DOMAIN_SUFFIX, CustomCommands, CustomDomainApi, CustomDomainPage, DATE_PICKER_SELECTORS, DATE_RANGES, DATE_TEXTS, DESCRIPTION_EDITOR_TEXTS, EMBED_SELECTORS, EMOJI_LABEL, EMPTY_STORAGE_STATE, ENGAGE_TEXTS, ENVIRONMENT, EXAMPLE_URL, EXPANDED_FONT_SIZE, EXPORT_FILE_TYPES, EditorPage, EmbedBase, FILE_FORMATS, FONT_SIZE_SELECTORS, GLOBAL_TRANSLATIONS_PATTERN, GOOGLE_ANALYTICS_SELECTORS, GOOGLE_CALENDAR_DATE_FORMAT, GOOGLE_LOGIN_SELECTORS, GOOGLE_LOGIN_TEXTS, GOOGLE_SHEETS_SELECTORS, GooglePage, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IPRestrictionsPage, IP_RESTRICTIONS_SELECTORS, IS_DEV_ENV, IS_STAGING_ENV, ImageUploader, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MICROSOFT_LOGIN_SELECTORS, MICROSOFT_LOGIN_TEXTS, MailerUtils, Member, MemberApis, MicrosoftPage, NEETO_AUTH_BASE_URL, NEETO_EDITOR_SELECTORS, NEETO_FILTERS_SELECTORS, NEETO_IMAGE_UPLOADER_SELECTORS, NEETO_ROUTES, NEETO_SEO_SELECTORS, NEETO_TEXT_MODIFIER_SELECTORS, ONBOARDING_SELECTORS, ORGANIZATION_TEXTS, OTP_EMAIL_PATTERN, OrganizationPage, PAST_TIME_RANGES, PHONE_NUMBER_FORMATS, PLURAL, PROFILE_LINKS, PROFILE_SECTION_SELECTORS, PROJECT_TRANSLATIONS_PATH, ROLES_SELECTORS, ROUTES, RoleApis, RolesPage, SIGNUP_SELECTORS, SINGULAR, SLACK_DATA_QA_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STATUS_TEXTS, STORAGE_STATE, SecurityApi, SidebarSection, SlackApi, SlackPage, TABLE_SELECTORS, TAB_SELECTORS, TAGS_SELECTORS, TEAM_MEMBER_TEXTS, TEXT_MODIFIER_ROLES, TEXT_MODIFIER_SELECTORS, TEXT_MODIFIER_TAGS, THANK_YOU_SELECTORS, THEMES_SELECTORS, THEMES_TEXTS, THIRD_PARTY_ROUTES, TIME_RANGES, TOASTR_MESSAGES, TWILIO_SELECTORS, TagsApi, TagsPage, TeamMembers, ThankYouApi, ThankYouPage, TwilioApi, USER_AGENTS, WEBHOOK_SELECTORS, WebhookSiteApi, WebhooksPage, ZAPIER_LIMIT_EXHAUSTED_MESSAGE, ZAPIER_SELECTORS, ZAPIER_TEST_EMAIL, ZAPIER_WEB_TEXTS, ZapierPage, baseURLGenerator, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, createOrganizationViaRake, currencyUtils, dataQa, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, fillCredentialsAndSubmit, filterUtils, generatePhoneNumber, generatePhoneNumberDetails, generateRandomBypassEmail, generateRandomFile, generateStagingData, getByDataQA, getClipboardContent, getFormattedPhoneNumber, getFullUrl, getGlobalUserProps, getGlobalUserState, getImagePathAndName, getIsoCodeFromPhoneCode, getListCount, globalShortcuts, grantClipboardPermissions, headerUtils, hexToRGB, hexToRGBA, hyphenize, i18nFixture, initializeCredentials, initializeTestData, initializeTotp, isGithubIssueOpen, joinHyphenCase, joinString, login, loginWithoutSSO, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, stealth as stealthTest, tableUtils, toCamelCase, updateCredentials, writeDataToFile };
124713
124797
  //# sourceMappingURL=index.js.map