d5-testing-library 1.8.0-alpha.1 → 1.8.0-alpha.11
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-NPGDM3FJ.mjs +7 -0
- package/dist/ListForm-Z63MCMIH.mjs +7 -0
- package/dist/TreeView-LMBX3YNB.mjs +8 -0
- package/dist/{chunk-JITTN2NY.mjs → chunk-45B4TCE4.mjs} +167 -27
- package/dist/chunk-745NW6FN.mjs +21 -0
- package/dist/{chunk-CKCSBNKD.mjs → chunk-K4ELCNMK.mjs} +16 -7
- package/dist/{chunk-WUPIBFH7.mjs → chunk-LJ7UTZYH.mjs} +346 -29
- package/dist/cjs/d5-testing-library.cjs +596 -85
- package/dist/d5-testing-library.d.ts +140 -8
- package/dist/d5-testing-library.legacy-esm.js +10 -11
- package/dist/d5-testing-library.mjs +10 -11
- 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
- package/dist/chunk-Q67RHZDP.mjs +0 -17
|
@@ -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
|
|
|
@@ -736,6 +830,52 @@ function createFormButtonTestId(formName, itemName) {
|
|
|
736
830
|
function createSubSystemTestId(itemName) {
|
|
737
831
|
return `${"subsystem-item" /* SUBSYSTEM_ITEM */}-${itemName}`;
|
|
738
832
|
}
|
|
833
|
+
function createEditorButtonTestId(itemName) {
|
|
834
|
+
return `${"editor-button" /* EDITOR_BUTTON */}-${itemName}`;
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
// src/utils/waitElementIsClickable.ts
|
|
838
|
+
async function waitElementIsClickable({
|
|
839
|
+
element,
|
|
840
|
+
timeout,
|
|
841
|
+
errorMessage,
|
|
842
|
+
driver
|
|
843
|
+
}) {
|
|
844
|
+
driver = driver ?? config().driver;
|
|
845
|
+
await wait(async () => {
|
|
846
|
+
const isDisabled = await element.getCssValue("pointer-events") === "none";
|
|
847
|
+
return await element.isDisplayed() && !isDisabled;
|
|
848
|
+
}, driver, errorMessage, timeout ?? config().timeout);
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
// src/pageObjects/elements/EditorButton.ts
|
|
852
|
+
var EditorButton = class extends AbstractElementWithParent {
|
|
853
|
+
name;
|
|
854
|
+
constructor(parentCssSelector, name, driver) {
|
|
855
|
+
super(parentCssSelector, byTestIdCssSelector(createEditorButtonTestId(name)), driver);
|
|
856
|
+
this.name = name;
|
|
857
|
+
}
|
|
858
|
+
buttonNotDisplayedError() {
|
|
859
|
+
return `Editor Button ${this.name} cannot be clicked. It is not displayed or it is disabled`;
|
|
860
|
+
}
|
|
861
|
+
async click() {
|
|
862
|
+
const button = await this.getElement();
|
|
863
|
+
await waitElementIsClickable({
|
|
864
|
+
element: button,
|
|
865
|
+
errorMessage: this.buttonNotDisplayedError(),
|
|
866
|
+
driver: this.driver
|
|
867
|
+
});
|
|
868
|
+
await click(button, this.driver);
|
|
869
|
+
}
|
|
870
|
+
async isDisplayed() {
|
|
871
|
+
try {
|
|
872
|
+
const button = await this.getElement();
|
|
873
|
+
return await button.isDisplayed();
|
|
874
|
+
} catch (error) {
|
|
875
|
+
return false;
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
};
|
|
739
879
|
|
|
740
880
|
// src/pageObjects/elements/AbstractEditor.ts
|
|
741
881
|
var AbstractEditor = class extends AbstractElementWithParent {
|
|
@@ -802,6 +942,16 @@ var AbstractEditor = class extends AbstractElementWithParent {
|
|
|
802
942
|
await this.initEditor();
|
|
803
943
|
return this.editor.isReadonly();
|
|
804
944
|
}
|
|
945
|
+
/**
|
|
946
|
+
* Находит кнопку на поле по имени
|
|
947
|
+
* @example
|
|
948
|
+
* const form= new MyForm();
|
|
949
|
+
* //...
|
|
950
|
+
* await form.field('Name').button('editorButton).click()
|
|
951
|
+
*/
|
|
952
|
+
button(name) {
|
|
953
|
+
return new EditorButton(this.getFullCssSelector(), name, this.driver);
|
|
954
|
+
}
|
|
805
955
|
};
|
|
806
956
|
|
|
807
957
|
// src/pageObjects/elements/FormField.ts
|
|
@@ -812,21 +962,7 @@ var FormField = class extends AbstractEditor {
|
|
|
812
962
|
};
|
|
813
963
|
|
|
814
964
|
// src/pageObjects/elements/Forms/Form.ts
|
|
815
|
-
import { By as
|
|
816
|
-
|
|
817
|
-
// src/utils/waitElementIsClickable.ts
|
|
818
|
-
async function waitElementIsClickable({
|
|
819
|
-
element,
|
|
820
|
-
timeout,
|
|
821
|
-
errorMessage,
|
|
822
|
-
driver
|
|
823
|
-
}) {
|
|
824
|
-
driver = driver ?? config().driver;
|
|
825
|
-
await wait(async () => {
|
|
826
|
-
const isDisabled = await element.getCssValue("pointer-events") === "none";
|
|
827
|
-
return await element.isDisplayed() && !isDisabled;
|
|
828
|
-
}, driver, errorMessage, timeout ?? config().timeout);
|
|
829
|
-
}
|
|
965
|
+
import { By as By15 } from "selenium-webdriver";
|
|
830
966
|
|
|
831
967
|
// src/pageObjects/elements/TableToolbar/AbstractButton.ts
|
|
832
968
|
var AbstractButton = class extends AbstractElementWithParent {
|
|
@@ -846,10 +982,14 @@ var AbstractButton = class extends AbstractElementWithParent {
|
|
|
846
982
|
const button = await this.getElement();
|
|
847
983
|
return await button.getCssValue("pointer-events") === "none";
|
|
848
984
|
}
|
|
985
|
+
async isDisplayed() {
|
|
986
|
+
const button = await this.getElement();
|
|
987
|
+
return await button.isDisplayed();
|
|
988
|
+
}
|
|
849
989
|
};
|
|
850
990
|
|
|
851
991
|
// src/pageObjects/elements/DXComponents/DXButton.ts
|
|
852
|
-
import { By as
|
|
992
|
+
import { By as By12 } from "selenium-webdriver";
|
|
853
993
|
var DXButton = class extends AbstractButton {
|
|
854
994
|
async getText() {
|
|
855
995
|
const classes = await this.getClasses();
|
|
@@ -857,7 +997,7 @@ var DXButton = class extends AbstractButton {
|
|
|
857
997
|
return null;
|
|
858
998
|
}
|
|
859
999
|
const el = await this.getElement();
|
|
860
|
-
const textEl = el.findElement(
|
|
1000
|
+
const textEl = el.findElement(By12.className("dx-button-text"));
|
|
861
1001
|
return await textEl.getText();
|
|
862
1002
|
}
|
|
863
1003
|
};
|
|
@@ -887,7 +1027,7 @@ var Panel = class extends AbstractGroup {
|
|
|
887
1027
|
};
|
|
888
1028
|
|
|
889
1029
|
// src/pageObjects/elements/Groups/TabPanel.ts
|
|
890
|
-
import { By as
|
|
1030
|
+
import { By as By13 } from "selenium-webdriver";
|
|
891
1031
|
var TabPanelItem = class extends AbstractGroup {
|
|
892
1032
|
constructor(parentCssSelector, elementCssSelector, driver) {
|
|
893
1033
|
super(parentCssSelector, elementCssSelector, driver);
|
|
@@ -897,7 +1037,7 @@ var TabPanelItem = class extends AbstractGroup {
|
|
|
897
1037
|
}
|
|
898
1038
|
async isActive() {
|
|
899
1039
|
const tabPanelItemElement = await this.getElement();
|
|
900
|
-
const grandparentTab = await tabPanelItemElement.findElement(
|
|
1040
|
+
const grandparentTab = await tabPanelItemElement.findElement(By13.xpath('ancestor::div[@role="tab"][1]'));
|
|
901
1041
|
return await grandparentTab.getAttribute("aria-selected") === "true";
|
|
902
1042
|
}
|
|
903
1043
|
async getTitle() {
|
|
@@ -914,7 +1054,7 @@ var TabPanel = class extends AbstractGroup {
|
|
|
914
1054
|
};
|
|
915
1055
|
|
|
916
1056
|
// src/pageObjects/elements/Groups/Accordion/AccordionItem.ts
|
|
917
|
-
import { By as
|
|
1057
|
+
import { By as By14 } from "selenium-webdriver";
|
|
918
1058
|
var ACCORDION_TITLE_CONTAINER = "accordion-title-container";
|
|
919
1059
|
var AccordionItem = class extends AbstractGroup {
|
|
920
1060
|
constructor(parentCssSelector, elementCssSelector, driver) {
|
|
@@ -926,7 +1066,7 @@ var AccordionItem = class extends AbstractGroup {
|
|
|
926
1066
|
}
|
|
927
1067
|
async clickAccordionItemTitle() {
|
|
928
1068
|
const accordionElement = await this.getElement();
|
|
929
|
-
const accordTitleElement = await accordionElement.findElement(
|
|
1069
|
+
const accordTitleElement = await accordionElement.findElement(By14.className(ACCORDION_TITLE_CONTAINER));
|
|
930
1070
|
await accordTitleElement.click();
|
|
931
1071
|
}
|
|
932
1072
|
async click() {
|
|
@@ -1114,15 +1254,15 @@ async function classDependencyInjector(formType) {
|
|
|
1114
1254
|
let SubFormFactoryClass;
|
|
1115
1255
|
switch (formType) {
|
|
1116
1256
|
case "1" /* LIST */:
|
|
1117
|
-
SubFormFactoryClass = (await import("./ListForm-
|
|
1257
|
+
SubFormFactoryClass = (await import("./ListForm-Z63MCMIH.mjs")).default;
|
|
1118
1258
|
break;
|
|
1119
1259
|
case "3" /* TREE */:
|
|
1120
|
-
SubFormFactoryClass = (await import("./TreeView-
|
|
1260
|
+
SubFormFactoryClass = (await import("./TreeView-LMBX3YNB.mjs")).default;
|
|
1121
1261
|
break;
|
|
1122
1262
|
case "2" /* EDIT */:
|
|
1123
1263
|
case "99" /* FREE_FORM */:
|
|
1124
1264
|
case "4" /* REPORT */:
|
|
1125
|
-
SubFormFactoryClass = (await import("./FormEdit-
|
|
1265
|
+
SubFormFactoryClass = (await import("./FormEdit-NPGDM3FJ.mjs")).default;
|
|
1126
1266
|
break;
|
|
1127
1267
|
default:
|
|
1128
1268
|
throw new Error(`Unsupported form type ${formType}`);
|
|
@@ -1152,10 +1292,10 @@ var Form = class extends AbstractForm {
|
|
|
1152
1292
|
*/
|
|
1153
1293
|
async getTitleText() {
|
|
1154
1294
|
if (await this.isModal()) {
|
|
1155
|
-
const titleEl2 = await this.driver.findElement(
|
|
1295
|
+
const titleEl2 = await this.driver.findElement(By15.css(`${this.popupContainerCssSelector} .popup-title`));
|
|
1156
1296
|
return titleEl2.getText();
|
|
1157
1297
|
}
|
|
1158
|
-
let titleEl = await this.driver.findElement(
|
|
1298
|
+
let titleEl = await this.driver.findElement(By15.className("main-toolbar-form-title"));
|
|
1159
1299
|
return titleEl.getText();
|
|
1160
1300
|
}
|
|
1161
1301
|
setSubFormMode() {
|
|
@@ -1173,7 +1313,7 @@ var Form = class extends AbstractForm {
|
|
|
1173
1313
|
*/
|
|
1174
1314
|
async subForm(name) {
|
|
1175
1315
|
const cssSelector = subformCssSelector(this.containerCssSelector, subFormTestId(name));
|
|
1176
|
-
const byCssSelector =
|
|
1316
|
+
const byCssSelector = By15.css(cssSelector);
|
|
1177
1317
|
const subFormEl = await this.driver.findElement(byCssSelector);
|
|
1178
1318
|
await waitElementIsVisible({
|
|
1179
1319
|
element: subFormEl,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ListForm
|
|
3
|
+
} from "./chunk-LJ7UTZYH.mjs";
|
|
4
|
+
|
|
5
|
+
// src/pageObjects/elements/Forms/TreeView.ts
|
|
6
|
+
var TREELIST_HEADER_CSS_SELECTOR = ".dx-treelist-headers .dx-treelist-content:not(.dx-datagrid-content-fixed)";
|
|
7
|
+
var TREELIST_CONTENT_CSS_SELECTOR = ".dx-treelist-content:not(.dx-datagrid-content-fixed)";
|
|
8
|
+
var FIXED_TREELIST_CONTENT_CSS_SELECTOR = ".dx-fixed-columns .dx-treelist-content.dx-treelist-content-fixed";
|
|
9
|
+
var TreeView = class extends ListForm {
|
|
10
|
+
constructor(driver) {
|
|
11
|
+
super(driver);
|
|
12
|
+
this.popupContainerCssSelector = `.popup.wrapper-tree-view-${this.formName}`;
|
|
13
|
+
this.headerCssSelector = TREELIST_HEADER_CSS_SELECTOR;
|
|
14
|
+
this.fixedTableContentCssSelector = FIXED_TREELIST_CONTENT_CSS_SELECTOR;
|
|
15
|
+
this.tableContentCssSelector = TREELIST_CONTENT_CSS_SELECTOR;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export {
|
|
20
|
+
TreeView
|
|
21
|
+
};
|
|
@@ -3,16 +3,22 @@ import {
|
|
|
3
3
|
FormField,
|
|
4
4
|
click,
|
|
5
5
|
wait
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-45B4TCE4.mjs";
|
|
7
7
|
|
|
8
8
|
// src/pageObjects/elements/Forms/FormEdit.ts
|
|
9
9
|
import { By } from "selenium-webdriver";
|
|
10
10
|
var FormEdit = class extends Form {
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
saveButtonId = "#button-save";
|
|
12
|
+
closeButtonId = "#button-cancel";
|
|
13
13
|
constructor(driver) {
|
|
14
14
|
super(driver);
|
|
15
|
-
this.popupContainerCssSelector = `.popup
|
|
15
|
+
this.popupContainerCssSelector = `.popup.form-edit-${this.formName}`;
|
|
16
|
+
}
|
|
17
|
+
async getButtonCssSelector(buttonId) {
|
|
18
|
+
if (await this.isModal()) {
|
|
19
|
+
return `${this.popupContainerCssSelector} ${buttonId}`;
|
|
20
|
+
}
|
|
21
|
+
return buttonId;
|
|
16
22
|
}
|
|
17
23
|
/**
|
|
18
24
|
* Находит поле формы редактирования по имени
|
|
@@ -32,7 +38,8 @@ var FormEdit = class extends Form {
|
|
|
32
38
|
* await formEdit.isSaveButtonDisabled();
|
|
33
39
|
*/
|
|
34
40
|
async isSaveButtonDisabled() {
|
|
35
|
-
const
|
|
41
|
+
const saveButtonCssSelector = await this.getButtonCssSelector(this.saveButtonId);
|
|
42
|
+
const saveButton = await this.driver.findElement(By.css(saveButtonCssSelector));
|
|
36
43
|
const result = await saveButton.getAttribute("aria-disabled");
|
|
37
44
|
return result === "true";
|
|
38
45
|
}
|
|
@@ -44,7 +51,8 @@ var FormEdit = class extends Form {
|
|
|
44
51
|
* await formEdit.saveButtonClick();
|
|
45
52
|
*/
|
|
46
53
|
async saveButtonClick() {
|
|
47
|
-
const
|
|
54
|
+
const saveButtonCssSelector = await this.getButtonCssSelector(this.saveButtonId);
|
|
55
|
+
const saveButton = await this.driver.findElement(By.css(saveButtonCssSelector));
|
|
48
56
|
await wait(async () => !await this.isSaveButtonDisabled(), this.driver, "Button is disabled");
|
|
49
57
|
await click(saveButton, this.driver);
|
|
50
58
|
}
|
|
@@ -56,7 +64,8 @@ var FormEdit = class extends Form {
|
|
|
56
64
|
* await formEdit.closeButtonClick();
|
|
57
65
|
*/
|
|
58
66
|
async closeButtonClick() {
|
|
59
|
-
const
|
|
67
|
+
const closeButtonCssSelector = await this.getButtonCssSelector(this.closeButtonId);
|
|
68
|
+
const closeButton = await this.driver.findElement(By.css(closeButtonCssSelector));
|
|
60
69
|
await click(closeButton, this.driver);
|
|
61
70
|
}
|
|
62
71
|
};
|