d5-testing-library 1.8.0-alpha.4 → 1.8.0-alpha.6
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/dist/FormEdit-YRHBBSY3.mjs +7 -0
- package/dist/ListForm-A2IT4Z65.mjs +7 -0
- package/dist/TreeView-XM4SNZSJ.mjs +8 -0
- package/dist/{chunk-TFKTH7JY.mjs → chunk-COFCOE45.mjs} +57 -10
- package/dist/{chunk-LLH235HI.mjs → chunk-I57KZIU6.mjs} +1 -1
- package/dist/{chunk-JGX24TXO.mjs → chunk-SPTTRJJ4.mjs} +107 -13
- package/dist/{chunk-HXXWTKEP.mjs → chunk-TCNJHKZT.mjs} +1 -1
- package/dist/cjs/d5-testing-library.cjs +225 -72
- package/dist/d5-testing-library.d.ts +31 -4
- package/dist/d5-testing-library.legacy-esm.js +4 -4
- package/dist/d5-testing-library.mjs +4 -4
- package/package.json +1 -1
- package/dist/FormEdit-VOA5OIJ2.mjs +0 -7
- package/dist/ListForm-FHAD7GLJ.mjs +0 -7
- package/dist/TreeView-QDCXAJZ2.mjs +0 -8
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
wait,
|
|
17
17
|
waitElementIsClickable,
|
|
18
18
|
waitElementIsVisible
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-SPTTRJJ4.mjs";
|
|
20
20
|
|
|
21
21
|
// src/pageObjects/elements/Table/Table.ts
|
|
22
22
|
import { By as By5 } from "selenium-webdriver";
|
|
@@ -586,8 +586,15 @@ var FormFilterField = class extends AbstractEditor {
|
|
|
586
586
|
* @example
|
|
587
587
|
* await form.formFilter('NumberFld').setValue(123);
|
|
588
588
|
* await form.formFilter('TextFld').setValue('TestValue');
|
|
589
|
+
* await form.formFilter('TextFld').setValue('TestValue', '=', true);
|
|
589
590
|
*/
|
|
590
|
-
async setValue(value) {
|
|
591
|
+
async setValue(value, operation, isBlank) {
|
|
592
|
+
if (typeof operation === "string") {
|
|
593
|
+
await this.setOperation(operation);
|
|
594
|
+
}
|
|
595
|
+
if (typeof isBlank === "boolean") {
|
|
596
|
+
await this.setIsBlank(isBlank);
|
|
597
|
+
}
|
|
591
598
|
return super.setValue(value);
|
|
592
599
|
}
|
|
593
600
|
/**
|
|
@@ -679,8 +686,15 @@ var PanelFilterField = class extends AbstractEditor {
|
|
|
679
686
|
* @example
|
|
680
687
|
* await form.filterPanel.filterField('NumberFld').setValue(123);
|
|
681
688
|
* await form.filterPanel.filterField('TextFld').setValue('TestValue');
|
|
689
|
+
* await form.filterPanel.filterField('TextFld').setValue('TestValue', '=', true);
|
|
682
690
|
*/
|
|
683
|
-
async setValue(value) {
|
|
691
|
+
async setValue(value, operation, isBlank) {
|
|
692
|
+
if (typeof operation === "string") {
|
|
693
|
+
await this.setOperation(operation);
|
|
694
|
+
}
|
|
695
|
+
if (typeof isBlank === "boolean") {
|
|
696
|
+
await this.setIsBlank(isBlank);
|
|
697
|
+
}
|
|
684
698
|
return super.setValue(value);
|
|
685
699
|
}
|
|
686
700
|
/**
|
|
@@ -901,9 +915,22 @@ var ColumnFilter = class extends AbstractElement {
|
|
|
901
915
|
* @example
|
|
902
916
|
* await form.columnFilter('NumberFld').setValue(123);
|
|
903
917
|
* await form.columnFilter('TextFld').setValue('TestValue');
|
|
918
|
+
* await form.columnFilter('TextFld').setValue('TestValue', '=', true);
|
|
904
919
|
*/
|
|
905
|
-
async setValue(value) {
|
|
920
|
+
async setValue(value, operation, isBlank) {
|
|
906
921
|
const filter = await this.initFilter();
|
|
922
|
+
const inputEl = await filter.getElement();
|
|
923
|
+
await inputEl.click();
|
|
924
|
+
const filterOperation = new FilterOperation({
|
|
925
|
+
parentCssSelector: HEADER_FILTER_CONTAINER,
|
|
926
|
+
filterTestID: createHeaderFilterTestId(this._formName, this._name)
|
|
927
|
+
});
|
|
928
|
+
if (typeof operation === "string") {
|
|
929
|
+
await filterOperation.setOperation(operation);
|
|
930
|
+
}
|
|
931
|
+
if (typeof isBlank === "boolean") {
|
|
932
|
+
await filterOperation.setIsBlank(isBlank);
|
|
933
|
+
}
|
|
907
934
|
await filter.setValue(value);
|
|
908
935
|
return this.apply();
|
|
909
936
|
}
|
|
@@ -927,32 +954,52 @@ var ColumnFilter = class extends AbstractElement {
|
|
|
927
954
|
await filter.remove(itemText);
|
|
928
955
|
return this.apply();
|
|
929
956
|
}
|
|
930
|
-
|
|
957
|
+
/**
|
|
958
|
+
* Инициализация операции фильтра
|
|
959
|
+
*/
|
|
931
960
|
async initOperation() {
|
|
932
|
-
await this.initFilter();
|
|
961
|
+
const filter = await this.initFilter();
|
|
962
|
+
const inputEl = await filter.getElement();
|
|
963
|
+
await inputEl.click();
|
|
933
964
|
return new FilterOperation({
|
|
934
965
|
parentCssSelector: HEADER_FILTER_CONTAINER,
|
|
935
966
|
filterTestID: createHeaderFilterTestId(this._formName, this._name)
|
|
936
967
|
});
|
|
937
968
|
}
|
|
938
|
-
|
|
969
|
+
/**
|
|
970
|
+
* Устанавливает операцию для фильтра
|
|
971
|
+
* @example
|
|
972
|
+
* await form.columnFilter('TagBox').setOperation("=");
|
|
973
|
+
*/
|
|
939
974
|
async setOperation(operationName) {
|
|
940
975
|
const filterOperation = await this.initOperation();
|
|
941
976
|
await filterOperation.setOperation(operationName);
|
|
942
977
|
await this.apply();
|
|
943
978
|
}
|
|
944
|
-
|
|
979
|
+
/**
|
|
980
|
+
* Возвращает операцию фильтра
|
|
981
|
+
* @example
|
|
982
|
+
* expect(await form.columnFilter('NumberFld').getOperation()).toBe("=");
|
|
983
|
+
*/
|
|
945
984
|
async getOperation() {
|
|
946
985
|
const filterOperation = await this.initOperation();
|
|
947
986
|
return await filterOperation.getOperation();
|
|
948
987
|
}
|
|
949
|
-
|
|
988
|
+
/**
|
|
989
|
+
* Устанавливает операцию 'isblank' для фильтра
|
|
990
|
+
* @example
|
|
991
|
+
* await form.columnFilter('TagBox').setIsBlank(true);
|
|
992
|
+
*/
|
|
950
993
|
async setIsBlank(value) {
|
|
951
994
|
const filterOperation = await this.initOperation();
|
|
952
995
|
await filterOperation.setIsBlank(value);
|
|
953
996
|
await this.apply();
|
|
954
997
|
}
|
|
955
|
-
|
|
998
|
+
/**
|
|
999
|
+
* Возвращает true|false, если операция 'isblank' установлена для фильтра
|
|
1000
|
+
* @example
|
|
1001
|
+
* expect(await form.columnFilter('NumberFld').getIsBlank()).toBe(false);
|
|
1002
|
+
*/
|
|
956
1003
|
async getIsBlank() {
|
|
957
1004
|
const filterOperation = await this.initOperation();
|
|
958
1005
|
return await filterOperation.getIsBlank();
|
|
@@ -262,6 +262,7 @@ var ControlClass = /* @__PURE__ */ ((ControlClass2) => {
|
|
|
262
262
|
ControlClass2["SingleDateRange"] = "single-date-range-control";
|
|
263
263
|
ControlClass2["BooleanSelector"] = "buttons-group";
|
|
264
264
|
ControlClass2["ButtonGroup"] = "button-group-field";
|
|
265
|
+
ControlClass2["HeaderFilterDictionary"] = "header-filter-dictionary";
|
|
265
266
|
return ControlClass2;
|
|
266
267
|
})(ControlClass || {});
|
|
267
268
|
|
|
@@ -679,6 +680,97 @@ var DateEditor = class extends AbstractDXEditorWithInput {
|
|
|
679
680
|
}
|
|
680
681
|
};
|
|
681
682
|
|
|
683
|
+
// src/pageObjects/elements/Editors/HeaderFilterDictionary.ts
|
|
684
|
+
import { By as By11, Key as Key4 } from "selenium-webdriver";
|
|
685
|
+
var TAGS_SELECTOR2 = ".dx-tag .tag-text";
|
|
686
|
+
var DX_TAG_CONTAINER2 = "dx-tag-container";
|
|
687
|
+
var DX_TEXTEDITOR_EMPTY3 = "dx-texteditor-empty";
|
|
688
|
+
var CUSTOM_OPTION_LIST_SELECTOR = "custom-list";
|
|
689
|
+
var SELECT_BOX_OPTION_TEXT_CONTAINER_CLASS2 = "d5-multi-select-item";
|
|
690
|
+
var TAG_BOX_LIST_ITEM_SELECTOR2 = '.dx-overlay-wrapper .dx-list-item[aria-selected="true"]';
|
|
691
|
+
var combinedOptionHeaderFilterDictValueXpath = (value) => `//div[contains(@class, '${SELECT_BOX_OPTION_TEXT_CONTAINER_CLASS2}') and contains(text(), '${value}')]`;
|
|
692
|
+
var dropDownHeaderFilterDictionaryOptionClick = async (optionValue, driver, dataTEST = "", delay = true) => {
|
|
693
|
+
const { implicit } = await driver.manage().getTimeouts();
|
|
694
|
+
let optElement = null;
|
|
695
|
+
const timeout = delay ? implicit : 600;
|
|
696
|
+
let err = null;
|
|
697
|
+
try {
|
|
698
|
+
const calendarPopoverSelector = byTestIdCssSelector(`${dataTEST}`);
|
|
699
|
+
await driver.manage().setTimeouts({ implicit: timeout });
|
|
700
|
+
const calendarPopoverElement = await driver.findElement(By11.css(calendarPopoverSelector));
|
|
701
|
+
const customOptionList = calendarPopoverElement.findElement(By11.css(`.${CUSTOM_OPTION_LIST_SELECTOR}`));
|
|
702
|
+
optElement = await customOptionList.findElement(By11.xpath(combinedOptionHeaderFilterDictValueXpath(optionValue)));
|
|
703
|
+
await click(optElement, driver);
|
|
704
|
+
} catch (e) {
|
|
705
|
+
err = new Error(`Item not found: "${optionValue}"`);
|
|
706
|
+
} finally {
|
|
707
|
+
await driver.manage().setTimeouts({ implicit });
|
|
708
|
+
}
|
|
709
|
+
if (err)
|
|
710
|
+
throw err;
|
|
711
|
+
};
|
|
712
|
+
var HeaderFilterDictionary = class extends AbstractDXEditorWithInput {
|
|
713
|
+
constructor(parentCssSelector, elementCssSelector, driver) {
|
|
714
|
+
super(parentCssSelector, elementCssSelector, driver);
|
|
715
|
+
this.setClearStrategy(new ClearButtonStrategy(this.getFullCssSelector(), this.driver));
|
|
716
|
+
}
|
|
717
|
+
async setTagBoxInputValue(values) {
|
|
718
|
+
const lastElement = values[values.length - 1];
|
|
719
|
+
const inputEl = await this.getInputElement();
|
|
720
|
+
await inputEl.click();
|
|
721
|
+
for (const value of values) {
|
|
722
|
+
await this.selectOption(inputEl, value, lastElement);
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
async waitOptionSelection() {
|
|
726
|
+
await fixElementStaleError(By11.css(TAG_BOX_LIST_ITEM_SELECTOR2), this.driver);
|
|
727
|
+
}
|
|
728
|
+
async selectOption(inputEl, value, lastElement) {
|
|
729
|
+
try {
|
|
730
|
+
await inputEl.sendKeys(value);
|
|
731
|
+
const dataTEST = await this.getDataTestId();
|
|
732
|
+
await dropDownHeaderFilterDictionaryOptionClick(value, this.driver, dataTEST);
|
|
733
|
+
const textLength = await inputEl.getAttribute("value").then((value2) => value2.length);
|
|
734
|
+
for (let i = 0; i < textLength; i++) {
|
|
735
|
+
await inputEl.sendKeys(Key4.BACK_SPACE);
|
|
736
|
+
}
|
|
737
|
+
} catch (error) {
|
|
738
|
+
throw error;
|
|
739
|
+
}
|
|
740
|
+
await this.waitOptionSelection();
|
|
741
|
+
if (value !== lastElement) {
|
|
742
|
+
await inputEl.clear();
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
async getHeaderFilterDictionaryInputValue() {
|
|
746
|
+
if (await this.isHeaderFilterDictionaryEmpty()) {
|
|
747
|
+
return [];
|
|
748
|
+
}
|
|
749
|
+
const tags = await this.driver.findElements(
|
|
750
|
+
By11.css(`${this.getFullCssSelector()} .${DX_TAG_CONTAINER2} ${TAGS_SELECTOR2}`)
|
|
751
|
+
);
|
|
752
|
+
const values = [];
|
|
753
|
+
for (const tag of tags) {
|
|
754
|
+
values.push(await tag.getAttribute("textContent"));
|
|
755
|
+
}
|
|
756
|
+
return values;
|
|
757
|
+
}
|
|
758
|
+
async isHeaderFilterDictionaryEmpty() {
|
|
759
|
+
const classAttribute = await this.getClasses();
|
|
760
|
+
return classAttribute.includes(DX_TEXTEDITOR_EMPTY3);
|
|
761
|
+
}
|
|
762
|
+
async getValue() {
|
|
763
|
+
const value = await this.getHeaderFilterDictionaryInputValue();
|
|
764
|
+
return value.length ? value : null;
|
|
765
|
+
}
|
|
766
|
+
async setValue(values) {
|
|
767
|
+
if (!Array.isArray(values)) {
|
|
768
|
+
values = [values];
|
|
769
|
+
}
|
|
770
|
+
await this.setTagBoxInputValue(values);
|
|
771
|
+
}
|
|
772
|
+
};
|
|
773
|
+
|
|
682
774
|
// src/pageObjects/elements/Editors/editorFactory.ts
|
|
683
775
|
var editorFactory = async (parentCssSelector, elementCssSelector, driver) => {
|
|
684
776
|
const elementInstance = new AbstractFormElement(parentCssSelector, elementCssSelector, driver);
|
|
@@ -702,6 +794,8 @@ var editorFactory = async (parentCssSelector, elementCssSelector, driver) => {
|
|
|
702
794
|
return new BooleanSelector(parentCssSelector, elementCssSelector, driver);
|
|
703
795
|
if (classSting.includes("button-group-field" /* ButtonGroup */))
|
|
704
796
|
return new ButtonGroup(parentCssSelector, elementCssSelector, driver);
|
|
797
|
+
if (classSting.includes("header-filter-dictionary" /* HeaderFilterDictionary */))
|
|
798
|
+
return new HeaderFilterDictionary(parentCssSelector, elementCssSelector, driver);
|
|
705
799
|
throw new Error("Unknown type of editor. Please write ticket to the support");
|
|
706
800
|
};
|
|
707
801
|
|
|
@@ -860,7 +954,7 @@ var FormField = class extends AbstractEditor {
|
|
|
860
954
|
};
|
|
861
955
|
|
|
862
956
|
// src/pageObjects/elements/Forms/Form.ts
|
|
863
|
-
import { By as
|
|
957
|
+
import { By as By15 } from "selenium-webdriver";
|
|
864
958
|
|
|
865
959
|
// src/pageObjects/elements/TableToolbar/AbstractButton.ts
|
|
866
960
|
var AbstractButton = class extends AbstractElementWithParent {
|
|
@@ -883,7 +977,7 @@ var AbstractButton = class extends AbstractElementWithParent {
|
|
|
883
977
|
};
|
|
884
978
|
|
|
885
979
|
// src/pageObjects/elements/DXComponents/DXButton.ts
|
|
886
|
-
import { By as
|
|
980
|
+
import { By as By12 } from "selenium-webdriver";
|
|
887
981
|
var DXButton = class extends AbstractButton {
|
|
888
982
|
async getText() {
|
|
889
983
|
const classes = await this.getClasses();
|
|
@@ -891,7 +985,7 @@ var DXButton = class extends AbstractButton {
|
|
|
891
985
|
return null;
|
|
892
986
|
}
|
|
893
987
|
const el = await this.getElement();
|
|
894
|
-
const textEl = el.findElement(
|
|
988
|
+
const textEl = el.findElement(By12.className("dx-button-text"));
|
|
895
989
|
return await textEl.getText();
|
|
896
990
|
}
|
|
897
991
|
};
|
|
@@ -921,7 +1015,7 @@ var Panel = class extends AbstractGroup {
|
|
|
921
1015
|
};
|
|
922
1016
|
|
|
923
1017
|
// src/pageObjects/elements/Groups/TabPanel.ts
|
|
924
|
-
import { By as
|
|
1018
|
+
import { By as By13 } from "selenium-webdriver";
|
|
925
1019
|
var TabPanelItem = class extends AbstractGroup {
|
|
926
1020
|
constructor(parentCssSelector, elementCssSelector, driver) {
|
|
927
1021
|
super(parentCssSelector, elementCssSelector, driver);
|
|
@@ -931,7 +1025,7 @@ var TabPanelItem = class extends AbstractGroup {
|
|
|
931
1025
|
}
|
|
932
1026
|
async isActive() {
|
|
933
1027
|
const tabPanelItemElement = await this.getElement();
|
|
934
|
-
const grandparentTab = await tabPanelItemElement.findElement(
|
|
1028
|
+
const grandparentTab = await tabPanelItemElement.findElement(By13.xpath('ancestor::div[@role="tab"][1]'));
|
|
935
1029
|
return await grandparentTab.getAttribute("aria-selected") === "true";
|
|
936
1030
|
}
|
|
937
1031
|
async getTitle() {
|
|
@@ -948,7 +1042,7 @@ var TabPanel = class extends AbstractGroup {
|
|
|
948
1042
|
};
|
|
949
1043
|
|
|
950
1044
|
// src/pageObjects/elements/Groups/Accordion/AccordionItem.ts
|
|
951
|
-
import { By as
|
|
1045
|
+
import { By as By14 } from "selenium-webdriver";
|
|
952
1046
|
var ACCORDION_TITLE_CONTAINER = "accordion-title-container";
|
|
953
1047
|
var AccordionItem = class extends AbstractGroup {
|
|
954
1048
|
constructor(parentCssSelector, elementCssSelector, driver) {
|
|
@@ -960,7 +1054,7 @@ var AccordionItem = class extends AbstractGroup {
|
|
|
960
1054
|
}
|
|
961
1055
|
async clickAccordionItemTitle() {
|
|
962
1056
|
const accordionElement = await this.getElement();
|
|
963
|
-
const accordTitleElement = await accordionElement.findElement(
|
|
1057
|
+
const accordTitleElement = await accordionElement.findElement(By14.className(ACCORDION_TITLE_CONTAINER));
|
|
964
1058
|
await accordTitleElement.click();
|
|
965
1059
|
}
|
|
966
1060
|
async click() {
|
|
@@ -1148,15 +1242,15 @@ async function classDependencyInjector(formType) {
|
|
|
1148
1242
|
let SubFormFactoryClass;
|
|
1149
1243
|
switch (formType) {
|
|
1150
1244
|
case "1" /* LIST */:
|
|
1151
|
-
SubFormFactoryClass = (await import("./ListForm-
|
|
1245
|
+
SubFormFactoryClass = (await import("./ListForm-A2IT4Z65.mjs")).default;
|
|
1152
1246
|
break;
|
|
1153
1247
|
case "3" /* TREE */:
|
|
1154
|
-
SubFormFactoryClass = (await import("./TreeView-
|
|
1248
|
+
SubFormFactoryClass = (await import("./TreeView-XM4SNZSJ.mjs")).default;
|
|
1155
1249
|
break;
|
|
1156
1250
|
case "2" /* EDIT */:
|
|
1157
1251
|
case "99" /* FREE_FORM */:
|
|
1158
1252
|
case "4" /* REPORT */:
|
|
1159
|
-
SubFormFactoryClass = (await import("./FormEdit-
|
|
1253
|
+
SubFormFactoryClass = (await import("./FormEdit-YRHBBSY3.mjs")).default;
|
|
1160
1254
|
break;
|
|
1161
1255
|
default:
|
|
1162
1256
|
throw new Error(`Unsupported form type ${formType}`);
|
|
@@ -1186,10 +1280,10 @@ var Form = class extends AbstractForm {
|
|
|
1186
1280
|
*/
|
|
1187
1281
|
async getTitleText() {
|
|
1188
1282
|
if (await this.isModal()) {
|
|
1189
|
-
const titleEl2 = await this.driver.findElement(
|
|
1283
|
+
const titleEl2 = await this.driver.findElement(By15.css(`${this.popupContainerCssSelector} .popup-title`));
|
|
1190
1284
|
return titleEl2.getText();
|
|
1191
1285
|
}
|
|
1192
|
-
let titleEl = await this.driver.findElement(
|
|
1286
|
+
let titleEl = await this.driver.findElement(By15.className("main-toolbar-form-title"));
|
|
1193
1287
|
return titleEl.getText();
|
|
1194
1288
|
}
|
|
1195
1289
|
setSubFormMode() {
|
|
@@ -1207,7 +1301,7 @@ var Form = class extends AbstractForm {
|
|
|
1207
1301
|
*/
|
|
1208
1302
|
async subForm(name) {
|
|
1209
1303
|
const cssSelector = subformCssSelector(this.containerCssSelector, subFormTestId(name));
|
|
1210
|
-
const byCssSelector =
|
|
1304
|
+
const byCssSelector = By15.css(cssSelector);
|
|
1211
1305
|
const subFormEl = await this.driver.findElement(byCssSelector);
|
|
1212
1306
|
await waitElementIsVisible({
|
|
1213
1307
|
element: subFormEl,
|
|
@@ -387,6 +387,7 @@ var init_types = __esm({
|
|
|
387
387
|
ControlClass2["SingleDateRange"] = "single-date-range-control";
|
|
388
388
|
ControlClass2["BooleanSelector"] = "buttons-group";
|
|
389
389
|
ControlClass2["ButtonGroup"] = "button-group-field";
|
|
390
|
+
ControlClass2["HeaderFilterDictionary"] = "header-filter-dictionary";
|
|
390
391
|
return ControlClass2;
|
|
391
392
|
})(ControlClass || {});
|
|
392
393
|
}
|
|
@@ -918,6 +919,108 @@ var init_DateEditor = __esm({
|
|
|
918
919
|
}
|
|
919
920
|
});
|
|
920
921
|
|
|
922
|
+
// src/pageObjects/elements/Editors/HeaderFilterDictionary.ts
|
|
923
|
+
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_SELECTOR2, combinedOptionHeaderFilterDictValueXpath, dropDownHeaderFilterDictionaryOptionClick, HeaderFilterDictionary;
|
|
924
|
+
var init_HeaderFilterDictionary = __esm({
|
|
925
|
+
"src/pageObjects/elements/Editors/HeaderFilterDictionary.ts"() {
|
|
926
|
+
"use strict";
|
|
927
|
+
init_AbstractEditor();
|
|
928
|
+
import_selenium_webdriver15 = require("selenium-webdriver");
|
|
929
|
+
init_actions();
|
|
930
|
+
init_locators();
|
|
931
|
+
init_ClearButtonStrategy();
|
|
932
|
+
init_fixElementStaleError();
|
|
933
|
+
TAGS_SELECTOR2 = ".dx-tag .tag-text";
|
|
934
|
+
DX_TAG_CONTAINER2 = "dx-tag-container";
|
|
935
|
+
DX_TEXTEDITOR_EMPTY3 = "dx-texteditor-empty";
|
|
936
|
+
CUSTOM_OPTION_LIST_SELECTOR = "custom-list";
|
|
937
|
+
SELECT_BOX_OPTION_TEXT_CONTAINER_CLASS2 = "d5-multi-select-item";
|
|
938
|
+
TAG_BOX_LIST_ITEM_SELECTOR2 = '.dx-overlay-wrapper .dx-list-item[aria-selected="true"]';
|
|
939
|
+
combinedOptionHeaderFilterDictValueXpath = (value) => `//div[contains(@class, '${SELECT_BOX_OPTION_TEXT_CONTAINER_CLASS2}') and contains(text(), '${value}')]`;
|
|
940
|
+
dropDownHeaderFilterDictionaryOptionClick = async (optionValue, driver, dataTEST = "", delay = true) => {
|
|
941
|
+
const { implicit } = await driver.manage().getTimeouts();
|
|
942
|
+
let optElement = null;
|
|
943
|
+
const timeout = delay ? implicit : 600;
|
|
944
|
+
let err = null;
|
|
945
|
+
try {
|
|
946
|
+
const calendarPopoverSelector = byTestIdCssSelector(`${dataTEST}`);
|
|
947
|
+
await driver.manage().setTimeouts({ implicit: timeout });
|
|
948
|
+
const calendarPopoverElement = await driver.findElement(import_selenium_webdriver15.By.css(calendarPopoverSelector));
|
|
949
|
+
const customOptionList = calendarPopoverElement.findElement(import_selenium_webdriver15.By.css(`.${CUSTOM_OPTION_LIST_SELECTOR}`));
|
|
950
|
+
optElement = await customOptionList.findElement(import_selenium_webdriver15.By.xpath(combinedOptionHeaderFilterDictValueXpath(optionValue)));
|
|
951
|
+
await click(optElement, driver);
|
|
952
|
+
} catch (e) {
|
|
953
|
+
err = new Error(`Item not found: "${optionValue}"`);
|
|
954
|
+
} finally {
|
|
955
|
+
await driver.manage().setTimeouts({ implicit });
|
|
956
|
+
}
|
|
957
|
+
if (err)
|
|
958
|
+
throw err;
|
|
959
|
+
};
|
|
960
|
+
HeaderFilterDictionary = class extends AbstractDXEditorWithInput {
|
|
961
|
+
constructor(parentCssSelector, elementCssSelector, driver) {
|
|
962
|
+
super(parentCssSelector, elementCssSelector, driver);
|
|
963
|
+
this.setClearStrategy(new ClearButtonStrategy(this.getFullCssSelector(), this.driver));
|
|
964
|
+
}
|
|
965
|
+
async setTagBoxInputValue(values) {
|
|
966
|
+
const lastElement = values[values.length - 1];
|
|
967
|
+
const inputEl = await this.getInputElement();
|
|
968
|
+
await inputEl.click();
|
|
969
|
+
for (const value of values) {
|
|
970
|
+
await this.selectOption(inputEl, value, lastElement);
|
|
971
|
+
}
|
|
972
|
+
}
|
|
973
|
+
async waitOptionSelection() {
|
|
974
|
+
await fixElementStaleError(import_selenium_webdriver15.By.css(TAG_BOX_LIST_ITEM_SELECTOR2), this.driver);
|
|
975
|
+
}
|
|
976
|
+
async selectOption(inputEl, value, lastElement) {
|
|
977
|
+
try {
|
|
978
|
+
await inputEl.sendKeys(value);
|
|
979
|
+
const dataTEST = await this.getDataTestId();
|
|
980
|
+
await dropDownHeaderFilterDictionaryOptionClick(value, this.driver, dataTEST);
|
|
981
|
+
const textLength = await inputEl.getAttribute("value").then((value2) => value2.length);
|
|
982
|
+
for (let i = 0; i < textLength; i++) {
|
|
983
|
+
await inputEl.sendKeys(import_selenium_webdriver15.Key.BACK_SPACE);
|
|
984
|
+
}
|
|
985
|
+
} catch (error) {
|
|
986
|
+
throw error;
|
|
987
|
+
}
|
|
988
|
+
await this.waitOptionSelection();
|
|
989
|
+
if (value !== lastElement) {
|
|
990
|
+
await inputEl.clear();
|
|
991
|
+
}
|
|
992
|
+
}
|
|
993
|
+
async getHeaderFilterDictionaryInputValue() {
|
|
994
|
+
if (await this.isHeaderFilterDictionaryEmpty()) {
|
|
995
|
+
return [];
|
|
996
|
+
}
|
|
997
|
+
const tags = await this.driver.findElements(
|
|
998
|
+
import_selenium_webdriver15.By.css(`${this.getFullCssSelector()} .${DX_TAG_CONTAINER2} ${TAGS_SELECTOR2}`)
|
|
999
|
+
);
|
|
1000
|
+
const values = [];
|
|
1001
|
+
for (const tag of tags) {
|
|
1002
|
+
values.push(await tag.getAttribute("textContent"));
|
|
1003
|
+
}
|
|
1004
|
+
return values;
|
|
1005
|
+
}
|
|
1006
|
+
async isHeaderFilterDictionaryEmpty() {
|
|
1007
|
+
const classAttribute = await this.getClasses();
|
|
1008
|
+
return classAttribute.includes(DX_TEXTEDITOR_EMPTY3);
|
|
1009
|
+
}
|
|
1010
|
+
async getValue() {
|
|
1011
|
+
const value = await this.getHeaderFilterDictionaryInputValue();
|
|
1012
|
+
return value.length ? value : null;
|
|
1013
|
+
}
|
|
1014
|
+
async setValue(values) {
|
|
1015
|
+
if (!Array.isArray(values)) {
|
|
1016
|
+
values = [values];
|
|
1017
|
+
}
|
|
1018
|
+
await this.setTagBoxInputValue(values);
|
|
1019
|
+
}
|
|
1020
|
+
};
|
|
1021
|
+
}
|
|
1022
|
+
});
|
|
1023
|
+
|
|
921
1024
|
// src/pageObjects/elements/Editors/editorFactory.ts
|
|
922
1025
|
var editorFactory;
|
|
923
1026
|
var init_editorFactory = __esm({
|
|
@@ -934,6 +1037,7 @@ var init_editorFactory = __esm({
|
|
|
934
1037
|
init_BooleanSelector();
|
|
935
1038
|
init_ButtonGroup();
|
|
936
1039
|
init_DateEditor();
|
|
1040
|
+
init_HeaderFilterDictionary();
|
|
937
1041
|
editorFactory = async (parentCssSelector, elementCssSelector, driver) => {
|
|
938
1042
|
const elementInstance = new AbstractFormElement(parentCssSelector, elementCssSelector, driver);
|
|
939
1043
|
const classSting = await elementInstance.getClasses();
|
|
@@ -956,6 +1060,8 @@ var init_editorFactory = __esm({
|
|
|
956
1060
|
return new BooleanSelector(parentCssSelector, elementCssSelector, driver);
|
|
957
1061
|
if (classSting.includes("button-group-field" /* ButtonGroup */))
|
|
958
1062
|
return new ButtonGroup(parentCssSelector, elementCssSelector, driver);
|
|
1063
|
+
if (classSting.includes("header-filter-dictionary" /* HeaderFilterDictionary */))
|
|
1064
|
+
return new HeaderFilterDictionary(parentCssSelector, elementCssSelector, driver);
|
|
959
1065
|
throw new Error("Unknown type of editor. Please write ticket to the support");
|
|
960
1066
|
};
|
|
961
1067
|
}
|
|
@@ -1063,12 +1169,12 @@ var init_AbstractButton = __esm({
|
|
|
1063
1169
|
});
|
|
1064
1170
|
|
|
1065
1171
|
// src/pageObjects/elements/DXComponents/DXButton.ts
|
|
1066
|
-
var
|
|
1172
|
+
var import_selenium_webdriver17, DXButton;
|
|
1067
1173
|
var init_DXButton = __esm({
|
|
1068
1174
|
"src/pageObjects/elements/DXComponents/DXButton.ts"() {
|
|
1069
1175
|
"use strict";
|
|
1070
1176
|
init_AbstractButton();
|
|
1071
|
-
|
|
1177
|
+
import_selenium_webdriver17 = require("selenium-webdriver");
|
|
1072
1178
|
DXButton = class extends AbstractButton {
|
|
1073
1179
|
async getText() {
|
|
1074
1180
|
const classes = await this.getClasses();
|
|
@@ -1076,7 +1182,7 @@ var init_DXButton = __esm({
|
|
|
1076
1182
|
return null;
|
|
1077
1183
|
}
|
|
1078
1184
|
const el = await this.getElement();
|
|
1079
|
-
const textEl = el.findElement(
|
|
1185
|
+
const textEl = el.findElement(import_selenium_webdriver17.By.className("dx-button-text"));
|
|
1080
1186
|
return await textEl.getText();
|
|
1081
1187
|
}
|
|
1082
1188
|
};
|
|
@@ -1131,12 +1237,12 @@ var init_Panel = __esm({
|
|
|
1131
1237
|
});
|
|
1132
1238
|
|
|
1133
1239
|
// src/pageObjects/elements/Groups/TabPanel.ts
|
|
1134
|
-
var
|
|
1240
|
+
var import_selenium_webdriver18, TabPanelItem, TabPanel;
|
|
1135
1241
|
var init_TabPanel = __esm({
|
|
1136
1242
|
"src/pageObjects/elements/Groups/TabPanel.ts"() {
|
|
1137
1243
|
"use strict";
|
|
1138
1244
|
init_AbstractGroup();
|
|
1139
|
-
|
|
1245
|
+
import_selenium_webdriver18 = require("selenium-webdriver");
|
|
1140
1246
|
init_actions();
|
|
1141
1247
|
TabPanelItem = class extends AbstractGroup {
|
|
1142
1248
|
constructor(parentCssSelector, elementCssSelector, driver) {
|
|
@@ -1147,7 +1253,7 @@ var init_TabPanel = __esm({
|
|
|
1147
1253
|
}
|
|
1148
1254
|
async isActive() {
|
|
1149
1255
|
const tabPanelItemElement = await this.getElement();
|
|
1150
|
-
const grandparentTab = await tabPanelItemElement.findElement(
|
|
1256
|
+
const grandparentTab = await tabPanelItemElement.findElement(import_selenium_webdriver18.By.xpath('ancestor::div[@role="tab"][1]'));
|
|
1151
1257
|
return await grandparentTab.getAttribute("aria-selected") === "true";
|
|
1152
1258
|
}
|
|
1153
1259
|
async getTitle() {
|
|
@@ -1166,12 +1272,12 @@ var init_TabPanel = __esm({
|
|
|
1166
1272
|
});
|
|
1167
1273
|
|
|
1168
1274
|
// src/pageObjects/elements/Groups/Accordion/AccordionItem.ts
|
|
1169
|
-
var
|
|
1275
|
+
var import_selenium_webdriver19, ACCORDION_TITLE_CONTAINER, AccordionItem;
|
|
1170
1276
|
var init_AccordionItem = __esm({
|
|
1171
1277
|
"src/pageObjects/elements/Groups/Accordion/AccordionItem.ts"() {
|
|
1172
1278
|
"use strict";
|
|
1173
1279
|
init_AbstractGroup();
|
|
1174
|
-
|
|
1280
|
+
import_selenium_webdriver19 = require("selenium-webdriver");
|
|
1175
1281
|
init_actions();
|
|
1176
1282
|
ACCORDION_TITLE_CONTAINER = "accordion-title-container";
|
|
1177
1283
|
AccordionItem = class extends AbstractGroup {
|
|
@@ -1184,7 +1290,7 @@ var init_AccordionItem = __esm({
|
|
|
1184
1290
|
}
|
|
1185
1291
|
async clickAccordionItemTitle() {
|
|
1186
1292
|
const accordionElement = await this.getElement();
|
|
1187
|
-
const accordTitleElement = await accordionElement.findElement(
|
|
1293
|
+
const accordTitleElement = await accordionElement.findElement(import_selenium_webdriver19.By.className(ACCORDION_TITLE_CONTAINER));
|
|
1188
1294
|
await accordTitleElement.click();
|
|
1189
1295
|
}
|
|
1190
1296
|
async click() {
|
|
@@ -1419,11 +1525,11 @@ function getCssRowByIndexSelector(index) {
|
|
|
1419
1525
|
function getCssCellByIndexSelector(index) {
|
|
1420
1526
|
return `td[role="gridcell"][aria-colindex="${transformInputIndex(index)}"]`;
|
|
1421
1527
|
}
|
|
1422
|
-
var
|
|
1528
|
+
var import_selenium_webdriver20, getColumnByIndexCssSelector, getColumnByCaptionCssSelector, getColumnByNameCssSelector, transformInputIndex, transformOutputIndex;
|
|
1423
1529
|
var init_utils2 = __esm({
|
|
1424
1530
|
"src/pageObjects/elements/Table/utils.ts"() {
|
|
1425
1531
|
"use strict";
|
|
1426
|
-
|
|
1532
|
+
import_selenium_webdriver20 = require("selenium-webdriver");
|
|
1427
1533
|
getColumnByIndexCssSelector = (columnIndex) => `td[aria-colindex="${transformInputIndex(columnIndex)}"]`;
|
|
1428
1534
|
getColumnByCaptionCssSelector = (caption) => `td[role="columnheader"][aria-label="Column ${caption}"]`;
|
|
1429
1535
|
getColumnByNameCssSelector = (name) => `td[role="columnheader"][data-fieldname="${name}"]`;
|
|
@@ -1440,11 +1546,11 @@ var init_types3 = __esm({
|
|
|
1440
1546
|
});
|
|
1441
1547
|
|
|
1442
1548
|
// src/pageObjects/elements/Table/elements/Cell.ts
|
|
1443
|
-
var
|
|
1549
|
+
var import_selenium_webdriver21, Cell;
|
|
1444
1550
|
var init_Cell = __esm({
|
|
1445
1551
|
"src/pageObjects/elements/Table/elements/Cell.ts"() {
|
|
1446
1552
|
"use strict";
|
|
1447
|
-
|
|
1553
|
+
import_selenium_webdriver21 = require("selenium-webdriver");
|
|
1448
1554
|
init_AbstractElementWithParent();
|
|
1449
1555
|
init_utils2();
|
|
1450
1556
|
init_types3();
|
|
@@ -1461,12 +1567,12 @@ var init_Cell = __esm({
|
|
|
1461
1567
|
this.elementCssSelector = getCssCellByIndexSelector(index);
|
|
1462
1568
|
}
|
|
1463
1569
|
async getBooleanValue(cellEl) {
|
|
1464
|
-
const booleanEl = await cellEl.findElement(
|
|
1570
|
+
const booleanEl = await cellEl.findElement(import_selenium_webdriver21.By.className("boolean-widget"));
|
|
1465
1571
|
return await booleanEl.getAttribute("aria-checked") === "true" ? 1 : 0;
|
|
1466
1572
|
}
|
|
1467
1573
|
async getTagsValue(cellEl) {
|
|
1468
1574
|
const tagsCssSelector = ".multiselect-container .multiselect-cell";
|
|
1469
|
-
const tags = await cellEl.findElements(
|
|
1575
|
+
const tags = await cellEl.findElements(import_selenium_webdriver21.By.css(tagsCssSelector));
|
|
1470
1576
|
const values = [];
|
|
1471
1577
|
for (const tag of tags) {
|
|
1472
1578
|
values.push(await tag.getAttribute("textContent"));
|
|
@@ -1496,11 +1602,11 @@ var init_Cell = __esm({
|
|
|
1496
1602
|
});
|
|
1497
1603
|
|
|
1498
1604
|
// src/pageObjects/elements/Table/elements/Row.ts
|
|
1499
|
-
var
|
|
1605
|
+
var import_selenium_webdriver22, DX_SELECTION_CLASS, DX_ROW_EDIT_CLASS, DX_DATA_ROW_CLASS, Row;
|
|
1500
1606
|
var init_Row = __esm({
|
|
1501
1607
|
"src/pageObjects/elements/Table/elements/Row.ts"() {
|
|
1502
1608
|
"use strict";
|
|
1503
|
-
|
|
1609
|
+
import_selenium_webdriver22 = require("selenium-webdriver");
|
|
1504
1610
|
init_Cell();
|
|
1505
1611
|
init_utils2();
|
|
1506
1612
|
init_AbstractElementWithParent();
|
|
@@ -1559,7 +1665,7 @@ var init_Row = __esm({
|
|
|
1559
1665
|
return this.index;
|
|
1560
1666
|
}
|
|
1561
1667
|
async getCells() {
|
|
1562
|
-
const cells = await this.driver.findElements(
|
|
1668
|
+
const cells = await this.driver.findElements(import_selenium_webdriver22.By.css(`${this.getFullCssSelector()} td[role="gridcell"]`));
|
|
1563
1669
|
const result = [];
|
|
1564
1670
|
cells.forEach((_, index) => {
|
|
1565
1671
|
const newCell = this.getCellByIndex(index);
|
|
@@ -1572,7 +1678,7 @@ var init_Row = __esm({
|
|
|
1572
1678
|
this.index
|
|
1573
1679
|
)}"] .${buttonClass}`;
|
|
1574
1680
|
const button = await fixElementStaleError(
|
|
1575
|
-
|
|
1681
|
+
import_selenium_webdriver22.By.css(`${this.parentCssSelector} ${this.fixedTableContentCssSelector} ${buttonCssSelector}`),
|
|
1576
1682
|
this.driver
|
|
1577
1683
|
);
|
|
1578
1684
|
return click(button, this.driver);
|
|
@@ -1603,11 +1709,11 @@ var init_Row = __esm({
|
|
|
1603
1709
|
});
|
|
1604
1710
|
|
|
1605
1711
|
// src/pageObjects/elements/Table/elements/Column.ts
|
|
1606
|
-
var
|
|
1712
|
+
var import_selenium_webdriver23, Column;
|
|
1607
1713
|
var init_Column = __esm({
|
|
1608
1714
|
"src/pageObjects/elements/Table/elements/Column.ts"() {
|
|
1609
1715
|
"use strict";
|
|
1610
|
-
|
|
1716
|
+
import_selenium_webdriver23 = require("selenium-webdriver");
|
|
1611
1717
|
init_utils2();
|
|
1612
1718
|
init_AbstractElementWithParent();
|
|
1613
1719
|
init_fixElementStaleError();
|
|
@@ -1635,7 +1741,7 @@ var init_Column = __esm({
|
|
|
1635
1741
|
return super.getElement();
|
|
1636
1742
|
}
|
|
1637
1743
|
async getColumnHeaderIndexBy(cssSelector) {
|
|
1638
|
-
const column = await fixElementStaleError(
|
|
1744
|
+
const column = await fixElementStaleError(import_selenium_webdriver23.By.css(`${this.parentCssSelector} ${this.headerCssSelector} ${cssSelector}`), this.driver);
|
|
1639
1745
|
return transformOutputIndex(await column.getAttribute("aria-colindex"));
|
|
1640
1746
|
}
|
|
1641
1747
|
async getIndexByCaption() {
|
|
@@ -1801,11 +1907,11 @@ var init_FormField = __esm({
|
|
|
1801
1907
|
});
|
|
1802
1908
|
|
|
1803
1909
|
// src/pageObjects/elements/Table/Table.ts
|
|
1804
|
-
var
|
|
1910
|
+
var import_selenium_webdriver24, Table;
|
|
1805
1911
|
var init_Table = __esm({
|
|
1806
1912
|
"src/pageObjects/elements/Table/Table.ts"() {
|
|
1807
1913
|
"use strict";
|
|
1808
|
-
|
|
1914
|
+
import_selenium_webdriver24 = require("selenium-webdriver");
|
|
1809
1915
|
init_createDataTestId();
|
|
1810
1916
|
init_AbstractElementWithParent();
|
|
1811
1917
|
init_Row();
|
|
@@ -1857,7 +1963,7 @@ var init_Table = __esm({
|
|
|
1857
1963
|
return this.getRowByIndex(index).select();
|
|
1858
1964
|
}
|
|
1859
1965
|
async getRows() {
|
|
1860
|
-
const rows = await this.driver.findElements(
|
|
1966
|
+
const rows = await this.driver.findElements(import_selenium_webdriver24.By.css(`${this.getFullCssSelector()} .dx-row.dx-data-row`));
|
|
1861
1967
|
const result = [];
|
|
1862
1968
|
rows.forEach((_, index) => {
|
|
1863
1969
|
const newRow = new Row(
|
|
@@ -1873,7 +1979,7 @@ var init_Table = __esm({
|
|
|
1873
1979
|
}
|
|
1874
1980
|
async getColumns() {
|
|
1875
1981
|
const columns = await this.driver.findElements(
|
|
1876
|
-
|
|
1982
|
+
import_selenium_webdriver24.By.css(`${this.getFullCssSelector()} ${this.headerCssSelector} td[role="columnheader"]`)
|
|
1877
1983
|
);
|
|
1878
1984
|
const result = [];
|
|
1879
1985
|
columns.forEach((_, index) => {
|
|
@@ -1968,11 +2074,11 @@ var init_typesUtil = __esm({
|
|
|
1968
2074
|
});
|
|
1969
2075
|
|
|
1970
2076
|
// src/pageObjects/elements/TableToolbar/ToolbarMenu.ts
|
|
1971
|
-
var
|
|
2077
|
+
var import_selenium_webdriver25, SPINDOWN_CLASS, buttonGroupItemSelector, getFullCssSelector, buttonByTextXpath, ToolbarMenu;
|
|
1972
2078
|
var init_ToolbarMenu = __esm({
|
|
1973
2079
|
"src/pageObjects/elements/TableToolbar/ToolbarMenu.ts"() {
|
|
1974
2080
|
"use strict";
|
|
1975
|
-
|
|
2081
|
+
import_selenium_webdriver25 = require("selenium-webdriver");
|
|
1976
2082
|
init_typesUtil();
|
|
1977
2083
|
init_AbstractElementWithParent();
|
|
1978
2084
|
init_locators();
|
|
@@ -2023,7 +2129,7 @@ var init_ToolbarMenu = __esm({
|
|
|
2023
2129
|
throw new Error(`"title" must be a string or array of string`);
|
|
2024
2130
|
let lTitle = isString(title) ? [title] : title;
|
|
2025
2131
|
for (let t of lTitle) {
|
|
2026
|
-
await this.goToButton(t,
|
|
2132
|
+
await this.goToButton(t, import_selenium_webdriver25.By.xpath(buttonByTextXpath(t)));
|
|
2027
2133
|
}
|
|
2028
2134
|
}
|
|
2029
2135
|
};
|
|
@@ -2098,11 +2204,11 @@ var init_FormToolbar = __esm({
|
|
|
2098
2204
|
});
|
|
2099
2205
|
|
|
2100
2206
|
// src/pageObjects/elements/Filters/FilterOperation.ts
|
|
2101
|
-
var
|
|
2207
|
+
var import_selenium_webdriver26, FILTER_OPERATIONS, BUTTON_OPERATION_WIDGET, OPERATIONS_WIDGET_POPUP, getWidgetInPopupSelector, FilterOperation;
|
|
2102
2208
|
var init_FilterOperation = __esm({
|
|
2103
2209
|
"src/pageObjects/elements/Filters/FilterOperation.ts"() {
|
|
2104
2210
|
"use strict";
|
|
2105
|
-
|
|
2211
|
+
import_selenium_webdriver26 = require("selenium-webdriver");
|
|
2106
2212
|
init_fixElementStaleError();
|
|
2107
2213
|
init_AbstractElementWithParent();
|
|
2108
2214
|
init_locators();
|
|
@@ -2142,10 +2248,10 @@ var init_FilterOperation = __esm({
|
|
|
2142
2248
|
errorMessage: "Widget operation is not clickable",
|
|
2143
2249
|
driver: this.driver
|
|
2144
2250
|
});
|
|
2145
|
-
const clickableElement = await widgetButtonEl.findElement(
|
|
2251
|
+
const clickableElement = await widgetButtonEl.findElement(import_selenium_webdriver26.By.className("dx-icon"));
|
|
2146
2252
|
await click(clickableElement, this.driver);
|
|
2147
2253
|
try {
|
|
2148
|
-
const widgetPopupEl = await this.driver.findElement(
|
|
2254
|
+
const widgetPopupEl = await this.driver.findElement(import_selenium_webdriver26.By.css(`${byTestIdCssSelector(`${OPERATIONS_WIDGET_POPUP}-${this._testId}`)}`));
|
|
2149
2255
|
await waitElementIsVisible({
|
|
2150
2256
|
element: widgetPopupEl,
|
|
2151
2257
|
errorMessage: `Operation widget popup is not visible`,
|
|
@@ -2160,7 +2266,7 @@ var init_FilterOperation = __esm({
|
|
|
2160
2266
|
throw new Error(`Operation with name "${operationName}" is not correct.`);
|
|
2161
2267
|
}
|
|
2162
2268
|
await this.initOperationWidget();
|
|
2163
|
-
const operationEl = await fixElementStaleError(
|
|
2269
|
+
const operationEl = await fixElementStaleError(import_selenium_webdriver26.By.css(`${byTestIdCssSelector(`${OPERATIONS_WIDGET_POPUP}-${this._testId}`)} ${getWidgetInPopupSelector(operationName)}`), this.driver);
|
|
2164
2270
|
await click(operationEl, this.driver);
|
|
2165
2271
|
await wait(
|
|
2166
2272
|
async () => {
|
|
@@ -2232,8 +2338,15 @@ var init_FormFilterField = __esm({
|
|
|
2232
2338
|
* @example
|
|
2233
2339
|
* await form.formFilter('NumberFld').setValue(123);
|
|
2234
2340
|
* await form.formFilter('TextFld').setValue('TestValue');
|
|
2341
|
+
* await form.formFilter('TextFld').setValue('TestValue', '=', true);
|
|
2235
2342
|
*/
|
|
2236
|
-
async setValue(value) {
|
|
2343
|
+
async setValue(value, operation, isBlank) {
|
|
2344
|
+
if (typeof operation === "string") {
|
|
2345
|
+
await this.setOperation(operation);
|
|
2346
|
+
}
|
|
2347
|
+
if (typeof isBlank === "boolean") {
|
|
2348
|
+
await this.setIsBlank(isBlank);
|
|
2349
|
+
}
|
|
2237
2350
|
return super.setValue(value);
|
|
2238
2351
|
}
|
|
2239
2352
|
/**
|
|
@@ -2332,8 +2445,15 @@ var init_PanelFilterField = __esm({
|
|
|
2332
2445
|
* @example
|
|
2333
2446
|
* await form.filterPanel.filterField('NumberFld').setValue(123);
|
|
2334
2447
|
* await form.filterPanel.filterField('TextFld').setValue('TestValue');
|
|
2448
|
+
* await form.filterPanel.filterField('TextFld').setValue('TestValue', '=', true);
|
|
2335
2449
|
*/
|
|
2336
|
-
async setValue(value) {
|
|
2450
|
+
async setValue(value, operation, isBlank) {
|
|
2451
|
+
if (typeof operation === "string") {
|
|
2452
|
+
await this.setOperation(operation);
|
|
2453
|
+
}
|
|
2454
|
+
if (typeof isBlank === "boolean") {
|
|
2455
|
+
await this.setIsBlank(isBlank);
|
|
2456
|
+
}
|
|
2337
2457
|
return super.setValue(value);
|
|
2338
2458
|
}
|
|
2339
2459
|
/**
|
|
@@ -2402,11 +2522,11 @@ var init_PanelFilterField = __esm({
|
|
|
2402
2522
|
});
|
|
2403
2523
|
|
|
2404
2524
|
// src/pageObjects/elements/Filters/FilterPanel.ts
|
|
2405
|
-
var
|
|
2525
|
+
var import_selenium_webdriver27, drawerSelector, FILTER_PANEL_SELECTOR, CLOSE_SELECTOR, FilterPanel;
|
|
2406
2526
|
var init_FilterPanel = __esm({
|
|
2407
2527
|
"src/pageObjects/elements/Filters/FilterPanel.ts"() {
|
|
2408
2528
|
"use strict";
|
|
2409
|
-
|
|
2529
|
+
import_selenium_webdriver27 = require("selenium-webdriver");
|
|
2410
2530
|
init_AbstractElement();
|
|
2411
2531
|
init_PanelFilterField();
|
|
2412
2532
|
init_actions();
|
|
@@ -2421,7 +2541,7 @@ var init_FilterPanel = __esm({
|
|
|
2421
2541
|
async filterPanelButtons() {
|
|
2422
2542
|
const selector = `${this.elementCssSelector} ${FILTER_PANEL_SELECTOR} .filter-panel__buttons-panel .dx-button-text`;
|
|
2423
2543
|
const el = await this.getElement();
|
|
2424
|
-
return el.findElements(
|
|
2544
|
+
return el.findElements(import_selenium_webdriver27.By.css(selector));
|
|
2425
2545
|
}
|
|
2426
2546
|
constructor(formName, driver) {
|
|
2427
2547
|
super(driver, drawerSelector(formName));
|
|
@@ -2454,7 +2574,7 @@ var init_FilterPanel = __esm({
|
|
|
2454
2574
|
await this.driver.sleep(300);
|
|
2455
2575
|
}
|
|
2456
2576
|
async close() {
|
|
2457
|
-
const btn = await this.driver.findElement(
|
|
2577
|
+
const btn = await this.driver.findElement(import_selenium_webdriver27.By.css(`${this.elementCssSelector} ${CLOSE_SELECTOR}`));
|
|
2458
2578
|
await click(btn, this.driver);
|
|
2459
2579
|
}
|
|
2460
2580
|
};
|
|
@@ -2490,12 +2610,12 @@ var init_HeaderFilterField = __esm({
|
|
|
2490
2610
|
});
|
|
2491
2611
|
|
|
2492
2612
|
// src/pageObjects/elements/Filters/ColumnFilter.ts
|
|
2493
|
-
var
|
|
2613
|
+
var import_selenium_webdriver28, APPLY_SELECTOR, CANCEL_SELECTOR, HEADER_FILTER_ICON, HEADER_FILTER_CONTAINER, HEADER_FILTER_BUTTONS, ColumnFilter;
|
|
2494
2614
|
var init_ColumnFilter = __esm({
|
|
2495
2615
|
"src/pageObjects/elements/Filters/ColumnFilter.ts"() {
|
|
2496
2616
|
"use strict";
|
|
2497
2617
|
init_actions();
|
|
2498
|
-
|
|
2618
|
+
import_selenium_webdriver28 = require("selenium-webdriver");
|
|
2499
2619
|
init_HeaderFilterField();
|
|
2500
2620
|
init_waitElementIsVisible();
|
|
2501
2621
|
init_AbstractElement();
|
|
@@ -2520,11 +2640,11 @@ var init_ColumnFilter = __esm({
|
|
|
2520
2640
|
}
|
|
2521
2641
|
async getApplyButton() {
|
|
2522
2642
|
const selector = `${HEADER_FILTER_CONTAINER} ${HEADER_FILTER_BUTTONS} ${APPLY_SELECTOR}`;
|
|
2523
|
-
return this.driver.findElement(
|
|
2643
|
+
return this.driver.findElement(import_selenium_webdriver28.By.css(selector));
|
|
2524
2644
|
}
|
|
2525
2645
|
async getCancelButton() {
|
|
2526
2646
|
const selector = `${HEADER_FILTER_CONTAINER} ${HEADER_FILTER_BUTTONS} ${CANCEL_SELECTOR}`;
|
|
2527
|
-
return this.driver.findElement(
|
|
2647
|
+
return this.driver.findElement(import_selenium_webdriver28.By.css(selector));
|
|
2528
2648
|
}
|
|
2529
2649
|
async apply() {
|
|
2530
2650
|
const btn = await this.getApplyButton();
|
|
@@ -2538,7 +2658,7 @@ var init_ColumnFilter = __esm({
|
|
|
2538
2658
|
const columnEl = await this._column.getElement();
|
|
2539
2659
|
const actions = this.driver.actions({ async: true });
|
|
2540
2660
|
await actions.move({ origin: columnEl }).perform();
|
|
2541
|
-
const elements = await columnEl.findElements(
|
|
2661
|
+
const elements = await columnEl.findElements(import_selenium_webdriver28.By.css(HEADER_FILTER_ICON));
|
|
2542
2662
|
let headerFilterIcon = null;
|
|
2543
2663
|
await wait(
|
|
2544
2664
|
async () => {
|
|
@@ -2584,9 +2704,22 @@ var init_ColumnFilter = __esm({
|
|
|
2584
2704
|
* @example
|
|
2585
2705
|
* await form.columnFilter('NumberFld').setValue(123);
|
|
2586
2706
|
* await form.columnFilter('TextFld').setValue('TestValue');
|
|
2707
|
+
* await form.columnFilter('TextFld').setValue('TestValue', '=', true);
|
|
2587
2708
|
*/
|
|
2588
|
-
async setValue(value) {
|
|
2709
|
+
async setValue(value, operation, isBlank) {
|
|
2589
2710
|
const filter = await this.initFilter();
|
|
2711
|
+
const inputEl = await filter.getElement();
|
|
2712
|
+
await inputEl.click();
|
|
2713
|
+
const filterOperation = new FilterOperation({
|
|
2714
|
+
parentCssSelector: HEADER_FILTER_CONTAINER,
|
|
2715
|
+
filterTestID: createHeaderFilterTestId(this._formName, this._name)
|
|
2716
|
+
});
|
|
2717
|
+
if (typeof operation === "string") {
|
|
2718
|
+
await filterOperation.setOperation(operation);
|
|
2719
|
+
}
|
|
2720
|
+
if (typeof isBlank === "boolean") {
|
|
2721
|
+
await filterOperation.setIsBlank(isBlank);
|
|
2722
|
+
}
|
|
2590
2723
|
await filter.setValue(value);
|
|
2591
2724
|
return this.apply();
|
|
2592
2725
|
}
|
|
@@ -2610,32 +2743,52 @@ var init_ColumnFilter = __esm({
|
|
|
2610
2743
|
await filter.remove(itemText);
|
|
2611
2744
|
return this.apply();
|
|
2612
2745
|
}
|
|
2613
|
-
|
|
2746
|
+
/**
|
|
2747
|
+
* Инициализация операции фильтра
|
|
2748
|
+
*/
|
|
2614
2749
|
async initOperation() {
|
|
2615
|
-
await this.initFilter();
|
|
2750
|
+
const filter = await this.initFilter();
|
|
2751
|
+
const inputEl = await filter.getElement();
|
|
2752
|
+
await inputEl.click();
|
|
2616
2753
|
return new FilterOperation({
|
|
2617
2754
|
parentCssSelector: HEADER_FILTER_CONTAINER,
|
|
2618
2755
|
filterTestID: createHeaderFilterTestId(this._formName, this._name)
|
|
2619
2756
|
});
|
|
2620
2757
|
}
|
|
2621
|
-
|
|
2758
|
+
/**
|
|
2759
|
+
* Устанавливает операцию для фильтра
|
|
2760
|
+
* @example
|
|
2761
|
+
* await form.columnFilter('TagBox').setOperation("=");
|
|
2762
|
+
*/
|
|
2622
2763
|
async setOperation(operationName) {
|
|
2623
2764
|
const filterOperation = await this.initOperation();
|
|
2624
2765
|
await filterOperation.setOperation(operationName);
|
|
2625
2766
|
await this.apply();
|
|
2626
2767
|
}
|
|
2627
|
-
|
|
2768
|
+
/**
|
|
2769
|
+
* Возвращает операцию фильтра
|
|
2770
|
+
* @example
|
|
2771
|
+
* expect(await form.columnFilter('NumberFld').getOperation()).toBe("=");
|
|
2772
|
+
*/
|
|
2628
2773
|
async getOperation() {
|
|
2629
2774
|
const filterOperation = await this.initOperation();
|
|
2630
2775
|
return await filterOperation.getOperation();
|
|
2631
2776
|
}
|
|
2632
|
-
|
|
2777
|
+
/**
|
|
2778
|
+
* Устанавливает операцию 'isblank' для фильтра
|
|
2779
|
+
* @example
|
|
2780
|
+
* await form.columnFilter('TagBox').setIsBlank(true);
|
|
2781
|
+
*/
|
|
2633
2782
|
async setIsBlank(value) {
|
|
2634
2783
|
const filterOperation = await this.initOperation();
|
|
2635
2784
|
await filterOperation.setIsBlank(value);
|
|
2636
2785
|
await this.apply();
|
|
2637
2786
|
}
|
|
2638
|
-
|
|
2787
|
+
/**
|
|
2788
|
+
* Возвращает true|false, если операция 'isblank' установлена для фильтра
|
|
2789
|
+
* @example
|
|
2790
|
+
* expect(await form.columnFilter('NumberFld').getIsBlank()).toBe(false);
|
|
2791
|
+
*/
|
|
2639
2792
|
async getIsBlank() {
|
|
2640
2793
|
const filterOperation = await this.initOperation();
|
|
2641
2794
|
return await filterOperation.getIsBlank();
|
|
@@ -2783,12 +2936,12 @@ var init_createSubFormInstance = __esm({
|
|
|
2783
2936
|
});
|
|
2784
2937
|
|
|
2785
2938
|
// src/pageObjects/elements/Forms/Form.ts
|
|
2786
|
-
var
|
|
2939
|
+
var import_selenium_webdriver29, formTestId, Form;
|
|
2787
2940
|
var init_Form = __esm({
|
|
2788
2941
|
"src/pageObjects/elements/Forms/Form.ts"() {
|
|
2789
2942
|
"use strict";
|
|
2790
2943
|
init_locators();
|
|
2791
|
-
|
|
2944
|
+
import_selenium_webdriver29 = require("selenium-webdriver");
|
|
2792
2945
|
init_AbstractForm();
|
|
2793
2946
|
init_waitElementIsVisible();
|
|
2794
2947
|
init_createSubFormInstance();
|
|
@@ -2813,10 +2966,10 @@ var init_Form = __esm({
|
|
|
2813
2966
|
*/
|
|
2814
2967
|
async getTitleText() {
|
|
2815
2968
|
if (await this.isModal()) {
|
|
2816
|
-
const titleEl2 = await this.driver.findElement(
|
|
2969
|
+
const titleEl2 = await this.driver.findElement(import_selenium_webdriver29.By.css(`${this.popupContainerCssSelector} .popup-title`));
|
|
2817
2970
|
return titleEl2.getText();
|
|
2818
2971
|
}
|
|
2819
|
-
let titleEl = await this.driver.findElement(
|
|
2972
|
+
let titleEl = await this.driver.findElement(import_selenium_webdriver29.By.className("main-toolbar-form-title"));
|
|
2820
2973
|
return titleEl.getText();
|
|
2821
2974
|
}
|
|
2822
2975
|
setSubFormMode() {
|
|
@@ -2834,7 +2987,7 @@ var init_Form = __esm({
|
|
|
2834
2987
|
*/
|
|
2835
2988
|
async subForm(name) {
|
|
2836
2989
|
const cssSelector = subformCssSelector(this.containerCssSelector, subFormTestId(name));
|
|
2837
|
-
const byCssSelector =
|
|
2990
|
+
const byCssSelector = import_selenium_webdriver29.By.css(cssSelector);
|
|
2838
2991
|
const subFormEl = await this.driver.findElement(byCssSelector);
|
|
2839
2992
|
await waitElementIsVisible({
|
|
2840
2993
|
element: subFormEl,
|
|
@@ -2864,18 +3017,18 @@ var FormEdit_exports = {};
|
|
|
2864
3017
|
__export(FormEdit_exports, {
|
|
2865
3018
|
default: () => FormEdit
|
|
2866
3019
|
});
|
|
2867
|
-
var
|
|
3020
|
+
var import_selenium_webdriver30, FormEdit;
|
|
2868
3021
|
var init_FormEdit = __esm({
|
|
2869
3022
|
"src/pageObjects/elements/Forms/FormEdit.ts"() {
|
|
2870
3023
|
"use strict";
|
|
2871
3024
|
init_Form();
|
|
2872
|
-
|
|
3025
|
+
import_selenium_webdriver30 = require("selenium-webdriver");
|
|
2873
3026
|
init_FormField();
|
|
2874
3027
|
init_actions();
|
|
2875
3028
|
init_wait();
|
|
2876
3029
|
FormEdit = class extends Form {
|
|
2877
|
-
saveButtonBy =
|
|
2878
|
-
closeButtonBy =
|
|
3030
|
+
saveButtonBy = import_selenium_webdriver30.By.id("button-save");
|
|
3031
|
+
closeButtonBy = import_selenium_webdriver30.By.id("button-cancel");
|
|
2879
3032
|
constructor(driver) {
|
|
2880
3033
|
super(driver);
|
|
2881
3034
|
this.popupContainerCssSelector = `.popup .form-edit-${this.formName}`;
|
|
@@ -3058,7 +3211,7 @@ var SubsystemsPanelHeader = class extends AbstractElementWithParent {
|
|
|
3058
3211
|
};
|
|
3059
3212
|
|
|
3060
3213
|
// src/pageObjects/elements/SubsystemsPanel/SubsystemsPanel.ts
|
|
3061
|
-
var
|
|
3214
|
+
var import_selenium_webdriver16 = require("selenium-webdriver");
|
|
3062
3215
|
init_wait();
|
|
3063
3216
|
init_locators();
|
|
3064
3217
|
init_Editors();
|
|
@@ -3140,7 +3293,7 @@ var SubsystemsPanel = class extends AbstractElement {
|
|
|
3140
3293
|
*/
|
|
3141
3294
|
async searchClear() {
|
|
3142
3295
|
const clearBtnSelector = `#aside ${byTestIdCssSelector(SEARCH_INPUT_SELECTOR)} .${DX_CLEAR_BUTTON_AREA}`;
|
|
3143
|
-
const clearBtn = await this.driver.findElement(
|
|
3296
|
+
const clearBtn = await this.driver.findElement(import_selenium_webdriver16.By.css(clearBtnSelector));
|
|
3144
3297
|
if (await clearBtn.isDisplayed()) {
|
|
3145
3298
|
await click(clearBtn, this.driver);
|
|
3146
3299
|
}
|
|
@@ -3154,7 +3307,7 @@ var SubsystemsPanel = class extends AbstractElement {
|
|
|
3154
3307
|
*/
|
|
3155
3308
|
item(name) {
|
|
3156
3309
|
const elementCSS = createSubSystemTestId(name);
|
|
3157
|
-
return new SubsystemItem({ driver: this.driver, bySelector:
|
|
3310
|
+
return new SubsystemItem({ driver: this.driver, bySelector: import_selenium_webdriver16.By.css(`${byTestIdCssSelector(elementCSS, "span")}`) });
|
|
3158
3311
|
}
|
|
3159
3312
|
/**
|
|
3160
3313
|
* Возвращает сабсистему по заголовку
|
|
@@ -3164,7 +3317,7 @@ var SubsystemsPanel = class extends AbstractElement {
|
|
|
3164
3317
|
* const subsystem = subsystemsPanel.itemByTitle('SubSystemTitle');
|
|
3165
3318
|
*/
|
|
3166
3319
|
itemByTitle(title) {
|
|
3167
|
-
return new SubsystemItem({ driver: this.driver, bySelector:
|
|
3320
|
+
return new SubsystemItem({ driver: this.driver, bySelector: import_selenium_webdriver16.By.css(byTitleCssSelector(title)) });
|
|
3168
3321
|
}
|
|
3169
3322
|
/**
|
|
3170
3323
|
* Возвращается на уровень выше по сабсистемам
|
|
@@ -3174,7 +3327,7 @@ var SubsystemsPanel = class extends AbstractElement {
|
|
|
3174
3327
|
* wait subsystemsPanel.back();
|
|
3175
3328
|
*/
|
|
3176
3329
|
async back() {
|
|
3177
|
-
const backButton = this.driver.findElement(
|
|
3330
|
+
const backButton = this.driver.findElement(import_selenium_webdriver16.By.css(`#aside .${BACK_BUTTON_SELECTOR}`));
|
|
3178
3331
|
await waitElementIsVisible(
|
|
3179
3332
|
{
|
|
3180
3333
|
element: backButton,
|
|
@@ -3191,13 +3344,13 @@ init_ListForm();
|
|
|
3191
3344
|
init_TreeView();
|
|
3192
3345
|
|
|
3193
3346
|
// src/pageObjects/elements/Forms/ReportForm.ts
|
|
3194
|
-
var
|
|
3347
|
+
var import_selenium_webdriver31 = require("selenium-webdriver");
|
|
3195
3348
|
init_FormEdit();
|
|
3196
3349
|
var ReportForm = class extends FormEdit {
|
|
3197
3350
|
constructor(driver) {
|
|
3198
3351
|
super(driver);
|
|
3199
3352
|
this.popupContainerCssSelector = `.popup .form-report-${this.formName}`;
|
|
3200
|
-
this.saveButtonBy =
|
|
3353
|
+
this.saveButtonBy = import_selenium_webdriver31.By.id("button-apply");
|
|
3201
3354
|
}
|
|
3202
3355
|
/**
|
|
3203
3356
|
* Знаходить поле/фільтр у формі репорту за ім'ям
|
|
@@ -3220,7 +3373,7 @@ init_FilterPanel();
|
|
|
3220
3373
|
|
|
3221
3374
|
// src/pageObjects/elements/Dialog.ts
|
|
3222
3375
|
init_AbstractElement();
|
|
3223
|
-
var
|
|
3376
|
+
var import_selenium_webdriver32 = require("selenium-webdriver");
|
|
3224
3377
|
init_AbstractButton();
|
|
3225
3378
|
var DIALOG_CLASS = ".d5-dialog";
|
|
3226
3379
|
var DIALOG_TITLE_CLASS = ".dialog__title";
|
|
@@ -3235,7 +3388,7 @@ var DialogButton = class extends AbstractButton {
|
|
|
3235
3388
|
}
|
|
3236
3389
|
async getElement() {
|
|
3237
3390
|
const panel = await super.getElement();
|
|
3238
|
-
return panel.findElement(
|
|
3391
|
+
return panel.findElement(import_selenium_webdriver32.By.xpath(buttonByTextXpath2(this.text)));
|
|
3239
3392
|
}
|
|
3240
3393
|
buttonNotDisplayedError() {
|
|
3241
3394
|
return `Dialog button ${this.text} cannot be clicked. It is not displayed or it is disabled`;
|
|
@@ -3255,11 +3408,11 @@ var Dialog = class extends AbstractElement {
|
|
|
3255
3408
|
return this.joinRelativeCssSelectors([DIALOG_CLASS, DIALOG_BUTTONS_PANEL_CLASS]);
|
|
3256
3409
|
}
|
|
3257
3410
|
async title() {
|
|
3258
|
-
const el = await this.driver.findElement(
|
|
3411
|
+
const el = await this.driver.findElement(import_selenium_webdriver32.By.css(this.titleSelector));
|
|
3259
3412
|
return await el.getText();
|
|
3260
3413
|
}
|
|
3261
3414
|
async text() {
|
|
3262
|
-
const el = await this.driver.findElement(
|
|
3415
|
+
const el = await this.driver.findElement(import_selenium_webdriver32.By.css(this.textSelector));
|
|
3263
3416
|
return await el.getText();
|
|
3264
3417
|
}
|
|
3265
3418
|
button(text) {
|
|
@@ -138,7 +138,8 @@ declare enum ControlClass {
|
|
|
138
138
|
Date = "date-control",
|
|
139
139
|
SingleDateRange = "single-date-range-control",
|
|
140
140
|
BooleanSelector = "buttons-group",
|
|
141
|
-
ButtonGroup = "button-group-field"
|
|
141
|
+
ButtonGroup = "button-group-field",
|
|
142
|
+
HeaderFilterDictionary = "header-filter-dictionary"
|
|
142
143
|
}
|
|
143
144
|
|
|
144
145
|
interface ClearStrategy {
|
|
@@ -570,8 +571,9 @@ declare class FormFilterField extends AbstractEditor {
|
|
|
570
571
|
* @example
|
|
571
572
|
* await form.formFilter('NumberFld').setValue(123);
|
|
572
573
|
* await form.formFilter('TextFld').setValue('TestValue');
|
|
574
|
+
* await form.formFilter('TextFld').setValue('TestValue', '=', true);
|
|
573
575
|
*/
|
|
574
|
-
setValue(value: any): Promise<void>;
|
|
576
|
+
setValue(value: any, operation?: string, isBlank?: boolean): Promise<void>;
|
|
575
577
|
/**
|
|
576
578
|
* Очищает значение в поле
|
|
577
579
|
* @example
|
|
@@ -630,8 +632,9 @@ declare class PanelFilterField extends AbstractEditor {
|
|
|
630
632
|
* @example
|
|
631
633
|
* await form.filterPanel.filterField('NumberFld').setValue(123);
|
|
632
634
|
* await form.filterPanel.filterField('TextFld').setValue('TestValue');
|
|
635
|
+
* await form.filterPanel.filterField('TextFld').setValue('TestValue', '=', true);
|
|
633
636
|
*/
|
|
634
|
-
setValue(value: any): Promise<void>;
|
|
637
|
+
setValue(value: any, operation?: string, isBlank?: boolean): Promise<void>;
|
|
635
638
|
/**
|
|
636
639
|
* Очищает значение в поле
|
|
637
640
|
* @example
|
|
@@ -737,8 +740,9 @@ declare class ColumnFilter extends AbstractElement {
|
|
|
737
740
|
* @example
|
|
738
741
|
* await form.columnFilter('NumberFld').setValue(123);
|
|
739
742
|
* await form.columnFilter('TextFld').setValue('TestValue');
|
|
743
|
+
* await form.columnFilter('TextFld').setValue('TestValue', '=', true);
|
|
740
744
|
*/
|
|
741
|
-
setValue(value: any): Promise<void>;
|
|
745
|
+
setValue(value: any, operation?: string, isBlank?: boolean): Promise<void>;
|
|
742
746
|
/**
|
|
743
747
|
* Очищает значение в поле
|
|
744
748
|
* @example
|
|
@@ -751,10 +755,33 @@ declare class ColumnFilter extends AbstractElement {
|
|
|
751
755
|
* await form.columnFilter('TagBox').remove('test');
|
|
752
756
|
*/
|
|
753
757
|
remove(itemText: string): Promise<void>;
|
|
758
|
+
/**
|
|
759
|
+
* Инициализация операции фильтра
|
|
760
|
+
*/
|
|
754
761
|
initOperation(): Promise<FilterOperation>;
|
|
762
|
+
/**
|
|
763
|
+
* Устанавливает операцию для фильтра
|
|
764
|
+
* @example
|
|
765
|
+
* await form.columnFilter('TagBox').setOperation("=");
|
|
766
|
+
*/
|
|
755
767
|
setOperation(operationName: string): Promise<void>;
|
|
768
|
+
/**
|
|
769
|
+
* Возвращает операцию фильтра
|
|
770
|
+
* @example
|
|
771
|
+
* expect(await form.columnFilter('NumberFld').getOperation()).toBe("=");
|
|
772
|
+
*/
|
|
756
773
|
getOperation(): Promise<any>;
|
|
774
|
+
/**
|
|
775
|
+
* Устанавливает операцию 'isblank' для фильтра
|
|
776
|
+
* @example
|
|
777
|
+
* await form.columnFilter('TagBox').setIsBlank(true);
|
|
778
|
+
*/
|
|
757
779
|
setIsBlank(value: boolean): Promise<void>;
|
|
780
|
+
/**
|
|
781
|
+
* Возвращает true|false, если операция 'isblank' установлена для фильтра
|
|
782
|
+
* @example
|
|
783
|
+
* expect(await form.columnFilter('NumberFld').getIsBlank()).toBe(false);
|
|
784
|
+
*/
|
|
758
785
|
getIsBlank(): Promise<boolean>;
|
|
759
786
|
}
|
|
760
787
|
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TreeView
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TCNJHKZT.mjs";
|
|
4
4
|
import {
|
|
5
5
|
FilterPanel,
|
|
6
6
|
FormFilterField,
|
|
7
7
|
ListForm,
|
|
8
8
|
PanelFilterField
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-COFCOE45.mjs";
|
|
10
10
|
import {
|
|
11
11
|
FormEdit
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-I57KZIU6.mjs";
|
|
13
13
|
import {
|
|
14
14
|
AbstractButton,
|
|
15
15
|
AbstractElement,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
readonlyLocator,
|
|
31
31
|
wait,
|
|
32
32
|
waitElementIsVisible
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-SPTTRJJ4.mjs";
|
|
34
34
|
|
|
35
35
|
// src/pageObjects/pages/LoginPage.ts
|
|
36
36
|
var LOGIN_PATH = "/login";
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TreeView
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TCNJHKZT.mjs";
|
|
4
4
|
import {
|
|
5
5
|
FilterPanel,
|
|
6
6
|
FormFilterField,
|
|
7
7
|
ListForm,
|
|
8
8
|
PanelFilterField
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-COFCOE45.mjs";
|
|
10
10
|
import {
|
|
11
11
|
FormEdit
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-I57KZIU6.mjs";
|
|
13
13
|
import {
|
|
14
14
|
AbstractButton,
|
|
15
15
|
AbstractElement,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
readonlyLocator,
|
|
31
31
|
wait,
|
|
32
32
|
waitElementIsVisible
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-SPTTRJJ4.mjs";
|
|
34
34
|
|
|
35
35
|
// src/pageObjects/pages/LoginPage.ts
|
|
36
36
|
var LOGIN_PATH = "/login";
|
package/package.json
CHANGED