d5-testing-library 1.9.0-alpha.21 → 1.9.0-alpha.23

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.
@@ -132,6 +132,9 @@ var init_AbstractElement = __esm({
132
132
  async getDataTestId() {
133
133
  return await this.getAttribute("data-testid");
134
134
  }
135
+ async getDataDateMode() {
136
+ return await this.getAttribute("data-datemode");
137
+ }
135
138
  };
136
139
  }
137
140
  });
@@ -781,7 +784,7 @@ var init_BooleanSelector = __esm({
781
784
  });
782
785
 
783
786
  // src/pageObjects/elements/Editors/Date/utils.ts
784
- var formatDMYDate, formatToDateTime;
787
+ var formatDMYDate, formatToDateTime, getYearMonthDay;
785
788
  var init_utils = __esm({
786
789
  "src/pageObjects/elements/Editors/Date/utils.ts"() {
787
790
  "use strict";
@@ -800,16 +803,38 @@ var init_utils = __esm({
800
803
  const [hours, minutes] = timePart.split(":").map(Number);
801
804
  return new Date(year, month - 1, day, hours, minutes, 0, 0);
802
805
  };
806
+ getYearMonthDay = (date) => {
807
+ const [year, month, day] = date.toISOString().split("T")[0].split("-");
808
+ return { year: +year, month: +month, day: +day };
809
+ };
803
810
  }
804
811
  });
805
812
 
806
- // src/pageObjects/elements/Editors/Date/BaseDateEditor.ts
807
- var import_selenium_webdriver12, BTN_CALENDAR_POPOVER_OPEN_SELECTOR, BTN_CALENDAR_POPOVER_DATE_FROM_INPUT_SELECTOR, BTN_CALENDAR_POPOVER_DATE_TO_INPUT_SELECTOR, BTN_SAVE_SELECTOR, DATETIME_ALLOWED_SELECTOR, BaseDateEditor;
808
- var init_BaseDateEditor = __esm({
809
- "src/pageObjects/elements/Editors/Date/BaseDateEditor.ts"() {
813
+ // src/pageObjects/elements/Editors/Date/DateSelectMode.ts
814
+ var DateSelectMode;
815
+ var init_DateSelectMode = __esm({
816
+ "src/pageObjects/elements/Editors/Date/DateSelectMode.ts"() {
810
817
  "use strict";
811
- init_AbstractEditor();
812
- init_InputClearStrategy();
818
+ DateSelectMode = class {
819
+ static isWeek(t) {
820
+ return t === "week" /* Week */;
821
+ }
822
+ static isMonth(t) {
823
+ return t === "month" /* Month */;
824
+ }
825
+ static isWeekOrMonth(t) {
826
+ return this.isWeek(t) || this.isMonth(t);
827
+ }
828
+ };
829
+ }
830
+ });
831
+
832
+ // src/pageObjects/elements/Editors/Date/Calendar.ts
833
+ var import_selenium_webdriver12, BTN_CALENDAR_POPOVER_OPEN_SELECTOR, BTN_CALENDAR_POPOVER_DATE_FROM_INPUT_SELECTOR, BTN_CALENDAR_POPOVER_DATE_TO_INPUT_SELECTOR, BTN_SAVE_SELECTOR, CALENDAR_CAPTION_SELECTOR, CALENDAR_CELL_SELECTOR, CALENDAR_PREVIOUS_SELECTOR, CALENDAR_NEXT_SELECTOR, TEXT_EDITOR_SELECTOR, movesToCalendarEndForWeek, movesToCalendarEndForMonth, Calendar;
834
+ var init_Calendar = __esm({
835
+ "src/pageObjects/elements/Editors/Date/Calendar.ts"() {
836
+ "use strict";
837
+ init_AbstractElementWithParent();
813
838
  import_selenium_webdriver12 = require("selenium-webdriver");
814
839
  init_locators();
815
840
  init_actions();
@@ -818,6 +843,191 @@ var init_BaseDateEditor = __esm({
818
843
  BTN_CALENDAR_POPOVER_DATE_FROM_INPUT_SELECTOR = "DateRange__inputs-item--dateFrom";
819
844
  BTN_CALENDAR_POPOVER_DATE_TO_INPUT_SELECTOR = "DateRange__inputs-item--dateTo";
820
845
  BTN_SAVE_SELECTOR = "DateRange__button-save";
846
+ CALENDAR_CAPTION_SELECTOR = "dx-calendar-caption-button";
847
+ CALENDAR_CELL_SELECTOR = "dx-calendar-cell";
848
+ CALENDAR_PREVIOUS_SELECTOR = "dx-calendar-navigator-previous-month";
849
+ CALENDAR_NEXT_SELECTOR = "dx-calendar-navigator-next-month";
850
+ TEXT_EDITOR_SELECTOR = "dx-texteditor-input";
851
+ movesToCalendarEndForWeek = 3;
852
+ movesToCalendarEndForMonth = 1;
853
+ Calendar = class extends AbstractElementWithParent {
854
+ _parentCssSelector;
855
+ constructor({ parentCssSelector, dateFieldDataTestID, driver }) {
856
+ super("", byTestIdCssSelector(`${dateFieldDataTestID}-calendar-popover`), driver);
857
+ this._parentCssSelector = parentCssSelector;
858
+ }
859
+ async init() {
860
+ const dateField = await this.driver.findElement(import_selenium_webdriver12.By.css(this._parentCssSelector));
861
+ const button = await dateField.findElement(import_selenium_webdriver12.By.css(`.${BTN_CALENDAR_POPOVER_OPEN_SELECTOR}`));
862
+ await click(button, this.driver);
863
+ }
864
+ /**
865
+ * Переходимо на найвищий рівень календаря
866
+ */
867
+ async moveToCalendarEnd(count) {
868
+ while (count >= 0) {
869
+ const calendarElement = await this.getElement();
870
+ const button = await calendarElement.findElement(import_selenium_webdriver12.By.css(`.${CALENDAR_CAPTION_SELECTOR}`));
871
+ await click(button, this.driver);
872
+ count--;
873
+ }
874
+ }
875
+ /**
876
+ * Пошук та клік по правильному періоду (2010-2019, 2020-2029, і т.д.)
877
+ */
878
+ async choosePeriodForYear(targetYear) {
879
+ let found = false;
880
+ while (!found) {
881
+ const calendarElement = await this.getElement();
882
+ const periodCells = await calendarElement.findElements(import_selenium_webdriver12.By.css(`.${CALENDAR_CELL_SELECTOR} span`));
883
+ for (const cell of periodCells) {
884
+ const text = await cell.getText();
885
+ if (text) {
886
+ const [start, end] = text.split("-").map(Number);
887
+ if (targetYear >= start && targetYear <= end) {
888
+ await click(cell, this.driver);
889
+ found = true;
890
+ break;
891
+ }
892
+ }
893
+ }
894
+ if (!found) {
895
+ const firstPeriod = await periodCells[0].getText();
896
+ const [start] = firstPeriod.split("-").map(Number);
897
+ if (targetYear < start) {
898
+ const prevBtn = await calendarElement.findElement(import_selenium_webdriver12.By.css(`.${CALENDAR_PREVIOUS_SELECTOR}`));
899
+ await click(prevBtn, this.driver);
900
+ } else {
901
+ const nextBtn = await calendarElement.findElement(import_selenium_webdriver12.By.css(`.${CALENDAR_NEXT_SELECTOR}`));
902
+ await click(nextBtn, this.driver);
903
+ }
904
+ }
905
+ }
906
+ }
907
+ /**
908
+ * Пошук та клік по конкретному року з навігацією
909
+ */
910
+ async chooseYear(targetYear) {
911
+ let found = false;
912
+ while (!found) {
913
+ const calendarElement = await this.getElement();
914
+ const yearCells = await calendarElement.findElements(import_selenium_webdriver12.By.css(`.${CALENDAR_CELL_SELECTOR} span`));
915
+ for (const cell of yearCells) {
916
+ const text = await cell.getText();
917
+ const cellYear = Number(text);
918
+ if (!isNaN(cellYear) && cellYear === targetYear) {
919
+ await click(cell, this.driver);
920
+ found = true;
921
+ break;
922
+ }
923
+ }
924
+ if (!found) {
925
+ const firstYearText = await yearCells[0].getText();
926
+ const lastYearText = await yearCells[yearCells.length - 1].getText();
927
+ const firstYear = Number(firstYearText);
928
+ const lastYear = Number(lastYearText);
929
+ if (targetYear < firstYear) {
930
+ const prevBtn = await calendarElement.findElement(import_selenium_webdriver12.By.css(`.${CALENDAR_PREVIOUS_SELECTOR}`));
931
+ await click(prevBtn, this.driver);
932
+ } else if (targetYear > lastYear) {
933
+ const nextBtn = await calendarElement.findElement(import_selenium_webdriver12.By.css(`.${CALENDAR_NEXT_SELECTOR}`));
934
+ await click(nextBtn, this.driver);
935
+ } else {
936
+ throw new Error(`Year ${targetYear} is not in the visible range but navigation failed`);
937
+ }
938
+ }
939
+ }
940
+ }
941
+ /**
942
+ * Пошук та клік по конкретному місяцю
943
+ */
944
+ async chooseMonth(year, month) {
945
+ const calendarElement = await this.getElement();
946
+ const monthCells = await calendarElement.findElements(import_selenium_webdriver12.By.css(`.${CALENDAR_CELL_SELECTOR}`));
947
+ for (const cell of monthCells) {
948
+ const dataValue = await cell.getAttribute("data-value");
949
+ if (dataValue) {
950
+ const [cellYear, cellMonth] = dataValue.split("/").map(Number);
951
+ if (cellYear === year && cellMonth === month) {
952
+ await click(cell, this.driver);
953
+ return;
954
+ }
955
+ }
956
+ }
957
+ throw new Error(`Month ${month} for year ${year} not found`);
958
+ }
959
+ /**
960
+ * Пошук та клік по конкретному дню (ігноруємо дні з іншого місяця)
961
+ */
962
+ async chooseDay(year, month, day) {
963
+ const calendarElement = await this.getElement();
964
+ const dayCells = await calendarElement.findElements(import_selenium_webdriver12.By.css(`.${CALENDAR_CELL_SELECTOR}`));
965
+ for (const cell of dayCells) {
966
+ const dataValue = await cell.getAttribute("data-value");
967
+ if (dataValue) {
968
+ const [cellYear, cellMonth, cellDay] = dataValue.split("/").map(Number);
969
+ if (cellYear === year && cellMonth === month && cellDay === day) {
970
+ await click(cell, this.driver);
971
+ return;
972
+ }
973
+ }
974
+ }
975
+ throw new Error(`Day ${day}.${month}.${year} not found`);
976
+ }
977
+ /**
978
+ * Встановлення дати для тижня
979
+ */
980
+ async setValueForWeek(date) {
981
+ const { year, month, day } = getYearMonthDay(date);
982
+ await this.moveToCalendarEnd(movesToCalendarEndForWeek);
983
+ await this.choosePeriodForYear(year);
984
+ await this.chooseYear(year);
985
+ await this.chooseMonth(year, month);
986
+ await this.chooseDay(year, month, day);
987
+ await this.save();
988
+ }
989
+ /**
990
+ * Встановлення дати для місяця
991
+ */
992
+ async setValueForMonth(date) {
993
+ const { year, month } = getYearMonthDay(date);
994
+ await this.moveToCalendarEnd(movesToCalendarEndForMonth);
995
+ await this.chooseYear(year);
996
+ await this.chooseMonth(year, month);
997
+ await this.save();
998
+ }
999
+ async getDateFromInput() {
1000
+ const calendarPopoverElement = await this.getElement();
1001
+ return calendarPopoverElement.findElement(
1002
+ import_selenium_webdriver12.By.css(`.${BTN_CALENDAR_POPOVER_DATE_FROM_INPUT_SELECTOR} .${TEXT_EDITOR_SELECTOR}`)
1003
+ );
1004
+ }
1005
+ async getDateToInput() {
1006
+ const calendarPopoverElement = await this.getElement();
1007
+ return calendarPopoverElement.findElement(
1008
+ import_selenium_webdriver12.By.css(`.${BTN_CALENDAR_POPOVER_DATE_TO_INPUT_SELECTOR} .${TEXT_EDITOR_SELECTOR}`)
1009
+ );
1010
+ }
1011
+ async save() {
1012
+ const btnOk = await this.driver.findElement(import_selenium_webdriver12.By.css(`.${BTN_SAVE_SELECTOR}`));
1013
+ await click(btnOk, this.driver);
1014
+ }
1015
+ };
1016
+ }
1017
+ });
1018
+
1019
+ // src/pageObjects/elements/Editors/Date/BaseDateEditor.ts
1020
+ var import_selenium_webdriver13, DATETIME_ALLOWED_SELECTOR, BaseDateEditor;
1021
+ var init_BaseDateEditor = __esm({
1022
+ "src/pageObjects/elements/Editors/Date/BaseDateEditor.ts"() {
1023
+ "use strict";
1024
+ init_AbstractEditor();
1025
+ init_InputClearStrategy();
1026
+ import_selenium_webdriver13 = require("selenium-webdriver");
1027
+ init_actions();
1028
+ init_utils();
1029
+ init_DateSelectMode();
1030
+ init_Calendar();
821
1031
  DATETIME_ALLOWED_SELECTOR = "dx-datebox-datetime";
822
1032
  BaseDateEditor = class extends AbstractDXEditorWithInput {
823
1033
  constructor(parentCssSelector, elementCssSelector, driver) {
@@ -825,34 +1035,52 @@ var init_BaseDateEditor = __esm({
825
1035
  this.setClearStrategy(new InputClearStrategy());
826
1036
  }
827
1037
  async getIsAllowedTime() {
828
- const dateField = await this.driver.findElement(import_selenium_webdriver12.By.css(`${this.getFullCssSelector()}`));
1038
+ const dateField = await this.driver.findElement(import_selenium_webdriver13.By.css(`${this.getFullCssSelector()}`));
829
1039
  const classString = await dateField.getAttribute("class");
830
1040
  return classString.includes(DATETIME_ALLOWED_SELECTOR);
831
1041
  }
832
- async setArrayValue(value) {
833
- const dateField = await this.driver.findElement(import_selenium_webdriver12.By.css(`${this.getFullCssSelector()}`));
1042
+ async initCalendar() {
834
1043
  const dateFieldDataTestID = await this.getDataTestId();
835
- const button = await dateField.findElement(import_selenium_webdriver12.By.css(`.${BTN_CALENDAR_POPOVER_OPEN_SELECTOR}`));
836
- await click(button, this.driver);
837
- const calendarPopoverElement = await this.driver.findElement(import_selenium_webdriver12.By.css(byTestIdCssSelector(`${dateFieldDataTestID}-calendar-popover`)));
838
- const dateFromInput = await calendarPopoverElement.findElement(
839
- import_selenium_webdriver12.By.css(`.${BTN_CALENDAR_POPOVER_DATE_FROM_INPUT_SELECTOR} .dx-texteditor-input`)
840
- );
841
- const dateToInput = await calendarPopoverElement.findElement(
842
- import_selenium_webdriver12.By.css(`.${BTN_CALENDAR_POPOVER_DATE_TO_INPUT_SELECTOR} .dx-texteditor-input`)
843
- );
1044
+ const calendar = new Calendar({
1045
+ parentCssSelector: this.getFullCssSelector(),
1046
+ dateFieldDataTestID,
1047
+ driver: this.driver
1048
+ });
1049
+ await calendar.init();
1050
+ return calendar;
1051
+ }
1052
+ async setValueForWeek(value) {
1053
+ const calendar = await this.initCalendar();
1054
+ await calendar.setValueForWeek(value);
1055
+ }
1056
+ async setValueForMonth(value) {
1057
+ const calendar = await this.initCalendar();
1058
+ await calendar.setValueForMonth(value);
1059
+ }
1060
+ async setArrayValue(value) {
1061
+ const calendar = await this.initCalendar();
1062
+ const dateFromInput = await calendar.getDateFromInput();
1063
+ const dateToInput = await calendar.getDateToInput();
844
1064
  await this.setSingleValue(value[0], dateFromInput);
845
1065
  await this.setSingleValue(value[1], dateToInput);
846
- const btnOk = await this.driver.findElement(import_selenium_webdriver12.By.css(`.${BTN_SAVE_SELECTOR}`));
847
- await click(btnOk, this.driver);
1066
+ await calendar.save();
848
1067
  }
849
1068
  async setSingleValue(value, inputEl) {
1069
+ const dateMode = await this.getDataDateMode();
1070
+ if (DateSelectMode.isWeek(dateMode)) {
1071
+ await this.setValueForWeek(value);
1072
+ return;
1073
+ }
1074
+ if (DateSelectMode.isMonth(dateMode)) {
1075
+ await this.setValueForMonth(value);
1076
+ return;
1077
+ }
850
1078
  const actions = this.driver.actions({ async: true });
851
1079
  const isTimeAllowed = await this.getIsAllowedTime();
852
1080
  const formattedDate = formatDMYDate(value, isTimeAllowed);
853
1081
  await click(inputEl, this.driver);
854
- await actions.move({ origin: inputEl }).sendKeys(import_selenium_webdriver12.Key.HOME).perform();
855
- await actions.move({ origin: inputEl }).sendKeys(formattedDate, import_selenium_webdriver12.Key.ENTER).perform();
1082
+ await actions.move({ origin: inputEl }).sendKeys(import_selenium_webdriver13.Key.HOME).perform();
1083
+ await actions.move({ origin: inputEl }).sendKeys(formattedDate, import_selenium_webdriver13.Key.ENTER).perform();
856
1084
  }
857
1085
  async setDateValue(value) {
858
1086
  if (Array.isArray(value)) {
@@ -866,11 +1094,11 @@ var init_BaseDateEditor = __esm({
866
1094
  });
867
1095
 
868
1096
  // src/pageObjects/elements/Editors/Date/SingleDateEditor.ts
869
- var import_selenium_webdriver13, SingleDateEditor;
1097
+ var import_selenium_webdriver14, SingleDateEditor;
870
1098
  var init_SingleDateEditor = __esm({
871
1099
  "src/pageObjects/elements/Editors/Date/SingleDateEditor.ts"() {
872
1100
  "use strict";
873
- import_selenium_webdriver13 = require("selenium-webdriver");
1101
+ import_selenium_webdriver14 = require("selenium-webdriver");
874
1102
  init_InputClearStrategy();
875
1103
  init_BaseDateEditor();
876
1104
  init_utils();
@@ -880,7 +1108,7 @@ var init_SingleDateEditor = __esm({
880
1108
  this.setClearStrategy(new InputClearStrategy());
881
1109
  }
882
1110
  async getDateElement() {
883
- return this.driver.findElement(import_selenium_webdriver13.By.css(this.getFullCssSelector() + " .dx-dropdowneditor-input-wrapper input[type=hidden]"));
1111
+ return this.driver.findElement(import_selenium_webdriver14.By.css(this.getFullCssSelector() + " .dx-dropdowneditor-input-wrapper input[type=hidden]"));
884
1112
  }
885
1113
  async getDateValue() {
886
1114
  const inputEl = await this.getDateElement();
@@ -905,11 +1133,11 @@ var init_SingleDateEditor = __esm({
905
1133
  });
906
1134
 
907
1135
  // src/pageObjects/elements/Editors/Date/DateRangeEditor.ts
908
- var import_selenium_webdriver14, DateRangeEditor;
1136
+ var import_selenium_webdriver15, DateRangeEditor;
909
1137
  var init_DateRangeEditor = __esm({
910
1138
  "src/pageObjects/elements/Editors/Date/DateRangeEditor.ts"() {
911
1139
  "use strict";
912
- import_selenium_webdriver14 = require("selenium-webdriver");
1140
+ import_selenium_webdriver15 = require("selenium-webdriver");
913
1141
  init_InputClearStrategy();
914
1142
  init_BaseDateEditor();
915
1143
  DateRangeEditor = class extends BaseDateEditor {
@@ -918,7 +1146,7 @@ var init_DateRangeEditor = __esm({
918
1146
  this.setClearStrategy(new InputClearStrategy());
919
1147
  }
920
1148
  async getDateElement() {
921
- return this.driver.findElement(import_selenium_webdriver14.By.css(this.getFullCssSelector() + " .dx-texteditor-input"));
1149
+ return this.driver.findElement(import_selenium_webdriver15.By.css(this.getFullCssSelector() + " .dx-texteditor-input"));
922
1150
  }
923
1151
  async getDateValue() {
924
1152
  const inputEl = await this.getDateElement();
@@ -989,12 +1217,12 @@ var init_DateEditor = __esm({
989
1217
  });
990
1218
 
991
1219
  // src/pageObjects/elements/Editors/HeaderFilterDictionary.ts
992
- var import_selenium_webdriver15, TAGS_SELECTOR2, DX_TAG_CONTAINER2, DX_TEXTEDITOR_EMPTY3, CUSTOM_OPTION_LIST_SELECTOR, SELECT_BOX_OPTION_TEXT_CONTAINER_CLASS2, TAG_BOX_LIST_ITEM_SELECTOR, combinedOptionHeaderFilterDictValueXpath, dropDownHeaderFilterDictionaryOptionClick, HeaderFilterDictionary;
1220
+ var import_selenium_webdriver16, TAGS_SELECTOR2, DX_TAG_CONTAINER2, DX_TEXTEDITOR_EMPTY3, CUSTOM_OPTION_LIST_SELECTOR, SELECT_BOX_OPTION_TEXT_CONTAINER_CLASS2, TAG_BOX_LIST_ITEM_SELECTOR, combinedOptionHeaderFilterDictValueXpath, dropDownHeaderFilterDictionaryOptionClick, HeaderFilterDictionary;
993
1221
  var init_HeaderFilterDictionary = __esm({
994
1222
  "src/pageObjects/elements/Editors/HeaderFilterDictionary.ts"() {
995
1223
  "use strict";
996
1224
  init_AbstractEditor();
997
- import_selenium_webdriver15 = require("selenium-webdriver");
1225
+ import_selenium_webdriver16 = require("selenium-webdriver");
998
1226
  init_actions();
999
1227
  init_locators();
1000
1228
  init_ClearButtonStrategy();
@@ -1015,9 +1243,9 @@ var init_HeaderFilterDictionary = __esm({
1015
1243
  driver,
1016
1244
  timeout: delay ? void 0 : 600,
1017
1245
  callback: async () => {
1018
- const calendarPopoverElement = await driver.findElement(import_selenium_webdriver15.By.css(calendarPopoverSelector));
1019
- const customOptionList = calendarPopoverElement.findElement(import_selenium_webdriver15.By.css(`.${CUSTOM_OPTION_LIST_SELECTOR}`));
1020
- const optElement = await customOptionList.findElement(import_selenium_webdriver15.By.xpath(combinedOptionHeaderFilterDictValueXpath(optionValue)));
1246
+ const calendarPopoverElement = await driver.findElement(import_selenium_webdriver16.By.css(calendarPopoverSelector));
1247
+ const customOptionList = calendarPopoverElement.findElement(import_selenium_webdriver16.By.css(`.${CUSTOM_OPTION_LIST_SELECTOR}`));
1248
+ const optElement = await customOptionList.findElement(import_selenium_webdriver16.By.xpath(combinedOptionHeaderFilterDictValueXpath(optionValue)));
1021
1249
  await click(optElement, driver);
1022
1250
  }
1023
1251
  });
@@ -1041,7 +1269,7 @@ var init_HeaderFilterDictionary = __esm({
1041
1269
  }
1042
1270
  }
1043
1271
  async waitOptionSelection() {
1044
- await fixElementStaleError(import_selenium_webdriver15.By.css(TAG_BOX_LIST_ITEM_SELECTOR), this.driver);
1272
+ await fixElementStaleError(import_selenium_webdriver16.By.css(TAG_BOX_LIST_ITEM_SELECTOR), this.driver);
1045
1273
  }
1046
1274
  async selectOption(inputEl, value, lastElement) {
1047
1275
  try {
@@ -1050,7 +1278,7 @@ var init_HeaderFilterDictionary = __esm({
1050
1278
  await dropDownHeaderFilterDictionaryOptionClick(value, this.driver, dataTEST);
1051
1279
  const textLength = await inputEl.getAttribute("value").then((value2) => value2.length);
1052
1280
  for (let i = 0; i < textLength; i++) {
1053
- await inputEl.sendKeys(import_selenium_webdriver15.Key.BACK_SPACE);
1281
+ await inputEl.sendKeys(import_selenium_webdriver16.Key.BACK_SPACE);
1054
1282
  }
1055
1283
  } catch (error) {
1056
1284
  throw error;
@@ -1065,7 +1293,7 @@ var init_HeaderFilterDictionary = __esm({
1065
1293
  return [];
1066
1294
  }
1067
1295
  const tags = await this.driver.findElements(
1068
- import_selenium_webdriver15.By.css(`${this.getFullCssSelector()} .${DX_TAG_CONTAINER2} ${TAGS_SELECTOR2}`)
1296
+ import_selenium_webdriver16.By.css(`${this.getFullCssSelector()} .${DX_TAG_CONTAINER2} ${TAGS_SELECTOR2}`)
1069
1297
  );
1070
1298
  const values = [];
1071
1299
  for (const tag of tags) {
@@ -1232,12 +1460,12 @@ var init_AbstractButton = __esm({
1232
1460
  });
1233
1461
 
1234
1462
  // src/pageObjects/elements/DXComponents/DXButton.ts
1235
- var import_selenium_webdriver17, DXButton;
1463
+ var import_selenium_webdriver18, DXButton;
1236
1464
  var init_DXButton = __esm({
1237
1465
  "src/pageObjects/elements/DXComponents/DXButton.ts"() {
1238
1466
  "use strict";
1239
1467
  init_AbstractButton();
1240
- import_selenium_webdriver17 = require("selenium-webdriver");
1468
+ import_selenium_webdriver18 = require("selenium-webdriver");
1241
1469
  DXButton = class extends AbstractButton {
1242
1470
  async getText() {
1243
1471
  const classes = await this.getClasses();
@@ -1245,7 +1473,7 @@ var init_DXButton = __esm({
1245
1473
  return null;
1246
1474
  }
1247
1475
  const el = await this.getElement();
1248
- const textEl = el.findElement(import_selenium_webdriver17.By.className("dx-button-text"));
1476
+ const textEl = el.findElement(import_selenium_webdriver18.By.className("dx-button-text"));
1249
1477
  return await textEl.getText();
1250
1478
  }
1251
1479
  };
@@ -1303,12 +1531,12 @@ var init_Panel = __esm({
1303
1531
  });
1304
1532
 
1305
1533
  // src/pageObjects/elements/Groups/TabPanel.ts
1306
- var import_selenium_webdriver18, TabPanelItem, TabPanel;
1534
+ var import_selenium_webdriver19, TabPanelItem, TabPanel;
1307
1535
  var init_TabPanel = __esm({
1308
1536
  "src/pageObjects/elements/Groups/TabPanel.ts"() {
1309
1537
  "use strict";
1310
1538
  init_AbstractGroup();
1311
- import_selenium_webdriver18 = require("selenium-webdriver");
1539
+ import_selenium_webdriver19 = require("selenium-webdriver");
1312
1540
  init_actions();
1313
1541
  TabPanelItem = class extends AbstractGroup {
1314
1542
  constructor(parentCssSelector, elementCssSelector, driver) {
@@ -1319,7 +1547,7 @@ var init_TabPanel = __esm({
1319
1547
  }
1320
1548
  async isActive() {
1321
1549
  const tabPanelItemElement = await this.getElement();
1322
- const grandparentTab = await tabPanelItemElement.findElement(import_selenium_webdriver18.By.xpath('ancestor::div[@role="tab"][1]'));
1550
+ const grandparentTab = await tabPanelItemElement.findElement(import_selenium_webdriver19.By.xpath('ancestor::div[@role="tab"][1]'));
1323
1551
  return await grandparentTab.getAttribute("aria-selected") === "true";
1324
1552
  }
1325
1553
  async getTitle() {
@@ -1338,12 +1566,12 @@ var init_TabPanel = __esm({
1338
1566
  });
1339
1567
 
1340
1568
  // src/pageObjects/elements/Groups/Accordion/AccordionItem.ts
1341
- var import_selenium_webdriver19, ACCORDION_TITLE_CONTAINER, AccordionItem;
1569
+ var import_selenium_webdriver20, ACCORDION_TITLE_CONTAINER, AccordionItem;
1342
1570
  var init_AccordionItem = __esm({
1343
1571
  "src/pageObjects/elements/Groups/Accordion/AccordionItem.ts"() {
1344
1572
  "use strict";
1345
1573
  init_AbstractGroup();
1346
- import_selenium_webdriver19 = require("selenium-webdriver");
1574
+ import_selenium_webdriver20 = require("selenium-webdriver");
1347
1575
  init_actions();
1348
1576
  ACCORDION_TITLE_CONTAINER = "accordion-title-container";
1349
1577
  AccordionItem = class extends AbstractGroup {
@@ -1356,7 +1584,7 @@ var init_AccordionItem = __esm({
1356
1584
  }
1357
1585
  async clickAccordionItemTitle() {
1358
1586
  const accordionElement = await this.getElement();
1359
- const accordTitleElement = await accordionElement.findElement(import_selenium_webdriver19.By.className(ACCORDION_TITLE_CONTAINER));
1587
+ const accordTitleElement = await accordionElement.findElement(import_selenium_webdriver20.By.className(ACCORDION_TITLE_CONTAINER));
1360
1588
  await accordTitleElement.click();
1361
1589
  }
1362
1590
  async click() {
@@ -1595,11 +1823,11 @@ function getCssRowByIndexSelector(index) {
1595
1823
  function getCssCellByIndexSelector(index) {
1596
1824
  return `td[role="gridcell"][aria-colindex="${transformInputIndex(index)}"]`;
1597
1825
  }
1598
- var import_selenium_webdriver20, getColumnByIndexCssSelector, getColumnByCaptionCssSelector, getColumnByNameCssSelector, transformInputIndex, transformOutputIndex;
1826
+ var import_selenium_webdriver21, getColumnByIndexCssSelector, getColumnByCaptionCssSelector, getColumnByNameCssSelector, transformInputIndex, transformOutputIndex;
1599
1827
  var init_utils2 = __esm({
1600
1828
  "src/pageObjects/elements/Table/utils.ts"() {
1601
1829
  "use strict";
1602
- import_selenium_webdriver20 = require("selenium-webdriver");
1830
+ import_selenium_webdriver21 = require("selenium-webdriver");
1603
1831
  getColumnByIndexCssSelector = (columnIndex) => `td[aria-colindex="${transformInputIndex(columnIndex)}"]`;
1604
1832
  getColumnByCaptionCssSelector = (caption) => `td[role="columnheader"][aria-label="Column ${caption}"]`;
1605
1833
  getColumnByNameCssSelector = (name) => `td[role="columnheader"][data-fieldname="${name}"]`;
@@ -1616,11 +1844,11 @@ var init_types3 = __esm({
1616
1844
  });
1617
1845
 
1618
1846
  // src/pageObjects/elements/Table/elements/Cell.ts
1619
- var import_selenium_webdriver21, Cell;
1847
+ var import_selenium_webdriver22, Cell;
1620
1848
  var init_Cell = __esm({
1621
1849
  "src/pageObjects/elements/Table/elements/Cell.ts"() {
1622
1850
  "use strict";
1623
- import_selenium_webdriver21 = require("selenium-webdriver");
1851
+ import_selenium_webdriver22 = require("selenium-webdriver");
1624
1852
  init_AbstractElementWithParent();
1625
1853
  init_utils2();
1626
1854
  init_types3();
@@ -1637,12 +1865,12 @@ var init_Cell = __esm({
1637
1865
  this.elementCssSelector = getCssCellByIndexSelector(index);
1638
1866
  }
1639
1867
  async getBooleanValue(cellEl) {
1640
- const booleanEl = await cellEl.findElement(import_selenium_webdriver21.By.className("boolean-widget"));
1868
+ const booleanEl = await cellEl.findElement(import_selenium_webdriver22.By.className("boolean-widget"));
1641
1869
  return await booleanEl.getAttribute("aria-checked") === "true" ? 1 : 0;
1642
1870
  }
1643
1871
  async getTagsValue(cellEl) {
1644
1872
  const tagsCssSelector = ".multiselect-container .multiselect-cell";
1645
- const tags = await cellEl.findElements(import_selenium_webdriver21.By.css(tagsCssSelector));
1873
+ const tags = await cellEl.findElements(import_selenium_webdriver22.By.css(tagsCssSelector));
1646
1874
  const values = [];
1647
1875
  for (const tag of tags) {
1648
1876
  values.push(await tag.getAttribute("textContent"));
@@ -1696,11 +1924,11 @@ var init_Cell = __esm({
1696
1924
  });
1697
1925
 
1698
1926
  // src/pageObjects/elements/Table/elements/Row.ts
1699
- var import_selenium_webdriver22, DX_SELECTION_CLASS, DX_ROW_EDIT_CLASS, DX_DATA_ROW_CLASS, Row;
1927
+ var import_selenium_webdriver23, DX_SELECTION_CLASS, DX_ROW_EDIT_CLASS, DX_DATA_ROW_CLASS, FIRST_CLICKED_CELL_SELECTOR, Row;
1700
1928
  var init_Row = __esm({
1701
1929
  "src/pageObjects/elements/Table/elements/Row.ts"() {
1702
1930
  "use strict";
1703
- import_selenium_webdriver22 = require("selenium-webdriver");
1931
+ import_selenium_webdriver23 = require("selenium-webdriver");
1704
1932
  init_Cell();
1705
1933
  init_utils2();
1706
1934
  init_AbstractElementWithParent();
@@ -1710,6 +1938,7 @@ var init_Row = __esm({
1710
1938
  DX_SELECTION_CLASS = "dx-selection";
1711
1939
  DX_ROW_EDIT_CLASS = "dx-edit-row";
1712
1940
  DX_DATA_ROW_CLASS = "dx-data-row";
1941
+ FIRST_CLICKED_CELL_SELECTOR = 'td[aria-colindex="1"]';
1713
1942
  Row = class extends AbstractElementWithParent {
1714
1943
  index;
1715
1944
  getColumnBy;
@@ -1750,15 +1979,16 @@ var init_Row = __esm({
1750
1979
  await staleElementAction(async () => {
1751
1980
  const rowEl = await this.getElement();
1752
1981
  const isSelected = (await this.getClasses()).includes(DX_SELECTION_CLASS);
1982
+ const clickedElement = await rowEl.findElement(import_selenium_webdriver23.By.css(FIRST_CLICKED_CELL_SELECTOR));
1753
1983
  if (isSelected && !preserve) {
1754
- await this.driver.actions({ async: true }).keyUp(import_selenium_webdriver22.Key.CONTROL).perform();
1984
+ await this.driver.actions({ async: true }).keyUp(import_selenium_webdriver23.Key.CONTROL).perform();
1755
1985
  }
1756
1986
  if (preserve && !isSelected) {
1757
- await this.driver.actions({ async: true }).keyDown(import_selenium_webdriver22.Key.CONTROL).perform();
1758
- await click(rowEl, this.driver);
1987
+ await this.driver.actions({ async: true }).keyDown(import_selenium_webdriver23.Key.CONTROL).perform();
1988
+ await click(clickedElement, this.driver);
1759
1989
  return;
1760
1990
  }
1761
- await click(rowEl, this.driver);
1991
+ await click(clickedElement, this.driver);
1762
1992
  });
1763
1993
  await safeWait(
1764
1994
  async () => {
@@ -1777,7 +2007,7 @@ var init_Row = __esm({
1777
2007
  return this.index;
1778
2008
  }
1779
2009
  async getCells() {
1780
- const cells = await this.driver.findElements(import_selenium_webdriver22.By.css(`${this.getFullCssSelector()} td[role="gridcell"]`));
2010
+ const cells = await this.driver.findElements(import_selenium_webdriver23.By.css(`${this.getFullCssSelector()} td[role="gridcell"]`));
1781
2011
  const result = [];
1782
2012
  cells.forEach((_, index) => {
1783
2013
  const newCell = this.getCellByIndex(index);
@@ -1789,7 +2019,7 @@ var init_Row = __esm({
1789
2019
  const buttonCssSelector = `.${DX_DATA_ROW_CLASS}[aria-rowindex="${transformInputIndex(
1790
2020
  this.index
1791
2021
  )}"] .${buttonClass}`;
1792
- const by = import_selenium_webdriver22.By.css(`${this.parentCssSelector} ${this.fixedTableContentCssSelector} ${buttonCssSelector}`);
2022
+ const by = import_selenium_webdriver23.By.css(`${this.parentCssSelector} ${this.fixedTableContentCssSelector} ${buttonCssSelector}`);
1793
2023
  await staleElementAction(async () => {
1794
2024
  const button = await fixElementStaleError(by, this.driver);
1795
2025
  await click(button, this.driver);
@@ -1821,11 +2051,11 @@ var init_Row = __esm({
1821
2051
  });
1822
2052
 
1823
2053
  // src/pageObjects/elements/Table/elements/Column.ts
1824
- var import_selenium_webdriver23, Column;
2054
+ var import_selenium_webdriver24, Column;
1825
2055
  var init_Column = __esm({
1826
2056
  "src/pageObjects/elements/Table/elements/Column.ts"() {
1827
2057
  "use strict";
1828
- import_selenium_webdriver23 = require("selenium-webdriver");
2058
+ import_selenium_webdriver24 = require("selenium-webdriver");
1829
2059
  init_utils2();
1830
2060
  init_AbstractElementWithParent();
1831
2061
  init_fixElementStaleError();
@@ -1853,7 +2083,7 @@ var init_Column = __esm({
1853
2083
  return super.getElement();
1854
2084
  }
1855
2085
  async getColumnHeaderIndexBy(cssSelector) {
1856
- const column = await fixElementStaleError(import_selenium_webdriver23.By.css(`${this.parentCssSelector} ${this.headerCssSelector} ${cssSelector}`), this.driver);
2086
+ const column = await fixElementStaleError(import_selenium_webdriver24.By.css(`${this.parentCssSelector} ${this.headerCssSelector} ${cssSelector}`), this.driver);
1857
2087
  return transformOutputIndex(await column.getAttribute("aria-colindex"));
1858
2088
  }
1859
2089
  async getIndexByCaption() {
@@ -2136,12 +2366,12 @@ var init_cssToXPath = __esm({
2136
2366
  });
2137
2367
 
2138
2368
  // src/pageObjects/elements/DXContextMenuList.ts
2139
- var import_selenium_webdriver24, CONTEXT_MENU_CLASS, CONTEXT_MENU_ITEM_TEXT_CLASS, DXContextMenuList;
2369
+ var import_selenium_webdriver25, CONTEXT_MENU_CLASS, CONTEXT_MENU_ITEM_TEXT_CLASS, DXContextMenuList;
2140
2370
  var init_DXContextMenuList = __esm({
2141
2371
  "src/pageObjects/elements/DXContextMenuList.ts"() {
2142
2372
  "use strict";
2143
2373
  init_AbstractDropDownMenuList();
2144
- import_selenium_webdriver24 = require("selenium-webdriver");
2374
+ import_selenium_webdriver25 = require("selenium-webdriver");
2145
2375
  init_cssToXPath();
2146
2376
  init_waitElementIsVisible();
2147
2377
  CONTEXT_MENU_CLASS = "dx-context-menu";
@@ -2158,12 +2388,12 @@ var init_DXContextMenuList = __esm({
2158
2388
  getButtonTitleBy(title) {
2159
2389
  const buttonByTextXpath2 = (text) => `//span[contains(@class, "${CONTEXT_MENU_ITEM_TEXT_CLASS}") and contains(text(), "${text}")]`;
2160
2390
  const xpath = "//div" + cssClassesToXPath(this.elementCssSelector) + buttonByTextXpath2(title);
2161
- return import_selenium_webdriver24.By.xpath(xpath);
2391
+ return import_selenium_webdriver25.By.xpath(xpath);
2162
2392
  }
2163
2393
  async isVisible() {
2164
2394
  try {
2165
2395
  await waitElementIsVisible_default({
2166
- element: await this.driver.findElement(import_selenium_webdriver24.By.css(`.dx-overlay-wrapper .dx-context-menu`)),
2396
+ element: await this.driver.findElement(import_selenium_webdriver25.By.css(`.dx-overlay-wrapper .dx-context-menu`)),
2167
2397
  driver: this.driver,
2168
2398
  errorMessage: "Cannot find dropdown element"
2169
2399
  });
@@ -2209,11 +2439,11 @@ var init_ContextMenu = __esm({
2209
2439
  });
2210
2440
 
2211
2441
  // src/pageObjects/elements/Table/Table.ts
2212
- var import_selenium_webdriver25, Table;
2442
+ var import_selenium_webdriver26, Table;
2213
2443
  var init_Table = __esm({
2214
2444
  "src/pageObjects/elements/Table/Table.ts"() {
2215
2445
  "use strict";
2216
- import_selenium_webdriver25 = require("selenium-webdriver");
2446
+ import_selenium_webdriver26 = require("selenium-webdriver");
2217
2447
  init_createDataTestId();
2218
2448
  init_AbstractElementWithParent();
2219
2449
  init_Row();
@@ -2308,7 +2538,7 @@ var init_Table = __esm({
2308
2538
  driver: this.driver,
2309
2539
  timeout,
2310
2540
  callback: () => {
2311
- return this.driver.findElements(import_selenium_webdriver25.By.css(rowsFullCssSelector));
2541
+ return this.driver.findElements(import_selenium_webdriver26.By.css(rowsFullCssSelector));
2312
2542
  }
2313
2543
  });
2314
2544
  }
@@ -2329,7 +2559,7 @@ var init_Table = __esm({
2329
2559
  }
2330
2560
  async getColumns() {
2331
2561
  const columns = await this.driver.findElements(
2332
- import_selenium_webdriver25.By.css(`${this.getFullCssSelector()} ${this.headerCssSelector} td[role="columnheader"] .header-template-text`)
2562
+ import_selenium_webdriver26.By.css(`${this.getFullCssSelector()} ${this.headerCssSelector} td[role="columnheader"] .header-template-text`)
2333
2563
  );
2334
2564
  const result = [];
2335
2565
  columns.forEach((_, index) => {
@@ -2470,11 +2700,11 @@ var init_Table = __esm({
2470
2700
  });
2471
2701
 
2472
2702
  // src/pageObjects/elements/TableToolbar/ToolbarButton.ts
2473
- var import_selenium_webdriver26, TOOLBAR_BUTTON_CLASS, TOOLBAR_BUTTON_TEXT_CLASS, getToolbarButtonSelector, getToolbarButtonTextSelector, ToolbarButton;
2703
+ var import_selenium_webdriver27, TOOLBAR_BUTTON_CLASS, TOOLBAR_BUTTON_TEXT_CLASS, getToolbarButtonSelector, getToolbarButtonTextSelector, ToolbarButton;
2474
2704
  var init_ToolbarButton = __esm({
2475
2705
  "src/pageObjects/elements/TableToolbar/ToolbarButton.ts"() {
2476
2706
  "use strict";
2477
- import_selenium_webdriver26 = require("selenium-webdriver");
2707
+ import_selenium_webdriver27 = require("selenium-webdriver");
2478
2708
  init_AbstractButton();
2479
2709
  TOOLBAR_BUTTON_CLASS = "toolbar-button";
2480
2710
  TOOLBAR_BUTTON_TEXT_CLASS = "dx-button-text";
@@ -2491,7 +2721,7 @@ var init_ToolbarButton = __esm({
2491
2721
  }
2492
2722
  async getTitle() {
2493
2723
  try {
2494
- const buttonTextContainer = await this.driver.findElement(import_selenium_webdriver26.By.css(getToolbarButtonTextSelector(this.name)));
2724
+ const buttonTextContainer = await this.driver.findElement(import_selenium_webdriver27.By.css(getToolbarButtonTextSelector(this.name)));
2495
2725
  return await buttonTextContainer.getText();
2496
2726
  } catch (_) {
2497
2727
  return null;
@@ -2502,12 +2732,12 @@ var init_ToolbarButton = __esm({
2502
2732
  });
2503
2733
 
2504
2734
  // src/pageObjects/elements/TableToolbar/ToolbarGroupButton.ts
2505
- var import_selenium_webdriver27, ToolbarGroupButton;
2735
+ var import_selenium_webdriver28, ToolbarGroupButton;
2506
2736
  var init_ToolbarGroupButton = __esm({
2507
2737
  "src/pageObjects/elements/TableToolbar/ToolbarGroupButton.ts"() {
2508
2738
  "use strict";
2509
2739
  init_AbstractButton();
2510
- import_selenium_webdriver27 = require("selenium-webdriver");
2740
+ import_selenium_webdriver28 = require("selenium-webdriver");
2511
2741
  init_ToolbarButton();
2512
2742
  ToolbarGroupButton = class extends AbstractButton {
2513
2743
  name;
@@ -2520,7 +2750,7 @@ var init_ToolbarGroupButton = __esm({
2520
2750
  }
2521
2751
  async getTitle() {
2522
2752
  try {
2523
- const buttonTextContainer = await this.driver.findElement(import_selenium_webdriver27.By.css(getToolbarButtonTextSelector(this.name)));
2753
+ const buttonTextContainer = await this.driver.findElement(import_selenium_webdriver28.By.css(getToolbarButtonTextSelector(this.name)));
2524
2754
  return await buttonTextContainer.getText();
2525
2755
  } catch (_) {
2526
2756
  return null;
@@ -2772,11 +3002,11 @@ var init_FormToolbar = __esm({
2772
3002
  });
2773
3003
 
2774
3004
  // src/pageObjects/elements/Filters/FilterOperation.ts
2775
- var import_selenium_webdriver28, FILTER_OPERATIONS, BUTTON_OPERATION_WIDGET, OPERATIONS_WIDGET_POPUP, getWidgetInPopupSelector, FilterOperation;
3005
+ var import_selenium_webdriver29, FILTER_OPERATIONS, BUTTON_OPERATION_WIDGET, OPERATIONS_WIDGET_POPUP, getWidgetInPopupSelector, FilterOperation;
2776
3006
  var init_FilterOperation = __esm({
2777
3007
  "src/pageObjects/elements/Filters/FilterOperation.ts"() {
2778
3008
  "use strict";
2779
- import_selenium_webdriver28 = require("selenium-webdriver");
3009
+ import_selenium_webdriver29 = require("selenium-webdriver");
2780
3010
  init_fixElementStaleError();
2781
3011
  init_AbstractElementWithParent();
2782
3012
  init_locators();
@@ -2816,10 +3046,10 @@ var init_FilterOperation = __esm({
2816
3046
  errorMessage: "Widget operation is not clickable",
2817
3047
  driver: this.driver
2818
3048
  });
2819
- const clickableElement = await widgetButtonEl.findElement(import_selenium_webdriver28.By.className("dx-icon"));
3049
+ const clickableElement = await widgetButtonEl.findElement(import_selenium_webdriver29.By.className("dx-icon"));
2820
3050
  await click(clickableElement, this.driver);
2821
3051
  try {
2822
- const widgetPopupEl = await this.driver.findElement(import_selenium_webdriver28.By.css(`${byTestIdCssSelector(`${OPERATIONS_WIDGET_POPUP}-${this._testId}`)}`));
3052
+ const widgetPopupEl = await this.driver.findElement(import_selenium_webdriver29.By.css(`${byTestIdCssSelector(`${OPERATIONS_WIDGET_POPUP}-${this._testId}`)}`));
2823
3053
  await waitElementIsVisible_default({
2824
3054
  element: widgetPopupEl,
2825
3055
  errorMessage: `Operation widget popup is not visible`,
@@ -2834,7 +3064,7 @@ var init_FilterOperation = __esm({
2834
3064
  throw new Error(`Operation with name "${operationName}" is not correct.`);
2835
3065
  }
2836
3066
  await this.initOperationWidget();
2837
- const operationEl = await fixElementStaleError(import_selenium_webdriver28.By.css(`${byTestIdCssSelector(`${OPERATIONS_WIDGET_POPUP}-${this._testId}`)} ${getWidgetInPopupSelector(operationName)}`), this.driver);
3067
+ const operationEl = await fixElementStaleError(import_selenium_webdriver29.By.css(`${byTestIdCssSelector(`${OPERATIONS_WIDGET_POPUP}-${this._testId}`)} ${getWidgetInPopupSelector(operationName)}`), this.driver);
2838
3068
  await click(operationEl, this.driver);
2839
3069
  await safeWait(
2840
3070
  async () => {
@@ -3090,11 +3320,11 @@ var init_PanelFilterField = __esm({
3090
3320
  });
3091
3321
 
3092
3322
  // src/pageObjects/elements/Filters/FilterPanel.ts
3093
- var import_selenium_webdriver29, drawerSelector, FILTER_PANEL_SELECTOR, CLOSE_SELECTOR, FilterPanel;
3323
+ var import_selenium_webdriver30, drawerSelector, FILTER_PANEL_SELECTOR, CLOSE_SELECTOR, FilterPanel;
3094
3324
  var init_FilterPanel = __esm({
3095
3325
  "src/pageObjects/elements/Filters/FilterPanel.ts"() {
3096
3326
  "use strict";
3097
- import_selenium_webdriver29 = require("selenium-webdriver");
3327
+ import_selenium_webdriver30 = require("selenium-webdriver");
3098
3328
  init_AbstractElement();
3099
3329
  init_PanelFilterField();
3100
3330
  init_actions();
@@ -3109,7 +3339,7 @@ var init_FilterPanel = __esm({
3109
3339
  async filterPanelButtons() {
3110
3340
  const selector = `${this.elementCssSelector} ${FILTER_PANEL_SELECTOR} .filter-panel__buttons-panel .dx-button-text`;
3111
3341
  const el = await this.getElement();
3112
- return el.findElements(import_selenium_webdriver29.By.css(selector));
3342
+ return el.findElements(import_selenium_webdriver30.By.css(selector));
3113
3343
  }
3114
3344
  constructor(formName, driver) {
3115
3345
  super(driver, drawerSelector(formName));
@@ -3142,7 +3372,7 @@ var init_FilterPanel = __esm({
3142
3372
  await this.driver.sleep(300);
3143
3373
  }
3144
3374
  async close() {
3145
- const btn = await this.driver.findElement(import_selenium_webdriver29.By.css(`${this.elementCssSelector} ${CLOSE_SELECTOR}`));
3375
+ const btn = await this.driver.findElement(import_selenium_webdriver30.By.css(`${this.elementCssSelector} ${CLOSE_SELECTOR}`));
3146
3376
  await click(btn, this.driver);
3147
3377
  }
3148
3378
  };
@@ -3178,12 +3408,12 @@ var init_HeaderFilterField = __esm({
3178
3408
  });
3179
3409
 
3180
3410
  // src/pageObjects/elements/Filters/ColumnFilter.ts
3181
- var import_selenium_webdriver30, APPLY_SELECTOR, CANCEL_SELECTOR, HEADER_FILTER_ICON, HEADER_FILTER_CONTAINER, HEADER_FILTER_BUTTONS, ColumnFilter;
3411
+ var import_selenium_webdriver31, APPLY_SELECTOR, CANCEL_SELECTOR, HEADER_FILTER_ICON, HEADER_FILTER_CONTAINER, HEADER_FILTER_BUTTONS, ColumnFilter;
3182
3412
  var init_ColumnFilter = __esm({
3183
3413
  "src/pageObjects/elements/Filters/ColumnFilter.ts"() {
3184
3414
  "use strict";
3185
3415
  init_actions();
3186
- import_selenium_webdriver30 = require("selenium-webdriver");
3416
+ import_selenium_webdriver31 = require("selenium-webdriver");
3187
3417
  init_HeaderFilterField();
3188
3418
  init_waitElementIsVisible();
3189
3419
  init_AbstractElement();
@@ -3208,11 +3438,11 @@ var init_ColumnFilter = __esm({
3208
3438
  }
3209
3439
  async getApplyButton() {
3210
3440
  const selector = `${HEADER_FILTER_CONTAINER} ${HEADER_FILTER_BUTTONS} ${APPLY_SELECTOR}`;
3211
- return this.driver.findElement(import_selenium_webdriver30.By.css(selector));
3441
+ return this.driver.findElement(import_selenium_webdriver31.By.css(selector));
3212
3442
  }
3213
3443
  async getCancelButton() {
3214
3444
  const selector = `${HEADER_FILTER_CONTAINER} ${HEADER_FILTER_BUTTONS} ${CANCEL_SELECTOR}`;
3215
- return this.driver.findElement(import_selenium_webdriver30.By.css(selector));
3445
+ return this.driver.findElement(import_selenium_webdriver31.By.css(selector));
3216
3446
  }
3217
3447
  async apply() {
3218
3448
  const btn = await this.getApplyButton();
@@ -3226,7 +3456,7 @@ var init_ColumnFilter = __esm({
3226
3456
  const columnEl = await this._column.getElement();
3227
3457
  const actions = this.driver.actions({ async: true });
3228
3458
  await actions.move({ origin: columnEl }).perform();
3229
- const headerFilterIconBy = import_selenium_webdriver30.By.css(HEADER_FILTER_ICON);
3459
+ const headerFilterIconBy = import_selenium_webdriver31.By.css(HEADER_FILTER_ICON);
3230
3460
  let headerFilterIcon = await columnEl.findElement(headerFilterIconBy);
3231
3461
  await safeWait(
3232
3462
  () => {
@@ -3515,12 +3745,12 @@ var init_createSubFormInstance = __esm({
3515
3745
  });
3516
3746
 
3517
3747
  // src/pageObjects/elements/Forms/Form.ts
3518
- var import_selenium_webdriver31, formTestId, Form;
3748
+ var import_selenium_webdriver32, formTestId, Form;
3519
3749
  var init_Form = __esm({
3520
3750
  "src/pageObjects/elements/Forms/Form.ts"() {
3521
3751
  "use strict";
3522
3752
  init_locators();
3523
- import_selenium_webdriver31 = require("selenium-webdriver");
3753
+ import_selenium_webdriver32 = require("selenium-webdriver");
3524
3754
  init_AbstractForm();
3525
3755
  init_waitElementIsVisible();
3526
3756
  init_createSubFormInstance();
@@ -3545,7 +3775,7 @@ var init_Form = __esm({
3545
3775
  */
3546
3776
  async getTitleText() {
3547
3777
  if (await this.isModal()) {
3548
- const titleEl2 = await this.driver.findElement(import_selenium_webdriver31.By.css(`${this.popupContainerCssSelector} .popup-title`));
3778
+ const titleEl2 = await this.driver.findElement(import_selenium_webdriver32.By.css(`${this.popupContainerCssSelector} .popup-title`));
3549
3779
  await waitElementIsVisible_default({
3550
3780
  element: titleEl2,
3551
3781
  driver: this.driver,
@@ -3553,7 +3783,7 @@ var init_Form = __esm({
3553
3783
  });
3554
3784
  return titleEl2.getText();
3555
3785
  }
3556
- let titleEl = await this.driver.findElement(import_selenium_webdriver31.By.className("main-toolbar-form-title"));
3786
+ let titleEl = await this.driver.findElement(import_selenium_webdriver32.By.className("main-toolbar-form-title"));
3557
3787
  return titleEl.getText();
3558
3788
  }
3559
3789
  setSubFormMode() {
@@ -3572,7 +3802,7 @@ var init_Form = __esm({
3572
3802
  async subForm(name, options = {}) {
3573
3803
  const { isDockPanel = false } = options;
3574
3804
  const cssSelector = subformCssSelector(this.containerCssSelector, subFormTestId(name), isDockPanel);
3575
- const byCssSelector = import_selenium_webdriver31.By.css(cssSelector);
3805
+ const byCssSelector = import_selenium_webdriver32.By.css(cssSelector);
3576
3806
  const subFormEl = await this.driver.findElement(byCssSelector);
3577
3807
  await waitElementIsVisible_default({
3578
3808
  element: subFormEl,
@@ -3602,12 +3832,12 @@ var FormEdit_exports = {};
3602
3832
  __export(FormEdit_exports, {
3603
3833
  default: () => FormEdit
3604
3834
  });
3605
- var import_selenium_webdriver32, FormEdit;
3835
+ var import_selenium_webdriver33, FormEdit;
3606
3836
  var init_FormEdit = __esm({
3607
3837
  "src/pageObjects/elements/Forms/FormEdit.ts"() {
3608
3838
  "use strict";
3609
3839
  init_Form();
3610
- import_selenium_webdriver32 = require("selenium-webdriver");
3840
+ import_selenium_webdriver33 = require("selenium-webdriver");
3611
3841
  init_FormField();
3612
3842
  init_actions();
3613
3843
  init_wait();
@@ -3643,7 +3873,7 @@ var init_FormEdit = __esm({
3643
3873
  */
3644
3874
  async isSaveButtonDisabled() {
3645
3875
  const saveButtonCssSelector = await this.getButtonCssSelector(this.saveButtonId);
3646
- const saveButton = await this.driver.findElement(import_selenium_webdriver32.By.css(saveButtonCssSelector));
3876
+ const saveButton = await this.driver.findElement(import_selenium_webdriver33.By.css(saveButtonCssSelector));
3647
3877
  const result = await saveButton.getAttribute("aria-disabled");
3648
3878
  return result === "true";
3649
3879
  }
@@ -3656,7 +3886,7 @@ var init_FormEdit = __esm({
3656
3886
  */
3657
3887
  async saveButtonClick() {
3658
3888
  const saveButtonCssSelector = await this.getButtonCssSelector(this.saveButtonId);
3659
- const saveButton = await this.driver.findElement(import_selenium_webdriver32.By.css(saveButtonCssSelector));
3889
+ const saveButton = await this.driver.findElement(import_selenium_webdriver33.By.css(saveButtonCssSelector));
3660
3890
  await safeWait(async () => !await this.isSaveButtonDisabled(), this.driver, "Button is disabled");
3661
3891
  await click(saveButton, this.driver);
3662
3892
  }
@@ -3669,7 +3899,7 @@ var init_FormEdit = __esm({
3669
3899
  */
3670
3900
  async closeButtonClick() {
3671
3901
  const closeButtonCssSelector = await this.getButtonCssSelector(this.closeButtonId);
3672
- const closeButton = await this.driver.findElement(import_selenium_webdriver32.By.css(closeButtonCssSelector));
3902
+ const closeButton = await this.driver.findElement(import_selenium_webdriver33.By.css(closeButtonCssSelector));
3673
3903
  await click(closeButton, this.driver);
3674
3904
  }
3675
3905
  };
@@ -3855,7 +4085,7 @@ var SubsystemsPanelHeader = class extends AbstractElementWithParent {
3855
4085
  };
3856
4086
 
3857
4087
  // src/pageObjects/elements/SubsystemsPanel/SubsystemsPanel.ts
3858
- var import_selenium_webdriver16 = require("selenium-webdriver");
4088
+ var import_selenium_webdriver17 = require("selenium-webdriver");
3859
4089
  init_wait();
3860
4090
  init_locators();
3861
4091
  init_Editors();
@@ -3953,7 +4183,7 @@ var SubsystemsPanel = class extends AbstractElement {
3953
4183
  */
3954
4184
  async searchClear() {
3955
4185
  const clearBtnSelector = `#aside ${byTestIdCssSelector(SEARCH_INPUT_SELECTOR)} .${DX_CLEAR_BUTTON_AREA}`;
3956
- const clearBtn = await fixElementStaleError(import_selenium_webdriver16.By.css(clearBtnSelector), this.driver);
4186
+ const clearBtn = await fixElementStaleError(import_selenium_webdriver17.By.css(clearBtnSelector), this.driver);
3957
4187
  if (await clearBtn.isDisplayed()) {
3958
4188
  await click(clearBtn, this.driver);
3959
4189
  }
@@ -3967,7 +4197,7 @@ var SubsystemsPanel = class extends AbstractElement {
3967
4197
  */
3968
4198
  item(name) {
3969
4199
  const elementCSS = createSubSystemTestId(name);
3970
- return new SubsystemItem({ driver: this.driver, bySelector: import_selenium_webdriver16.By.css(`${byTestIdCssSelector(elementCSS, "span")}`) });
4200
+ return new SubsystemItem({ driver: this.driver, bySelector: import_selenium_webdriver17.By.css(`${byTestIdCssSelector(elementCSS, "span")}`) });
3971
4201
  }
3972
4202
  /**
3973
4203
  * Возвращает сабсистему по заголовку
@@ -3977,7 +4207,7 @@ var SubsystemsPanel = class extends AbstractElement {
3977
4207
  * const subsystem = subsystemsPanel.itemByTitle('SubSystemTitle');
3978
4208
  */
3979
4209
  itemByTitle(title) {
3980
- return new SubsystemItem({ driver: this.driver, bySelector: import_selenium_webdriver16.By.css(byTitleCssSelector(title)) });
4210
+ return new SubsystemItem({ driver: this.driver, bySelector: import_selenium_webdriver17.By.css(byTitleCssSelector(title)) });
3981
4211
  }
3982
4212
  /**
3983
4213
  * Возвращается на уровень выше по сабсистемам
@@ -3987,7 +4217,7 @@ var SubsystemsPanel = class extends AbstractElement {
3987
4217
  * wait subsystemsPanel.back();
3988
4218
  */
3989
4219
  async back() {
3990
- const by = import_selenium_webdriver16.By.css(`#aside .${BACK_BUTTON_SELECTOR}`);
4220
+ const by = import_selenium_webdriver17.By.css(`#aside .${BACK_BUTTON_SELECTOR}`);
3991
4221
  await waitElementIsVisible_default(
3992
4222
  {
3993
4223
  by,
@@ -4032,7 +4262,7 @@ init_FilterPanel();
4032
4262
 
4033
4263
  // src/pageObjects/elements/Dialog.ts
4034
4264
  init_AbstractElement();
4035
- var import_selenium_webdriver33 = require("selenium-webdriver");
4265
+ var import_selenium_webdriver34 = require("selenium-webdriver");
4036
4266
  init_AbstractButton();
4037
4267
  var DIALOG_CLASS = ".d5-dialog";
4038
4268
  var DIALOG_TITLE_CLASS = ".dialog__title";
@@ -4047,7 +4277,7 @@ var DialogButton = class extends AbstractButton {
4047
4277
  }
4048
4278
  async getElement() {
4049
4279
  const panel = await super.getElement();
4050
- return panel.findElement(import_selenium_webdriver33.By.xpath(buttonByTextXpath(this.text)));
4280
+ return panel.findElement(import_selenium_webdriver34.By.xpath(buttonByTextXpath(this.text)));
4051
4281
  }
4052
4282
  buttonNotDisplayedError() {
4053
4283
  return `Dialog button ${this.text} cannot be clicked. It is not displayed or it is disabled`;
@@ -4070,11 +4300,11 @@ var Dialog = class extends AbstractElement {
4070
4300
  return this.joinRelativeCssSelectors([DIALOG_CLASS, DIALOG_BUTTONS_PANEL_CLASS]);
4071
4301
  }
4072
4302
  async title() {
4073
- const el = await this.driver.findElement(import_selenium_webdriver33.By.css(this.titleSelector));
4303
+ const el = await this.driver.findElement(import_selenium_webdriver34.By.css(this.titleSelector));
4074
4304
  return await el.getText();
4075
4305
  }
4076
4306
  async text() {
4077
- const el = await this.driver.findElement(import_selenium_webdriver33.By.css(this.textSelector));
4307
+ const el = await this.driver.findElement(import_selenium_webdriver34.By.css(this.textSelector));
4078
4308
  return await el.getText();
4079
4309
  }
4080
4310
  button(text) {