@bigbinary/neeto-playwright-commons 4.3.2 → 4.3.3
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/README.md +1 -0
- package/index.d.ts +52 -2
- package/index.js +67 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -128,6 +128,7 @@ This package is published as ESM-only. Use `import` syntax and avoid CommonJS `r
|
|
|
128
128
|
- [Custom commands](./docs/custom-commands.md)
|
|
129
129
|
- [MailerUtils](./docs/utils/mailer-utils.md)
|
|
130
130
|
- [EmailDeliveryUtils](./docs/utils/email-delivery-utils.md)
|
|
131
|
+
- [InboundEmailApis](./docs/utils/inbound-email-apis.md)
|
|
131
132
|
- [NeetoAuthServer](./docs/utils/neeto-auth-server.md)
|
|
132
133
|
- [NeetoChatWidget](./docs/utils/neeto-chat-widget.md)
|
|
133
134
|
- [Util functions](./docs/utils)
|
package/index.d.ts
CHANGED
|
@@ -9477,5 +9477,55 @@ interface Overrides {
|
|
|
9477
9477
|
* @endexample
|
|
9478
9478
|
*/
|
|
9479
9479
|
declare const definePlaywrightConfig: (overrides: Overrides) => PlaywrightTestConfig<{}, {}>;
|
|
9480
|
-
|
|
9481
|
-
|
|
9480
|
+
interface InboundEmailParams {
|
|
9481
|
+
senderEmail: string;
|
|
9482
|
+
senderName: string;
|
|
9483
|
+
to: string;
|
|
9484
|
+
subject: string;
|
|
9485
|
+
body: string;
|
|
9486
|
+
messageId: string;
|
|
9487
|
+
}
|
|
9488
|
+
interface ReplyInboundEmailParams extends InboundEmailParams {
|
|
9489
|
+
replyToMessageId: string;
|
|
9490
|
+
}
|
|
9491
|
+
/**
|
|
9492
|
+
* Injects inbound emails via the Rails ActionMailbox conductor (development only).
|
|
9493
|
+
*/
|
|
9494
|
+
declare class InboundEmailApis {
|
|
9495
|
+
private neetoPlaywrightUtilities;
|
|
9496
|
+
constructor(neetoPlaywrightUtilities: CustomCommands);
|
|
9497
|
+
/**
|
|
9498
|
+
* Delivers a new inbound email (in NeetoDesk this raises a ticket).
|
|
9499
|
+
*
|
|
9500
|
+
* @example
|
|
9501
|
+
* await inboundEmailApis.create({
|
|
9502
|
+
* senderEmail: faker.internet.exampleEmail(),
|
|
9503
|
+
* senderName: faker.person.fullName(),
|
|
9504
|
+
* to: supportEmail(subdomainName),
|
|
9505
|
+
* subject: faker.git.commitMessage(),
|
|
9506
|
+
* body: faker.lorem.sentence(),
|
|
9507
|
+
* messageId: `${faker.string.uuid()}@playwright.test`,
|
|
9508
|
+
* });
|
|
9509
|
+
*/
|
|
9510
|
+
create: (emailParams: InboundEmailParams) => Promise<playwright_core.APIResponse | undefined>;
|
|
9511
|
+
/**
|
|
9512
|
+
* Delivers a reply referencing a previous email via In-Reply-To and
|
|
9513
|
+
* References, so the host app threads it onto the existing record (in
|
|
9514
|
+
* NeetoDesk: a comment on the same ticket) instead of creating a new one.
|
|
9515
|
+
*
|
|
9516
|
+
* @example
|
|
9517
|
+
* await inboundEmailApis.reply({
|
|
9518
|
+
* senderEmail: customerEmail, // same sender as the original email
|
|
9519
|
+
* senderName: customerName,
|
|
9520
|
+
* to: supportEmail(subdomainName),
|
|
9521
|
+
* subject: `Re: ${subject}`,
|
|
9522
|
+
* body: faker.lorem.sentence(),
|
|
9523
|
+
* messageId: `${faker.string.uuid()}@playwright.test`, // its own fresh ID
|
|
9524
|
+
* replyToMessageId: messageId, // Message-ID of the earlier email
|
|
9525
|
+
* });
|
|
9526
|
+
*/
|
|
9527
|
+
reply: (emailParams: ReplyInboundEmailParams) => Promise<playwright_core.APIResponse | undefined>;
|
|
9528
|
+
private deliverSource;
|
|
9529
|
+
}
|
|
9530
|
+
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_MAILPIT_ENABLED, IS_STAGING_ENV, ImageUploader, InboundEmailApis, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, KEYBOARD_SHORTCUT_TEST_CASES, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MAILPIT_BASE_URL, MAILPIT_DOMAIN_NAME, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MICROSOFT_LOGIN_SELECTORS, MICROSOFT_LOGIN_TEXTS, MailerUtils, MailpitApi, 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_TEST_EMAIL_V2, 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, mailpitDomainName, networkConditions, networkThrottlingUsingCDP, optionSelector, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, _default as stealthTest, tableUtils, toCamelCase, updateCredentials, warmup, withCookieCache, writeDataToFile };
|
|
9531
|
+
export type { BaseThemeStyle, BaseThemeStyleType, ColumnMenuAction, CountryProps, CustomFixture, EmailDeliveryConnectParams, EmailDeliveryProvider, EmailDeliveryVerifiedEmail, EmailDeliveryVerifyEmailParams, EmailDeliveryVerifyEmailResponse, EmailMatchCriteria, InboundEmailParams, IntroPageThemeStyle, IntroPageThemeStyleType, OAuthEmailDeliveryProvider, ProjectName, ReplyInboundEmailParams, ThemeCategory, ValueOf };
|
package/index.js
CHANGED
|
@@ -126507,4 +126507,70 @@ const definePlaywrightConfig = (overrides) => {
|
|
|
126507
126507
|
});
|
|
126508
126508
|
};
|
|
126509
126509
|
|
|
126510
|
-
|
|
126510
|
+
const INBOUND_EMAIL_SOURCES_URL = "/rails/conductor/action_mailbox/inbound_emails/sources";
|
|
126511
|
+
const normalizeMessageId = (id) => id.replace(/^<|>$/g, "");
|
|
126512
|
+
const sanitizeHeaderValue = (value) => value.replace(/[\r\n]+/g, " ");
|
|
126513
|
+
/**
|
|
126514
|
+
* Injects inbound emails via the Rails ActionMailbox conductor (development only).
|
|
126515
|
+
*/
|
|
126516
|
+
class InboundEmailApis {
|
|
126517
|
+
neetoPlaywrightUtilities;
|
|
126518
|
+
constructor(neetoPlaywrightUtilities) {
|
|
126519
|
+
this.neetoPlaywrightUtilities = neetoPlaywrightUtilities;
|
|
126520
|
+
}
|
|
126521
|
+
/**
|
|
126522
|
+
* Delivers a new inbound email (in NeetoDesk this raises a ticket).
|
|
126523
|
+
*
|
|
126524
|
+
* @example
|
|
126525
|
+
* await inboundEmailApis.create({
|
|
126526
|
+
* senderEmail: faker.internet.exampleEmail(),
|
|
126527
|
+
* senderName: faker.person.fullName(),
|
|
126528
|
+
* to: supportEmail(subdomainName),
|
|
126529
|
+
* subject: faker.git.commitMessage(),
|
|
126530
|
+
* body: faker.lorem.sentence(),
|
|
126531
|
+
* messageId: `${faker.string.uuid()}@playwright.test`,
|
|
126532
|
+
* });
|
|
126533
|
+
*/
|
|
126534
|
+
create = (emailParams) => this.deliverSource(emailParams);
|
|
126535
|
+
/**
|
|
126536
|
+
* Delivers a reply referencing a previous email via In-Reply-To and
|
|
126537
|
+
* References, so the host app threads it onto the existing record (in
|
|
126538
|
+
* NeetoDesk: a comment on the same ticket) instead of creating a new one.
|
|
126539
|
+
*
|
|
126540
|
+
* @example
|
|
126541
|
+
* await inboundEmailApis.reply({
|
|
126542
|
+
* senderEmail: customerEmail, // same sender as the original email
|
|
126543
|
+
* senderName: customerName,
|
|
126544
|
+
* to: supportEmail(subdomainName),
|
|
126545
|
+
* subject: `Re: ${subject}`,
|
|
126546
|
+
* body: faker.lorem.sentence(),
|
|
126547
|
+
* messageId: `${faker.string.uuid()}@playwright.test`, // its own fresh ID
|
|
126548
|
+
* replyToMessageId: messageId, // Message-ID of the earlier email
|
|
126549
|
+
* });
|
|
126550
|
+
*/
|
|
126551
|
+
reply = (emailParams) => this.deliverSource(emailParams);
|
|
126552
|
+
deliverSource = ({ senderEmail, senderName, to, subject, body, messageId, replyToMessageId, }) => {
|
|
126553
|
+
const source = [
|
|
126554
|
+
`Message-ID: <${normalizeMessageId(messageId)}>`,
|
|
126555
|
+
`From: "${sanitizeHeaderValue(senderName).replace(/"/g, '\\"')}" <${senderEmail}>`,
|
|
126556
|
+
`To: ${to}`,
|
|
126557
|
+
`Subject: ${sanitizeHeaderValue(subject)}`,
|
|
126558
|
+
...(replyToMessageId
|
|
126559
|
+
? [
|
|
126560
|
+
`In-Reply-To: <${normalizeMessageId(replyToMessageId)}>`,
|
|
126561
|
+
`References: <${normalizeMessageId(replyToMessageId)}>`,
|
|
126562
|
+
]
|
|
126563
|
+
: []),
|
|
126564
|
+
"",
|
|
126565
|
+
body,
|
|
126566
|
+
].join("\r\n");
|
|
126567
|
+
return this.neetoPlaywrightUtilities.apiRequest({
|
|
126568
|
+
url: INBOUND_EMAIL_SOURCES_URL,
|
|
126569
|
+
method: "post",
|
|
126570
|
+
body: { source },
|
|
126571
|
+
headers: { accept: "text/html" },
|
|
126572
|
+
});
|
|
126573
|
+
};
|
|
126574
|
+
}
|
|
126575
|
+
|
|
126576
|
+
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_MAILPIT_ENABLED, IS_STAGING_ENV, ImageUploader, InboundEmailApis, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, KEYBOARD_SHORTCUT_TEST_CASES, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MAILPIT_BASE_URL, MAILPIT_DOMAIN_NAME, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MICROSOFT_LOGIN_SELECTORS, MICROSOFT_LOGIN_TEXTS, MailerUtils, MailpitApi, 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_TEST_EMAIL_V2, 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, mailpitDomainName, 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.3.
|
|
3
|
+
"version": "4.3.3",
|
|
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",
|