@bigbinary/neeto-playwright-commons 1.2.0 → 1.3.1
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 +423 -147
- package/index.cjs.js.map +1 -1
- package/index.d.ts +197 -33
- package/index.js +395 -130
- package/index.js.map +1 -1
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { expect, defineConfig, devices } from '@playwright/test';
|
|
2
|
-
import dayjs from 'dayjs';
|
|
3
2
|
import * as require$$0 from 'fs';
|
|
4
3
|
import require$$0__default from 'fs';
|
|
5
4
|
import require$$2 from 'os';
|
|
@@ -8,130 +7,10 @@ import require$$0$2 from 'util';
|
|
|
8
7
|
import require$$0$3 from 'stream';
|
|
9
8
|
import require$$0$4 from 'events';
|
|
10
9
|
import { mergeDeepLeft, mergeAll } from 'ramda';
|
|
10
|
+
import dayjs from 'dayjs';
|
|
11
|
+
import require$$0$5 from 'i18next';
|
|
11
12
|
import require$$3 from 'crypto';
|
|
12
13
|
|
|
13
|
-
const COMMON_SELECTORS = {
|
|
14
|
-
toastMessage: "toastr-message-container",
|
|
15
|
-
toastIcon: ".Toastify__toast-icon",
|
|
16
|
-
toastCloseButton: "toastr-close-button",
|
|
17
|
-
dropdownIcon: "nui-dropdown-icon",
|
|
18
|
-
checkbox: "nui-checkbox-input",
|
|
19
|
-
spinner: ".neeto-ui-spinner",
|
|
20
|
-
input: "nui-input-field",
|
|
21
|
-
alertModalSubmitButton: "alert-submit-button",
|
|
22
|
-
selectContainer: "nui-select-container",
|
|
23
|
-
subheaderText: "subheader-left",
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
class CustomCommands {
|
|
27
|
-
constructor(page, request) {
|
|
28
|
-
this.interceptMultipleResponses = ({ responseUrl = "", times = 1, baseUrl, }) => Promise.all([...new Array(times)].map(() => this.page.waitForResponse((response) => {
|
|
29
|
-
var _a, _b, _c;
|
|
30
|
-
if (response.request().resourceType() === "xhr" &&
|
|
31
|
-
response.status() === 200 &&
|
|
32
|
-
response.url().includes(responseUrl) &&
|
|
33
|
-
response
|
|
34
|
-
.url()
|
|
35
|
-
.startsWith((_a = baseUrl !== null && baseUrl !== void 0 ? baseUrl : process.env.BASE_URL) !== null && _a !== void 0 ? _a : "") &&
|
|
36
|
-
!this.responses.includes((_b = response.headers()) === null || _b === void 0 ? void 0 : _b["x-request-id"])) {
|
|
37
|
-
this.responses.push((_c = response.headers()) === null || _c === void 0 ? void 0 : _c["x-request-id"]);
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
return false;
|
|
41
|
-
}, { timeout: 10000 })));
|
|
42
|
-
this.recursiveMethod = async (callback, condition, timeout, startTime) => {
|
|
43
|
-
if (Date.now() - timeout >= startTime) {
|
|
44
|
-
return false;
|
|
45
|
-
}
|
|
46
|
-
else if (await condition()) {
|
|
47
|
-
return await callback();
|
|
48
|
-
}
|
|
49
|
-
return await this.recursiveMethod(callback, condition, timeout, startTime);
|
|
50
|
-
};
|
|
51
|
-
this.executeRecursively = async ({ callback, condition, timeout = 5000, }) => {
|
|
52
|
-
const startTime = Date.now();
|
|
53
|
-
await this.recursiveMethod(callback, condition, timeout, startTime);
|
|
54
|
-
};
|
|
55
|
-
this.verifySuccessToast = async ({ message, closeAfterVerification = true, }) => {
|
|
56
|
-
if (message) {
|
|
57
|
-
await expect(this.page.getByTestId(COMMON_SELECTORS.toastMessage)).toHaveValue(message);
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
await expect(this.page.locator(COMMON_SELECTORS.toastIcon)).toHaveValue("👍");
|
|
61
|
-
closeAfterVerification &&
|
|
62
|
-
(await this.page
|
|
63
|
-
.getByTestId(COMMON_SELECTORS.toastCloseButton)
|
|
64
|
-
.click());
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
this.reloadAndWait = async (requestCount) => {
|
|
68
|
-
const reloadRequests = this.interceptMultipleResponses({
|
|
69
|
-
times: requestCount,
|
|
70
|
-
});
|
|
71
|
-
await this.page.reload();
|
|
72
|
-
await reloadRequests;
|
|
73
|
-
};
|
|
74
|
-
this.apiRequest = async ({ url, headers: additionalHeaders, body: data, method = "get", params = {}, ...otherOptions }) => {
|
|
75
|
-
const csrfToken = await this.page
|
|
76
|
-
.locator("[name='csrf-token']")
|
|
77
|
-
.getAttribute("content");
|
|
78
|
-
const requestOptions = {
|
|
79
|
-
headers: {
|
|
80
|
-
...additionalHeaders,
|
|
81
|
-
"accept-encoding": "gzip",
|
|
82
|
-
"x-csrf-token": csrfToken !== null && csrfToken !== void 0 ? csrfToken : "",
|
|
83
|
-
},
|
|
84
|
-
data,
|
|
85
|
-
params,
|
|
86
|
-
...otherOptions,
|
|
87
|
-
};
|
|
88
|
-
const httpMethodsHandlers = {
|
|
89
|
-
get: () => this.request.get(url, requestOptions),
|
|
90
|
-
post: () => this.request.post(url, requestOptions),
|
|
91
|
-
put: () => this.request.put(url, requestOptions),
|
|
92
|
-
delete: () => this.request.delete(url, requestOptions),
|
|
93
|
-
};
|
|
94
|
-
return await httpMethodsHandlers[method]();
|
|
95
|
-
};
|
|
96
|
-
this.verifyFieldValue = values => {
|
|
97
|
-
const verifyEachFieldValue = ({ field, value, }) => expect(this.page.getByTestId(field)).toHaveValue(value);
|
|
98
|
-
return Array.isArray(values)
|
|
99
|
-
? Promise.all(values.map(value => verifyEachFieldValue(value)))
|
|
100
|
-
: verifyEachFieldValue(values);
|
|
101
|
-
};
|
|
102
|
-
this.page = page;
|
|
103
|
-
this.responses = [];
|
|
104
|
-
this.request = request;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
const commands = {
|
|
109
|
-
neetoPlaywrightUtilities: async ({ page, request }, use) => {
|
|
110
|
-
const commands = new CustomCommands(page, request);
|
|
111
|
-
await use(commands);
|
|
112
|
-
},
|
|
113
|
-
page: async ({ page }, use) => {
|
|
114
|
-
await page.goto("/");
|
|
115
|
-
await page.waitForLoadState();
|
|
116
|
-
await use(page);
|
|
117
|
-
},
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
const ENVIRONMENT = {
|
|
121
|
-
development: "development",
|
|
122
|
-
staging: "staging",
|
|
123
|
-
review: "review",
|
|
124
|
-
};
|
|
125
|
-
const IS_STAGING_ENV = process.env.TEST_ENV === "staging";
|
|
126
|
-
const STORAGE_STATE = "./e2e/auth/user.json";
|
|
127
|
-
const GLOBAL_TRANSLATIONS_PATTERN = "../node_modules/@bigbinary/**/translations/en.json";
|
|
128
|
-
const PROJECT_TRANSLATIONS_PATH = "../app/javascript/src/translations/en.json";
|
|
129
|
-
const CREDENTIALS = {
|
|
130
|
-
name: "Oliver Smith",
|
|
131
|
-
email: "oliver@example.com",
|
|
132
|
-
password: "welcome",
|
|
133
|
-
};
|
|
134
|
-
|
|
135
14
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
136
15
|
|
|
137
16
|
var tasks = {};
|
|
@@ -6830,6 +6709,21 @@ function assertPatternsInput(input) {
|
|
|
6830
6709
|
}
|
|
6831
6710
|
var out = FastGlob;
|
|
6832
6711
|
|
|
6712
|
+
const ENVIRONMENT = {
|
|
6713
|
+
development: "development",
|
|
6714
|
+
staging: "staging",
|
|
6715
|
+
review: "review",
|
|
6716
|
+
};
|
|
6717
|
+
const IS_STAGING_ENV = process.env.TEST_ENV === "staging";
|
|
6718
|
+
const STORAGE_STATE = "./e2e/auth/user.json";
|
|
6719
|
+
const GLOBAL_TRANSLATIONS_PATTERN = "../node_modules/@bigbinary/**/translations/en.json";
|
|
6720
|
+
const PROJECT_TRANSLATIONS_PATH = "../app/javascript/src/translations/en.json";
|
|
6721
|
+
const CREDENTIALS = {
|
|
6722
|
+
name: "Oliver Smith",
|
|
6723
|
+
email: "oliver@example.com",
|
|
6724
|
+
password: "welcome",
|
|
6725
|
+
};
|
|
6726
|
+
|
|
6833
6727
|
const joinString = (string1, string2, string3 = "", separator = " ") => {
|
|
6834
6728
|
if (string3 === "") {
|
|
6835
6729
|
return string1 + separator + string2;
|
|
@@ -6874,6 +6768,166 @@ const readTranslations = () => {
|
|
|
6874
6768
|
});
|
|
6875
6769
|
return translations;
|
|
6876
6770
|
};
|
|
6771
|
+
const hyphenize = input => {
|
|
6772
|
+
const fallbackString = "";
|
|
6773
|
+
if (typeof input === "number")
|
|
6774
|
+
return String(input);
|
|
6775
|
+
if (input && typeof input === "string" && input.replace) {
|
|
6776
|
+
return input
|
|
6777
|
+
.replace(/[\s_]/g, "-")
|
|
6778
|
+
.replace(/([a-z])([A-Z])/g, "$1-$2")
|
|
6779
|
+
.replace(/-+/g, "-")
|
|
6780
|
+
.toLowerCase();
|
|
6781
|
+
}
|
|
6782
|
+
return fallbackString;
|
|
6783
|
+
};
|
|
6784
|
+
const joinHyphenCase = (...args) => args.join(" ").replace(/\s+/g, "-").toLowerCase();
|
|
6785
|
+
|
|
6786
|
+
const COMMON_SELECTORS = {
|
|
6787
|
+
spinner: ".neeto-ui-spinner",
|
|
6788
|
+
subheaderText: "subheader-left",
|
|
6789
|
+
alertTitle: "alert-title",
|
|
6790
|
+
alertModalMessage: "alert-message",
|
|
6791
|
+
alertModalSubmitButton: "alert-submit-button",
|
|
6792
|
+
checkbox: "nui-checkbox-input",
|
|
6793
|
+
checkboxLabel: "nui-checkbox-label",
|
|
6794
|
+
dropdownContainer: "nui-dropdown-container",
|
|
6795
|
+
dropdownIcon: "nui-dropdown-icon",
|
|
6796
|
+
heading: "main-header",
|
|
6797
|
+
paneBody: "pane-body",
|
|
6798
|
+
paneHeader: "pane-header",
|
|
6799
|
+
profileSidebar: "profile-section",
|
|
6800
|
+
selectOption: (label) => `${hyphenize(label)}-select-option`,
|
|
6801
|
+
toastMessage: "toastr-message-container",
|
|
6802
|
+
toastCloseButton: "toastr-close-button",
|
|
6803
|
+
windowAlert: "#alert-box",
|
|
6804
|
+
body: "body",
|
|
6805
|
+
toastIcon: ".Toastify__toast-icon",
|
|
6806
|
+
paneModalCrossIcon: "pane-close-button",
|
|
6807
|
+
inputField: "nui-input-field",
|
|
6808
|
+
alertConfirmationText: "alert-confirmation-text",
|
|
6809
|
+
alertCancelButton: "alert-cancel-button",
|
|
6810
|
+
alertModalCrossIcon: "modal-close-button",
|
|
6811
|
+
saveChangesButton: "save-changes-button",
|
|
6812
|
+
cancelButton: "cancel-button",
|
|
6813
|
+
inputFieldError: "nui-input-error",
|
|
6814
|
+
selectDropDownError: "nui-select-error",
|
|
6815
|
+
subTitleHeading: "menubar-subtitle-heading",
|
|
6816
|
+
noDataTitle: "no-data-title",
|
|
6817
|
+
noDataDescription: "no-data-description",
|
|
6818
|
+
backdrop: "neeto-backdrop",
|
|
6819
|
+
menuBarHeading: "menubar-heading",
|
|
6820
|
+
dropdownWrapper: "nui-select-container-wrapper",
|
|
6821
|
+
toggleButton: "menubar-toggle-button",
|
|
6822
|
+
tooltip: "tooltip-box",
|
|
6823
|
+
articlePageTitle: ".serene-article__title",
|
|
6824
|
+
tabItem: "tab-item",
|
|
6825
|
+
labelInputError: "label-input-error",
|
|
6826
|
+
urlInputError: "url-input-error",
|
|
6827
|
+
noDataPrimaryButton: "no-data-primary-button",
|
|
6828
|
+
modalHeader: "modal-header",
|
|
6829
|
+
nameInputError: "name-input-error",
|
|
6830
|
+
selectContainer: "nui-select-container",
|
|
6831
|
+
dropdownMenu: "nui-select-menu",
|
|
6832
|
+
sidebarToggle: "neeto-molecules-sidebar-toggler",
|
|
6833
|
+
subheader: "subheader",
|
|
6834
|
+
settingsLink: "Settings",
|
|
6835
|
+
ticketFieldTextInput: (label) => `${hyphenize(label)}-text-input`,
|
|
6836
|
+
};
|
|
6837
|
+
|
|
6838
|
+
class CustomCommands {
|
|
6839
|
+
constructor(page, request) {
|
|
6840
|
+
this.interceptMultipleResponses = ({ responseUrl = "", times = 1, baseUrl, }) => Promise.all([...new Array(times)].map(() => this.page.waitForResponse((response) => {
|
|
6841
|
+
var _a, _b, _c;
|
|
6842
|
+
if (response.request().resourceType() === "xhr" &&
|
|
6843
|
+
response.status() === 200 &&
|
|
6844
|
+
response.url().includes(responseUrl) &&
|
|
6845
|
+
response
|
|
6846
|
+
.url()
|
|
6847
|
+
.startsWith((_a = baseUrl !== null && baseUrl !== void 0 ? baseUrl : process.env.BASE_URL) !== null && _a !== void 0 ? _a : "") &&
|
|
6848
|
+
!this.responses.includes((_b = response.headers()) === null || _b === void 0 ? void 0 : _b["x-request-id"])) {
|
|
6849
|
+
this.responses.push((_c = response.headers()) === null || _c === void 0 ? void 0 : _c["x-request-id"]);
|
|
6850
|
+
return true;
|
|
6851
|
+
}
|
|
6852
|
+
return false;
|
|
6853
|
+
}, { timeout: 10000 })));
|
|
6854
|
+
this.recursiveMethod = async (callback, condition, timeout, startTime) => {
|
|
6855
|
+
if (Date.now() - timeout >= startTime) {
|
|
6856
|
+
return false;
|
|
6857
|
+
}
|
|
6858
|
+
else if (await condition()) {
|
|
6859
|
+
return await callback();
|
|
6860
|
+
}
|
|
6861
|
+
return await this.recursiveMethod(callback, condition, timeout, startTime);
|
|
6862
|
+
};
|
|
6863
|
+
this.executeRecursively = async ({ callback, condition, timeout = 5000, }) => {
|
|
6864
|
+
const startTime = Date.now();
|
|
6865
|
+
await this.recursiveMethod(callback, condition, timeout, startTime);
|
|
6866
|
+
};
|
|
6867
|
+
this.verifySuccessToast = async ({ message, closeAfterVerification = true, }) => {
|
|
6868
|
+
if (message) {
|
|
6869
|
+
await expect(this.page.getByTestId(COMMON_SELECTORS.toastMessage)).toHaveValue(message);
|
|
6870
|
+
}
|
|
6871
|
+
else {
|
|
6872
|
+
await expect(this.page.locator(COMMON_SELECTORS.toastIcon)).toHaveValue("👍");
|
|
6873
|
+
closeAfterVerification &&
|
|
6874
|
+
(await this.page
|
|
6875
|
+
.getByTestId(COMMON_SELECTORS.toastCloseButton)
|
|
6876
|
+
.click());
|
|
6877
|
+
}
|
|
6878
|
+
};
|
|
6879
|
+
this.reloadAndWait = async (requestCount) => {
|
|
6880
|
+
const reloadRequests = this.interceptMultipleResponses({
|
|
6881
|
+
times: requestCount,
|
|
6882
|
+
});
|
|
6883
|
+
await this.page.reload();
|
|
6884
|
+
await reloadRequests;
|
|
6885
|
+
};
|
|
6886
|
+
this.apiRequest = async ({ url, headers: additionalHeaders, body: data, method = "get", params = {}, ...otherOptions }) => {
|
|
6887
|
+
const csrfToken = await this.page
|
|
6888
|
+
.locator("[name='csrf-token']")
|
|
6889
|
+
.getAttribute("content");
|
|
6890
|
+
const requestOptions = {
|
|
6891
|
+
headers: {
|
|
6892
|
+
...additionalHeaders,
|
|
6893
|
+
"accept-encoding": "gzip",
|
|
6894
|
+
"x-csrf-token": csrfToken !== null && csrfToken !== void 0 ? csrfToken : "",
|
|
6895
|
+
},
|
|
6896
|
+
data,
|
|
6897
|
+
params,
|
|
6898
|
+
...otherOptions,
|
|
6899
|
+
};
|
|
6900
|
+
const httpMethodsHandlers = {
|
|
6901
|
+
get: () => this.request.get(url, requestOptions),
|
|
6902
|
+
post: () => this.request.post(url, requestOptions),
|
|
6903
|
+
put: () => this.request.put(url, requestOptions),
|
|
6904
|
+
delete: () => this.request.delete(url, requestOptions),
|
|
6905
|
+
};
|
|
6906
|
+
return await httpMethodsHandlers[method]();
|
|
6907
|
+
};
|
|
6908
|
+
this.verifyFieldValue = values => {
|
|
6909
|
+
const verifyEachFieldValue = ({ field, value, }) => expect(this.page.getByTestId(field)).toHaveValue(value);
|
|
6910
|
+
return Array.isArray(values)
|
|
6911
|
+
? Promise.all(values.map(value => verifyEachFieldValue(value)))
|
|
6912
|
+
: verifyEachFieldValue(values);
|
|
6913
|
+
};
|
|
6914
|
+
this.page = page;
|
|
6915
|
+
this.responses = [];
|
|
6916
|
+
this.request = request;
|
|
6917
|
+
}
|
|
6918
|
+
}
|
|
6919
|
+
|
|
6920
|
+
const commands = {
|
|
6921
|
+
neetoPlaywrightUtilities: async ({ page, request }, use) => {
|
|
6922
|
+
const commands = new CustomCommands(page, request);
|
|
6923
|
+
await use(commands);
|
|
6924
|
+
},
|
|
6925
|
+
page: async ({ page }, use) => {
|
|
6926
|
+
await page.goto("/");
|
|
6927
|
+
await page.waitForLoadState();
|
|
6928
|
+
await use(page);
|
|
6929
|
+
},
|
|
6930
|
+
};
|
|
6877
6931
|
|
|
6878
6932
|
const generateStagingData = (product = "invoice") => {
|
|
6879
6933
|
const timestamp = dayjs().format("YYYYMMDDHH");
|
|
@@ -6897,7 +6951,86 @@ const generateStagingData = (product = "invoice") => {
|
|
|
6897
6951
|
};
|
|
6898
6952
|
};
|
|
6899
6953
|
|
|
6900
|
-
|
|
6954
|
+
var __create = Object.create;
|
|
6955
|
+
var __defProp = Object.defineProperty;
|
|
6956
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6957
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6958
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6959
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6960
|
+
var __export = (target, all) => {
|
|
6961
|
+
for (var name in all)
|
|
6962
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
6963
|
+
};
|
|
6964
|
+
var __copyProps = (to, from, except, desc) => {
|
|
6965
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
6966
|
+
for (let key of __getOwnPropNames(from))
|
|
6967
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
6968
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
6969
|
+
}
|
|
6970
|
+
return to;
|
|
6971
|
+
};
|
|
6972
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
6973
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
6974
|
+
mod
|
|
6975
|
+
));
|
|
6976
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
6977
|
+
|
|
6978
|
+
// src/index.ts
|
|
6979
|
+
var src_exports = {};
|
|
6980
|
+
__export(src_exports, {
|
|
6981
|
+
createI18nFixture: () => createI18nFixture,
|
|
6982
|
+
getI18nInstance: () => getI18nInstance,
|
|
6983
|
+
initI18n: () => initI18n
|
|
6984
|
+
});
|
|
6985
|
+
var dist = __toCommonJS(src_exports);
|
|
6986
|
+
|
|
6987
|
+
// src/i18n.ts
|
|
6988
|
+
var import_i18next = __toESM(require$$0$5);
|
|
6989
|
+
var storedI18n;
|
|
6990
|
+
async function initI18n({
|
|
6991
|
+
plugins,
|
|
6992
|
+
options,
|
|
6993
|
+
cache
|
|
6994
|
+
}) {
|
|
6995
|
+
if (!cache || !storedI18n || !storedI18n.isInitialized) {
|
|
6996
|
+
const i18n2 = plugins.reduce(
|
|
6997
|
+
(i18n3, plugin) => i18n3 = i18n3.use(plugin),
|
|
6998
|
+
import_i18next.default.createInstance()
|
|
6999
|
+
);
|
|
7000
|
+
await i18n2.init(options);
|
|
7001
|
+
storedI18n = i18n2;
|
|
7002
|
+
}
|
|
7003
|
+
return storedI18n;
|
|
7004
|
+
}
|
|
7005
|
+
function getI18nInstance() {
|
|
7006
|
+
if (!storedI18n) {
|
|
7007
|
+
throw new Error("No i18n instance initialized");
|
|
7008
|
+
}
|
|
7009
|
+
return storedI18n;
|
|
7010
|
+
}
|
|
7011
|
+
|
|
7012
|
+
// src/fixture.ts
|
|
7013
|
+
var createI18nFixture = ({
|
|
7014
|
+
plugins = [],
|
|
7015
|
+
options = {},
|
|
7016
|
+
cache = true,
|
|
7017
|
+
auto = true
|
|
7018
|
+
}) => {
|
|
7019
|
+
return {
|
|
7020
|
+
i18n: [
|
|
7021
|
+
async ({}, use) => {
|
|
7022
|
+
const i18nInitialized = await initI18n({ plugins, options, cache });
|
|
7023
|
+
await use(i18nInitialized);
|
|
7024
|
+
},
|
|
7025
|
+
{ auto }
|
|
7026
|
+
],
|
|
7027
|
+
t: async ({ i18n: i18n2 }, use) => {
|
|
7028
|
+
await use(i18n2.t);
|
|
7029
|
+
}
|
|
7030
|
+
};
|
|
7031
|
+
};
|
|
7032
|
+
|
|
7033
|
+
const i18nFixture = dist.createI18nFixture({
|
|
6901
7034
|
// i18n configuration options
|
|
6902
7035
|
options: {
|
|
6903
7036
|
debug: false,
|
|
@@ -6910,17 +7043,24 @@ const i18n = {
|
|
|
6910
7043
|
// Run as auto fixture to be available through all tests by getI18nInstance()
|
|
6911
7044
|
// Default: true
|
|
6912
7045
|
auto: true,
|
|
6913
|
-
};
|
|
7046
|
+
});
|
|
6914
7047
|
|
|
6915
7048
|
const BASE_URL = "/api/v1";
|
|
6916
7049
|
const ROUTES = {
|
|
6917
7050
|
neetoAuth: "https://app.neetoauth.net",
|
|
7051
|
+
neetoAuthSignup: "https://app.neetoauth.net/signups/new",
|
|
6918
7052
|
profile: "/profile",
|
|
6919
7053
|
login: `${BASE_URL}/login`,
|
|
6920
7054
|
signup: `${BASE_URL}/signups`,
|
|
6921
7055
|
subdomainAvailability: `${BASE_URL}/subdomain_availability`,
|
|
6922
7056
|
countries: `${BASE_URL}/countries`,
|
|
6923
7057
|
neetoApps: `${BASE_URL}/neeto_apps`,
|
|
7058
|
+
teamMembers: {
|
|
7059
|
+
all: "/team_members*/**",
|
|
7060
|
+
bulkUpdate: "/team_members/teams/bulk_update",
|
|
7061
|
+
index: "/team_members/teams",
|
|
7062
|
+
show: (id) => `/team_members/teams/${id}`,
|
|
7063
|
+
},
|
|
6924
7064
|
};
|
|
6925
7065
|
|
|
6926
7066
|
const SIGNUP_SELECTORS = {
|
|
@@ -6952,10 +7092,9 @@ class OrganizationPage {
|
|
|
6952
7092
|
const defaultOtp = "123456";
|
|
6953
7093
|
const appNameInLowerCase = appName.toLowerCase();
|
|
6954
7094
|
const isNeetoAuth = appNameInLowerCase === "neetoauth";
|
|
6955
|
-
const authUrl = "https://app.neetoauth.net/signups/new";
|
|
6956
7095
|
isNeetoAuth
|
|
6957
|
-
? await this.page.goto(
|
|
6958
|
-
: await this.page.goto(`${
|
|
7096
|
+
? await this.page.goto(ROUTES.neetoAuthSignup)
|
|
7097
|
+
: await this.page.goto(`${ROUTES.neetoAuthSignup}?redirect_uri=${appNameInLowerCase}.net`);
|
|
6959
7098
|
await this.page.getByTestId(SIGNUP_SELECTORS.emailTextField).fill(email);
|
|
6960
7099
|
const signup = this.neetoPlaywrightUtilities.interceptMultipleResponses({
|
|
6961
7100
|
responseUrl: ROUTES.signup,
|
|
@@ -7057,6 +7196,62 @@ class OrganizationPage {
|
|
|
7057
7196
|
}
|
|
7058
7197
|
}
|
|
7059
7198
|
|
|
7199
|
+
const NEETO_EDITOR_SELECTORS = {
|
|
7200
|
+
boldOption: "neeto-editor-fixed-menu-bold-option",
|
|
7201
|
+
italicOption: "neeto-editor-fixed-menu-italic-option",
|
|
7202
|
+
underlineOption: "neeto-editor-fixed-menu-underline-option",
|
|
7203
|
+
strikeOption: "neeto-editor-fixed-menu-strike-option",
|
|
7204
|
+
codeBlockOption: "neeto-editor-fixed-menu-code-option",
|
|
7205
|
+
highlightOption: "neeto-editor-fixed-menu-highlight-option",
|
|
7206
|
+
linkInput: "neeto-editor-fixed-menu-link-option-input",
|
|
7207
|
+
linkSubmitButton: "neeto-editor-fixed-menu-link-option-link-button",
|
|
7208
|
+
commandList: (index) => `neeto-editor-command-list-item-${index}`,
|
|
7209
|
+
imageUploadUrlSubmitButton: "neeto-editor-media-upload-url-submit",
|
|
7210
|
+
imageUploadUrlInputTextField: "neeto-editor-media-upload-url-input",
|
|
7211
|
+
uploadInput: "neeto-editor-media-uploader-input",
|
|
7212
|
+
editorMenuBarWrapper: "neeto-editor-fixed-menu-wrapper",
|
|
7213
|
+
undoOption: "neeto-editor-fixed-menu-undo-option",
|
|
7214
|
+
redoOption: "neeto-editor-fixed-menu-redo-option",
|
|
7215
|
+
imageWrapper: "neeto-editor-image-wrapper",
|
|
7216
|
+
};
|
|
7217
|
+
|
|
7218
|
+
const NEETO_FILTERS_SELECTORS = {
|
|
7219
|
+
emailSelectContainer: "email-select-container-wrapper",
|
|
7220
|
+
filterPaneHeading: "neeto-filters-pane-header",
|
|
7221
|
+
neetoFiltersEmailBlock: "neeto-filters-email-block",
|
|
7222
|
+
neetoFiltersRoleBlock: "neeto-filters-role-block",
|
|
7223
|
+
neetoFiltersBarClearButton: "neeto-filters-bar-clear-btn",
|
|
7224
|
+
neetoFiltersNameFilterField: "neeto-filters-name-filter",
|
|
7225
|
+
neetoFilterNameBlock: "neeto-filters-name-block",
|
|
7226
|
+
roleSelectContainer: "role-select-container-wrapper",
|
|
7227
|
+
filterButton: "neeto-filters-toggle-btn",
|
|
7228
|
+
filtersClearButton: "neeto-filters-clear-btn",
|
|
7229
|
+
filterDoneButton: "neeto-filters-done-btn",
|
|
7230
|
+
filteredMembersCount: "ntm-filtered-members-count",
|
|
7231
|
+
allMenubarBlock: "ntm-members-menubar-all-block",
|
|
7232
|
+
filtersEmailFilter: "neeto-filters-email-filter",
|
|
7233
|
+
paneModalCrossIcon: "neeto-filters-close-button",
|
|
7234
|
+
};
|
|
7235
|
+
|
|
7236
|
+
const HELP_CENTER_SELECTORS = {
|
|
7237
|
+
helpButton: "help-button",
|
|
7238
|
+
documentationButton: "help-link-help-center-button",
|
|
7239
|
+
keyboardShortcutButton: "help-link-keyboard-shortcut-button",
|
|
7240
|
+
chatButton: "help-link-live-chat-button",
|
|
7241
|
+
whatsNewButton: "help-link-changelog-button",
|
|
7242
|
+
whatsNewWidgetInfo: "h1",
|
|
7243
|
+
whatsNewWidgetCloseButton: ".nc-widget-header__btn",
|
|
7244
|
+
keyboardShortcutPaneHeading: "keyboard-shortcuts-pane-title",
|
|
7245
|
+
keyboardShortcutPaneCrossIcon: "keyboard-shortcuts-pane-close-button",
|
|
7246
|
+
};
|
|
7247
|
+
const CHAT_WIDGET_SELECTORS = {
|
|
7248
|
+
chatWidgetHomeCard: "neeto-chat-widget-cta-title",
|
|
7249
|
+
widgetSubmitButton: "neeto-chat-widget-pre-chat-submit-btn",
|
|
7250
|
+
chatBubbleMessage: "neeto-chat-widget-chat-message-bubble",
|
|
7251
|
+
chatCloseButton: ".neeto-chat-widget-icon--close",
|
|
7252
|
+
widgetIframe: "#neetochat-iframe",
|
|
7253
|
+
};
|
|
7254
|
+
|
|
7060
7255
|
const LOGIN_SELECTORS = {
|
|
7061
7256
|
appleAuthenticationButton: "apple-authentication-button",
|
|
7062
7257
|
emailTextField: "login-email-text-field",
|
|
@@ -7069,7 +7264,77 @@ const LOGIN_SELECTORS = {
|
|
|
7069
7264
|
twitterAuthenticationButton: "twitter-authentication-button",
|
|
7070
7265
|
};
|
|
7071
7266
|
|
|
7072
|
-
const
|
|
7267
|
+
const MEMBER_SELECTORS = {
|
|
7268
|
+
membersTab: "members-nav-tab",
|
|
7269
|
+
newButton: "ntm-add-member-button",
|
|
7270
|
+
continueButton: "ntm-manage-member-continue-button",
|
|
7271
|
+
submitButton: "ntm-manage-member-submit-button",
|
|
7272
|
+
searchTextField: "ntm-search-members-input",
|
|
7273
|
+
deactivatedAgentsButton: "ntm-members-menubar-deactivated-block",
|
|
7274
|
+
activatedMembersButton: "ntm-members-menubar-active-block",
|
|
7275
|
+
columnCheckBox: "neeto-ui-columns-checkbox",
|
|
7276
|
+
roleLabel: (role) => `${joinHyphenCase(role)}-radio-label`,
|
|
7277
|
+
dropDownIcon: "ntm-members-table-row-dropdown-button",
|
|
7278
|
+
editButton: "ntm-edit-member-button",
|
|
7279
|
+
menuBarHeading: "ntm-members-menubar-heading",
|
|
7280
|
+
activateOrDeactivateMember: "ntm-deactivate-member-button",
|
|
7281
|
+
columnsButton: "columns-dropdown-button",
|
|
7282
|
+
columnsDropdownContainer: "columns-dropdown-container",
|
|
7283
|
+
emailDropdownItemLabel: "email-checkbox-label",
|
|
7284
|
+
roleDropdownItemLabel: "role-checkbox-label",
|
|
7285
|
+
inviteStatusDropdownItemLabel: "invite-status-checkbox-label",
|
|
7286
|
+
heading: "ntm-manage-members-pane-header",
|
|
7287
|
+
activateButton: "ntm-activate-members-button",
|
|
7288
|
+
deactivateButton: "ntm-deactivate-members-button",
|
|
7289
|
+
rolesButton: "ntm-manage-member-roles-button",
|
|
7290
|
+
statusTag: "ntm-member-status-tag",
|
|
7291
|
+
};
|
|
7292
|
+
const MEMBER_FORM_SELECTORS = {
|
|
7293
|
+
emailTextField: "email-select-input-field",
|
|
7294
|
+
firstNameTextField: "ntm-edit-member-first-name-text-field",
|
|
7295
|
+
lastNameTextField: "ntm-edit-member-last-name-text-field",
|
|
7296
|
+
emailInput: "ntm-manage-member-email-input",
|
|
7297
|
+
emailErrorField: "emails-input-error",
|
|
7298
|
+
cancelButton: "ntm-manage-member-cancel-button",
|
|
7299
|
+
};
|
|
7300
|
+
|
|
7301
|
+
const ROLES_SELECTORS = {
|
|
7302
|
+
newButton: "ntm-add-role-button",
|
|
7303
|
+
proceedButton: "ntm-add-role-submit-button",
|
|
7304
|
+
cancelButton: "ntm-add-role-cancel-button",
|
|
7305
|
+
tableHeaderRoleName: "ntm-roles-table-role-header",
|
|
7306
|
+
nameTextField: "ntm-add-role-name-text-field",
|
|
7307
|
+
searchTextField: "ntm-search-roles-input",
|
|
7308
|
+
updateRolePaneHeading: "ntm-add-role-title",
|
|
7309
|
+
updateRoleCancelButton: "ntm-add-role-cancel-button",
|
|
7310
|
+
descriptionTextField: "ntm-add-role-description-text-field",
|
|
7311
|
+
permissionCategoryTitle: "ntm-roles-permission-category-title",
|
|
7312
|
+
headerColumn: "ntm-roles-table-header",
|
|
7313
|
+
dropDownIcon: "ntm-roles-table-header-role-dropdown-button",
|
|
7314
|
+
tableHeaderRoleTitle: "ntm-roles-table-header-role-title",
|
|
7315
|
+
};
|
|
7316
|
+
|
|
7317
|
+
const TAGS_SELECTORS = {
|
|
7318
|
+
newTagButton: "add-new-tag-button",
|
|
7319
|
+
tagNameTextField: "tag-name-text-field",
|
|
7320
|
+
editButton: "tags-edit-button",
|
|
7321
|
+
deleteButton: "tags-delete-button",
|
|
7322
|
+
cancelButton: "neeto-tags-manage-tag-cancel-button",
|
|
7323
|
+
submitButton: "neeto-tags-manage-tag-submit-button",
|
|
7324
|
+
searchTextField: "neeto-tags-search-text-input-field",
|
|
7325
|
+
descriptionTextArea: "tag-description-text-area",
|
|
7326
|
+
};
|
|
7327
|
+
const MERGE_TAGS_SELECTORS = {
|
|
7328
|
+
mergeTagsButton: "neeto-tags-merge-tags-button",
|
|
7329
|
+
mergeButton: "neeto-tags-merge-button",
|
|
7330
|
+
sourceSearchTextField: "neeto-tags-merge-source-search-text-input-field",
|
|
7331
|
+
sourceTagsList: "neeto-tags-merge-source-tags-list",
|
|
7332
|
+
destinationTagsList: "neeto-tags-merge-destination-tags-list",
|
|
7333
|
+
destinationSearchTextField: "neeto-tags-merge-destination-search-text-input-field",
|
|
7334
|
+
cancelButton: "neeto-tags-merge-cancel-button",
|
|
7335
|
+
proceedButton: "neeto-tags-merge-proceed-button",
|
|
7336
|
+
disabledTag: ".neeto-ui-cursor-not-allowed",
|
|
7337
|
+
};
|
|
7073
7338
|
|
|
7074
7339
|
const initializeCredentials = (product) => {
|
|
7075
7340
|
const { user } = readFileSyncIfExists();
|
|
@@ -7562,5 +7827,5 @@ const definePlaywrightConfig = (overrides) => {
|
|
|
7562
7827
|
});
|
|
7563
7828
|
};
|
|
7564
7829
|
|
|
7565
|
-
export { BASE_URL,
|
|
7830
|
+
export { BASE_URL, CHAT_WIDGET_SELECTORS, COMMON_SELECTORS, CREDENTIALS, CustomCommands, ENVIRONMENT, GLOBAL_TRANSLATIONS_PATTERN, HELP_CENTER_SELECTORS, IS_STAGING_ENV, LOGIN_SELECTORS, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MERGE_TAGS_SELECTORS, NEETO_EDITOR_SELECTORS, NEETO_FILTERS_SELECTORS, OrganizationPage, PROJECT_TRANSLATIONS_PATH, ROLES_SELECTORS, ROUTES, SIGNUP_SELECTORS, STORAGE_STATE, TAGS_SELECTORS, clearCredentials, commands, definePlaywrightConfig, generateStagingData, hyphenize, i18nFixture, initializeCredentials, joinHyphenCase, joinString, login, loginWithoutSSO, readFileSyncIfExists, readTranslations, updateCredentials, writeDataToFile };
|
|
7566
7831
|
//# sourceMappingURL=index.js.map
|