d5-testing-library 1.8.0-alpha.1 → 1.8.0-alpha.3
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-2USHOJID.mjs +7 -0
- package/dist/ListForm-KXMIP4EA.mjs +7 -0
- package/dist/TreeView-5QQREFJ6.mjs +8 -0
- package/dist/{chunk-CKCSBNKD.mjs → chunk-2DQ5YCRB.mjs} +1 -1
- package/dist/{chunk-JITTN2NY.mjs → chunk-F57G2ZDW.mjs} +3 -3
- package/dist/{chunk-WUPIBFH7.mjs → chunk-MH6NCS6F.mjs} +276 -22
- package/dist/{chunk-Q67RHZDP.mjs → chunk-R25O5O4T.mjs} +3 -1
- package/dist/cjs/d5-testing-library.cjs +314 -40
- package/dist/d5-testing-library.d.ts +85 -2
- 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-XOCYARDX.mjs +0 -7
- package/dist/ListForm-R7WQIGBI.mjs +0 -7
- package/dist/TreeView-STUAAR65.mjs +0 -8
|
@@ -1114,15 +1114,15 @@ async function classDependencyInjector(formType) {
|
|
|
1114
1114
|
let SubFormFactoryClass;
|
|
1115
1115
|
switch (formType) {
|
|
1116
1116
|
case "1" /* LIST */:
|
|
1117
|
-
SubFormFactoryClass = (await import("./ListForm-
|
|
1117
|
+
SubFormFactoryClass = (await import("./ListForm-KXMIP4EA.mjs")).default;
|
|
1118
1118
|
break;
|
|
1119
1119
|
case "3" /* TREE */:
|
|
1120
|
-
SubFormFactoryClass = (await import("./TreeView-
|
|
1120
|
+
SubFormFactoryClass = (await import("./TreeView-5QQREFJ6.mjs")).default;
|
|
1121
1121
|
break;
|
|
1122
1122
|
case "2" /* EDIT */:
|
|
1123
1123
|
case "99" /* FREE_FORM */:
|
|
1124
1124
|
case "4" /* REPORT */:
|
|
1125
|
-
SubFormFactoryClass = (await import("./FormEdit-
|
|
1125
|
+
SubFormFactoryClass = (await import("./FormEdit-2USHOJID.mjs")).default;
|
|
1126
1126
|
break;
|
|
1127
1127
|
default:
|
|
1128
1128
|
throw new Error(`Unsupported form type ${formType}`);
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
wait,
|
|
17
17
|
waitElementIsClickable,
|
|
18
18
|
waitElementIsVisible
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-F57G2ZDW.mjs";
|
|
20
20
|
|
|
21
21
|
// src/pageObjects/elements/Table/Table.ts
|
|
22
22
|
import { By as By5 } from "selenium-webdriver";
|
|
@@ -94,10 +94,12 @@ var DX_DATA_ROW_CLASS = "dx-data-row";
|
|
|
94
94
|
var Row = class extends AbstractElementWithParent {
|
|
95
95
|
index;
|
|
96
96
|
getColumnBy;
|
|
97
|
-
|
|
97
|
+
fixedTableContentCssSelector;
|
|
98
|
+
constructor(parentCssSelector, fixedTableContentCssSelector, index, driver, getColumnBy) {
|
|
98
99
|
super(parentCssSelector, getCssRowByIndexSelector(index), driver);
|
|
99
100
|
this.index = index;
|
|
100
101
|
this.getColumnBy = getColumnBy;
|
|
102
|
+
this.fixedTableContentCssSelector = fixedTableContentCssSelector;
|
|
101
103
|
}
|
|
102
104
|
_getCell({ index, name, title }) {
|
|
103
105
|
return new Cell(
|
|
@@ -147,12 +149,11 @@ var Row = class extends AbstractElementWithParent {
|
|
|
147
149
|
return result;
|
|
148
150
|
}
|
|
149
151
|
async clickInlineButton(buttonClass) {
|
|
150
|
-
const FIXED_TABLE_CSS_SELECTOR = ".dx-fixed-columns .dx-datagrid-content.dx-datagrid-content-fixed";
|
|
151
152
|
const buttonCssSelector = `.${DX_DATA_ROW_CLASS}[aria-rowindex="${transformInputIndex(
|
|
152
153
|
this.index
|
|
153
154
|
)}"] .${buttonClass}`;
|
|
154
155
|
const button = await fixElementStaleError(
|
|
155
|
-
By3.css(`${this.parentCssSelector} ${
|
|
156
|
+
By3.css(`${this.parentCssSelector} ${this.fixedTableContentCssSelector} ${buttonCssSelector}`),
|
|
156
157
|
this.driver
|
|
157
158
|
);
|
|
158
159
|
return click(button, this.driver);
|
|
@@ -239,10 +240,12 @@ var Column = class extends AbstractElementWithParent {
|
|
|
239
240
|
var Table = class extends AbstractElementWithParent {
|
|
240
241
|
formName;
|
|
241
242
|
headerCssSelector;
|
|
242
|
-
|
|
243
|
+
fixedTableContentCssSelector;
|
|
244
|
+
constructor(parentCssSelector, headerCssSelector, fixedTableContentCssSelector, formName, driver) {
|
|
243
245
|
super(parentCssSelector, `#${createTableId(formName)}`, driver);
|
|
244
246
|
this.formName = formName;
|
|
245
247
|
this.headerCssSelector = headerCssSelector;
|
|
248
|
+
this.fixedTableContentCssSelector = fixedTableContentCssSelector;
|
|
246
249
|
}
|
|
247
250
|
getColumnBy = (args) => {
|
|
248
251
|
if (args.title) {
|
|
@@ -251,7 +254,7 @@ var Table = class extends AbstractElementWithParent {
|
|
|
251
254
|
return this.getColumnByName(args.name);
|
|
252
255
|
};
|
|
253
256
|
getRowByIndex(index) {
|
|
254
|
-
return new Row(this.getFullCssSelector(), index, this.driver, this.getColumnBy);
|
|
257
|
+
return new Row(this.getFullCssSelector(), this.fixedTableContentCssSelector, index, this.driver, this.getColumnBy);
|
|
255
258
|
}
|
|
256
259
|
getColumnByIndex(index) {
|
|
257
260
|
return new Column({
|
|
@@ -283,7 +286,13 @@ var Table = class extends AbstractElementWithParent {
|
|
|
283
286
|
const rows = await this.driver.findElements(By5.css(`${this.getFullCssSelector()} .dx-row.dx-data-row`));
|
|
284
287
|
const result = [];
|
|
285
288
|
rows.forEach((_, index) => {
|
|
286
|
-
const newRow = new Row(
|
|
289
|
+
const newRow = new Row(
|
|
290
|
+
this.getFullCssSelector(),
|
|
291
|
+
this.fixedTableContentCssSelector,
|
|
292
|
+
index,
|
|
293
|
+
this.driver,
|
|
294
|
+
this.getColumnBy
|
|
295
|
+
);
|
|
287
296
|
result.push(newRow);
|
|
288
297
|
});
|
|
289
298
|
return result;
|
|
@@ -463,10 +472,105 @@ var FormToolbar = class extends AbstractElementWithParent {
|
|
|
463
472
|
}
|
|
464
473
|
};
|
|
465
474
|
|
|
475
|
+
// src/pageObjects/elements/Filters/FilterOperation.ts
|
|
476
|
+
import { By as By7 } from "selenium-webdriver";
|
|
477
|
+
var FILTER_OPERATIONS = [
|
|
478
|
+
"=",
|
|
479
|
+
"<>",
|
|
480
|
+
"<",
|
|
481
|
+
">",
|
|
482
|
+
"<=",
|
|
483
|
+
">=",
|
|
484
|
+
"contains",
|
|
485
|
+
"between",
|
|
486
|
+
"isanyof",
|
|
487
|
+
"isnotanyof",
|
|
488
|
+
"isblank",
|
|
489
|
+
"isnotblank",
|
|
490
|
+
"startwith",
|
|
491
|
+
"bywords"
|
|
492
|
+
];
|
|
493
|
+
var BUTTON_OPERATION_WIDGET = "operation-widget";
|
|
494
|
+
var OPERATIONS_WIDGET_POPUP = "operation-type-widget-popup";
|
|
495
|
+
var getWidgetInPopupSelector = (operationName) => `.dx-list-item [data-operation="${operationName}"]`;
|
|
496
|
+
var FilterOperation = class extends AbstractElementWithParent {
|
|
497
|
+
_testId;
|
|
498
|
+
constructor({ parentCssSelector, filterTestID, driver }) {
|
|
499
|
+
super(parentCssSelector, `${byTestIdCssSelector(`${BUTTON_OPERATION_WIDGET}-${filterTestID}`)}`, driver);
|
|
500
|
+
this._testId = filterTestID;
|
|
501
|
+
}
|
|
502
|
+
async initOperationWidget() {
|
|
503
|
+
const widgetButtonEl = await this.getElement();
|
|
504
|
+
await waitElementIsClickable({
|
|
505
|
+
element: widgetButtonEl,
|
|
506
|
+
errorMessage: "Widget operation is not clickable",
|
|
507
|
+
driver: this.driver
|
|
508
|
+
});
|
|
509
|
+
const clickableElement = await widgetButtonEl.findElement(By7.className("dx-icon"));
|
|
510
|
+
await click(clickableElement, this.driver);
|
|
511
|
+
try {
|
|
512
|
+
const widgetPopupEl = await this.driver.findElement(By7.css(`${byTestIdCssSelector(`${OPERATIONS_WIDGET_POPUP}-${this._testId}`)}`));
|
|
513
|
+
await waitElementIsVisible({
|
|
514
|
+
element: widgetPopupEl,
|
|
515
|
+
errorMessage: `Operation widget popup is not visible`,
|
|
516
|
+
driver: this.driver
|
|
517
|
+
});
|
|
518
|
+
} catch (_) {
|
|
519
|
+
throw `Operation widget popup is not visible`;
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
async setOperation(operationName) {
|
|
523
|
+
if (!FILTER_OPERATIONS.includes(operationName)) {
|
|
524
|
+
throw new Error(`Operation with name "${operationName}" is not correct.`);
|
|
525
|
+
}
|
|
526
|
+
await this.initOperationWidget();
|
|
527
|
+
const operationEl = await fixElementStaleError(By7.css(`${byTestIdCssSelector(`${OPERATIONS_WIDGET_POPUP}-${this._testId}`)} ${getWidgetInPopupSelector(operationName)}`), this.driver);
|
|
528
|
+
await click(operationEl, this.driver);
|
|
529
|
+
await wait(
|
|
530
|
+
async () => {
|
|
531
|
+
const currOperationName = await this.getAttribute("data-operation");
|
|
532
|
+
if (operationName === "isblank")
|
|
533
|
+
return true;
|
|
534
|
+
return currOperationName === operationName;
|
|
535
|
+
},
|
|
536
|
+
this.driver,
|
|
537
|
+
"Operation is not changed"
|
|
538
|
+
);
|
|
539
|
+
}
|
|
540
|
+
async getOperation() {
|
|
541
|
+
const result = await this.getAttribute("data-operation");
|
|
542
|
+
if (!result)
|
|
543
|
+
throw new Error("Operation not found");
|
|
544
|
+
return result;
|
|
545
|
+
}
|
|
546
|
+
async setIsBlank(value) {
|
|
547
|
+
const currValue = await this.getIsBlank();
|
|
548
|
+
if (currValue !== value) {
|
|
549
|
+
await this.setOperation("isblank");
|
|
550
|
+
await wait(
|
|
551
|
+
async () => {
|
|
552
|
+
const currIsBlank = await this.getIsBlank();
|
|
553
|
+
return currIsBlank === value;
|
|
554
|
+
},
|
|
555
|
+
this.driver,
|
|
556
|
+
"Operation is not changed"
|
|
557
|
+
);
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
async getIsBlank() {
|
|
561
|
+
const result = await this.getAttribute("data-hasblank");
|
|
562
|
+
return result === "true";
|
|
563
|
+
}
|
|
564
|
+
};
|
|
565
|
+
|
|
466
566
|
// src/pageObjects/elements/Filters/FormFilterField.ts
|
|
467
567
|
var FormFilterField = class extends AbstractEditor {
|
|
568
|
+
formName;
|
|
569
|
+
name;
|
|
468
570
|
constructor(parentCssSelector, formName, name, driver) {
|
|
469
571
|
super(parentCssSelector, byTestIdCssSelector(createLayoutFilterTestId(formName, name)), driver);
|
|
572
|
+
this.formName = formName;
|
|
573
|
+
this.name = name;
|
|
470
574
|
}
|
|
471
575
|
/**
|
|
472
576
|
* Возвращает значение в поле
|
|
@@ -502,15 +606,64 @@ var FormFilterField = class extends AbstractEditor {
|
|
|
502
606
|
async remove(itemText) {
|
|
503
607
|
return super.remove(itemText);
|
|
504
608
|
}
|
|
609
|
+
/**
|
|
610
|
+
* Инициализация операции фильтра
|
|
611
|
+
*/
|
|
612
|
+
async initOperation() {
|
|
613
|
+
return new FilterOperation({
|
|
614
|
+
parentCssSelector: this.parentCssSelector,
|
|
615
|
+
filterTestID: createLayoutFilterTestId(this.formName, this.name)
|
|
616
|
+
});
|
|
617
|
+
}
|
|
618
|
+
/**
|
|
619
|
+
* Устанавливает операцию для фильтра
|
|
620
|
+
* @example
|
|
621
|
+
* await form.formFilter('TagBox').setOperation("=");
|
|
622
|
+
*/
|
|
623
|
+
async setOperation(operationName) {
|
|
624
|
+
const filterOperation = await this.initOperation();
|
|
625
|
+
await filterOperation.setOperation(operationName);
|
|
626
|
+
}
|
|
627
|
+
/**
|
|
628
|
+
* Возвращает операцию фильтра
|
|
629
|
+
* @example
|
|
630
|
+
* expect(await form.formFilter('NumberFld').getOperation()).toBe("=");
|
|
631
|
+
*/
|
|
632
|
+
async getOperation() {
|
|
633
|
+
const filterOperation = await this.initOperation();
|
|
634
|
+
return await filterOperation.getOperation();
|
|
635
|
+
}
|
|
636
|
+
/**
|
|
637
|
+
* Устанавливает операцию 'isblank' для фильтра
|
|
638
|
+
* @example
|
|
639
|
+
* await form.formFilter('TagBox').setIsBlank(true);
|
|
640
|
+
*/
|
|
641
|
+
async setIsBlank(value) {
|
|
642
|
+
const filterOperation = await this.initOperation();
|
|
643
|
+
await filterOperation.setIsBlank(value);
|
|
644
|
+
}
|
|
645
|
+
/**
|
|
646
|
+
* Возвращает true|false, если операция 'isblank' установлена для фильтра
|
|
647
|
+
* @example
|
|
648
|
+
* expect(await form.formFilter('NumberFld').getIsBlank()).toBe(false);
|
|
649
|
+
*/
|
|
650
|
+
async getIsBlank() {
|
|
651
|
+
const filterOperation = await this.initOperation();
|
|
652
|
+
return await filterOperation.getIsBlank();
|
|
653
|
+
}
|
|
505
654
|
};
|
|
506
655
|
|
|
507
656
|
// src/pageObjects/elements/Filters/FilterPanel.ts
|
|
508
|
-
import { By as
|
|
657
|
+
import { By as By8 } from "selenium-webdriver";
|
|
509
658
|
|
|
510
659
|
// src/pageObjects/elements/Filters/PanelFilterField.ts
|
|
511
660
|
var PanelFilterField = class extends AbstractEditor {
|
|
661
|
+
formName;
|
|
662
|
+
name;
|
|
512
663
|
constructor(parentCssSelector, formName, name, driver) {
|
|
513
664
|
super(parentCssSelector, byTestIdCssSelector(createDocFilterTestId(formName, name)), driver);
|
|
665
|
+
this.formName = formName;
|
|
666
|
+
this.name = name;
|
|
514
667
|
}
|
|
515
668
|
/**
|
|
516
669
|
* Возвращает значение в поле
|
|
@@ -546,6 +699,51 @@ var PanelFilterField = class extends AbstractEditor {
|
|
|
546
699
|
async remove(itemText) {
|
|
547
700
|
return super.remove(itemText);
|
|
548
701
|
}
|
|
702
|
+
/**
|
|
703
|
+
* Инициализация операции фильтра
|
|
704
|
+
*/
|
|
705
|
+
async initOperation() {
|
|
706
|
+
return new FilterOperation({
|
|
707
|
+
parentCssSelector: this.parentCssSelector,
|
|
708
|
+
filterTestID: createDocFilterTestId(this.formName, this.name)
|
|
709
|
+
});
|
|
710
|
+
}
|
|
711
|
+
/**
|
|
712
|
+
* Устанавливает операцию для фильтра
|
|
713
|
+
* @example
|
|
714
|
+
* await form.filterPanel.filterField('TagBox').setOperation("=");
|
|
715
|
+
*/
|
|
716
|
+
async setOperation(operationName) {
|
|
717
|
+
const filterOperation = await this.initOperation();
|
|
718
|
+
await filterOperation.setOperation(operationName);
|
|
719
|
+
}
|
|
720
|
+
/**
|
|
721
|
+
* Возвращает операцию фильтра
|
|
722
|
+
* @example
|
|
723
|
+
* expect(await form.filterPanel.filterField('NumberFld').getOperation()).toBe("=");
|
|
724
|
+
*/
|
|
725
|
+
async getOperation() {
|
|
726
|
+
const filterOperation = await this.initOperation();
|
|
727
|
+
return await filterOperation.getOperation();
|
|
728
|
+
}
|
|
729
|
+
/**
|
|
730
|
+
* Устанавливает операцию 'isblank' для фильтра
|
|
731
|
+
* @example
|
|
732
|
+
* await form.filterPanel.filterField('TagBox').setIsBlank(true);
|
|
733
|
+
*/
|
|
734
|
+
async setIsBlank(value) {
|
|
735
|
+
const filterOperation = await this.initOperation();
|
|
736
|
+
await filterOperation.setIsBlank(value);
|
|
737
|
+
}
|
|
738
|
+
/**
|
|
739
|
+
* Возвращает true|false, если операция 'isblank' установлена для фильтра
|
|
740
|
+
* @example
|
|
741
|
+
* expect(await form.filterPanel.filterField('NumberFld').getIsBlank()).toBe(false);
|
|
742
|
+
*/
|
|
743
|
+
async getIsBlank() {
|
|
744
|
+
const filterOperation = await this.initOperation();
|
|
745
|
+
return await filterOperation.getIsBlank();
|
|
746
|
+
}
|
|
549
747
|
};
|
|
550
748
|
|
|
551
749
|
// src/pageObjects/elements/Filters/FilterPanel.ts
|
|
@@ -560,7 +758,7 @@ var FilterPanel = class extends AbstractElement {
|
|
|
560
758
|
async filterPanelButtons() {
|
|
561
759
|
const selector = `${this.elementCssSelector} ${FILTER_PANEL_SELECTOR} .filter-panel__buttons-panel .dx-button-text`;
|
|
562
760
|
const el = await this.getElement();
|
|
563
|
-
return el.findElements(
|
|
761
|
+
return el.findElements(By8.css(selector));
|
|
564
762
|
}
|
|
565
763
|
constructor(formName, driver) {
|
|
566
764
|
super(driver, drawerSelector(formName));
|
|
@@ -593,13 +791,13 @@ var FilterPanel = class extends AbstractElement {
|
|
|
593
791
|
await this.driver.sleep(300);
|
|
594
792
|
}
|
|
595
793
|
async close() {
|
|
596
|
-
const btn = await this.driver.findElement(
|
|
794
|
+
const btn = await this.driver.findElement(By8.css(`${this.elementCssSelector} ${CLOSE_SELECTOR}`));
|
|
597
795
|
await click(btn, this.driver);
|
|
598
796
|
}
|
|
599
797
|
};
|
|
600
798
|
|
|
601
799
|
// src/pageObjects/elements/Filters/ColumnFilter.ts
|
|
602
|
-
import { By as
|
|
800
|
+
import { By as By9 } from "selenium-webdriver";
|
|
603
801
|
|
|
604
802
|
// src/pageObjects/elements/Filters/HeaderFilterField.ts
|
|
605
803
|
var HeaderFilterField = class extends AbstractEditor {
|
|
@@ -639,11 +837,11 @@ var ColumnFilter = class extends AbstractElement {
|
|
|
639
837
|
}
|
|
640
838
|
async getApplyButton() {
|
|
641
839
|
const selector = `${HEADER_FILTER_CONTAINER} ${HEADER_FILTER_BUTTONS} ${APPLY_SELECTOR}`;
|
|
642
|
-
return this.driver.findElement(
|
|
840
|
+
return this.driver.findElement(By9.css(selector));
|
|
643
841
|
}
|
|
644
842
|
async getCancelButton() {
|
|
645
843
|
const selector = `${HEADER_FILTER_CONTAINER} ${HEADER_FILTER_BUTTONS} ${CANCEL_SELECTOR}`;
|
|
646
|
-
return this.driver.findElement(
|
|
844
|
+
return this.driver.findElement(By9.css(selector));
|
|
647
845
|
}
|
|
648
846
|
async apply() {
|
|
649
847
|
const btn = await this.getApplyButton();
|
|
@@ -657,17 +855,34 @@ var ColumnFilter = class extends AbstractElement {
|
|
|
657
855
|
const columnEl = await this._column.getElement();
|
|
658
856
|
const actions = this.driver.actions({ async: true });
|
|
659
857
|
await actions.move({ origin: columnEl }).perform();
|
|
660
|
-
const elements = await columnEl.findElements(
|
|
661
|
-
|
|
662
|
-
await
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
858
|
+
const elements = await columnEl.findElements(By9.css(HEADER_FILTER_ICON));
|
|
859
|
+
let headerFilterIcon = null;
|
|
860
|
+
await wait(
|
|
861
|
+
async () => {
|
|
862
|
+
let result = false;
|
|
863
|
+
for (let element of elements) {
|
|
864
|
+
if (await element.isDisplayed()) {
|
|
865
|
+
headerFilterIcon = element;
|
|
866
|
+
result = true;
|
|
867
|
+
break;
|
|
868
|
+
}
|
|
869
|
+
}
|
|
870
|
+
return result;
|
|
871
|
+
},
|
|
872
|
+
this.driver,
|
|
873
|
+
`HeaderFilter "${this._name}" is not visible`
|
|
874
|
+
);
|
|
667
875
|
if (!headerFilterIcon)
|
|
668
876
|
throw new Error(`HeaderFilter "${this._name}" is not visible`);
|
|
669
877
|
await headerFilterIcon.click();
|
|
670
|
-
|
|
878
|
+
const filter = new HeaderFilterField("", this._formName, this._name, this.driver);
|
|
879
|
+
const filterEl = await filter.getElement();
|
|
880
|
+
await waitElementIsVisible({
|
|
881
|
+
element: filterEl,
|
|
882
|
+
driver: this.driver,
|
|
883
|
+
errorMessage: `Header filter is not visible`
|
|
884
|
+
});
|
|
885
|
+
return filter;
|
|
671
886
|
}
|
|
672
887
|
/**
|
|
673
888
|
* Возвращает значение в поле
|
|
@@ -712,16 +927,49 @@ var ColumnFilter = class extends AbstractElement {
|
|
|
712
927
|
await filter.remove(itemText);
|
|
713
928
|
return this.apply();
|
|
714
929
|
}
|
|
930
|
+
// ToDo: Треба доробити після того, як буде реалізована логіка з editor buttons
|
|
931
|
+
async initOperation() {
|
|
932
|
+
await this.initFilter();
|
|
933
|
+
return new FilterOperation({
|
|
934
|
+
parentCssSelector: HEADER_FILTER_CONTAINER,
|
|
935
|
+
filterTestID: createHeaderFilterTestId(this._formName, this._name)
|
|
936
|
+
});
|
|
937
|
+
}
|
|
938
|
+
// ToDo: Треба доробити після того, як буде реалізована логіка з editor buttons
|
|
939
|
+
async setOperation(operationName) {
|
|
940
|
+
const filterOperation = await this.initOperation();
|
|
941
|
+
await filterOperation.setOperation(operationName);
|
|
942
|
+
await this.apply();
|
|
943
|
+
}
|
|
944
|
+
// ToDo: Треба доробити після того, як буде реалізована логіка з editor buttons
|
|
945
|
+
async getOperation() {
|
|
946
|
+
const filterOperation = await this.initOperation();
|
|
947
|
+
return await filterOperation.getOperation();
|
|
948
|
+
}
|
|
949
|
+
// ToDo: Треба доробити після того, як буде реалізована логіка з editor buttons
|
|
950
|
+
async setIsBlank(value) {
|
|
951
|
+
const filterOperation = await this.initOperation();
|
|
952
|
+
await filterOperation.setIsBlank(value);
|
|
953
|
+
await this.apply();
|
|
954
|
+
}
|
|
955
|
+
// ToDo: Треба доробити після того, як буде реалізована логіка з editor buttons
|
|
956
|
+
async getIsBlank() {
|
|
957
|
+
const filterOperation = await this.initOperation();
|
|
958
|
+
return await filterOperation.getIsBlank();
|
|
959
|
+
}
|
|
715
960
|
};
|
|
716
961
|
|
|
717
962
|
// src/pageObjects/elements/Forms/ListForm.ts
|
|
718
963
|
var DATAGRID_HEADER_CSS_SELECTOR = ".dx-datagrid-headers .dx-datagrid-content:not(.dx-datagrid-content-fixed)";
|
|
964
|
+
var FIXED_DATAGRID_CONTENT_CSS_SELECTOR = ".dx-fixed-columns .dx-datagrid-content.dx-datagrid-content-fixed";
|
|
719
965
|
var ListForm = class extends Form {
|
|
720
966
|
headerCssSelector;
|
|
967
|
+
fixedTableContentCssSelector;
|
|
721
968
|
constructor(driver) {
|
|
722
969
|
super(driver);
|
|
723
970
|
this.popupContainerCssSelector = `.popup .form-inline-${this.formName}`;
|
|
724
971
|
this.headerCssSelector = DATAGRID_HEADER_CSS_SELECTOR;
|
|
972
|
+
this.fixedTableContentCssSelector = FIXED_DATAGRID_CONTENT_CSS_SELECTOR;
|
|
725
973
|
}
|
|
726
974
|
/**
|
|
727
975
|
* Находит таблицу
|
|
@@ -731,7 +979,13 @@ var ListForm = class extends Form {
|
|
|
731
979
|
* expect(listForm.table());
|
|
732
980
|
*/
|
|
733
981
|
table() {
|
|
734
|
-
return new Table(
|
|
982
|
+
return new Table(
|
|
983
|
+
this.containerCssSelector,
|
|
984
|
+
this.headerCssSelector,
|
|
985
|
+
this.fixedTableContentCssSelector,
|
|
986
|
+
this.formName,
|
|
987
|
+
this.driver
|
|
988
|
+
);
|
|
735
989
|
}
|
|
736
990
|
/**
|
|
737
991
|
* Находит таблицу
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ListForm
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MH6NCS6F.mjs";
|
|
4
4
|
|
|
5
5
|
// src/pageObjects/elements/Forms/TreeView.ts
|
|
6
6
|
var TREELIST_HEADER_CSS_SELECTOR = ".dx-treelist-headers .dx-treelist-content:not(.dx-datagrid-content-fixed)";
|
|
7
|
+
var FIXED_TREELIST_CONTENT_CSS_SELECTOR = ".dx-fixed-columns .dx-treelist-content.dx-treelist-content-fixed";
|
|
7
8
|
var TreeView = class extends ListForm {
|
|
8
9
|
constructor(driver) {
|
|
9
10
|
super(driver);
|
|
10
11
|
this.popupContainerCssSelector = `.popup .wrapper-tree-view-${this.formName}`;
|
|
11
12
|
this.headerCssSelector = TREELIST_HEADER_CSS_SELECTOR;
|
|
13
|
+
this.fixedTableContentCssSelector = FIXED_TREELIST_CONTENT_CSS_SELECTOR;
|
|
12
14
|
}
|
|
13
15
|
};
|
|
14
16
|
|