@bigbinary/neeto-playwright-commons 1.25.0 → 1.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -790,6 +790,40 @@ declare class RoleApis {
790
790
  editRole: (roleId: string, body: Record<string, unknown>) => Promise<playwright_core.APIResponse | undefined>;
791
791
  deleteRole: (roleId: string, standardRoleId: string) => Promise<playwright_core.APIResponse | undefined>;
792
792
  }
793
+ type SecurityAuthType = "password" | "email" | "invite" | "member";
794
+ type SecurityRequestParams = {
795
+ ownerId?: string;
796
+ auth: SecurityAuthType;
797
+ value?: string;
798
+ };
799
+ declare class SecurityApi {
800
+ private neetoPlaywrightUtilities;
801
+ constructor(neetoPlaywrightUtilities: CustomCommands);
802
+ buildBody: (auth: SecurityAuthType, value?: string) => {
803
+ configuration: {
804
+ auth: string;
805
+ password: string;
806
+ allowed_keywords?: undefined;
807
+ };
808
+ } | {
809
+ configuration: {
810
+ auth: string;
811
+ password?: undefined;
812
+ allowed_keywords?: undefined;
813
+ };
814
+ } | {
815
+ configuration: {
816
+ auth: string;
817
+ allowed_keywords: string[];
818
+ password?: undefined;
819
+ };
820
+ };
821
+ update: ({
822
+ ownerId,
823
+ auth,
824
+ value
825
+ }: SecurityRequestParams) => Promise<playwright_core.APIResponse | undefined>;
826
+ }
793
827
  declare class TagsApi {
794
828
  private neetoPlaywrightUtilities;
795
829
  constructor(neetoPlaywrightUtilities: CustomCommands);
@@ -801,6 +835,52 @@ declare class TagsApi {
801
835
  tagsRequestUrl: string;
802
836
  }) => Promise<playwright_core.APIResponse | undefined>;
803
837
  }
838
+ interface ThankYouApiRequestParams {
839
+ entityId: string;
840
+ title: string;
841
+ thankYouPageId: string;
842
+ }
843
+ declare class ThankYouApi {
844
+ private neetoPlaywrightUtilities;
845
+ constructor(neetoPlaywrightUtilities: CustomCommands);
846
+ create: ({
847
+ entityId,
848
+ title
849
+ }: Omit<ThankYouApiRequestParams, "thankYouPageId">) => Promise<playwright_core.APIResponse | undefined>;
850
+ fetch: ({
851
+ entityId
852
+ }: Pick<ThankYouApiRequestParams, "entityId">) => Promise<playwright_core.APIResponse | undefined>;
853
+ update: ({
854
+ thankYouPageId,
855
+ entityId
856
+ }: Omit<ThankYouApiRequestParams, "title">) => Promise<playwright_core.APIResponse | undefined>;
857
+ }
858
+ declare class SlackApi {
859
+ private neetoPlaywrightUtilities;
860
+ private readonly botToken;
861
+ constructor(neetoPlaywrightUtilities: CustomCommands);
862
+ /**
863
+ *
864
+ * Command to send an API request.
865
+ *
866
+ * @example
867
+ *
868
+ * await neetoPlaywrightUtilities.apiRequest({
869
+ * url: "/api/v1/tags",
870
+ * failOnStatusCode, // throws error for status codes other than 2xx and 3xx
871
+ * body, // request body
872
+ * method, // request method "get" | "patch" | "post" | "put" | "delete"
873
+ * params, // request params
874
+ * headers, // aditional request headers
875
+ * timeout, // request timeout in milliseconds (default: 30000)
876
+ * });
877
+ * @endexample
878
+ */
879
+ private apiRequest;
880
+ fetchMessages: (channelId: string, unixTimestamp: number) => Promise<playwright_core.APIResponse | undefined>;
881
+ createChannel: (channelName: string) => Promise<playwright_core.APIResponse | undefined>;
882
+ addUser: (channelId: string, userId: string) => Promise<playwright_core.APIResponse | undefined>;
883
+ }
804
884
  declare class WebhookSiteApi {
805
885
  private readonly request;
806
886
  private readonly WEBHOOK_SITE_BASE_URL;
@@ -808,6 +888,70 @@ declare class WebhookSiteApi {
808
888
  create: () => Promise<playwright_core.APIResponse>;
809
889
  fetch: (token: string) => Promise<playwright_core.APIResponse>;
810
890
  }
891
+ type IntegrableType = "Form" | string;
892
+ interface TwilioRequestParams {
893
+ integrableId: string;
894
+ integrableType: IntegrableType;
895
+ }
896
+ declare class TwilioApi {
897
+ private neetoPlaywrightUtilities;
898
+ private readonly authToken;
899
+ private readonly sid;
900
+ private readonly defaultPhoneSid;
901
+ constructor(neetoPlaywrightUtilities: CustomCommands);
902
+ /**
903
+ *
904
+ * Command to send an API request.
905
+ *
906
+ * @example
907
+ *
908
+ * await neetoPlaywrightUtilities.apiRequest({
909
+ * url: "/api/v1/tags",
910
+ * failOnStatusCode, // throws error for status codes other than 2xx and 3xx
911
+ * body, // request body
912
+ * method, // request method "get" | "patch" | "post" | "put" | "delete"
913
+ * params, // request params
914
+ * headers, // aditional request headers
915
+ * timeout, // request timeout in milliseconds (default: 30000)
916
+ * });
917
+ * @endexample
918
+ */
919
+ private apiRequest;
920
+ fetch: ({
921
+ integrableId,
922
+ integrableType
923
+ }: TwilioRequestParams) => Promise<playwright_core.APIResponse | undefined>;
924
+ /**
925
+ *
926
+ * Disconnects an active integration. It takes the following parameters:
927
+ *
928
+ * @example
929
+ *
930
+ * await integrationBase.disconnect();
931
+ * @endexample
932
+ */
933
+ disconnect: ({
934
+ integrableId,
935
+ integrableType
936
+ }: TwilioRequestParams) => Promise<playwright_core.APIResponse | undefined>;
937
+ /**
938
+ *
939
+ * Connects an integration. It takes the following parameters:
940
+ *
941
+ * skipGoTo: Boolean indicating whether to skip navigating to integration index (default: false).
942
+ *
943
+ * @example
944
+ *
945
+ * await integrationBase.connect();
946
+ * // OR
947
+ * await integrationBase.connect(true);
948
+ * @endexample
949
+ */
950
+ connect: ({
951
+ integrableId,
952
+ integrableType
953
+ }: TwilioRequestParams) => Promise<playwright_core.APIResponse | undefined>;
954
+ }
811
955
  interface FastmailHeaders {
812
956
  "Content-Type": "application/json";
813
957
  Authorization: `Bearer ${string}`;
@@ -3033,6 +3177,7 @@ declare const ENVIRONMENT: {
3033
3177
  staging: string;
3034
3178
  review: string;
3035
3179
  };
3180
+ declare const EXAMPLE_URL = "https://example.com";
3036
3181
  /**
3037
3182
  *
3038
3183
  * Boolean value indicating whether the current environment is staging.
@@ -8004,5 +8149,5 @@ interface Overrides {
8004
8149
  * @endexample
8005
8150
  */
8006
8151
  declare const definePlaywrightConfig: (overrides: Overrides) => PlaywrightTestConfig<{}, {}>;
8007
- 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, 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, SELECT_COUNTRY, SIGNUP_SELECTORS, SINGULAR, SLACK_DATA_QA_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STATUS_TEXTS, STORAGE_STATE, SidebarSection, 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, ThankYouPage, 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 };
8152
+ 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, SELECT_COUNTRY, 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 };
8008
8153
  export type { BaseThemeStyle, BaseThemeStyleType, CountryProps, CustomFixture, IntroPageThemeStyle, IntroPageThemeStyleType, ThemeCategory, ValueOf };
package/index.js CHANGED
@@ -1,3 +1,5 @@
1
+ import { keysToSnakeCase, hyphenate, isPresent, isNotPresent, humanize, dynamicArray, findBy, truncate, isNotEmpty, isNotEqualDeep, randomPick } from '@bigbinary/neeto-cist';
2
+ import { faker } from '@faker-js/faker';
1
3
  import * as require$$0$3 from 'fs';
2
4
  import require$$0__default, { readFileSync, promises, existsSync, writeFileSync, unlinkSync } from 'fs';
3
5
  import * as path$1 from 'path';
@@ -6,9 +8,7 @@ import test, { expect, test as test$1, chromium as chromium$1, defineConfig, dev
6
8
  import { getI18nInstance, initI18n } from 'playwright-i18next-fixture';
7
9
  import require$$0$4 from 'util';
8
10
  import { curry, not, isEmpty, pluck, mergeDeepLeft, isNil, isNotNil, mergeAll } from 'ramda';
9
- import { hyphenate, isPresent, isNotPresent, humanize, keysToSnakeCase, dynamicArray, findBy, truncate, isNotEmpty, isNotEqualDeep, randomPick } from '@bigbinary/neeto-cist';
10
11
  import { execSync } from 'child_process';
11
- import { faker } from '@faker-js/faker';
12
12
  import dayjs from 'dayjs';
13
13
  import require$$0$6 from 'stream';
14
14
  import { createRequire } from 'node:module';
@@ -231,6 +231,43 @@ class RoleApis {
231
231
  }
232
232
  }
233
233
 
234
+ const SECURITY_BASE_URL = `/secure${BASE_URL}/configuration`;
235
+ class SecurityApi {
236
+ constructor(neetoPlaywrightUtilities) {
237
+ this.neetoPlaywrightUtilities = neetoPlaywrightUtilities;
238
+ this.buildBody = (auth, value) => {
239
+ switch (auth) {
240
+ case "password":
241
+ return {
242
+ configuration: {
243
+ auth: "basic",
244
+ password: value || faker.internet.password(),
245
+ },
246
+ };
247
+ case "invite":
248
+ return { configuration: { auth: "invited" } };
249
+ case "member":
250
+ return { configuration: { auth: "session" } };
251
+ case "email":
252
+ return {
253
+ configuration: {
254
+ auth: "email",
255
+ allowed_keywords: [value || faker.internet.domainName()],
256
+ },
257
+ };
258
+ default:
259
+ return { configuration: { auth: "no" } };
260
+ }
261
+ };
262
+ this.update = ({ ownerId, auth, value }) => this.neetoPlaywrightUtilities.apiRequest({
263
+ body: this.buildBody(auth, value),
264
+ url: SECURITY_BASE_URL,
265
+ ...(ownerId && { params: keysToSnakeCase({ ownerId }) }),
266
+ method: "put",
267
+ });
268
+ }
269
+ }
270
+
234
271
  class TagsApi {
235
272
  constructor(neetoPlaywrightUtilities) {
236
273
  this.neetoPlaywrightUtilities = neetoPlaywrightUtilities;
@@ -242,6 +279,119 @@ class TagsApi {
242
279
  }
243
280
  }
244
281
 
282
+ const ENVIRONMENT = {
283
+ development: "development",
284
+ staging: "staging",
285
+ review: "review",
286
+ };
287
+ const EXAMPLE_URL = "https://example.com";
288
+ const IS_STAGING_ENV = process.env.TEST_ENV === "staging";
289
+ const STORAGE_STATE = "./e2e/auth/user.json";
290
+ const GLOBAL_TRANSLATIONS_PATTERN = "../node_modules/@bigbinary/**/translations/en.json";
291
+ const PROJECT_TRANSLATIONS_PATH = "../app/javascript/src/translations/en.json";
292
+ const CREDENTIALS = {
293
+ name: "Oliver Smith",
294
+ email: "oliver@example.com",
295
+ password: "welcome",
296
+ };
297
+ const OTP_EMAIL_PATTERN = "is your login code";
298
+ const SLACK_DEFAULT_CHANNEL = "general";
299
+ const CUSTOM_DOMAIN_SUFFIX = "aceinvoice.com";
300
+ const ZAPIER_TEST_EMAIL = (product) => `neeto-${product}-zapier-test@${process.env.FASTMAIL_DOMAIN_NAME}`;
301
+ // constants for translation
302
+ const SINGULAR = { count: 1 };
303
+ const PLURAL = { count: 2 };
304
+ const COLOR = {
305
+ transparent: "rgba(0, 0, 0, 0)",
306
+ softBlue: "rgb(230, 244, 255)",
307
+ };
308
+ const DATE_TEXTS = { now: "Now", nextYear: "next-year" };
309
+ const EMPTY_STORAGE_STATE = {
310
+ storageState: { cookies: [], origins: [] },
311
+ };
312
+ const CURRENT_TIME_RANGES = {
313
+ last24Hours: "Last 24 hours",
314
+ thisWeek: "This week",
315
+ thisMonth: "This month",
316
+ thisYear: "This year",
317
+ thisQuarter: "This quarter",
318
+ last30Days: "Last 30 days",
319
+ last7Days: "Last 7 days",
320
+ };
321
+ const PAST_TIME_RANGES = {
322
+ lastWeek: "Last week",
323
+ lastMonth: "Last month",
324
+ lastYear: "Last year",
325
+ lastQuarter: "Last quarter",
326
+ };
327
+ const TIME_RANGES = {
328
+ ...PAST_TIME_RANGES,
329
+ ...CURRENT_TIME_RANGES,
330
+ customDuration: "Custom duration",
331
+ };
332
+ const DATE_RANGES = {
333
+ ...PAST_TIME_RANGES,
334
+ ...CURRENT_TIME_RANGES,
335
+ after: "After",
336
+ before: "Before",
337
+ customDateRange: "Custom date range",
338
+ };
339
+ const CERTIFICATE_LIMIT_EXCEEDED_REGEXP = `too many certificates \\(\\d+\\) already issued for "${CUSTOM_DOMAIN_SUFFIX}"`;
340
+ const CERTIFICATE_LIMIT_EXCEEDED_MESSAGE = "Certificate limit exceeded for custom domain";
341
+ const EXPORT_FILE_TYPES = {
342
+ pdf: "pdf",
343
+ excel: "excel",
344
+ csv: "csv",
345
+ };
346
+
347
+ const THANK_YOU_URL = "/neeto_thank_you/thank_you_configurations";
348
+ class ThankYouApi {
349
+ constructor(neetoPlaywrightUtilities) {
350
+ this.neetoPlaywrightUtilities = neetoPlaywrightUtilities;
351
+ this.create = ({ entityId, title, }) => this.neetoPlaywrightUtilities.apiRequest({
352
+ method: "post",
353
+ body: { title, description: "" },
354
+ url: THANK_YOU_URL,
355
+ params: keysToSnakeCase({ entityId }),
356
+ });
357
+ this.fetch = ({ entityId }) => this.neetoPlaywrightUtilities.apiRequest({
358
+ url: THANK_YOU_URL,
359
+ params: keysToSnakeCase({ entityId }),
360
+ });
361
+ this.update = ({ thankYouPageId, entityId, }) => this.neetoPlaywrightUtilities.apiRequest({
362
+ method: "put",
363
+ url: `${THANK_YOU_URL}/${thankYouPageId}`,
364
+ body: keysToSnakeCase({
365
+ entityId,
366
+ thankYouConfiguration: {
367
+ id: thankYouPageId,
368
+ kind: "redirect_to_url",
369
+ passEventDetailsToRedirectUrl: false,
370
+ redirectUrl: EXAMPLE_URL,
371
+ },
372
+ }),
373
+ });
374
+ }
375
+ }
376
+
377
+ class SlackApi {
378
+ constructor(neetoPlaywrightUtilities) {
379
+ this.neetoPlaywrightUtilities = neetoPlaywrightUtilities;
380
+ this.apiRequest = (endpoint, params) => this.neetoPlaywrightUtilities.apiRequest({
381
+ url: `https://slack.com/api/conversations.${endpoint}`,
382
+ headers: { Authorization: `Bearer ${this.botToken}` },
383
+ params,
384
+ });
385
+ this.fetchMessages = (channelId, unixTimestamp) => this.apiRequest("history", { channel: channelId, oldest: unixTimestamp });
386
+ this.createChannel = (channelName) => this.apiRequest("create", { name: channelName });
387
+ this.addUser = (channelId, userId) => this.apiRequest("invite", { channel: channelId, users: userId });
388
+ if (!process.env.SLACK_BOT_TOKEN) {
389
+ throw new Error("SLACK_BOT_TOKEN is not set");
390
+ }
391
+ this.botToken = process.env.SLACK_BOT_TOKEN;
392
+ }
393
+ }
394
+
245
395
  class WebhookSiteApi {
246
396
  constructor(request) {
247
397
  this.request = request;
@@ -251,6 +401,50 @@ class WebhookSiteApi {
251
401
  }
252
402
  }
253
403
 
404
+ class TwilioApi {
405
+ constructor(neetoPlaywrightUtilities) {
406
+ this.neetoPlaywrightUtilities = neetoPlaywrightUtilities;
407
+ this.apiRequest = ({ endpoint, params, body, method = "get", }) => this.neetoPlaywrightUtilities.apiRequest({
408
+ method,
409
+ url: `/neeto_integrations/${endpoint}`,
410
+ ...(params && { params }),
411
+ ...(body && { body }),
412
+ });
413
+ this.fetch = ({ integrableId, integrableType }) => this.apiRequest({
414
+ endpoint: "twilio/sms_configurations",
415
+ ...(integrableId && {
416
+ params: keysToSnakeCase({ integrableId, integrableType }),
417
+ }),
418
+ });
419
+ this.disconnect = ({ integrableId, integrableType }) => this.apiRequest({
420
+ method: "delete",
421
+ endpoint: "disconnect",
422
+ body: keysToSnakeCase({
423
+ disconnect: { slug: "twilio" },
424
+ ...(integrableId && { integrableId, integrableType }),
425
+ }),
426
+ });
427
+ this.connect = ({ integrableId, integrableType }) => this.apiRequest({
428
+ endpoint: "twilio/sms_configurations",
429
+ method: "post",
430
+ body: keysToSnakeCase({
431
+ twilioAuthToken: this.authToken,
432
+ twilioSid: this.sid,
433
+ twilioPhoneNumberSid: this.defaultPhoneSid,
434
+ ...(integrableId && { integrableId, integrableType }),
435
+ }),
436
+ });
437
+ if (!process.env.TWILIO_AUTH_TOKEN ||
438
+ !process.env.TWILIO_SID ||
439
+ !process.env.TWILIO_DEFAULT_PHONE_SID) {
440
+ throw new Error("TWILIO_AUTH_TOKEN, TWILIO_SID, and TWILIO_DEFAULT_PHONE_SID are not set");
441
+ }
442
+ this.authToken = process.env.TWILIO_AUTH_TOKEN;
443
+ this.sid = process.env.TWILIO_SID;
444
+ this.defaultPhoneSid = process.env.TWILIO_DEFAULT_PHONE_SID;
445
+ }
446
+ }
447
+
254
448
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
255
449
 
256
450
  function getDefaultExportFromCjs (x) {
@@ -4368,70 +4562,6 @@ function requireLib$c () {
4368
4562
  var libExports = /*@__PURE__*/ requireLib$c();
4369
4563
  var qs = /*@__PURE__*/getDefaultExportFromCjs(libExports);
4370
4564
 
4371
- const ENVIRONMENT = {
4372
- development: "development",
4373
- staging: "staging",
4374
- review: "review",
4375
- };
4376
- const IS_STAGING_ENV = process.env.TEST_ENV === "staging";
4377
- const STORAGE_STATE = "./e2e/auth/user.json";
4378
- const GLOBAL_TRANSLATIONS_PATTERN = "../node_modules/@bigbinary/**/translations/en.json";
4379
- const PROJECT_TRANSLATIONS_PATH = "../app/javascript/src/translations/en.json";
4380
- const CREDENTIALS = {
4381
- name: "Oliver Smith",
4382
- email: "oliver@example.com",
4383
- password: "welcome",
4384
- };
4385
- const OTP_EMAIL_PATTERN = "is your login code";
4386
- const SLACK_DEFAULT_CHANNEL = "general";
4387
- const CUSTOM_DOMAIN_SUFFIX = "aceinvoice.com";
4388
- const ZAPIER_TEST_EMAIL = (product) => `neeto-${product}-zapier-test@${process.env.FASTMAIL_DOMAIN_NAME}`;
4389
- // constants for translation
4390
- const SINGULAR = { count: 1 };
4391
- const PLURAL = { count: 2 };
4392
- const COLOR = {
4393
- transparent: "rgba(0, 0, 0, 0)",
4394
- softBlue: "rgb(230, 244, 255)",
4395
- };
4396
- const DATE_TEXTS = { now: "Now", nextYear: "next-year" };
4397
- const EMPTY_STORAGE_STATE = {
4398
- storageState: { cookies: [], origins: [] },
4399
- };
4400
- const CURRENT_TIME_RANGES = {
4401
- last24Hours: "Last 24 hours",
4402
- thisWeek: "This week",
4403
- thisMonth: "This month",
4404
- thisYear: "This year",
4405
- thisQuarter: "This quarter",
4406
- last30Days: "Last 30 days",
4407
- last7Days: "Last 7 days",
4408
- };
4409
- const PAST_TIME_RANGES = {
4410
- lastWeek: "Last week",
4411
- lastMonth: "Last month",
4412
- lastYear: "Last year",
4413
- lastQuarter: "Last quarter",
4414
- };
4415
- const TIME_RANGES = {
4416
- ...PAST_TIME_RANGES,
4417
- ...CURRENT_TIME_RANGES,
4418
- customDuration: "Custom duration",
4419
- };
4420
- const DATE_RANGES = {
4421
- ...PAST_TIME_RANGES,
4422
- ...CURRENT_TIME_RANGES,
4423
- after: "After",
4424
- before: "Before",
4425
- customDateRange: "Custom date range",
4426
- };
4427
- const CERTIFICATE_LIMIT_EXCEEDED_REGEXP = `too many certificates \\(\\d+\\) already issued for "${CUSTOM_DOMAIN_SUFFIX}"`;
4428
- const CERTIFICATE_LIMIT_EXCEEDED_MESSAGE = "Certificate limit exceeded for custom domain";
4429
- const EXPORT_FILE_TYPES = {
4430
- pdf: "pdf",
4431
- excel: "excel",
4432
- csv: "csv",
4433
- };
4434
-
4435
4565
  const COMMON_SELECTORS = {
4436
4566
  emailInputError: "email-input-error",
4437
4567
  pane: "pane-wrapper",
@@ -4830,9 +4960,9 @@ const NEETO_EDITOR_SELECTORS = {
4830
4960
  todoListOption: optionSelector("todoList"),
4831
4961
  editorMenuWrapper: "neeto-editor-fixed-menu-wrapper",
4832
4962
  dataEmojiType: (type) => `[data-emoji="${type}"]`,
4833
- //Use data-cy once https://github.com/neetozone/neeto-editor/issues/1651 is resolved
4963
+ //Use data-testid once https://github.com/neetozone/neeto-editor/issues/1651 is resolved
4834
4964
  calloutContent: ".callout-content",
4835
- //Use data-cy once https://github.com/neetozone/neeto-editor/issues/1648 is resolved
4965
+ //Use data-testid once https://github.com/neetozone/neeto-editor/issues/1648 is resolved
4836
4966
  calloutTypeOption: ".neeto-editor-callout-dropdown__type-option",
4837
4967
  editorMediaUploaderTab: "neeto-editor-media-uploader-local-tab",
4838
4968
  dynamicVariableSelector: (variable) => `dynamic-variables-list-item-${joinHyphenCase(variable)}`,
@@ -113922,7 +114052,7 @@ class HelpAndProfilePage {
113922
114052
  const replayAppLink = this.page.getByTestId(COMMON_SELECTORS.appLink("Replay"));
113923
114053
  const searchInput = this.page.getByTestId(COMMON_SELECTORS.productSwitcherSearchInput);
113924
114054
  await searchInput.fill(faker.word.words(3));
113925
- //TODO: Use data-cy label when this https://github.com/bigbinary/neeto-molecules/issues/2114 is resolved
114055
+ //TODO: Use data-testid label when this https://github.com/bigbinary/neeto-molecules/issues/2114 is resolved
113926
114056
  await expect(this.page.getByText(this.t("neetoMolecules.productSwitcher.noApps"))).toBeVisible();
113927
114057
  await searchInput.fill(searchQueryPartial);
113928
114058
  await Promise.all([
@@ -113950,7 +114080,7 @@ class HelpAndProfilePage {
113950
114080
  const replayAppLink = this.page.getByTestId(COMMON_SELECTORS.appLink("Replay"));
113951
114081
  const searchInput = this.page.getByTestId(COMMON_SELECTORS.productSwitcherSearchInput);
113952
114082
  await searchInput.fill(faker.word.words(3));
113953
- //TODO: Use data-cy label when this https://github.com/bigbinary/neeto-molecules/issues/2114 is resolved
114083
+ //TODO: Use data-testid label when this https://github.com/bigbinary/neeto-molecules/issues/2114 is resolved
113954
114084
  await expect(this.page.getByText(this.t("neetoMolecules.productSwitcher.noApps"))).toBeVisible();
113955
114085
  await searchInput.fill(searchQueryPartial);
113956
114086
  await Promise.all([
@@ -116764,7 +116894,7 @@ class ZapierPage extends IntegrationBase {
116764
116894
  await signInPage.waitForLoadState();
116765
116895
  await expect(signInPage.getByRole("heading", { name: ZAPIER_WEB_TEXTS.loading })).toBeHidden({ timeout: 10000 });
116766
116896
  // The zapier connect page have two custom fm-prettytext boxes
116767
- // (not an input/textarea) without aria-label or data-cy
116897
+ // (not an input/textarea) without aria-label or data-testid
116768
116898
  const prettyTextBox = signInPage.locator(ZAPIER_SELECTORS.fmPrettytext);
116769
116899
  // eslint-disable-next-line playwright/no-nth-methods
116770
116900
  const subdomainBox = prettyTextBox.nth(0);
@@ -117054,8 +117184,8 @@ class EditorPage {
117054
117184
  .all();
117055
117185
  (await this.moreMenuSelector.isVisible()) && fixedMenuButtons.pop();
117056
117186
  return Promise.all(fixedMenuButtons.map(async (button) => {
117057
- const dataCy = await button.getAttribute("data-cy");
117058
- return this.cleanString(dataCy);
117187
+ const dataTestid = await button.getAttribute("data-testid");
117188
+ return this.cleanString(dataTestid);
117059
117189
  }));
117060
117190
  };
117061
117191
  this.moreMenuOptions = async () => {
@@ -117063,8 +117193,8 @@ class EditorPage {
117063
117193
  const dropdownContainer = this.page.getByTestId(COMMON_SELECTORS.dropdownContainer);
117064
117194
  const moreMenuButtons = await dropdownContainer.getByRole("button").all();
117065
117195
  const moreMenuButtonLocators = Promise.all(moreMenuButtons.map(async (button) => {
117066
- const dataCy = await button.getAttribute("data-cy");
117067
- return this.cleanString(dataCy);
117196
+ const dataTestid = await button.getAttribute("data-testid");
117197
+ return this.cleanString(dataTestid);
117068
117198
  }));
117069
117199
  await this.moreMenuSelector.click();
117070
117200
  await expect(dropdownContainer).toBeHidden();
@@ -117079,8 +117209,8 @@ class EditorPage {
117079
117209
  .getByRole("button")
117080
117210
  .all();
117081
117211
  const headingLevels = (await Promise.all(headingButtons.map(async (button) => {
117082
- const dataCy = await button.getAttribute("data-cy");
117083
- const headingLevel = dataCy === null || dataCy === void 0 ? void 0 : dataCy.split("-").pop();
117212
+ const dataTestid = await button.getAttribute("data-testid");
117213
+ const headingLevel = dataTestid === null || dataTestid === void 0 ? void 0 : dataTestid.split("-").pop();
117084
117214
  return /^h[1-5]$/.test(headingLevel || "") ? headingLevel : null;
117085
117215
  }))).filter(Boolean);
117086
117216
  const fontSizeDropdown = this.editorWrapper.getByTestId(NEETO_EDITOR_SELECTORS.fontSize);
@@ -124102,7 +124232,6 @@ const definePlaywrightConfig = (overrides) => {
124102
124232
  ...globalOverrides,
124103
124233
  use: {
124104
124234
  baseURL: process.env.BASE_URL,
124105
- testIdAttribute: "data-cy",
124106
124235
  trace: "on",
124107
124236
  screenshot: "only-on-failure",
124108
124237
  navigationTimeout: 35000,
@@ -124144,5 +124273,5 @@ const definePlaywrightConfig = (overrides) => {
124144
124273
  });
124145
124274
  };
124146
124275
 
124147
- 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, 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, SELECT_COUNTRY, SIGNUP_SELECTORS, SINGULAR, SLACK_DATA_QA_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STATUS_TEXTS, STORAGE_STATE, SidebarSection, 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, ThankYouPage, 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 };
124276
+ 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, SELECT_COUNTRY, 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 };
124148
124277
  //# sourceMappingURL=index.js.map