@bigbinary/neeto-playwright-commons 1.9.7 → 1.9.8
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.cjs.js +248 -34
- package/index.cjs.js.map +1 -1
- package/index.d.ts +344 -2
- package/index.js +249 -36
- package/index.js.map +1 -1
- package/package.json +1 -1
package/index.cjs.js
CHANGED
|
@@ -355,6 +355,9 @@ const COMMON_SELECTORS = {
|
|
|
355
355
|
sidebarSubLink: (label) => `${hyphenize(label)}-sub-link`,
|
|
356
356
|
sidebarGoBackButton: (label) => `${hyphenize(label)}-go-back-button`,
|
|
357
357
|
selectSingleValue: "select-single-value",
|
|
358
|
+
actionSelectIndicator: "action-select-indicator",
|
|
359
|
+
takeActionDropdown: "take-action-dropdown-icon",
|
|
360
|
+
columnsSearchInput: "neeto-ui-columns-search",
|
|
358
361
|
};
|
|
359
362
|
|
|
360
363
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
@@ -12706,6 +12709,10 @@ const CHAT_WIDGET_TEXTS = {
|
|
|
12706
12709
|
};
|
|
12707
12710
|
const MEMBER_TEXTS = {
|
|
12708
12711
|
agent: "Agent",
|
|
12712
|
+
admin: "Admin",
|
|
12713
|
+
selectAll: "Select All",
|
|
12714
|
+
hide: "Hide all",
|
|
12715
|
+
show: "Show all",
|
|
12709
12716
|
};
|
|
12710
12717
|
const INTEGRATIONS_TEXTS = {
|
|
12711
12718
|
connectHeader: (integration) => `Connect your ${integration} account`,
|
|
@@ -14043,6 +14050,232 @@ class ImageUploader {
|
|
|
14043
14050
|
}
|
|
14044
14051
|
}
|
|
14045
14052
|
|
|
14053
|
+
const MEMBER_SELECTORS = {
|
|
14054
|
+
membersTab: "members-nav-tab",
|
|
14055
|
+
newButton: "ntm-add-member-button",
|
|
14056
|
+
continueButton: "ntm-manage-member-continue-button",
|
|
14057
|
+
submitButton: "ntm-manage-member-submit-button",
|
|
14058
|
+
searchTextField: "ntm-search-members-input",
|
|
14059
|
+
deactivatedAgentsButton: "ntm-members-menubar-deactivated-block",
|
|
14060
|
+
activatedMembersButton: "ntm-members-menubar-active-block",
|
|
14061
|
+
columnCheckBox: "neeto-ui-columns-checkbox",
|
|
14062
|
+
roleLabel: (role) => `${joinHyphenCase(role)}-radio-label`,
|
|
14063
|
+
teamMembersTable: "ntm-members-table",
|
|
14064
|
+
dropDownIcon: "ntm-members-table-row-dropdown-button",
|
|
14065
|
+
editButton: "ntm-edit-member-button",
|
|
14066
|
+
menuBarHeading: "ntm-members-menubar-heading",
|
|
14067
|
+
activateOrDeactivateMember: "ntm-deactivate-member-button",
|
|
14068
|
+
columnsButton: "columns-dropdown-button",
|
|
14069
|
+
columnsDropdownContainer: "columns-dropdown-container",
|
|
14070
|
+
emailDropdownItemLabel: "email-checkbox-label",
|
|
14071
|
+
roleDropdownItemLabel: "role-checkbox-label",
|
|
14072
|
+
inviteStatusDropdownItemLabel: "invite-status-checkbox-label",
|
|
14073
|
+
heading: "ntm-manage-members-pane-header",
|
|
14074
|
+
activateButton: "ntm-activate-members-button",
|
|
14075
|
+
deactivateButton: "ntm-deactivate-members-button",
|
|
14076
|
+
rolesButton: "ntm-manage-member-roles-button",
|
|
14077
|
+
statusTag: "ntm-member-status-tag",
|
|
14078
|
+
menubarSubLink: (sublink) => `members-menubar-${sublink}-block-sub-link`,
|
|
14079
|
+
takeActionStateOption: (option = "") => `ntm-${hyphenize(option)}-members-button`,
|
|
14080
|
+
checkboxLabel: (label) => `${hyphenize(label)}-checkbox-label`,
|
|
14081
|
+
};
|
|
14082
|
+
const MEMBER_FORM_SELECTORS = {
|
|
14083
|
+
emailTextField: "email-select-input-field",
|
|
14084
|
+
firstNameTextField: "ntm-edit-member-first-name-text-field",
|
|
14085
|
+
lastNameTextField: "ntm-edit-member-last-name-text-field",
|
|
14086
|
+
emailInput: "ntm-manage-member-email-input",
|
|
14087
|
+
emailErrorField: "emails-input-error",
|
|
14088
|
+
cancelButton: "ntm-manage-member-cancel-button",
|
|
14089
|
+
};
|
|
14090
|
+
|
|
14091
|
+
class TeamMembers {
|
|
14092
|
+
constructor({ page, neetoPlaywrightUtilities, }) {
|
|
14093
|
+
this.navigateToTeamMembersSublink = async (sublink = "all") => {
|
|
14094
|
+
await this.page.getByTestId(MEMBER_SELECTORS.membersTab).click();
|
|
14095
|
+
await this.page
|
|
14096
|
+
.getByTestId(MEMBER_SELECTORS.menubarSubLink(sublink))
|
|
14097
|
+
.click();
|
|
14098
|
+
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
14099
|
+
};
|
|
14100
|
+
this.addMemberViaUI = async ({ emails = [faker.faker.internet.exampleEmail()], role = "standard", } = {}) => {
|
|
14101
|
+
await this.page.getByTestId(MEMBER_SELECTORS.newButton).click();
|
|
14102
|
+
await this.page
|
|
14103
|
+
.getByTestId(MEMBER_FORM_SELECTORS.emailTextField)
|
|
14104
|
+
.fill(emails.join(", "));
|
|
14105
|
+
await this.page.getByTestId(MEMBER_SELECTORS.roleLabel(role)).click();
|
|
14106
|
+
IS_STAGING_ENV &&
|
|
14107
|
+
(await this.page
|
|
14108
|
+
.getByTestId(COMMON_SELECTORS.paneBody)
|
|
14109
|
+
.getByTestId(COMMON_SELECTORS.checkboxLabel)
|
|
14110
|
+
.click());
|
|
14111
|
+
await this.page.getByTestId(MEMBER_SELECTORS.continueButton).click();
|
|
14112
|
+
await this.page.getByTestId(MEMBER_SELECTORS.submitButton).click();
|
|
14113
|
+
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
14114
|
+
await this.neetoPlaywrightUtilities.verifySuccessToast();
|
|
14115
|
+
};
|
|
14116
|
+
this.searchAndVerifyMemberByEmail = async ({ email, interceptOptions, }) => {
|
|
14117
|
+
const searchMembers = this.neetoPlaywrightUtilities.interceptMultipleResponses({
|
|
14118
|
+
responseUrl: API_ROUTES.teamMembers.index,
|
|
14119
|
+
...interceptOptions,
|
|
14120
|
+
});
|
|
14121
|
+
await this.page.getByTestId(MEMBER_SELECTORS.searchTextField).fill(email);
|
|
14122
|
+
await searchMembers;
|
|
14123
|
+
await test$1.expect(this.page.getByTestId(NEETO_FILTERS_SELECTORS.searchTermBlock)).toContainText(email);
|
|
14124
|
+
await test$1.expect(this.page.getByRole("cell", { name: email, exact: true })).toBeVisible();
|
|
14125
|
+
await test$1.expect(this.page.getByTestId(COMMON_SELECTORS.tableSpinner)).toBeHidden();
|
|
14126
|
+
};
|
|
14127
|
+
this.editMemberViaUI = async ({ email = "", firstName = "", lastName = "", role = "standard", } = {}) => {
|
|
14128
|
+
await this.page.getByTestId(MEMBER_SELECTORS.dropDownIcon).click();
|
|
14129
|
+
await this.page.getByTestId(MEMBER_SELECTORS.editButton).click();
|
|
14130
|
+
neetoCist.isPresent(email) &&
|
|
14131
|
+
(await this.page
|
|
14132
|
+
.getByTestId(MEMBER_FORM_SELECTORS.emailInput)
|
|
14133
|
+
.fill(email));
|
|
14134
|
+
neetoCist.isPresent(firstName) &&
|
|
14135
|
+
(await this.page
|
|
14136
|
+
.getByTestId(MEMBER_FORM_SELECTORS.firstNameTextField)
|
|
14137
|
+
.fill(firstName));
|
|
14138
|
+
neetoCist.isPresent(lastName) &&
|
|
14139
|
+
(await this.page
|
|
14140
|
+
.getByTestId(MEMBER_FORM_SELECTORS.lastNameTextField)
|
|
14141
|
+
.fill(lastName));
|
|
14142
|
+
await this.page.getByTestId(MEMBER_SELECTORS.roleLabel(role)).click();
|
|
14143
|
+
await this.page.getByTestId(MEMBER_SELECTORS.submitButton).click();
|
|
14144
|
+
await this.neetoPlaywrightUtilities.verifySuccessToast();
|
|
14145
|
+
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
14146
|
+
};
|
|
14147
|
+
this.toggleMemberStateViaUI = async () => {
|
|
14148
|
+
await this.page.getByTestId(MEMBER_SELECTORS.dropDownIcon).click();
|
|
14149
|
+
await this.page
|
|
14150
|
+
.getByTestId(MEMBER_SELECTORS.activateOrDeactivateMember)
|
|
14151
|
+
.click();
|
|
14152
|
+
await this.page
|
|
14153
|
+
.getByTestId(COMMON_SELECTORS.alertModalSubmitButton)
|
|
14154
|
+
.click();
|
|
14155
|
+
await this.neetoPlaywrightUtilities.verifySuccessToast();
|
|
14156
|
+
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
14157
|
+
};
|
|
14158
|
+
this.filterMembersByMultiSelect = async ({ selectedOptions = [], selectContainerLocator = NEETO_FILTERS_SELECTORS.roleSelectContainer, }) => {
|
|
14159
|
+
await this.page
|
|
14160
|
+
.getByTestId(selectContainerLocator)
|
|
14161
|
+
.getByTestId(COMMON_SELECTORS.actionSelectIndicator)
|
|
14162
|
+
.click();
|
|
14163
|
+
for (const option of selectedOptions) {
|
|
14164
|
+
const fetchMembers = this.neetoPlaywrightUtilities.interceptMultipleResponses({
|
|
14165
|
+
responseUrl: API_ROUTES.teamMembers.index,
|
|
14166
|
+
});
|
|
14167
|
+
await this.page
|
|
14168
|
+
.getByTestId(COMMON_SELECTORS.selectOption(option))
|
|
14169
|
+
.click();
|
|
14170
|
+
await fetchMembers;
|
|
14171
|
+
}
|
|
14172
|
+
};
|
|
14173
|
+
this.filterMembers = async ({ email = { id: "", condition: "Is" }, roles = [], name = "", }) => {
|
|
14174
|
+
await this.page.getByTestId(NEETO_FILTERS_SELECTORS.filterButton).click();
|
|
14175
|
+
if (neetoCist.isPresent(email.id)) {
|
|
14176
|
+
await this.page
|
|
14177
|
+
.getByTestId(NEETO_FILTERS_SELECTORS.emailSelectContainer)
|
|
14178
|
+
.getByTestId(COMMON_SELECTORS.actionSelectIndicator)
|
|
14179
|
+
.click();
|
|
14180
|
+
await this.page
|
|
14181
|
+
.getByTestId(COMMON_SELECTORS.selectOption(email.condition))
|
|
14182
|
+
.click();
|
|
14183
|
+
const fetchMembers = this.neetoPlaywrightUtilities.interceptMultipleResponses({
|
|
14184
|
+
responseUrl: API_ROUTES.teamMembers.index,
|
|
14185
|
+
});
|
|
14186
|
+
await this.page
|
|
14187
|
+
.getByTestId(NEETO_FILTERS_SELECTORS.filtersEmailFilter)
|
|
14188
|
+
.fill(email.id);
|
|
14189
|
+
await fetchMembers;
|
|
14190
|
+
}
|
|
14191
|
+
if (neetoCist.isPresent(name)) {
|
|
14192
|
+
const fetchMembers = this.neetoPlaywrightUtilities.interceptMultipleResponses({
|
|
14193
|
+
responseUrl: API_ROUTES.teamMembers.index,
|
|
14194
|
+
});
|
|
14195
|
+
await this.page
|
|
14196
|
+
.getByTestId(NEETO_FILTERS_SELECTORS.neetoFiltersNameFilterField)
|
|
14197
|
+
.fill(name);
|
|
14198
|
+
await fetchMembers;
|
|
14199
|
+
}
|
|
14200
|
+
neetoCist.isPresent(roles) &&
|
|
14201
|
+
(await this.filterMembersByMultiSelect({ selectedOptions: roles }));
|
|
14202
|
+
await this.page
|
|
14203
|
+
.getByTestId(NEETO_FILTERS_SELECTORS.filterDoneButton)
|
|
14204
|
+
.click();
|
|
14205
|
+
};
|
|
14206
|
+
// TODO: Change the selector after this issue is resolved: https://github.com/bigbinary/neeto-team-members-nano/issues/258
|
|
14207
|
+
this.getMemberRowByName = (name) => this.page.getByRole("row", { name: `avatar--${name}` });
|
|
14208
|
+
this.takeActionOnMembers = async ({ names = [], state, action, }) => {
|
|
14209
|
+
if (neetoCist.isPresent(names)) {
|
|
14210
|
+
for (const name of names) {
|
|
14211
|
+
await this.getMemberRowByName(name).getByRole("checkbox").click();
|
|
14212
|
+
}
|
|
14213
|
+
}
|
|
14214
|
+
else {
|
|
14215
|
+
await this.page
|
|
14216
|
+
.getByRole("columnheader", { name: MEMBER_TEXTS.selectAll })
|
|
14217
|
+
.click();
|
|
14218
|
+
}
|
|
14219
|
+
await this.page.getByTestId(COMMON_SELECTORS.takeActionDropdown).click();
|
|
14220
|
+
if (neetoCist.isPresent(state)) {
|
|
14221
|
+
await this.page
|
|
14222
|
+
.getByTestId(MEMBER_SELECTORS.takeActionStateOption(state))
|
|
14223
|
+
.click();
|
|
14224
|
+
}
|
|
14225
|
+
else {
|
|
14226
|
+
await this.page
|
|
14227
|
+
.getByRole("button", { name: action === null || action === void 0 ? void 0 : action.actionButtonText })
|
|
14228
|
+
.click();
|
|
14229
|
+
await this.page
|
|
14230
|
+
.getByRole("button", { name: action === null || action === void 0 ? void 0 : action.valueButtonText })
|
|
14231
|
+
.click();
|
|
14232
|
+
}
|
|
14233
|
+
await this.page
|
|
14234
|
+
.getByTestId(COMMON_SELECTORS.alertModalSubmitButton)
|
|
14235
|
+
.click();
|
|
14236
|
+
await this.neetoPlaywrightUtilities.verifySuccessToast();
|
|
14237
|
+
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
14238
|
+
};
|
|
14239
|
+
this.performColumnAction = async ({ columnName = "Name", actionButtonText = "Ascending", } = {}) => {
|
|
14240
|
+
await this.page
|
|
14241
|
+
.getByTestId(MEMBER_SELECTORS.teamMembersTable)
|
|
14242
|
+
.getByLabel(columnName)
|
|
14243
|
+
.getByTestId(COMMON_SELECTORS.dropdownIcon)
|
|
14244
|
+
.click();
|
|
14245
|
+
await this.page.getByRole("button", { name: actionButtonText }).click();
|
|
14246
|
+
await test$1.expect(this.page.getByTestId(COMMON_SELECTORS.tableSpinner)).toBeHidden();
|
|
14247
|
+
};
|
|
14248
|
+
this.toggleMemberColumns = async ({ columns = [], bulkAction, }) => {
|
|
14249
|
+
await this.page.getByTestId(COMMON_SELECTORS.columnsDropdownButton).click();
|
|
14250
|
+
if (neetoCist.isPresent(bulkAction)) {
|
|
14251
|
+
await this.page
|
|
14252
|
+
.getByRole("button", {
|
|
14253
|
+
name: bulkAction === "hide" ? "Hide All" : "Show All",
|
|
14254
|
+
})
|
|
14255
|
+
.click();
|
|
14256
|
+
}
|
|
14257
|
+
else {
|
|
14258
|
+
for (const column of columns) {
|
|
14259
|
+
await this.page
|
|
14260
|
+
.getByTestId(COMMON_SELECTORS.columnsSearchInput)
|
|
14261
|
+
.fill(column);
|
|
14262
|
+
await this.page
|
|
14263
|
+
.getByTestId(MEMBER_SELECTORS.checkboxLabel(column))
|
|
14264
|
+
.click();
|
|
14265
|
+
}
|
|
14266
|
+
}
|
|
14267
|
+
await this.page.getByTestId(COMMON_SELECTORS.columnsDropdownButton).click();
|
|
14268
|
+
};
|
|
14269
|
+
this.verifyMemberInTable = ({ name, email }) => test$1.expect(this.getMemberRowByName(name).getByRole("cell", {
|
|
14270
|
+
name: email,
|
|
14271
|
+
exact: true,
|
|
14272
|
+
})).toBeVisible();
|
|
14273
|
+
this.page = page;
|
|
14274
|
+
this.neetoPlaywrightUtilities = neetoPlaywrightUtilities;
|
|
14275
|
+
this.t = playwrightI18nextFixture.getI18nInstance().t;
|
|
14276
|
+
}
|
|
14277
|
+
}
|
|
14278
|
+
|
|
14046
14279
|
const LOGIN_SELECTORS = {
|
|
14047
14280
|
appleAuthenticationButton: "apple-authentication-button",
|
|
14048
14281
|
emailTextField: "login-email-text-field",
|
|
@@ -14347,40 +14580,6 @@ const networkConditions = {
|
|
|
14347
14580
|
},
|
|
14348
14581
|
};
|
|
14349
14582
|
|
|
14350
|
-
const MEMBER_SELECTORS = {
|
|
14351
|
-
membersTab: "members-nav-tab",
|
|
14352
|
-
newButton: "ntm-add-member-button",
|
|
14353
|
-
continueButton: "ntm-manage-member-continue-button",
|
|
14354
|
-
submitButton: "ntm-manage-member-submit-button",
|
|
14355
|
-
searchTextField: "ntm-search-members-input",
|
|
14356
|
-
deactivatedAgentsButton: "ntm-members-menubar-deactivated-block",
|
|
14357
|
-
activatedMembersButton: "ntm-members-menubar-active-block",
|
|
14358
|
-
columnCheckBox: "neeto-ui-columns-checkbox",
|
|
14359
|
-
roleLabel: (role) => `${joinHyphenCase(role)}-radio-label`,
|
|
14360
|
-
dropDownIcon: "ntm-members-table-row-dropdown-button",
|
|
14361
|
-
editButton: "ntm-edit-member-button",
|
|
14362
|
-
menuBarHeading: "ntm-members-menubar-heading",
|
|
14363
|
-
activateOrDeactivateMember: "ntm-deactivate-member-button",
|
|
14364
|
-
columnsButton: "columns-dropdown-button",
|
|
14365
|
-
columnsDropdownContainer: "columns-dropdown-container",
|
|
14366
|
-
emailDropdownItemLabel: "email-checkbox-label",
|
|
14367
|
-
roleDropdownItemLabel: "role-checkbox-label",
|
|
14368
|
-
inviteStatusDropdownItemLabel: "invite-status-checkbox-label",
|
|
14369
|
-
heading: "ntm-manage-members-pane-header",
|
|
14370
|
-
activateButton: "ntm-activate-members-button",
|
|
14371
|
-
deactivateButton: "ntm-deactivate-members-button",
|
|
14372
|
-
rolesButton: "ntm-manage-member-roles-button",
|
|
14373
|
-
statusTag: "ntm-member-status-tag",
|
|
14374
|
-
};
|
|
14375
|
-
const MEMBER_FORM_SELECTORS = {
|
|
14376
|
-
emailTextField: "email-select-input-field",
|
|
14377
|
-
firstNameTextField: "ntm-edit-member-first-name-text-field",
|
|
14378
|
-
lastNameTextField: "ntm-edit-member-last-name-text-field",
|
|
14379
|
-
emailInput: "ntm-manage-member-email-input",
|
|
14380
|
-
emailErrorField: "emails-input-error",
|
|
14381
|
-
cancelButton: "ntm-manage-member-cancel-button",
|
|
14382
|
-
};
|
|
14383
|
-
|
|
14384
14583
|
const ROLES_SELECTORS = {
|
|
14385
14584
|
newButton: "ntm-add-role-button",
|
|
14386
14585
|
proceedButton: "ntm-add-role-submit-button",
|
|
@@ -14490,10 +14689,17 @@ const deactivateMemberViaRequest = ({ email, neetoPlaywrightUtilities, }) => nee
|
|
|
14490
14689
|
url: API_ROUTES.teamMembers.bulkUpdate,
|
|
14491
14690
|
body: { users: { active: false, emails: [email] } },
|
|
14492
14691
|
});
|
|
14692
|
+
const generateRandomTeamMembers = ({ count = 1, role = "standard" }) => neetoCist.dynamicArray(count, () => ({
|
|
14693
|
+
firstName: faker.faker.person.firstName(),
|
|
14694
|
+
lastName: faker.faker.person.lastName(),
|
|
14695
|
+
email: faker.faker.internet.exampleEmail(),
|
|
14696
|
+
role,
|
|
14697
|
+
}));
|
|
14493
14698
|
const memberUtils = {
|
|
14494
14699
|
addMemberViaRequest,
|
|
14495
14700
|
editMemberViaRequest,
|
|
14496
14701
|
deactivateMemberViaRequest,
|
|
14702
|
+
generateRandomTeamMembers,
|
|
14497
14703
|
};
|
|
14498
14704
|
|
|
14499
14705
|
const assertColumnHeaderVisibility = async ({ page, columnName, shouldBeVisible, }) => {
|
|
@@ -147421,8 +147627,15 @@ const openFilterPane = async (page) => {
|
|
|
147421
147627
|
await page.getByTestId(NEETO_FILTERS_SELECTORS.filterButton).click();
|
|
147422
147628
|
await test$1.expect(page.getByTestId(COMMON_SELECTORS.paneHeader)).toHaveText(playwrightI18nextFixture.getI18nInstance().t("neetoFilters.common.filters"));
|
|
147423
147629
|
};
|
|
147630
|
+
const clearFiltersFromActionBlock = async (page) => {
|
|
147631
|
+
await page
|
|
147632
|
+
.getByTestId(NEETO_FILTERS_SELECTORS.neetoFiltersBarClearButton)
|
|
147633
|
+
.click();
|
|
147634
|
+
await test$1.expect(page.getByTestId(NEETO_FILTERS_SELECTORS.neetoFiltersBarClearButton)).toBeHidden();
|
|
147635
|
+
};
|
|
147424
147636
|
const filterUtils = {
|
|
147425
147637
|
openFilterPane,
|
|
147638
|
+
clearFiltersFromActionBlock,
|
|
147426
147639
|
};
|
|
147427
147640
|
|
|
147428
147641
|
var main$2 = {exports: {}};
|
|
@@ -148084,6 +148297,7 @@ exports.TEXT_MODIFIER_SELECTORS = TEXT_MODIFIER_SELECTORS;
|
|
|
148084
148297
|
exports.TEXT_MODIFIER_TAGS = TEXT_MODIFIER_TAGS;
|
|
148085
148298
|
exports.THIRD_PARTY_ROUTES = THIRD_PARTY_ROUTES;
|
|
148086
148299
|
exports.TOASTR_MESSAGES = TOASTR_MESSAGES;
|
|
148300
|
+
exports.TeamMembers = TeamMembers;
|
|
148087
148301
|
exports.USER_AGENTS = USER_AGENTS;
|
|
148088
148302
|
exports.WebhooksPage = WebhooksPage;
|
|
148089
148303
|
exports.ZAPIER_LIMIT_EXHAUSTED_MESSAGE = ZAPIER_LIMIT_EXHAUSTED_MESSAGE;
|