@bigbinary/neeto-commons-frontend 2.0.29 → 2.0.31

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.
@@ -0,0 +1,777 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var common = require('Support/utils/common');
6
+ var dayjs = require('dayjs');
7
+
8
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
+
10
+ var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
11
+
12
+ function _typeof(obj) {
13
+ "@babel/helpers - typeof";
14
+
15
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
16
+ return typeof obj;
17
+ } : function (obj) {
18
+ return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
19
+ }, _typeof(obj);
20
+ }
21
+
22
+ function _toPrimitive(input, hint) {
23
+ if (_typeof(input) !== "object" || input === null) return input;
24
+ var prim = input[Symbol.toPrimitive];
25
+ if (prim !== undefined) {
26
+ var res = prim.call(input, hint || "default");
27
+ if (_typeof(res) !== "object") return res;
28
+ throw new TypeError("@@toPrimitive must return a primitive value.");
29
+ }
30
+ return (hint === "string" ? String : Number)(input);
31
+ }
32
+
33
+ function _toPropertyKey(arg) {
34
+ var key = _toPrimitive(arg, "string");
35
+ return _typeof(key) === "symbol" ? key : String(key);
36
+ }
37
+
38
+ function _defineProperty(obj, key, value) {
39
+ key = _toPropertyKey(key);
40
+ if (key in obj) {
41
+ Object.defineProperty(obj, key, {
42
+ value: value,
43
+ enumerable: true,
44
+ configurable: true,
45
+ writable: true
46
+ });
47
+ } else {
48
+ obj[key] = value;
49
+ }
50
+ return obj;
51
+ }
52
+
53
+ function _arrayLikeToArray(arr, len) {
54
+ if (len == null || len > arr.length) len = arr.length;
55
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
56
+ return arr2;
57
+ }
58
+
59
+ function _arrayWithoutHoles(arr) {
60
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
61
+ }
62
+
63
+ function _iterableToArray(iter) {
64
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
65
+ }
66
+
67
+ function _unsupportedIterableToArray(o, minLen) {
68
+ if (!o) return;
69
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
70
+ var n = Object.prototype.toString.call(o).slice(8, -1);
71
+ if (n === "Object" && o.constructor) n = o.constructor.name;
72
+ if (n === "Map" || n === "Set") return Array.from(o);
73
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
74
+ }
75
+
76
+ function _nonIterableSpread() {
77
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
78
+ }
79
+
80
+ function _toConsumableArray(arr) {
81
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
82
+ }
83
+
84
+ var environment = {
85
+ development: "development",
86
+ staging: "staging"
87
+ };
88
+ var isStagingEnv = Cypress.env("configFile") === environment.staging;
89
+
90
+ var getCountFromText = function getCountFromText(countText) {
91
+ return Number(countText.text().trim().split(" ")[0]);
92
+ };
93
+ var dataCy = function dataCy(value) {
94
+ var suffix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
95
+ return "[data-cy='".concat(value, "']").concat(suffix);
96
+ };
97
+ var setListCount = function setListCount(countSelector, alias) {
98
+ return cy.get(countSelector).then(function (countText) {
99
+ cy.wrap(getCountFromText(countText)).as(alias);
100
+ });
101
+ };
102
+ var verifyListCount = function verifyListCount(countSelector, count) {
103
+ return cy.get(countSelector).then(function (countText) {
104
+ cy.wrap(getCountFromText(countText)).should("eq", count);
105
+ });
106
+ };
107
+ var getUrl = function getUrl(path) {
108
+ return "/api/v1/".concat(path);
109
+ };
110
+ var getTestTitle = function getTestTitle() {
111
+ var ctx = Cypress.mocha.getRunner().suite.ctx;
112
+ return ctx.currentTest.parent.title;
113
+ };
114
+ var initializeCredentials = function initializeCredentials(stagingData) {
115
+ cy.task("getGlobalState").then(function (state) {
116
+ var newState = {
117
+ businessName: state.businessName || stagingData.businessName,
118
+ currentUserName: state.fullName || stagingData.fullName,
119
+ email: state.email || stagingData.email,
120
+ firstName: state.firstName || stagingData.firstName,
121
+ lastName: state.lastName || stagingData.lastName,
122
+ subdomainName: state.subdomain || stagingData.subdomainName,
123
+ skipSetup: state.skipSetup
124
+ };
125
+ if (isStagingEnv) {
126
+ var baseUrl = "https://".concat(newState.subdomainName, ".").concat(stagingData.domain);
127
+ Cypress.config("baseUrl", baseUrl);
128
+ }
129
+ cy.task("bulkUpdateGlobalState", newState);
130
+ });
131
+ };
132
+
133
+ var allPath = function allPath() {
134
+ return "".concat(Cypress.config("baseUrl")).concat(getUrl("**"));
135
+ };
136
+ var requestApis = {
137
+ countries: "/api/v1/countries",
138
+ signUp: "api/v1/signups/**",
139
+ subdomainAvailablity: "/api/v1/subdomain_availability/**",
140
+ teamMembers: {
141
+ all: "/team_members*/**",
142
+ bulkUpdate: "/team_members/teams/bulk_update",
143
+ index: "/team_members/teams"
144
+ }
145
+ };
146
+ var urlPaths = {
147
+ members: "/desk/members"
148
+ };
149
+ Object.defineProperty(requestApis, "allPath", {
150
+ get: allPath
151
+ });
152
+
153
+ var commonSelectors = {
154
+ alertTitle: dataCy("alert-title"),
155
+ alertModalMessage: dataCy("alert-message"),
156
+ alertModalSubmitButton: dataCy("alert-submit-button"),
157
+ checkbox: ".neeto-ui-checkbox",
158
+ checkboxLabel: dataCy("nui-checkbox-label"),
159
+ dropdownContainer: dataCy("nui-dropdown-container"),
160
+ dropdownIcon: dataCy("nui-dropdown-icon"),
161
+ heading: dataCy("main-header"),
162
+ paneBody: ".neeto-ui-pane__body",
163
+ paneHeader: ".neeto-ui-pane__header",
164
+ profileSidebar: ".neeto-ui-profile-sidebar",
165
+ selectOption: ".neeto-ui-react-select__option",
166
+ toastMessage: dataCy("toastr-message-container"),
167
+ toastCloseButton: ".neeto-ui-toastr__close-button",
168
+ windowAlert: "#alert-box"
169
+ };
170
+ var tableSelectors = {
171
+ nthColumn: function nthColumn(n) {
172
+ return "td:nth-child(".concat(n, ")");
173
+ },
174
+ tableBody: ".ant-table-body",
175
+ tableHeader: ".ant-table-thead th",
176
+ tableRow: ".ant-table-tbody tr",
177
+ spinner: ".ant-spin"
178
+ };
179
+ var profileSelectors = {
180
+ logoutLink: dataCy("profile-logout-button"),
181
+ profileOptionsContainer: '[class="tippy-box sidebar-featured-tooltip__content"]'
182
+ };
183
+
184
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
185
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
186
+ Cypress.Commands.add("clearAndType", function (selector, text) {
187
+ cy.get(selector).clear().type(text);
188
+ });
189
+ Cypress.Commands.add("clearAndTypeFast", function (selector, text) {
190
+ cy.get(selector).clear().type(text, {
191
+ delay: 0
192
+ });
193
+ });
194
+ Cypress.Commands.add("clearByClickAndTypeFast", function (selector, text) {
195
+ cy.get(selector).click().clear().type(text, {
196
+ delay: 0
197
+ });
198
+ });
199
+ Cypress.Commands.add("typeFast", function (selector, text) {
200
+ cy.get(selector).type(text, {
201
+ delay: 0
202
+ });
203
+ });
204
+ Cypress.Commands.add("typeAndEnter", function (selector, text) {
205
+ cy.get(selector).clear().type("".concat(text, "{enter}"));
206
+ });
207
+ Cypress.Commands.add("verifyToastMessage", function (message) {
208
+ cy.get(commonSelectors.toastMessage).should("be.visible").should("have.text", message);
209
+
210
+ // close toast message
211
+ cy.get(commonSelectors.toastCloseButton).click();
212
+ cy.get(commonSelectors.toastMessage).should("not.exist");
213
+ });
214
+ Cypress.Commands.add("continueOnAlert", function (args) {
215
+ var props = _typeof(args) === "object" ? args : {
216
+ alias: args
217
+ };
218
+ var alias = props.alias,
219
+ title = props.title,
220
+ _props$requestCount = props.requestCount,
221
+ requestCount = _props$requestCount === void 0 ? 1 : _props$requestCount,
222
+ toastMessage = props.toastMessage;
223
+ var hasMoreThanOneRequest = requestCount > 1;
224
+ title && cy.get(commonSelectors.alertTitle).should("have.text", title);
225
+ cy.interceptApi(alias, requestCount);
226
+ cy.get(commonSelectors.alertModalSubmitButton).click();
227
+ cy.wait("@".concat(alias));
228
+ toastMessage && cy.verifyToastMessage(toastMessage);
229
+ hasMoreThanOneRequest && cy.waitForMultipleRequest("@".concat(alias), requestCount - 1);
230
+ });
231
+ Cypress.Commands.add("interceptApi", function (alias) {
232
+ var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
233
+ return cy.intercept({
234
+ url: requestApis.allPath,
235
+ times: times
236
+ }).as(alias);
237
+ });
238
+ Cypress.Commands.add("waitForMultipleRequest", function (alias) {
239
+ var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
240
+ return cy.wrap(_toConsumableArray(new Array(times))).each(function () {
241
+ return cy.wait(alias);
242
+ });
243
+ });
244
+ Cypress.Commands.add("apiRequest", function (options) {
245
+ return cy.get("@requestHeaders").then(function (requestHeaders) {
246
+ return requestHeaders ? cy.request(_objectSpread(_objectSpread({}, options), {}, {
247
+ headers: requestHeaders
248
+ })) : cy.log("No request headers found");
249
+ });
250
+ });
251
+ Cypress.Commands.add("reloadAndWait", function () {
252
+ var requestCount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
253
+ if (requestCount > 0) {
254
+ cy.interceptApi("reloadAllRequests", requestCount);
255
+ cy.reload();
256
+ cy.waitForMultipleRequest("@reloadAllRequests", requestCount);
257
+ }
258
+ });
259
+ Cypress.Commands.add("selectOption", function (containerSelector, optionText) {
260
+ cy.openInSameTabOnClick;
261
+ cy.get(containerSelector).click().type(optionText);
262
+ cy.contains(commonSelectors.selectOption, optionText).invoke("click");
263
+ });
264
+ Cypress.Commands.add("clickDropdownOption", function (optionText) {
265
+ var dropdownSelector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : commonSelectors.dropdownIcon;
266
+ cy.get(dropdownSelector).click();
267
+ cy.get(commonSelectors.dropdownContainer).contains(optionText).invoke("click");
268
+ });
269
+ Cypress.Commands.add("getText", function (selector) {
270
+ return cy.get(selector).invoke("text");
271
+ });
272
+ Cypress.Commands.add("getValue", function (selector) {
273
+ return cy.get(selector).invoke("val");
274
+ });
275
+ Cypress.Commands.add("getIframe", function (iframeSelector) {
276
+ return cy.get(iframeSelector).its("0.contentDocument.body").should("not.be.empty");
277
+ });
278
+ Cypress.Commands.add("openInSameTabOnClick", function (_ref) {
279
+ var url = _ref.url,
280
+ alias = _ref.alias,
281
+ selector = _ref.selector;
282
+ cy.window().then(function (win) {
283
+ cy.stub(win, "open").as(alias).callsFake(function (newUrl) {
284
+ return win.location.href = newUrl;
285
+ });
286
+ });
287
+ cy.get(selector).click();
288
+ cy.get("@".concat(alias)).should("be.called");
289
+ cy.url().should("include", url);
290
+ });
291
+ Cypress.Commands.add("globalState", function (key) {
292
+ return cy.task("getGlobalState", key);
293
+ });
294
+
295
+ var loginSelectors = {
296
+ appleAuthenticationButton: dataCy("apple-authentication-button"),
297
+ emailTextField: dataCy("login-email-text-field"),
298
+ googleAuthenticationButton: dataCy("google-authentication-button"),
299
+ githubAuthenticationButton: dataCy("github-authentication-button"),
300
+ loginViaEmailButton: dataCy("login-via-email-button"),
301
+ otpField: dataCy("otpinput-otp-number"),
302
+ passwordTextField: dataCy("login-password-text-field"),
303
+ rememberMeCheckBox: dataCy("login-remember-me-check-box"),
304
+ submitButton: dataCy("login-submit-button"),
305
+ twitterAuthenticationButton: dataCy("twitter-authentication-button")
306
+ };
307
+
308
+ var memberSelectors = {
309
+ membersTab: common.dataCy("agent-nav-tab"),
310
+ newButton: common.dataCy("ntm-add-member-button"),
311
+ continueButton: common.dataCy("ntm-manage-member-continue-button"),
312
+ submitButton: common.dataCy("ntm-manage-member-submit-button"),
313
+ searchTextField: common.dataCy("ntm-search-members-input"),
314
+ email: "td:nth-child(3)",
315
+ role: "td:nth-child(4)",
316
+ deactivatedAgentsButton: common.dataCy("ntm-members-menubar-deactivated-block"),
317
+ activatedMembersButton: common.dataCy("ntm-members-menubar-active-block"),
318
+ columnCheckBox: common.dataCy("neeto-ui-columns-checkbox"),
319
+ adminRoleLabel: common.dataCy("admin-radio-label"),
320
+ agentRoleLabel: common.dataCy("agent-radio-label"),
321
+ dropDownIcon: common.dataCy("ntm-members-table-row-dropdown-button"),
322
+ menuBarHeading: common.dataCy("ntm-members-menubar-heading")
323
+ };
324
+ var memberFormSelectors = {
325
+ emailTextField: "input.neeto-ui-react-select__input:eq(0)"
326
+ };
327
+
328
+ var signUpSelectors = {
329
+ emailTextField: dataCy("signup-email-text-field"),
330
+ firstNameTextField: dataCy("signup-profile-first-name-text-field"),
331
+ lastNameTextField: dataCy("signup-profile-last-name-text-field"),
332
+ organizationNameTextField: dataCy("signup-organization-name-text-field"),
333
+ organizationSubmitButton: dataCy("signup-organization-submit-button"),
334
+ otpTextBox: dataCy("otpinput-otp-number"),
335
+ profileSubmitButton: dataCy("signup-profile-submit-button"),
336
+ signupViaEmailButton: dataCy("signup-via-email-button"),
337
+ submitButton: dataCy("signup-email-submit-button"),
338
+ subdomainNameTextField: dataCy("signup-organization-subdomain-text-field")
339
+ };
340
+
341
+ var commonTexts = {
342
+ activate: "Activate",
343
+ block: "Block",
344
+ copiedToClipboard: "Copied to clipboard!",
345
+ crossSiteScript: "<script>alert('XSS')</script>",
346
+ deactivate: "Deactivate",
347
+ "delete": "Delete ",
348
+ delete1: "Delete",
349
+ edit: "Edit",
350
+ invalidEmailMessage: "Please enter a valid email.",
351
+ invalidSearchInput: "Invalid search input",
352
+ logout: "Log out",
353
+ "new": "New",
354
+ takeAction: "Take action",
355
+ unblock: "Unblock"
356
+ };
357
+
358
+ var memberTexts = {
359
+ addMember: "Add new member",
360
+ admin: "Admin",
361
+ agent: "Agent",
362
+ agents: "Agents",
363
+ activeMembersHeading: "Active members",
364
+ accountActivatedToastMessage: function accountActivatedToastMessage(name) {
365
+ return "".concat(name, "'s account has been activated.");
366
+ },
367
+ activateMember: "Activate member",
368
+ activateMemberAlertMessage: function activateMemberAlertMessage(email) {
369
+ return "You are activating ".concat(email, ". Are you sure you want to proceed?");
370
+ },
371
+ addMemberToProducts: function addMemberToProducts(email) {
372
+ return "Add ".concat(email, " to the following neeto products.");
373
+ },
374
+ deactivateAccountToastMessage: function deactivateAccountToastMessage(name) {
375
+ return "".concat(name, "'s account has been deactivated.");
376
+ },
377
+ deactivateMember: "Deactivate member",
378
+ deactivateMemberAlertMessage: function deactivateMemberAlertMessage(email) {
379
+ return "You are deactivating ".concat(email, ". Are you sure you want to proceed?");
380
+ },
381
+ editMember: "Edit member",
382
+ inviteMessage: function inviteMessage(_ref) {
383
+ var email = _ref.email,
384
+ role = _ref.role,
385
+ appName = _ref.appName;
386
+ return "".concat(email, " will be invited to ").concat(appName, " with a role of ").concat(role, ".");
387
+ },
388
+ memberAddedMessage: "Added member successfully!",
389
+ members: "Members",
390
+ newHeading: "Add new member",
391
+ updatedMemberRole: function updatedMemberRole(email, role) {
392
+ return "Updated ".concat(email, "'s role to ").concat(role, ".");
393
+ }
394
+ };
395
+ var memberTableTexts = {
396
+ assignedTickets: "Assigned Tickets",
397
+ availabilityForDesk: "Availability for Desk",
398
+ created: "Created",
399
+ email: "Email",
400
+ name: "Name",
401
+ role: "Role",
402
+ teams: "Teams"
403
+ };
404
+
405
+ var signUpTexts = {
406
+ email: "Email",
407
+ profile: "profile",
408
+ tryItFree: "Try it FREE"
409
+ };
410
+
411
+ var verifySSOLoginPage = function verifySSOLoginPage() {
412
+ cy.log("verify Login Page");
413
+ cy.get(loginSelectors.githubAuthenticationButton).should("be.visible");
414
+ cy.get(loginSelectors.twitterAuthenticationButton).should("be.visible");
415
+ cy.get(loginSelectors.appleAuthenticationButton).should("be.visible");
416
+ cy.get(loginSelectors.googleAuthenticationButton).should("be.visible");
417
+ cy.log("verify Cross Site scripting");
418
+ cy.get(loginSelectors.loginViaEmailButton).click();
419
+ cy.clearAndType(loginSelectors.emailTextField, commonTexts.crossSiteScript);
420
+ cy.get(loginSelectors.submitButton).click();
421
+ cy.get(commonSelectors.windowAlert).should("not.exist");
422
+ cy.log("verify email login");
423
+ cy.get(commonSelectors.emailInputError).should("have.text", commonTexts.invalidEmailMessage);
424
+ cy.get(loginSelectors.emailTextField).clear();
425
+ cy.get(loginSelectors.submitButton).click();
426
+ cy.get(commonSelectors.emailInputError).should("have.text", commonTexts.invalidEmailMessage);
427
+ };
428
+ var logout = function logout(homeUrl) {
429
+ cy.get(profileSelectors.profileSidebar).click();
430
+ cy.get(profileSelectors.logoutLink).should("have.text", commonTexts.logout).invoke("click");
431
+ cy.url({
432
+ timeout: 15000
433
+ }).should("not.include", homeUrl);
434
+ };
435
+ var authUtils = {
436
+ verifySSOLoginPage: verifySSOLoginPage,
437
+ logout: logout
438
+ };
439
+
440
+ var currentDate = function currentDate() {
441
+ return dayjs__default["default"]().format("YYYY-MM-DD");
442
+ };
443
+ var futureDate = function futureDate() {
444
+ var numberOfDays = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
445
+ var now = dayjs__default["default"]().format("YYYY-MM-DD");
446
+ var date = now.add(numberOfDays, "day").format("YYYY-MM-DD");
447
+ return date;
448
+ };
449
+ var pastDate = function pastDate() {
450
+ var numberOfDays = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
451
+ var now = dayjs__default["default"]().format("YYYY-MM-DD");
452
+ var date = now.subtract(numberOfDays, "day").format("YYYY-MM-DD");
453
+ return date;
454
+ };
455
+ var dateUtils = {
456
+ currentDate: currentDate,
457
+ futureDate: futureDate,
458
+ pastDate: pastDate
459
+ };
460
+
461
+ var interceptMemberApi = function interceptMemberApi(alias) {
462
+ var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
463
+ return cy.intercept({
464
+ url: requestApis.teamMembers.all,
465
+ times: times
466
+ }).as(alias);
467
+ };
468
+ var navigateToMembersPage = function navigateToMembersPage() {
469
+ var waitForRequest = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
470
+ waitForRequest && interceptMemberApi("fetchMembers", 2);
471
+ cy.get(memberSelectors.membersTab).click();
472
+ cy.url().should("include", urlPaths.members);
473
+ waitForRequest && cy.waitForMultipleRequest("@fetchMembers", 2);
474
+ cy.get(commonSelectors.heading).should("have.text", memberTexts.activeMembersHeading);
475
+ };
476
+ var navigateToNewMemberPanel = function navigateToNewMemberPanel() {
477
+ var waitForRequest = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
478
+ navigateToMembersPage(waitForRequest);
479
+ cy.get(commonSelectors.heading).should("have.text", memberTexts.activeMembersHeading);
480
+ cy.get(memberSelectors.newButton).should("have.text", memberTexts.addMember).click();
481
+ cy.get(commonSelectors.paneHeader).should("have.text", memberTexts.newHeading);
482
+ };
483
+ var addMemberViaUI = function addMemberViaUI(email) {
484
+ var role = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : memberTexts.agent;
485
+ cy.get(memberSelectors.newButton).should("be.visible").click();
486
+ cy.get(commonSelectors.paneHeader).should("have.text", memberTexts.newHeading);
487
+ cy.get(memberFormSelectors.emailTextField).should("be.focused");
488
+ cy.typeAndEnter(memberFormSelectors.emailTextField, email);
489
+ role === memberTexts.agent ? cy.get(memberSelectors.agentRoleLabel).click() : cy.get(memberSelectors.adminRoleLabel).click();
490
+ cy.get(memberSelectors.continueButton).click();
491
+ if (isStagingEnv) {
492
+ cy.get(commonSelectors.checkboxLabel).should("have.text", memberTexts.addMemberToProducts(email));
493
+ cy.get(commonSelectors.paneBody).within(function () {
494
+ return cy.get(commonSelectors.checkbox).uncheck();
495
+ });
496
+ cy.get(memberSelectors.continueButton).click();
497
+ }
498
+ cy.get(commonSelectors.paneBody).should("contain.text", memberTexts.inviteMessage({
499
+ email: email,
500
+ role: role,
501
+ appName: "neetoDesk"
502
+ }));
503
+ interceptMemberApi("createAndFetchMember", 2);
504
+ cy.get(memberSelectors.submitButton).click();
505
+ cy.wait("@createAndFetchMember");
506
+ cy.verifyToastMessage(memberTexts.memberAddedMessage);
507
+ cy.wait("@createAndFetchMember");
508
+ cy.clearAndType(memberSelectors.searchTextField, email);
509
+ interceptMemberApi("searchRequest");
510
+ cy.clearAndType(memberSelectors.searchTextField, email);
511
+ cy.wait("@searchRequest");
512
+ cy.contains(tableSelectors.tableRow, email).should("be.visible");
513
+ };
514
+ var editMember = function editMember(_ref) {
515
+ var email = _ref.email,
516
+ role = _ref.role,
517
+ skipSearchRequest = _ref.skipSearchRequest;
518
+ verifyMemberDetails({
519
+ email: email,
520
+ skipSearchRequest: skipSearchRequest
521
+ }).within(function () {
522
+ return cy.clickDropdownOption(commonTexts.edit);
523
+ });
524
+ cy.get(commonSelectors.paneHeader).should("have.text", memberTexts.editMember);
525
+ role === memberTexts.admin ? cy.get(memberSelectors.adminRoleLabel).click() : cy.get(memberSelectors.agentRoleLabel).click();
526
+ interceptMemberApi("updateAndFetchMember", 2);
527
+ cy.get(memberSelectors.submitButton).click();
528
+ cy.wait("@updateAndFetchMember");
529
+ cy.verifyToastMessage(memberTexts.updatedMemberRole(email, role.toLocaleLowerCase()));
530
+ cy.wait("@updateAndFetchMember");
531
+ verifyMemberDetails({
532
+ email: email,
533
+ role: memberTexts.admin
534
+ });
535
+ };
536
+ var verifyMemberDetails = function verifyMemberDetails(_ref2) {
537
+ var email = _ref2.email,
538
+ role = _ref2.role,
539
+ _ref2$skipSearchReque = _ref2.skipSearchRequest,
540
+ skipSearchRequest = _ref2$skipSearchReque === void 0 ? true : _ref2$skipSearchReque;
541
+ !skipSearchRequest && interceptMemberApi("searchRequest");
542
+ cy.clearAndTypeFast(memberSelectors.searchTextField, email);
543
+ !skipSearchRequest && cy.wait("@searchRequest");
544
+ return cy.contains(commonSelectors.tableRow, email).within(function () {
545
+ cy.get(memberSelectors.email).should("have.text", email);
546
+ role && cy.get(memberSelectors.role).should("have.text", role);
547
+ });
548
+ };
549
+ var verifyActivatedMember = function verifyActivatedMember(_ref3) {
550
+ var email = _ref3.email,
551
+ _ref3$skipFetchReques = _ref3.skipFetchRequest,
552
+ skipFetchRequest = _ref3$skipFetchReques === void 0 ? false : _ref3$skipFetchReques,
553
+ _ref3$skipSearchReque = _ref3.skipSearchRequest,
554
+ skipSearchRequest = _ref3$skipSearchReque === void 0 ? true : _ref3$skipSearchReque;
555
+ cy.get(commonSelectors.toggleButton).click();
556
+ cy.get(memberSelectors.menuBarHeading).should("have.text", memberTexts.members);
557
+ !skipFetchRequest && interceptMemberApi("fetchActivatedMembers");
558
+ cy.get(memberSelectors.activatedMembersButton).click();
559
+ !skipFetchRequest && cy.wait("@fetchActivatedMembers");
560
+ verifyMemberDetails({
561
+ email: email,
562
+ skipSearchRequest: skipSearchRequest
563
+ });
564
+ cy.get(commonSelectors.toggleButton).click();
565
+ };
566
+ var verifyDeactivatedMember = function verifyDeactivatedMember(_ref4) {
567
+ var email = _ref4.email,
568
+ _ref4$skipFetchReques = _ref4.skipFetchRequest,
569
+ skipFetchRequest = _ref4$skipFetchReques === void 0 ? false : _ref4$skipFetchReques,
570
+ _ref4$skipSearchReque = _ref4.skipSearchRequest,
571
+ skipSearchRequest = _ref4$skipSearchReque === void 0 ? true : _ref4$skipSearchReque;
572
+ cy.get(commonSelectors.toggleButton).click();
573
+ cy.get(memberSelectors.menuBarHeading).should("have.text", memberTexts.members);
574
+ !skipFetchRequest && interceptMemberApi("fetchDeactivatedMembers");
575
+ cy.get(memberSelectors.deactivatedAgentsButton).click();
576
+ !skipFetchRequest && cy.wait("@fetchDeactivatedMembers");
577
+ verifyMemberDetails({
578
+ email: email,
579
+ skipSearchRequest: skipSearchRequest
580
+ });
581
+ cy.get(commonSelectors.toggleButton).click();
582
+ };
583
+ var verifyActivateAlert = function verifyActivateAlert(email) {
584
+ var skipSearchRequest = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
585
+ verifyMemberDetails({
586
+ email: email,
587
+ skipSearchRequest: skipSearchRequest
588
+ }).within(function () {
589
+ return cy.clickDropdownOption(commonTexts.activate);
590
+ });
591
+ cy.get(commonSelectors.alertTitle).should("have.text", memberTexts.activateMember);
592
+ cy.get(commonSelectors.alertModalMessage).should("have.text", memberTexts.activateMemberAlertMessage(email));
593
+ };
594
+ var deactivateMember = function deactivateMember(_ref5) {
595
+ var email = _ref5.email,
596
+ _ref5$skipSearchReque = _ref5.skipSearchRequest,
597
+ skipSearchRequest = _ref5$skipSearchReque === void 0 ? true : _ref5$skipSearchReque;
598
+ verifyMemberDetails({
599
+ email: email,
600
+ skipSearchRequest: skipSearchRequest
601
+ }).within(function () {
602
+ return cy.clickDropdownOption(commonTexts.deactivate);
603
+ });
604
+ interceptMemberApi("deactivateAndFetchMember", 2);
605
+ cy.get(commonSelectors.alertModalSubmitButton).click();
606
+ cy.wait("@deactivateAndFetchMember");
607
+ cy.verifyToastMessage(memberTexts.deactivateAccountToastMessage(email));
608
+ cy.wait("@deactivateAndFetchMember");
609
+ verifyDeactivatedMember({
610
+ email: email
611
+ });
612
+ };
613
+ var activateMember = function activateMember(_ref6) {
614
+ var email = _ref6.email,
615
+ _ref6$skipSearchReque = _ref6.skipSearchRequest,
616
+ skipSearchRequest = _ref6$skipSearchReque === void 0 ? true : _ref6$skipSearchReque;
617
+ verifyActivateAlert(email, skipSearchRequest);
618
+ interceptMemberApi("activateAndFetchMember", 2);
619
+ cy.get(commonSelectors.alertModalSubmitButton).click();
620
+ cy.wait("@activateAndFetchMember");
621
+ cy.verifyToastMessage(memberTexts.accountActivatedToastMessage(email));
622
+ cy.wait("@activateAndFetchMember");
623
+ verifyActivatedMember({
624
+ email: email
625
+ });
626
+ };
627
+ var checkColumnCheckBox = function checkColumnCheckBox(fieldSelector) {
628
+ return cy.get(fieldSelector).parent().within(function () {
629
+ cy.get(memberSelectors.columnCheckBox).should("be.checked").uncheck().should("not.be.checked");
630
+ });
631
+ };
632
+ var unCheckColumnCheckBox = function unCheckColumnCheckBox(fieldSelector) {
633
+ return cy.get(fieldSelector).parent().within(function () {
634
+ cy.get(memberSelectors.columnCheckBox).should("not.be.checked").check().should("be.checked");
635
+ });
636
+ };
637
+ var addMemberViaRequest = function addMemberViaRequest(_ref7) {
638
+ var email = _ref7.email,
639
+ _ref7$role = _ref7.role,
640
+ role = _ref7$role === void 0 ? memberTexts.agent : _ref7$role,
641
+ _ref7$requestCount = _ref7.requestCount,
642
+ requestCount = _ref7$requestCount === void 0 ? 0 : _ref7$requestCount,
643
+ appName = _ref7.appName;
644
+ cy.apiRequest({
645
+ method: "POST",
646
+ url: requestApis.teamMembers.index,
647
+ body: {
648
+ user: {
649
+ emails: [email],
650
+ organization_role: role,
651
+ app_roles: [{
652
+ app_name: appName,
653
+ active_role: role,
654
+ is_enabled: true
655
+ }]
656
+ }
657
+ }
658
+ });
659
+ cy.reloadAndWait(requestCount);
660
+ };
661
+ var deactivateMemberViaRequest = function deactivateMemberViaRequest(email) {
662
+ var requestCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
663
+ cy.apiRequest({
664
+ method: "PATCH",
665
+ url: requestApis.teamMembers.bulkUpdate,
666
+ body: {
667
+ users: {
668
+ active: false,
669
+ emails: [email]
670
+ }
671
+ }
672
+ });
673
+ cy.reloadAndWait(requestCount);
674
+ };
675
+ var memberUtils = {
676
+ addMemberViaRequest: addMemberViaRequest,
677
+ addMemberViaUI: addMemberViaUI,
678
+ activateMember: activateMember,
679
+ checkColumnCheckBox: checkColumnCheckBox,
680
+ deactivateMember: deactivateMember,
681
+ deactivateMemberViaRequest: deactivateMemberViaRequest,
682
+ editMember: editMember,
683
+ interceptMemberApi: interceptMemberApi,
684
+ navigateToMembersPage: navigateToMembersPage,
685
+ navigateToNewMemberPanel: navigateToNewMemberPanel,
686
+ unCheckColumnCheckBox: unCheckColumnCheckBox,
687
+ verifyActivatedMember: verifyActivatedMember,
688
+ verifyActivateAlert: verifyActivateAlert,
689
+ verifyDeactivatedMember: verifyDeactivatedMember,
690
+ verifyMemberDetails: verifyMemberDetails
691
+ };
692
+
693
+ var createOrganization = function createOrganization(_ref) {
694
+ var email = _ref.email,
695
+ businessName = _ref.businessName,
696
+ subdomainName = _ref.subdomainName,
697
+ firstName = _ref.firstName,
698
+ lastName = _ref.lastName,
699
+ baseUrl = _ref.baseUrl;
700
+ var otp = "123456";
701
+ cy.visit(baseUrl);
702
+ cy.contains(signUpTexts.tryItFree).click();
703
+ cy.get(signUpSelectors.signupViaEmailButton).should("contain.text", signUpTexts.email).click();
704
+ cy.clearAndType(signUpSelectors.emailTextField, email);
705
+ cy.intercept({
706
+ url: requestApis.signUp,
707
+ times: 2
708
+ }).as("signupRequest");
709
+ cy.get(signUpSelectors.submitButton).click();
710
+ cy.wait("@signupRequest");
711
+ cy.get(signUpSelectors.otpTextBox).type(otp);
712
+ cy.wait("@signupRequest");
713
+ cy.clearAndType(signUpSelectors.organizationNameTextField, businessName);
714
+ cy.intercept({
715
+ url: requestApis.subdomainAvailablity,
716
+ times: 1
717
+ }).as("subdomainRequest");
718
+ cy.clearAndType(signUpSelectors.subdomainNameTextField, subdomainName);
719
+ cy.wait("@subdomainRequest");
720
+ cy.get(signUpSelectors.organizationNameTextField).should("have.value", businessName);
721
+ cy.get(signUpSelectors.subdomainNameTextField).should("have.value", subdomainName);
722
+ cy.intercept({
723
+ url: requestApis.signUp,
724
+ times: 1
725
+ }).as("signupRequest");
726
+ cy.intercept({
727
+ url: requestApis.countries,
728
+ times: 1
729
+ }).as("fetchCountries");
730
+ cy.get(signUpSelectors.organizationSubmitButton).click();
731
+ cy.wait("@signupRequest");
732
+ cy.url({
733
+ timeout: 15000
734
+ }).should("include", signUpTexts.profile);
735
+ cy.wait("@fetchCountries");
736
+ cy.clearAndType(signUpSelectors.firstNameTextField, firstName);
737
+ cy.clearAndType(signUpSelectors.lastNameTextField, lastName);
738
+ cy.intercept({
739
+ url: requestApis.signUp,
740
+ times: 1
741
+ }).as("setupProfile");
742
+ cy.get(signUpSelectors.profileSubmitButton).click();
743
+ cy.wait("@setupProfile");
744
+ };
745
+
746
+ var verifyCrossSiteScript = function verifyCrossSiteScript(inputSelector, submitSelector) {
747
+ cy.interceptApi("searchRequest");
748
+ cy.clearAndType(inputSelector, commonTexts.crossSiteScript);
749
+ submitSelector && cy.get(submitSelector).click();
750
+ cy.wait("@searchRequest");
751
+ cy.get(commonSelectors.windowAlert).should("not.exist");
752
+ };
753
+
754
+ exports.authUtils = authUtils;
755
+ exports.commonSelectors = commonSelectors;
756
+ exports.commonTexts = commonTexts;
757
+ exports.createOrganization = createOrganization;
758
+ exports.dataCy = dataCy;
759
+ exports.dateUtils = dateUtils;
760
+ exports.environment = environment;
761
+ exports.getTestTitle = getTestTitle;
762
+ exports.getUrl = getUrl;
763
+ exports.initializeCredentials = initializeCredentials;
764
+ exports.isStagingEnv = isStagingEnv;
765
+ exports.loginSelectors = loginSelectors;
766
+ exports.memberFormSelectors = memberFormSelectors;
767
+ exports.memberSelectors = memberSelectors;
768
+ exports.memberTableTexts = memberTableTexts;
769
+ exports.memberTexts = memberTexts;
770
+ exports.memberUtils = memberUtils;
771
+ exports.profileSelectors = profileSelectors;
772
+ exports.setListCount = setListCount;
773
+ exports.signUpSelectors = signUpSelectors;
774
+ exports.signUpTexts = signUpTexts;
775
+ exports.tableSelectors = tableSelectors;
776
+ exports.verifyCrossSiteScript = verifyCrossSiteScript;
777
+ exports.verifyListCount = verifyListCount;