d5-testing-library 1.5.0 → 1.7.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/FormEdit-2OXEIJRD.mjs +7 -0
- package/dist/ListForm-NWULJ2P6.mjs +7 -0
- package/dist/TreeView-USLYNLBL.mjs +8 -0
- package/dist/{chunk-FP26UOTI.mjs → chunk-H6LCUGIP.mjs} +1 -1
- package/dist/{chunk-VWNH6HVN.mjs → chunk-ISIVPVER.mjs} +152 -32
- package/dist/{chunk-44JIUIEW.mjs → chunk-M7ZEJQ34.mjs} +1 -1
- package/dist/{chunk-NWWYF43G.mjs → chunk-PVVYHCDQ.mjs} +124 -2
- package/dist/cjs/d5-testing-library.cjs +1407 -995
- package/dist/d5-testing-library.d.ts +194 -64
- package/dist/d5-testing-library.legacy-esm.js +137 -8
- package/dist/d5-testing-library.mjs +137 -8
- package/package.json +4 -2
- package/dist/FormEdit-MZJH5R5H.mjs +0 -7
- package/dist/ListForm-HDVXB6CG.mjs +0 -7
- package/dist/TreeView-DE5RBMDD.mjs +0 -8
|
@@ -420,8 +420,7 @@ var TagBox = class extends AbstractDXEditorWithInput {
|
|
|
420
420
|
await this.confirmSelection();
|
|
421
421
|
}
|
|
422
422
|
async waitOptionSelection() {
|
|
423
|
-
|
|
424
|
-
await wait(() => option.isDisplayed(), this.driver);
|
|
423
|
+
await fixElementStaleError(By6.css(TAG_BOX_LIST_ITEM_SELECTOR), this.driver);
|
|
425
424
|
}
|
|
426
425
|
async selectOption(inputEl, value, lastElement) {
|
|
427
426
|
try {
|
|
@@ -436,7 +435,7 @@ var TagBox = class extends AbstractDXEditorWithInput {
|
|
|
436
435
|
}
|
|
437
436
|
}
|
|
438
437
|
async confirmSelection() {
|
|
439
|
-
const btnOk = await
|
|
438
|
+
const btnOk = await fixElementStaleError(By6.css(BTN_OK_SELECTOR), this.driver);
|
|
440
439
|
await click(btnOk, this.driver);
|
|
441
440
|
}
|
|
442
441
|
async getTagBoxInputValue() {
|
|
@@ -722,6 +721,9 @@ function createFilterTestId(formName, itemName, layout) {
|
|
|
722
721
|
function createDocFilterTestId(formName, itemName) {
|
|
723
722
|
return createFilterTestId(formName, itemName, "dock-panel-filter" /* DOCK_PANEL */);
|
|
724
723
|
}
|
|
724
|
+
function createHeaderFilterTestId(formName, itemName) {
|
|
725
|
+
return createFilterTestId(formName, itemName, "header-filter" /* HEADER_FILTER */);
|
|
726
|
+
}
|
|
725
727
|
function createLayoutFilterTestId(formName, itemName) {
|
|
726
728
|
return createFilterTestId(formName, itemName, "layout-filter" /* LAYOUT */);
|
|
727
729
|
}
|
|
@@ -731,6 +733,9 @@ function createTableId(formName) {
|
|
|
731
733
|
function createFormButtonTestId(formName, itemName) {
|
|
732
734
|
return createDataTestId(formName, "button" /* BUTTON */, itemName);
|
|
733
735
|
}
|
|
736
|
+
function createSubSystemTestId(itemName) {
|
|
737
|
+
return `${"subsystem-item" /* SUBSYSTEM_ITEM */}-${itemName}`;
|
|
738
|
+
}
|
|
734
739
|
|
|
735
740
|
// src/pageObjects/elements/AbstractEditor.ts
|
|
736
741
|
var AbstractEditor = class extends AbstractElementWithParent {
|
|
@@ -807,7 +812,7 @@ var FormField = class extends AbstractEditor {
|
|
|
807
812
|
};
|
|
808
813
|
|
|
809
814
|
// src/pageObjects/elements/Forms/Form.ts
|
|
810
|
-
import { By as
|
|
815
|
+
import { By as By14 } from "selenium-webdriver";
|
|
811
816
|
|
|
812
817
|
// src/utils/waitElementIsClickable.ts
|
|
813
818
|
async function waitElementIsClickable({
|
|
@@ -881,19 +886,79 @@ var AbstractGroup = class extends AbstractElementWithParent {
|
|
|
881
886
|
var Panel = class extends AbstractGroup {
|
|
882
887
|
};
|
|
883
888
|
|
|
884
|
-
// src/pageObjects/elements/Groups/TabPanel
|
|
889
|
+
// src/pageObjects/elements/Groups/TabPanel.ts
|
|
885
890
|
import { By as By12 } from "selenium-webdriver";
|
|
886
|
-
var
|
|
891
|
+
var TabPanelItem = class extends AbstractGroup {
|
|
892
|
+
constructor(parentCssSelector, elementCssSelector, driver) {
|
|
893
|
+
super(parentCssSelector, elementCssSelector, driver);
|
|
894
|
+
}
|
|
895
|
+
async click() {
|
|
896
|
+
await click(await this.getElement(), this.driver);
|
|
897
|
+
}
|
|
898
|
+
async isActive() {
|
|
899
|
+
const tabPanelItemElement = await this.getElement();
|
|
900
|
+
const grandparentTab = await tabPanelItemElement.findElement(By12.xpath('ancestor::div[@role="tab"][1]'));
|
|
901
|
+
return await grandparentTab.getAttribute("aria-selected") === "true";
|
|
902
|
+
}
|
|
903
|
+
async getTitle() {
|
|
904
|
+
return "";
|
|
905
|
+
}
|
|
906
|
+
};
|
|
887
907
|
var TabPanel = class extends AbstractGroup {
|
|
908
|
+
item(name) {
|
|
909
|
+
return new TabPanelItem(this.getFullCssSelector(), `.tab-panel-item[data-groupname="${name}"]`, this.driver);
|
|
910
|
+
}
|
|
911
|
+
async getTitle() {
|
|
912
|
+
return "";
|
|
913
|
+
}
|
|
914
|
+
};
|
|
915
|
+
|
|
916
|
+
// src/pageObjects/elements/Groups/Accordion/AccordionItem.ts
|
|
917
|
+
import { By as By13 } from "selenium-webdriver";
|
|
918
|
+
var ACCORDION_TITLE_CONTAINER = "accordion-title-container";
|
|
919
|
+
var AccordionItem = class extends AbstractGroup {
|
|
888
920
|
constructor(parentCssSelector, elementCssSelector, driver) {
|
|
889
921
|
super(parentCssSelector, elementCssSelector, driver);
|
|
890
922
|
}
|
|
891
|
-
|
|
892
|
-
|
|
923
|
+
async getDataOpenedAccordItemAttr() {
|
|
924
|
+
const accordionElement = await this.getElement();
|
|
925
|
+
return await accordionElement.getAttribute("data-opened");
|
|
926
|
+
}
|
|
927
|
+
async clickAccordionItemTitle() {
|
|
928
|
+
const accordionElement = await this.getElement();
|
|
929
|
+
const accordTitleElement = await accordionElement.findElement(By13.className(ACCORDION_TITLE_CONTAINER));
|
|
930
|
+
await accordTitleElement.click();
|
|
931
|
+
}
|
|
932
|
+
async click() {
|
|
933
|
+
await click(await this.getElement(), this.driver);
|
|
934
|
+
}
|
|
935
|
+
async isExpanded() {
|
|
936
|
+
const dataOpened = await this.getDataOpenedAccordItemAttr();
|
|
937
|
+
return dataOpened === "true";
|
|
938
|
+
}
|
|
939
|
+
async isCollapsed() {
|
|
940
|
+
const dataOpened = await this.getDataOpenedAccordItemAttr();
|
|
941
|
+
return dataOpened === "false" || !dataOpened;
|
|
942
|
+
}
|
|
943
|
+
async expand() {
|
|
944
|
+
if (!await this.isExpanded()) {
|
|
945
|
+
await this.clickAccordionItemTitle();
|
|
946
|
+
}
|
|
893
947
|
}
|
|
894
|
-
async
|
|
895
|
-
|
|
896
|
-
|
|
948
|
+
async collapse() {
|
|
949
|
+
if (await this.isExpanded()) {
|
|
950
|
+
await this.clickAccordionItemTitle();
|
|
951
|
+
}
|
|
952
|
+
}
|
|
953
|
+
};
|
|
954
|
+
|
|
955
|
+
// src/pageObjects/elements/Groups/Accordion/Accordion.ts
|
|
956
|
+
var Accordion = class extends AbstractGroup {
|
|
957
|
+
constructor(parentCssSelector, elementCssSelector, driver) {
|
|
958
|
+
super(parentCssSelector, elementCssSelector, driver);
|
|
959
|
+
}
|
|
960
|
+
item(name) {
|
|
961
|
+
return new AccordionItem(this.getFullCssSelector(), `.d5-accordion-item[data-groupname="${name}"]`, this.driver);
|
|
897
962
|
}
|
|
898
963
|
};
|
|
899
964
|
|
|
@@ -903,20 +968,26 @@ var groupFactory = async (parentCssSelector, elementCssSelector, driver) => {
|
|
|
903
968
|
const classSting = await elementInstance.getClasses();
|
|
904
969
|
if (classSting.includes("tab-panel-group"))
|
|
905
970
|
return new TabPanel(parentCssSelector, elementCssSelector, driver);
|
|
971
|
+
if (classSting.includes("tab-panel-item"))
|
|
972
|
+
return new TabPanelItem(parentCssSelector, elementCssSelector, driver);
|
|
906
973
|
if (classSting.includes("panel-group"))
|
|
907
974
|
return new Panel(parentCssSelector, elementCssSelector, driver);
|
|
975
|
+
if (classSting.includes("accordion-group"))
|
|
976
|
+
return new Accordion(parentCssSelector, elementCssSelector, driver);
|
|
977
|
+
if (classSting.includes("d5-accordion-item"))
|
|
978
|
+
return new AccordionItem(parentCssSelector, elementCssSelector, driver);
|
|
908
979
|
throw new Error("Unknown type of group. Please write ticket to the support");
|
|
909
980
|
};
|
|
910
981
|
|
|
911
982
|
// src/pageObjects/elements/FormGroup.ts
|
|
912
983
|
var FormGroup = class extends AbstractElementWithParent {
|
|
913
|
-
|
|
984
|
+
groupInstance;
|
|
914
985
|
constructor(parentCssSelector, formName, name, driver) {
|
|
915
986
|
super(parentCssSelector, byTestIdCssSelector(createGroupTestId(formName, name)), driver);
|
|
916
987
|
}
|
|
917
|
-
async
|
|
918
|
-
if (!this.
|
|
919
|
-
this.
|
|
988
|
+
async initInstance() {
|
|
989
|
+
if (!this.groupInstance) {
|
|
990
|
+
this.groupInstance = await groupFactory(this.parentCssSelector, this.elementCssSelector, this.driver);
|
|
920
991
|
}
|
|
921
992
|
}
|
|
922
993
|
/**
|
|
@@ -926,20 +997,66 @@ var FormGroup = class extends AbstractElementWithParent {
|
|
|
926
997
|
*/
|
|
927
998
|
async isDisplayed() {
|
|
928
999
|
try {
|
|
929
|
-
await this.
|
|
930
|
-
return this.
|
|
1000
|
+
await this.initInstance();
|
|
1001
|
+
return this.groupInstance.isDisplayed();
|
|
931
1002
|
} catch {
|
|
932
1003
|
return false;
|
|
933
1004
|
}
|
|
934
1005
|
}
|
|
935
1006
|
/**
|
|
936
|
-
*
|
|
1007
|
+
* Клик по элементам группы.
|
|
1008
|
+
* Метод работает если у группы есть дочерние элементы, например элементы аккордеона или вкладки таб панели.
|
|
937
1009
|
* @example
|
|
938
|
-
* expect(await tableList.group('TabPanel').
|
|
1010
|
+
* expect(await tableList.group('TabPanel').itemClick('Tab');
|
|
1011
|
+
* expect(await tableList.group('Accordion').itemClick('AccordionItem');
|
|
939
1012
|
*/
|
|
940
|
-
async
|
|
941
|
-
await this.
|
|
942
|
-
|
|
1013
|
+
async itemClick(name) {
|
|
1014
|
+
await this.initInstance();
|
|
1015
|
+
const item = this.groupInstance.item?.(name);
|
|
1016
|
+
await item?.click();
|
|
1017
|
+
}
|
|
1018
|
+
/**
|
|
1019
|
+
* Метод работает если группа - это элемент аккордеона или вкладка таб панели
|
|
1020
|
+
* @example
|
|
1021
|
+
* expect(await tableList.group('Tab').click();
|
|
1022
|
+
* expect(await tableList.group('AccordionItem').click();
|
|
1023
|
+
*/
|
|
1024
|
+
async click() {
|
|
1025
|
+
await this.initInstance();
|
|
1026
|
+
await this.groupInstance.click?.();
|
|
1027
|
+
}
|
|
1028
|
+
async collapse() {
|
|
1029
|
+
await this.initInstance();
|
|
1030
|
+
if (this.groupInstance instanceof AccordionItem) {
|
|
1031
|
+
await this.groupInstance.collapse();
|
|
1032
|
+
}
|
|
1033
|
+
}
|
|
1034
|
+
async expand() {
|
|
1035
|
+
await this.initInstance();
|
|
1036
|
+
if (this.groupInstance instanceof AccordionItem) {
|
|
1037
|
+
await this.groupInstance.expand();
|
|
1038
|
+
}
|
|
1039
|
+
}
|
|
1040
|
+
async isExpanded() {
|
|
1041
|
+
await this.initInstance();
|
|
1042
|
+
if (this.groupInstance instanceof AccordionItem) {
|
|
1043
|
+
return await this.groupInstance.isExpanded();
|
|
1044
|
+
}
|
|
1045
|
+
return false;
|
|
1046
|
+
}
|
|
1047
|
+
async isCollapsed() {
|
|
1048
|
+
await this.initInstance();
|
|
1049
|
+
if (this.groupInstance instanceof AccordionItem) {
|
|
1050
|
+
return await this.groupInstance.isCollapsed();
|
|
1051
|
+
}
|
|
1052
|
+
return false;
|
|
1053
|
+
}
|
|
1054
|
+
async isActive() {
|
|
1055
|
+
await this.initInstance();
|
|
1056
|
+
if (this.groupInstance instanceof TabPanelItem) {
|
|
1057
|
+
return await this.groupInstance.isActive();
|
|
1058
|
+
}
|
|
1059
|
+
return false;
|
|
943
1060
|
}
|
|
944
1061
|
};
|
|
945
1062
|
|
|
@@ -997,15 +1114,15 @@ async function classDependencyInjector(formType) {
|
|
|
997
1114
|
let SubFormFactoryClass;
|
|
998
1115
|
switch (formType) {
|
|
999
1116
|
case "1" /* LIST */:
|
|
1000
|
-
SubFormFactoryClass = (await import("./ListForm-
|
|
1117
|
+
SubFormFactoryClass = (await import("./ListForm-NWULJ2P6.mjs")).default;
|
|
1001
1118
|
break;
|
|
1002
1119
|
case "3" /* TREE */:
|
|
1003
|
-
SubFormFactoryClass = (await import("./TreeView-
|
|
1120
|
+
SubFormFactoryClass = (await import("./TreeView-USLYNLBL.mjs")).default;
|
|
1004
1121
|
break;
|
|
1005
1122
|
case "2" /* EDIT */:
|
|
1006
1123
|
case "99" /* FREE_FORM */:
|
|
1007
1124
|
case "4" /* REPORT */:
|
|
1008
|
-
SubFormFactoryClass = (await import("./FormEdit-
|
|
1125
|
+
SubFormFactoryClass = (await import("./FormEdit-2OXEIJRD.mjs")).default;
|
|
1009
1126
|
break;
|
|
1010
1127
|
default:
|
|
1011
1128
|
throw new Error(`Unsupported form type ${formType}`);
|
|
@@ -1035,10 +1152,10 @@ var Form = class extends AbstractForm {
|
|
|
1035
1152
|
*/
|
|
1036
1153
|
async getTitleText() {
|
|
1037
1154
|
if (await this.isModal()) {
|
|
1038
|
-
const titleEl2 = await this.driver.findElement(
|
|
1155
|
+
const titleEl2 = await this.driver.findElement(By14.css(`${this.popupContainerCssSelector} .popup-title`));
|
|
1039
1156
|
return titleEl2.getText();
|
|
1040
1157
|
}
|
|
1041
|
-
let titleEl = await this.driver.findElement(
|
|
1158
|
+
let titleEl = await this.driver.findElement(By14.className("main-toolbar-form-title"));
|
|
1042
1159
|
return titleEl.getText();
|
|
1043
1160
|
}
|
|
1044
1161
|
setSubFormMode() {
|
|
@@ -1056,7 +1173,7 @@ var Form = class extends AbstractForm {
|
|
|
1056
1173
|
*/
|
|
1057
1174
|
async subForm(name) {
|
|
1058
1175
|
const cssSelector = subformCssSelector(this.containerCssSelector, subFormTestId(name));
|
|
1059
|
-
const byCssSelector =
|
|
1176
|
+
const byCssSelector = By14.css(cssSelector);
|
|
1060
1177
|
const subFormEl = await this.driver.findElement(byCssSelector);
|
|
1061
1178
|
await waitElementIsVisible({
|
|
1062
1179
|
element: subFormEl,
|
|
@@ -1091,15 +1208,18 @@ export {
|
|
|
1091
1208
|
byTestId,
|
|
1092
1209
|
readonlyLocator,
|
|
1093
1210
|
AbstractElementWithParent,
|
|
1211
|
+
TextEditor,
|
|
1212
|
+
NumberEditor,
|
|
1213
|
+
ControlClass,
|
|
1214
|
+
DX_CLEAR_BUTTON_AREA,
|
|
1215
|
+
editorFactory,
|
|
1094
1216
|
createDocFilterTestId,
|
|
1217
|
+
createHeaderFilterTestId,
|
|
1095
1218
|
createLayoutFilterTestId,
|
|
1096
1219
|
createTableId,
|
|
1220
|
+
createSubSystemTestId,
|
|
1097
1221
|
waitElementIsClickable,
|
|
1098
1222
|
AbstractButton,
|
|
1099
|
-
TextEditor,
|
|
1100
|
-
NumberEditor,
|
|
1101
|
-
ControlClass,
|
|
1102
|
-
editorFactory,
|
|
1103
1223
|
AbstractEditor,
|
|
1104
1224
|
FormField,
|
|
1105
1225
|
Form
|
|
@@ -9,12 +9,14 @@ import {
|
|
|
9
9
|
byTestIdCssSelector,
|
|
10
10
|
click,
|
|
11
11
|
createDocFilterTestId,
|
|
12
|
+
createHeaderFilterTestId,
|
|
12
13
|
createLayoutFilterTestId,
|
|
13
14
|
createTableId,
|
|
14
15
|
fixElementStaleError,
|
|
15
16
|
wait,
|
|
16
|
-
waitElementIsClickable
|
|
17
|
-
|
|
17
|
+
waitElementIsClickable,
|
|
18
|
+
waitElementIsVisible
|
|
19
|
+
} from "./chunk-ISIVPVER.mjs";
|
|
18
20
|
|
|
19
21
|
// src/pageObjects/elements/Table/Table.ts
|
|
20
22
|
import { By as By5 } from "selenium-webdriver";
|
|
@@ -595,6 +597,122 @@ var FilterPanel = class extends AbstractElement {
|
|
|
595
597
|
}
|
|
596
598
|
};
|
|
597
599
|
|
|
600
|
+
// src/pageObjects/elements/Filters/ColumnFilter.ts
|
|
601
|
+
import { By as By8 } from "selenium-webdriver";
|
|
602
|
+
|
|
603
|
+
// src/pageObjects/elements/Filters/HeaderFilterField.ts
|
|
604
|
+
var HeaderFilterField = class extends AbstractEditor {
|
|
605
|
+
constructor(parentCssSelector, formName, name, driver) {
|
|
606
|
+
super(parentCssSelector, byTestIdCssSelector(createHeaderFilterTestId(formName, name)), driver);
|
|
607
|
+
}
|
|
608
|
+
async getValue() {
|
|
609
|
+
return super.getValue();
|
|
610
|
+
}
|
|
611
|
+
async setValue(value) {
|
|
612
|
+
return super.setValue(value);
|
|
613
|
+
}
|
|
614
|
+
async clear() {
|
|
615
|
+
return super.clear();
|
|
616
|
+
}
|
|
617
|
+
async remove(itemText) {
|
|
618
|
+
return super.remove(itemText);
|
|
619
|
+
}
|
|
620
|
+
};
|
|
621
|
+
|
|
622
|
+
// src/pageObjects/elements/Filters/ColumnFilter.ts
|
|
623
|
+
var APPLY_SELECTOR = ".apply-button";
|
|
624
|
+
var CANCEL_SELECTOR = ".cancel-button";
|
|
625
|
+
var HEADER_FILTER_ICON = ".dx-column-indicators .dx-header-filter";
|
|
626
|
+
var HEADER_FILTER_CONTAINER = ".header-filter";
|
|
627
|
+
var HEADER_FILTER_BUTTONS = ".header-filter-buttons";
|
|
628
|
+
var ColumnFilter = class extends AbstractElement {
|
|
629
|
+
_formName;
|
|
630
|
+
_name;
|
|
631
|
+
_column;
|
|
632
|
+
constructor(formName, name, column, driver) {
|
|
633
|
+
super(driver, HEADER_FILTER_CONTAINER);
|
|
634
|
+
this._formName = formName;
|
|
635
|
+
this._name = name;
|
|
636
|
+
this._column = column;
|
|
637
|
+
this.driver = driver;
|
|
638
|
+
}
|
|
639
|
+
async getApplyButton() {
|
|
640
|
+
const selector = `${HEADER_FILTER_CONTAINER} ${HEADER_FILTER_BUTTONS} ${APPLY_SELECTOR}`;
|
|
641
|
+
return this.driver.findElement(By8.css(selector));
|
|
642
|
+
}
|
|
643
|
+
async getCancelButton() {
|
|
644
|
+
const selector = `${HEADER_FILTER_CONTAINER} ${HEADER_FILTER_BUTTONS} ${CANCEL_SELECTOR}`;
|
|
645
|
+
return this.driver.findElement(By8.css(selector));
|
|
646
|
+
}
|
|
647
|
+
async apply() {
|
|
648
|
+
const btn = await this.getApplyButton();
|
|
649
|
+
await click(btn, this.driver);
|
|
650
|
+
}
|
|
651
|
+
async cancel() {
|
|
652
|
+
const btn = await this.getCancelButton();
|
|
653
|
+
await click(btn, this.driver);
|
|
654
|
+
}
|
|
655
|
+
async initFilter() {
|
|
656
|
+
const columnEl = await this._column.getElement();
|
|
657
|
+
const actions = this.driver.actions({ async: true });
|
|
658
|
+
await actions.move({ origin: columnEl }).perform();
|
|
659
|
+
const elements = await columnEl.findElements(By8.css(HEADER_FILTER_ICON));
|
|
660
|
+
const headerFilterIcon = elements[1];
|
|
661
|
+
await waitElementIsVisible({
|
|
662
|
+
element: headerFilterIcon,
|
|
663
|
+
driver: this.driver,
|
|
664
|
+
errorMessage: `HeaderFilter "${this._name}" is not visible`
|
|
665
|
+
});
|
|
666
|
+
if (!headerFilterIcon)
|
|
667
|
+
throw new Error(`HeaderFilter "${this._name}" is not visible`);
|
|
668
|
+
await headerFilterIcon.click();
|
|
669
|
+
return new HeaderFilterField("", this._formName, this._name, this.driver);
|
|
670
|
+
}
|
|
671
|
+
/**
|
|
672
|
+
* Возвращает значение в поле
|
|
673
|
+
* @example
|
|
674
|
+
* expect(await form.columnFilter('NumberFld').getValue()).toBe(10);
|
|
675
|
+
* expect(await form.columnFilter('TextFld').getValue()).toBe('TestValue');
|
|
676
|
+
*/
|
|
677
|
+
async getValue() {
|
|
678
|
+
const filter = await this.initFilter();
|
|
679
|
+
const result = await filter.getValue();
|
|
680
|
+
await this.cancel();
|
|
681
|
+
return result;
|
|
682
|
+
}
|
|
683
|
+
/**
|
|
684
|
+
* Устанавливает значение в поле
|
|
685
|
+
* @example
|
|
686
|
+
* await form.columnFilter('NumberFld').setValue(123);
|
|
687
|
+
* await form.columnFilter('TextFld').setValue('TestValue');
|
|
688
|
+
*/
|
|
689
|
+
async setValue(value) {
|
|
690
|
+
const filter = await this.initFilter();
|
|
691
|
+
await filter.setValue(value);
|
|
692
|
+
return this.apply();
|
|
693
|
+
}
|
|
694
|
+
/**
|
|
695
|
+
* Очищает значение в поле
|
|
696
|
+
* @example
|
|
697
|
+
* await form.columnFilter('NumberFld').clear();
|
|
698
|
+
*/
|
|
699
|
+
async clear() {
|
|
700
|
+
const filter = await this.initFilter();
|
|
701
|
+
await filter.clear();
|
|
702
|
+
return this.apply();
|
|
703
|
+
}
|
|
704
|
+
/**
|
|
705
|
+
* Удаляет тег по переданному тексту
|
|
706
|
+
* @example
|
|
707
|
+
* await form.columnFilter('TagBox').remove('test');
|
|
708
|
+
*/
|
|
709
|
+
async remove(itemText) {
|
|
710
|
+
const filter = await this.initFilter();
|
|
711
|
+
await filter.remove(itemText);
|
|
712
|
+
return this.apply();
|
|
713
|
+
}
|
|
714
|
+
};
|
|
715
|
+
|
|
598
716
|
// src/pageObjects/elements/Forms/ListForm.ts
|
|
599
717
|
var DATAGRID_HEADER_CSS_SELECTOR = ".dx-datagrid-headers .dx-datagrid-content:not(.dx-datagrid-content-fixed)";
|
|
600
718
|
var ListForm = class extends Form {
|
|
@@ -635,6 +753,10 @@ var ListForm = class extends Form {
|
|
|
635
753
|
formFilter(name) {
|
|
636
754
|
return new FormFilterField(this.containerCssSelector, this.formName, name, this.driver);
|
|
637
755
|
}
|
|
756
|
+
columnFilter(name) {
|
|
757
|
+
const column = this.table().getColumnByName(name);
|
|
758
|
+
return new ColumnFilter(this.formName, name, column, this.driver);
|
|
759
|
+
}
|
|
638
760
|
/**
|
|
639
761
|
* Модель панели фильтрации
|
|
640
762
|
* @returns {FilterPanel}
|