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