@bigbinary/neeto-playwright-commons 1.2.0 → 1.3.0

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.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,9 @@ 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
11
  import require$$3 from 'crypto';
12
12
 
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
13
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
136
14
 
137
15
  var tasks = {};
@@ -6830,6 +6708,21 @@ function assertPatternsInput(input) {
6830
6708
  }
6831
6709
  var out = FastGlob;
6832
6710
 
6711
+ const ENVIRONMENT = {
6712
+ development: "development",
6713
+ staging: "staging",
6714
+ review: "review",
6715
+ };
6716
+ const IS_STAGING_ENV = process.env.TEST_ENV === "staging";
6717
+ const STORAGE_STATE = "./e2e/auth/user.json";
6718
+ const GLOBAL_TRANSLATIONS_PATTERN = "../node_modules/@bigbinary/**/translations/en.json";
6719
+ const PROJECT_TRANSLATIONS_PATH = "../app/javascript/src/translations/en.json";
6720
+ const CREDENTIALS = {
6721
+ name: "Oliver Smith",
6722
+ email: "oliver@example.com",
6723
+ password: "welcome",
6724
+ };
6725
+
6833
6726
  const joinString = (string1, string2, string3 = "", separator = " ") => {
6834
6727
  if (string3 === "") {
6835
6728
  return string1 + separator + string2;
@@ -6874,6 +6767,166 @@ const readTranslations = () => {
6874
6767
  });
6875
6768
  return translations;
6876
6769
  };
6770
+ const hyphenize = input => {
6771
+ const fallbackString = "";
6772
+ if (typeof input === "number")
6773
+ return String(input);
6774
+ if (input && typeof input === "string" && input.replace) {
6775
+ return input
6776
+ .replace(/[\s_]/g, "-")
6777
+ .replace(/([a-z])([A-Z])/g, "$1-$2")
6778
+ .replace(/-+/g, "-")
6779
+ .toLowerCase();
6780
+ }
6781
+ return fallbackString;
6782
+ };
6783
+ const joinHyphenCase = (...args) => args.join(" ").replace(/\s+/g, "-").toLowerCase();
6784
+
6785
+ const COMMON_SELECTORS = {
6786
+ spinner: ".neeto-ui-spinner",
6787
+ subheaderText: "subheader-left",
6788
+ alertTitle: "alert-title",
6789
+ alertModalMessage: "alert-message",
6790
+ alertModalSubmitButton: "alert-submit-button",
6791
+ checkbox: "nui-checkbox-input",
6792
+ checkboxLabel: "nui-checkbox-label",
6793
+ dropdownContainer: "nui-dropdown-container",
6794
+ dropdownIcon: "nui-dropdown-icon",
6795
+ heading: "main-header",
6796
+ paneBody: "pane-body",
6797
+ paneHeader: "pane-header",
6798
+ profileSidebar: "profile-section",
6799
+ selectOption: (label) => `${hyphenize(label)}-select-option`,
6800
+ toastMessage: "toastr-message-container",
6801
+ toastCloseButton: "toastr-close-button",
6802
+ windowAlert: "#alert-box",
6803
+ body: "body",
6804
+ toastIcon: ".Toastify__toast-icon",
6805
+ paneModalCrossIcon: "pane-close-button",
6806
+ inputField: "nui-input-field",
6807
+ alertConfirmationText: "alert-confirmation-text",
6808
+ alertCancelButton: "alert-cancel-button",
6809
+ alertModalCrossIcon: "modal-close-button",
6810
+ saveChangesButton: "save-changes-button",
6811
+ cancelButton: "cancel-button",
6812
+ inputFieldError: "nui-input-error",
6813
+ selectDropDownError: "nui-select-error",
6814
+ subTitleHeading: "menubar-subtitle-heading",
6815
+ noDataTitle: "no-data-title",
6816
+ noDataDescription: "no-data-description",
6817
+ backdrop: "neeto-backdrop",
6818
+ menuBarHeading: "menubar-heading",
6819
+ dropdownWrapper: "nui-select-container-wrapper",
6820
+ toggleButton: "menubar-toggle-button",
6821
+ tooltip: "tooltip-box",
6822
+ articlePageTitle: ".serene-article__title",
6823
+ tabItem: "tab-item",
6824
+ labelInputError: "label-input-error",
6825
+ urlInputError: "url-input-error",
6826
+ noDataPrimaryButton: "no-data-primary-button",
6827
+ modalHeader: "modal-header",
6828
+ nameInputError: "name-input-error",
6829
+ selectContainer: "nui-select-container",
6830
+ dropdownMenu: "nui-select-menu",
6831
+ sidebarToggle: "neeto-molecules-sidebar-toggler",
6832
+ subheader: "subheader",
6833
+ settingsLink: "Settings",
6834
+ ticketFieldTextInput: (label) => `${hyphenize(label)}-text-input`,
6835
+ };
6836
+
6837
+ class CustomCommands {
6838
+ constructor(page, request) {
6839
+ this.interceptMultipleResponses = ({ responseUrl = "", times = 1, baseUrl, }) => Promise.all([...new Array(times)].map(() => this.page.waitForResponse((response) => {
6840
+ var _a, _b, _c;
6841
+ if (response.request().resourceType() === "xhr" &&
6842
+ response.status() === 200 &&
6843
+ response.url().includes(responseUrl) &&
6844
+ response
6845
+ .url()
6846
+ .startsWith((_a = baseUrl !== null && baseUrl !== void 0 ? baseUrl : process.env.BASE_URL) !== null && _a !== void 0 ? _a : "") &&
6847
+ !this.responses.includes((_b = response.headers()) === null || _b === void 0 ? void 0 : _b["x-request-id"])) {
6848
+ this.responses.push((_c = response.headers()) === null || _c === void 0 ? void 0 : _c["x-request-id"]);
6849
+ return true;
6850
+ }
6851
+ return false;
6852
+ }, { timeout: 10000 })));
6853
+ this.recursiveMethod = async (callback, condition, timeout, startTime) => {
6854
+ if (Date.now() - timeout >= startTime) {
6855
+ return false;
6856
+ }
6857
+ else if (await condition()) {
6858
+ return await callback();
6859
+ }
6860
+ return await this.recursiveMethod(callback, condition, timeout, startTime);
6861
+ };
6862
+ this.executeRecursively = async ({ callback, condition, timeout = 5000, }) => {
6863
+ const startTime = Date.now();
6864
+ await this.recursiveMethod(callback, condition, timeout, startTime);
6865
+ };
6866
+ this.verifySuccessToast = async ({ message, closeAfterVerification = true, }) => {
6867
+ if (message) {
6868
+ await expect(this.page.getByTestId(COMMON_SELECTORS.toastMessage)).toHaveValue(message);
6869
+ }
6870
+ else {
6871
+ await expect(this.page.locator(COMMON_SELECTORS.toastIcon)).toHaveValue("👍");
6872
+ closeAfterVerification &&
6873
+ (await this.page
6874
+ .getByTestId(COMMON_SELECTORS.toastCloseButton)
6875
+ .click());
6876
+ }
6877
+ };
6878
+ this.reloadAndWait = async (requestCount) => {
6879
+ const reloadRequests = this.interceptMultipleResponses({
6880
+ times: requestCount,
6881
+ });
6882
+ await this.page.reload();
6883
+ await reloadRequests;
6884
+ };
6885
+ this.apiRequest = async ({ url, headers: additionalHeaders, body: data, method = "get", params = {}, ...otherOptions }) => {
6886
+ const csrfToken = await this.page
6887
+ .locator("[name='csrf-token']")
6888
+ .getAttribute("content");
6889
+ const requestOptions = {
6890
+ headers: {
6891
+ ...additionalHeaders,
6892
+ "accept-encoding": "gzip",
6893
+ "x-csrf-token": csrfToken !== null && csrfToken !== void 0 ? csrfToken : "",
6894
+ },
6895
+ data,
6896
+ params,
6897
+ ...otherOptions,
6898
+ };
6899
+ const httpMethodsHandlers = {
6900
+ get: () => this.request.get(url, requestOptions),
6901
+ post: () => this.request.post(url, requestOptions),
6902
+ put: () => this.request.put(url, requestOptions),
6903
+ delete: () => this.request.delete(url, requestOptions),
6904
+ };
6905
+ return await httpMethodsHandlers[method]();
6906
+ };
6907
+ this.verifyFieldValue = values => {
6908
+ const verifyEachFieldValue = ({ field, value, }) => expect(this.page.getByTestId(field)).toHaveValue(value);
6909
+ return Array.isArray(values)
6910
+ ? Promise.all(values.map(value => verifyEachFieldValue(value)))
6911
+ : verifyEachFieldValue(values);
6912
+ };
6913
+ this.page = page;
6914
+ this.responses = [];
6915
+ this.request = request;
6916
+ }
6917
+ }
6918
+
6919
+ const commands = {
6920
+ neetoPlaywrightUtilities: async ({ page, request }, use) => {
6921
+ const commands = new CustomCommands(page, request);
6922
+ await use(commands);
6923
+ },
6924
+ page: async ({ page }, use) => {
6925
+ await page.goto("/");
6926
+ await page.waitForLoadState();
6927
+ await use(page);
6928
+ },
6929
+ };
6877
6930
 
6878
6931
  const generateStagingData = (product = "invoice") => {
6879
6932
  const timestamp = dayjs().format("YYYYMMDDHH");
@@ -6915,12 +6968,19 @@ const i18n = {
6915
6968
  const BASE_URL = "/api/v1";
6916
6969
  const ROUTES = {
6917
6970
  neetoAuth: "https://app.neetoauth.net",
6971
+ neetoAuthSignup: "https://app.neetoauth.net/signups/new",
6918
6972
  profile: "/profile",
6919
6973
  login: `${BASE_URL}/login`,
6920
6974
  signup: `${BASE_URL}/signups`,
6921
6975
  subdomainAvailability: `${BASE_URL}/subdomain_availability`,
6922
6976
  countries: `${BASE_URL}/countries`,
6923
6977
  neetoApps: `${BASE_URL}/neeto_apps`,
6978
+ teamMembers: {
6979
+ all: "/team_members*/**",
6980
+ bulkUpdate: "/team_members/teams/bulk_update",
6981
+ index: "/team_members/teams",
6982
+ show: (id) => `/team_members/teams/${id}`,
6983
+ },
6924
6984
  };
6925
6985
 
6926
6986
  const SIGNUP_SELECTORS = {
@@ -6952,10 +7012,9 @@ class OrganizationPage {
6952
7012
  const defaultOtp = "123456";
6953
7013
  const appNameInLowerCase = appName.toLowerCase();
6954
7014
  const isNeetoAuth = appNameInLowerCase === "neetoauth";
6955
- const authUrl = "https://app.neetoauth.net/signups/new";
6956
7015
  isNeetoAuth
6957
- ? await this.page.goto(authUrl)
6958
- : await this.page.goto(`${authUrl}?redirect_uri=${appNameInLowerCase}.net`);
7016
+ ? await this.page.goto(ROUTES.neetoAuthSignup)
7017
+ : await this.page.goto(`${ROUTES.neetoAuthSignup}?redirect_uri=${appNameInLowerCase}.net`);
6959
7018
  await this.page.getByTestId(SIGNUP_SELECTORS.emailTextField).fill(email);
6960
7019
  const signup = this.neetoPlaywrightUtilities.interceptMultipleResponses({
6961
7020
  responseUrl: ROUTES.signup,
@@ -7057,6 +7116,62 @@ class OrganizationPage {
7057
7116
  }
7058
7117
  }
7059
7118
 
7119
+ const NEETO_EDITOR_SELECTORS = {
7120
+ boldOption: "neeto-editor-fixed-menu-bold-option",
7121
+ italicOption: "neeto-editor-fixed-menu-italic-option",
7122
+ underlineOption: "neeto-editor-fixed-menu-underline-option",
7123
+ strikeOption: "neeto-editor-fixed-menu-strike-option",
7124
+ codeBlockOption: "neeto-editor-fixed-menu-code-option",
7125
+ highlightOption: "neeto-editor-fixed-menu-highlight-option",
7126
+ linkInput: "neeto-editor-fixed-menu-link-option-input",
7127
+ linkSubmitButton: "neeto-editor-fixed-menu-link-option-link-button",
7128
+ commandList: (index) => `neeto-editor-command-list-item-${index}`,
7129
+ imageUploadUrlSubmitButton: "neeto-editor-media-upload-url-submit",
7130
+ imageUploadUrlInputTextField: "neeto-editor-media-upload-url-input",
7131
+ uploadInput: "neeto-editor-media-uploader-input",
7132
+ editorMenuBarWrapper: "neeto-editor-fixed-menu-wrapper",
7133
+ undoOption: "neeto-editor-fixed-menu-undo-option",
7134
+ redoOption: "neeto-editor-fixed-menu-redo-option",
7135
+ imageWrapper: "neeto-editor-image-wrapper",
7136
+ };
7137
+
7138
+ const NEETO_FILTERS_SELECTORS = {
7139
+ emailSelectContainer: "email-select-container-wrapper",
7140
+ filterPaneHeading: "neeto-filters-pane-header",
7141
+ neetoFiltersEmailBlock: "neeto-filters-email-block",
7142
+ neetoFiltersRoleBlock: "neeto-filters-role-block",
7143
+ neetoFiltersBarClearButton: "neeto-filters-bar-clear-btn",
7144
+ neetoFiltersNameFilterField: "neeto-filters-name-filter",
7145
+ neetoFilterNameBlock: "neeto-filters-name-block",
7146
+ roleSelectContainer: "role-select-container-wrapper",
7147
+ filterButton: "neeto-filters-toggle-btn",
7148
+ filtersClearButton: "neeto-filters-clear-btn",
7149
+ filterDoneButton: "neeto-filters-done-btn",
7150
+ filteredMembersCount: "ntm-filtered-members-count",
7151
+ allMenubarBlock: "ntm-members-menubar-all-block",
7152
+ filtersEmailFilter: "neeto-filters-email-filter",
7153
+ paneModalCrossIcon: "neeto-filters-close-button",
7154
+ };
7155
+
7156
+ const HELP_CENTER_SELECTORS = {
7157
+ helpButton: "help-button",
7158
+ documentationButton: "help-link-help-center-button",
7159
+ keyboardShortcutButton: "help-link-keyboard-shortcut-button",
7160
+ chatButton: "help-link-live-chat-button",
7161
+ whatsNewButton: "help-link-changelog-button",
7162
+ whatsNewWidgetInfo: "h1",
7163
+ whatsNewWidgetCloseButton: ".nc-widget-header__btn",
7164
+ keyboardShortcutPaneHeading: "keyboard-shortcuts-pane-title",
7165
+ keyboardShortcutPaneCrossIcon: "keyboard-shortcuts-pane-close-button",
7166
+ };
7167
+ const CHAT_WIDGET_SELECTORS = {
7168
+ chatWidgetHomeCard: "neeto-chat-widget-cta-title",
7169
+ widgetSubmitButton: "neeto-chat-widget-pre-chat-submit-btn",
7170
+ chatBubbleMessage: "neeto-chat-widget-chat-message-bubble",
7171
+ chatCloseButton: ".neeto-chat-widget-icon--close",
7172
+ widgetIframe: "#neetochat-iframe",
7173
+ };
7174
+
7060
7175
  const LOGIN_SELECTORS = {
7061
7176
  appleAuthenticationButton: "apple-authentication-button",
7062
7177
  emailTextField: "login-email-text-field",
@@ -7069,7 +7184,77 @@ const LOGIN_SELECTORS = {
7069
7184
  twitterAuthenticationButton: "twitter-authentication-button",
7070
7185
  };
7071
7186
 
7072
- const COMMON_TEXTS = { edit: "Edit" };
7187
+ const MEMBER_SELECTORS = {
7188
+ membersTab: "members-nav-tab",
7189
+ newButton: "ntm-add-member-button",
7190
+ continueButton: "ntm-manage-member-continue-button",
7191
+ submitButton: "ntm-manage-member-submit-button",
7192
+ searchTextField: "ntm-search-members-input",
7193
+ deactivatedAgentsButton: "ntm-members-menubar-deactivated-block",
7194
+ activatedMembersButton: "ntm-members-menubar-active-block",
7195
+ columnCheckBox: "neeto-ui-columns-checkbox",
7196
+ roleLabel: (role) => `${joinHyphenCase(role)}-radio-label`,
7197
+ dropDownIcon: "ntm-members-table-row-dropdown-button",
7198
+ editButton: "ntm-edit-member-button",
7199
+ menuBarHeading: "ntm-members-menubar-heading",
7200
+ activateOrDeactivateMember: "ntm-deactivate-member-button",
7201
+ columnsButton: "columns-dropdown-button",
7202
+ columnsDropdownContainer: "columns-dropdown-container",
7203
+ emailDropdownItemLabel: "email-checkbox-label",
7204
+ roleDropdownItemLabel: "role-checkbox-label",
7205
+ inviteStatusDropdownItemLabel: "invite-status-checkbox-label",
7206
+ heading: "ntm-manage-members-pane-header",
7207
+ activateButton: "ntm-activate-members-button",
7208
+ deactivateButton: "ntm-deactivate-members-button",
7209
+ rolesButton: "ntm-manage-member-roles-button",
7210
+ statusTag: "ntm-member-status-tag",
7211
+ };
7212
+ const MEMBER_FORM_SELECTORS = {
7213
+ emailTextField: "email-select-input-field",
7214
+ firstNameTextField: "ntm-edit-member-first-name-text-field",
7215
+ lastNameTextField: "ntm-edit-member-last-name-text-field",
7216
+ emailInput: "ntm-manage-member-email-input",
7217
+ emailErrorField: "emails-input-error",
7218
+ cancelButton: "ntm-manage-member-cancel-button",
7219
+ };
7220
+
7221
+ const ROLES_SELECTORS = {
7222
+ newButton: "ntm-add-role-button",
7223
+ proceedButton: "ntm-add-role-submit-button",
7224
+ cancelButton: "ntm-add-role-cancel-button",
7225
+ tableHeaderRoleName: "ntm-roles-table-role-header",
7226
+ nameTextField: "ntm-add-role-name-text-field",
7227
+ searchTextField: "ntm-search-roles-input",
7228
+ updateRolePaneHeading: "ntm-add-role-title",
7229
+ updateRoleCancelButton: "ntm-add-role-cancel-button",
7230
+ descriptionTextField: "ntm-add-role-description-text-field",
7231
+ permissionCategoryTitle: "ntm-roles-permission-category-title",
7232
+ headerColumn: "ntm-roles-table-header",
7233
+ dropDownIcon: "ntm-roles-table-header-role-dropdown-button",
7234
+ tableHeaderRoleTitle: "ntm-roles-table-header-role-title",
7235
+ };
7236
+
7237
+ const TAGS_SELECTORS = {
7238
+ newTagButton: "add-new-tag-button",
7239
+ tagNameTextField: "tag-name-text-field",
7240
+ editButton: "tags-edit-button",
7241
+ deleteButton: "tags-delete-button",
7242
+ cancelButton: "neeto-tags-manage-tag-cancel-button",
7243
+ submitButton: "neeto-tags-manage-tag-submit-button",
7244
+ searchTextField: "neeto-tags-search-text-input-field",
7245
+ descriptionTextArea: "tag-description-text-area",
7246
+ };
7247
+ const MERGE_TAGS_SELECTORS = {
7248
+ mergeTagsButton: "neeto-tags-merge-tags-button",
7249
+ mergeButton: "neeto-tags-merge-button",
7250
+ sourceSearchTextField: "neeto-tags-merge-source-search-text-input-field",
7251
+ sourceTagsList: "neeto-tags-merge-source-tags-list",
7252
+ destinationTagsList: "neeto-tags-merge-destination-tags-list",
7253
+ destinationSearchTextField: "neeto-tags-merge-destination-search-text-input-field",
7254
+ cancelButton: "neeto-tags-merge-cancel-button",
7255
+ proceedButton: "neeto-tags-merge-proceed-button",
7256
+ disabledTag: ".neeto-ui-cursor-not-allowed",
7257
+ };
7073
7258
 
7074
7259
  const initializeCredentials = (product) => {
7075
7260
  const { user } = readFileSyncIfExists();
@@ -7562,5 +7747,5 @@ const definePlaywrightConfig = (overrides) => {
7562
7747
  });
7563
7748
  };
7564
7749
 
7565
- export { BASE_URL, COMMON_SELECTORS, COMMON_TEXTS, CREDENTIALS, CustomCommands, ENVIRONMENT, GLOBAL_TRANSLATIONS_PATTERN, IS_STAGING_ENV, LOGIN_SELECTORS, OrganizationPage, PROJECT_TRANSLATIONS_PATH, ROUTES, SIGNUP_SELECTORS, STORAGE_STATE, clearCredentials, commands, definePlaywrightConfig, generateStagingData, i18n, initializeCredentials, joinString, login, loginWithoutSSO, readFileSyncIfExists, readTranslations, updateCredentials, writeDataToFile };
7750
+ 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, i18n, initializeCredentials, joinHyphenCase, joinString, login, loginWithoutSSO, readFileSyncIfExists, readTranslations, updateCredentials, writeDataToFile };
7566
7751
  //# sourceMappingURL=index.js.map