d5-testing-library 1.5.0 → 1.6.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-Z2QDWFFG.mjs +7 -0
- package/dist/ListForm-JAFTOUFG.mjs +7 -0
- package/dist/TreeView-YUECOEFI.mjs +8 -0
- package/dist/{chunk-NWWYF43G.mjs → chunk-3EQV252X.mjs} +1 -1
- package/dist/{chunk-VWNH6HVN.mjs → chunk-4VLJL7OZ.mjs} +123 -25
- package/dist/{chunk-44JIUIEW.mjs → chunk-CFJ5JWM7.mjs} +1 -1
- package/dist/{chunk-FP26UOTI.mjs → chunk-PNSQQKEY.mjs} +1 -1
- package/dist/cjs/d5-testing-library.cjs +172 -30
- package/dist/d5-testing-library.d.ts +36 -8
- package/dist/d5-testing-library.legacy-esm.js +29 -8
- package/dist/d5-testing-library.mjs +29 -8
- package/package.json +1 -1
- 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() {
|
|
@@ -881,19 +880,73 @@ var AbstractGroup = class extends AbstractElementWithParent {
|
|
|
881
880
|
var Panel = class extends AbstractGroup {
|
|
882
881
|
};
|
|
883
882
|
|
|
884
|
-
// src/pageObjects/elements/Groups/TabPanel
|
|
885
|
-
|
|
886
|
-
|
|
883
|
+
// src/pageObjects/elements/Groups/TabPanel.ts
|
|
884
|
+
var TabPanelItem = class extends AbstractGroup {
|
|
885
|
+
constructor(parentCssSelector, elementCssSelector, driver) {
|
|
886
|
+
super(parentCssSelector, elementCssSelector, driver);
|
|
887
|
+
}
|
|
888
|
+
async click() {
|
|
889
|
+
await click(await this.getElement(), this.driver);
|
|
890
|
+
}
|
|
891
|
+
async getTitle() {
|
|
892
|
+
return "";
|
|
893
|
+
}
|
|
894
|
+
};
|
|
887
895
|
var TabPanel = class extends AbstractGroup {
|
|
896
|
+
item(name) {
|
|
897
|
+
return new TabPanelItem(this.getFullCssSelector(), `.tab-panel-item[data-groupname="${name}"]`, this.driver);
|
|
898
|
+
}
|
|
899
|
+
async getTitle() {
|
|
900
|
+
return "";
|
|
901
|
+
}
|
|
902
|
+
};
|
|
903
|
+
|
|
904
|
+
// src/pageObjects/elements/Groups/Accordion/AccordionItem.ts
|
|
905
|
+
import { By as By12 } from "selenium-webdriver";
|
|
906
|
+
var ACCORDION_TITLE_CONTAINER = "accordion-title-container";
|
|
907
|
+
var AccordionItem = class extends AbstractGroup {
|
|
888
908
|
constructor(parentCssSelector, elementCssSelector, driver) {
|
|
889
909
|
super(parentCssSelector, elementCssSelector, driver);
|
|
890
910
|
}
|
|
891
|
-
|
|
892
|
-
|
|
911
|
+
async getDataOpenedAccordItemAttr() {
|
|
912
|
+
const accordionElement = await this.getElement();
|
|
913
|
+
return await accordionElement.getAttribute("data-opened");
|
|
914
|
+
}
|
|
915
|
+
async clickAccordionItemTitle() {
|
|
916
|
+
const accordionElement = await this.getElement();
|
|
917
|
+
const accordTitleElement = await accordionElement.findElement(By12.className(ACCORDION_TITLE_CONTAINER));
|
|
918
|
+
await accordTitleElement.click();
|
|
919
|
+
}
|
|
920
|
+
async click() {
|
|
921
|
+
await click(await this.getElement(), this.driver);
|
|
922
|
+
}
|
|
923
|
+
async isExpanded() {
|
|
924
|
+
const dataOpened = await this.getDataOpenedAccordItemAttr();
|
|
925
|
+
return dataOpened === "true";
|
|
926
|
+
}
|
|
927
|
+
async isCollapsed() {
|
|
928
|
+
const dataOpened = await this.getDataOpenedAccordItemAttr();
|
|
929
|
+
return dataOpened === "false" || !dataOpened;
|
|
930
|
+
}
|
|
931
|
+
async expand() {
|
|
932
|
+
if (!await this.isExpanded()) {
|
|
933
|
+
await this.clickAccordionItemTitle();
|
|
934
|
+
}
|
|
935
|
+
}
|
|
936
|
+
async collapse() {
|
|
937
|
+
if (await this.isExpanded()) {
|
|
938
|
+
await this.clickAccordionItemTitle();
|
|
939
|
+
}
|
|
940
|
+
}
|
|
941
|
+
};
|
|
942
|
+
|
|
943
|
+
// src/pageObjects/elements/Groups/Accordion/Accordion.ts
|
|
944
|
+
var Accordion = class extends AbstractGroup {
|
|
945
|
+
constructor(parentCssSelector, elementCssSelector, driver) {
|
|
946
|
+
super(parentCssSelector, elementCssSelector, driver);
|
|
893
947
|
}
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
await tabEl.click();
|
|
948
|
+
item(name) {
|
|
949
|
+
return new AccordionItem(this.getFullCssSelector(), `.d5-accordion-item[data-groupname="${name}"]`, this.driver);
|
|
897
950
|
}
|
|
898
951
|
};
|
|
899
952
|
|
|
@@ -903,20 +956,26 @@ var groupFactory = async (parentCssSelector, elementCssSelector, driver) => {
|
|
|
903
956
|
const classSting = await elementInstance.getClasses();
|
|
904
957
|
if (classSting.includes("tab-panel-group"))
|
|
905
958
|
return new TabPanel(parentCssSelector, elementCssSelector, driver);
|
|
959
|
+
if (classSting.includes("tab-panel-item"))
|
|
960
|
+
return new TabPanelItem(parentCssSelector, elementCssSelector, driver);
|
|
906
961
|
if (classSting.includes("panel-group"))
|
|
907
962
|
return new Panel(parentCssSelector, elementCssSelector, driver);
|
|
963
|
+
if (classSting.includes("accordion-group"))
|
|
964
|
+
return new Accordion(parentCssSelector, elementCssSelector, driver);
|
|
965
|
+
if (classSting.includes("d5-accordion-item"))
|
|
966
|
+
return new AccordionItem(parentCssSelector, elementCssSelector, driver);
|
|
908
967
|
throw new Error("Unknown type of group. Please write ticket to the support");
|
|
909
968
|
};
|
|
910
969
|
|
|
911
970
|
// src/pageObjects/elements/FormGroup.ts
|
|
912
971
|
var FormGroup = class extends AbstractElementWithParent {
|
|
913
|
-
|
|
972
|
+
groupInstance;
|
|
914
973
|
constructor(parentCssSelector, formName, name, driver) {
|
|
915
974
|
super(parentCssSelector, byTestIdCssSelector(createGroupTestId(formName, name)), driver);
|
|
916
975
|
}
|
|
917
|
-
async
|
|
918
|
-
if (!this.
|
|
919
|
-
this.
|
|
976
|
+
async initInstance() {
|
|
977
|
+
if (!this.groupInstance) {
|
|
978
|
+
this.groupInstance = await groupFactory(this.parentCssSelector, this.elementCssSelector, this.driver);
|
|
920
979
|
}
|
|
921
980
|
}
|
|
922
981
|
/**
|
|
@@ -926,20 +985,59 @@ var FormGroup = class extends AbstractElementWithParent {
|
|
|
926
985
|
*/
|
|
927
986
|
async isDisplayed() {
|
|
928
987
|
try {
|
|
929
|
-
await this.
|
|
930
|
-
return this.
|
|
988
|
+
await this.initInstance();
|
|
989
|
+
return this.groupInstance.isDisplayed();
|
|
931
990
|
} catch {
|
|
932
991
|
return false;
|
|
933
992
|
}
|
|
934
993
|
}
|
|
935
994
|
/**
|
|
936
|
-
*
|
|
995
|
+
* Клик по элементам группы.
|
|
996
|
+
* Метод работает если у группы есть дочерние элементы, например элементы аккордеона или вкладки таб панели.
|
|
937
997
|
* @example
|
|
938
|
-
* expect(await tableList.group('TabPanel').
|
|
998
|
+
* expect(await tableList.group('TabPanel').itemClick('Tab');
|
|
999
|
+
* expect(await tableList.group('Accordion').itemClick('AccordionItem');
|
|
939
1000
|
*/
|
|
940
|
-
async
|
|
941
|
-
await this.
|
|
942
|
-
|
|
1001
|
+
async itemClick(name) {
|
|
1002
|
+
await this.initInstance();
|
|
1003
|
+
const item = this.groupInstance.item?.(name);
|
|
1004
|
+
await item?.click();
|
|
1005
|
+
}
|
|
1006
|
+
/**
|
|
1007
|
+
* Метод работает если группа - это элемент аккордеона или вкладка таб панели
|
|
1008
|
+
* @example
|
|
1009
|
+
* expect(await tableList.group('Tab').click();
|
|
1010
|
+
* expect(await tableList.group('AccordionItem').click();
|
|
1011
|
+
*/
|
|
1012
|
+
async click() {
|
|
1013
|
+
await this.initInstance();
|
|
1014
|
+
await this.groupInstance.click?.();
|
|
1015
|
+
}
|
|
1016
|
+
async collapse() {
|
|
1017
|
+
await this.initInstance();
|
|
1018
|
+
if (this.groupInstance instanceof AccordionItem) {
|
|
1019
|
+
await this.groupInstance.collapse();
|
|
1020
|
+
}
|
|
1021
|
+
}
|
|
1022
|
+
async expand() {
|
|
1023
|
+
await this.initInstance();
|
|
1024
|
+
if (this.groupInstance instanceof AccordionItem) {
|
|
1025
|
+
await this.groupInstance.expand();
|
|
1026
|
+
}
|
|
1027
|
+
}
|
|
1028
|
+
async isExpanded() {
|
|
1029
|
+
await this.initInstance();
|
|
1030
|
+
if (this.groupInstance instanceof AccordionItem) {
|
|
1031
|
+
return await this.groupInstance.isExpanded();
|
|
1032
|
+
}
|
|
1033
|
+
return false;
|
|
1034
|
+
}
|
|
1035
|
+
async isCollapsed() {
|
|
1036
|
+
await this.initInstance();
|
|
1037
|
+
if (this.groupInstance instanceof AccordionItem) {
|
|
1038
|
+
return await this.groupInstance.isCollapsed();
|
|
1039
|
+
}
|
|
1040
|
+
return false;
|
|
943
1041
|
}
|
|
944
1042
|
};
|
|
945
1043
|
|
|
@@ -997,15 +1095,15 @@ async function classDependencyInjector(formType) {
|
|
|
997
1095
|
let SubFormFactoryClass;
|
|
998
1096
|
switch (formType) {
|
|
999
1097
|
case "1" /* LIST */:
|
|
1000
|
-
SubFormFactoryClass = (await import("./ListForm-
|
|
1098
|
+
SubFormFactoryClass = (await import("./ListForm-JAFTOUFG.mjs")).default;
|
|
1001
1099
|
break;
|
|
1002
1100
|
case "3" /* TREE */:
|
|
1003
|
-
SubFormFactoryClass = (await import("./TreeView-
|
|
1101
|
+
SubFormFactoryClass = (await import("./TreeView-YUECOEFI.mjs")).default;
|
|
1004
1102
|
break;
|
|
1005
1103
|
case "2" /* EDIT */:
|
|
1006
1104
|
case "99" /* FREE_FORM */:
|
|
1007
1105
|
case "4" /* REPORT */:
|
|
1008
|
-
SubFormFactoryClass = (await import("./FormEdit-
|
|
1106
|
+
SubFormFactoryClass = (await import("./FormEdit-Z2QDWFFG.mjs")).default;
|
|
1009
1107
|
break;
|
|
1010
1108
|
default:
|
|
1011
1109
|
throw new Error(`Unsupported form type ${formType}`);
|
|
@@ -438,25 +438,95 @@ var init_Panel = __esm({
|
|
|
438
438
|
}
|
|
439
439
|
});
|
|
440
440
|
|
|
441
|
-
// src/pageObjects/elements/Groups/TabPanel
|
|
442
|
-
var
|
|
441
|
+
// src/pageObjects/elements/Groups/TabPanel.ts
|
|
442
|
+
var TabPanelItem, TabPanel;
|
|
443
443
|
var init_TabPanel = __esm({
|
|
444
|
-
"src/pageObjects/elements/Groups/TabPanel
|
|
444
|
+
"src/pageObjects/elements/Groups/TabPanel.ts"() {
|
|
445
445
|
"use strict";
|
|
446
446
|
init_AbstractGroup();
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
447
|
+
init_actions();
|
|
448
|
+
TabPanelItem = class extends AbstractGroup {
|
|
449
|
+
constructor(parentCssSelector, elementCssSelector, driver) {
|
|
450
|
+
super(parentCssSelector, elementCssSelector, driver);
|
|
451
|
+
}
|
|
452
|
+
async click() {
|
|
453
|
+
await click(await this.getElement(), this.driver);
|
|
454
|
+
}
|
|
455
|
+
async getTitle() {
|
|
456
|
+
return "";
|
|
457
|
+
}
|
|
458
|
+
};
|
|
450
459
|
TabPanel = class extends AbstractGroup {
|
|
460
|
+
item(name) {
|
|
461
|
+
return new TabPanelItem(this.getFullCssSelector(), `.tab-panel-item[data-groupname="${name}"]`, this.driver);
|
|
462
|
+
}
|
|
463
|
+
async getTitle() {
|
|
464
|
+
return "";
|
|
465
|
+
}
|
|
466
|
+
};
|
|
467
|
+
}
|
|
468
|
+
});
|
|
469
|
+
|
|
470
|
+
// src/pageObjects/elements/Groups/Accordion/AccordionItem.ts
|
|
471
|
+
var import_selenium_webdriver8, ACCORDION_TITLE_CONTAINER, AccordionItem;
|
|
472
|
+
var init_AccordionItem = __esm({
|
|
473
|
+
"src/pageObjects/elements/Groups/Accordion/AccordionItem.ts"() {
|
|
474
|
+
"use strict";
|
|
475
|
+
init_AbstractGroup();
|
|
476
|
+
import_selenium_webdriver8 = require("selenium-webdriver");
|
|
477
|
+
init_actions();
|
|
478
|
+
ACCORDION_TITLE_CONTAINER = "accordion-title-container";
|
|
479
|
+
AccordionItem = class extends AbstractGroup {
|
|
451
480
|
constructor(parentCssSelector, elementCssSelector, driver) {
|
|
452
481
|
super(parentCssSelector, elementCssSelector, driver);
|
|
453
482
|
}
|
|
454
|
-
|
|
455
|
-
|
|
483
|
+
async getDataOpenedAccordItemAttr() {
|
|
484
|
+
const accordionElement = await this.getElement();
|
|
485
|
+
return await accordionElement.getAttribute("data-opened");
|
|
456
486
|
}
|
|
457
|
-
async
|
|
458
|
-
const
|
|
459
|
-
await
|
|
487
|
+
async clickAccordionItemTitle() {
|
|
488
|
+
const accordionElement = await this.getElement();
|
|
489
|
+
const accordTitleElement = await accordionElement.findElement(import_selenium_webdriver8.By.className(ACCORDION_TITLE_CONTAINER));
|
|
490
|
+
await accordTitleElement.click();
|
|
491
|
+
}
|
|
492
|
+
async click() {
|
|
493
|
+
await click(await this.getElement(), this.driver);
|
|
494
|
+
}
|
|
495
|
+
async isExpanded() {
|
|
496
|
+
const dataOpened = await this.getDataOpenedAccordItemAttr();
|
|
497
|
+
return dataOpened === "true";
|
|
498
|
+
}
|
|
499
|
+
async isCollapsed() {
|
|
500
|
+
const dataOpened = await this.getDataOpenedAccordItemAttr();
|
|
501
|
+
return dataOpened === "false" || !dataOpened;
|
|
502
|
+
}
|
|
503
|
+
async expand() {
|
|
504
|
+
if (!await this.isExpanded()) {
|
|
505
|
+
await this.clickAccordionItemTitle();
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
async collapse() {
|
|
509
|
+
if (await this.isExpanded()) {
|
|
510
|
+
await this.clickAccordionItemTitle();
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
};
|
|
514
|
+
}
|
|
515
|
+
});
|
|
516
|
+
|
|
517
|
+
// src/pageObjects/elements/Groups/Accordion/Accordion.ts
|
|
518
|
+
var Accordion;
|
|
519
|
+
var init_Accordion = __esm({
|
|
520
|
+
"src/pageObjects/elements/Groups/Accordion/Accordion.ts"() {
|
|
521
|
+
"use strict";
|
|
522
|
+
init_AbstractGroup();
|
|
523
|
+
init_AccordionItem();
|
|
524
|
+
Accordion = class extends AbstractGroup {
|
|
525
|
+
constructor(parentCssSelector, elementCssSelector, driver) {
|
|
526
|
+
super(parentCssSelector, elementCssSelector, driver);
|
|
527
|
+
}
|
|
528
|
+
item(name) {
|
|
529
|
+
return new AccordionItem(this.getFullCssSelector(), `.d5-accordion-item[data-groupname="${name}"]`, this.driver);
|
|
460
530
|
}
|
|
461
531
|
};
|
|
462
532
|
}
|
|
@@ -470,13 +540,21 @@ var init_groupFactory = __esm({
|
|
|
470
540
|
init_AbstractFormElement();
|
|
471
541
|
init_Panel();
|
|
472
542
|
init_TabPanel();
|
|
543
|
+
init_Accordion();
|
|
544
|
+
init_AccordionItem();
|
|
473
545
|
groupFactory = async (parentCssSelector, elementCssSelector, driver) => {
|
|
474
546
|
const elementInstance = new AbstractFormElement(parentCssSelector, elementCssSelector, driver);
|
|
475
547
|
const classSting = await elementInstance.getClasses();
|
|
476
548
|
if (classSting.includes("tab-panel-group"))
|
|
477
549
|
return new TabPanel(parentCssSelector, elementCssSelector, driver);
|
|
550
|
+
if (classSting.includes("tab-panel-item"))
|
|
551
|
+
return new TabPanelItem(parentCssSelector, elementCssSelector, driver);
|
|
478
552
|
if (classSting.includes("panel-group"))
|
|
479
553
|
return new Panel(parentCssSelector, elementCssSelector, driver);
|
|
554
|
+
if (classSting.includes("accordion-group"))
|
|
555
|
+
return new Accordion(parentCssSelector, elementCssSelector, driver);
|
|
556
|
+
if (classSting.includes("d5-accordion-item"))
|
|
557
|
+
return new AccordionItem(parentCssSelector, elementCssSelector, driver);
|
|
480
558
|
throw new Error("Unknown type of group. Please write ticket to the support");
|
|
481
559
|
};
|
|
482
560
|
}
|
|
@@ -491,14 +569,15 @@ var init_FormGroup = __esm({
|
|
|
491
569
|
init_locators();
|
|
492
570
|
init_createDataTestId();
|
|
493
571
|
init_groupFactory();
|
|
572
|
+
init_AccordionItem();
|
|
494
573
|
FormGroup = class extends AbstractElementWithParent {
|
|
495
|
-
|
|
574
|
+
groupInstance;
|
|
496
575
|
constructor(parentCssSelector, formName, name, driver) {
|
|
497
576
|
super(parentCssSelector, byTestIdCssSelector(createGroupTestId(formName, name)), driver);
|
|
498
577
|
}
|
|
499
|
-
async
|
|
500
|
-
if (!this.
|
|
501
|
-
this.
|
|
578
|
+
async initInstance() {
|
|
579
|
+
if (!this.groupInstance) {
|
|
580
|
+
this.groupInstance = await groupFactory(this.parentCssSelector, this.elementCssSelector, this.driver);
|
|
502
581
|
}
|
|
503
582
|
}
|
|
504
583
|
/**
|
|
@@ -508,20 +587,59 @@ var init_FormGroup = __esm({
|
|
|
508
587
|
*/
|
|
509
588
|
async isDisplayed() {
|
|
510
589
|
try {
|
|
511
|
-
await this.
|
|
512
|
-
return this.
|
|
590
|
+
await this.initInstance();
|
|
591
|
+
return this.groupInstance.isDisplayed();
|
|
513
592
|
} catch {
|
|
514
593
|
return false;
|
|
515
594
|
}
|
|
516
595
|
}
|
|
517
596
|
/**
|
|
518
|
-
*
|
|
597
|
+
* Клик по элементам группы.
|
|
598
|
+
* Метод работает если у группы есть дочерние элементы, например элементы аккордеона или вкладки таб панели.
|
|
519
599
|
* @example
|
|
520
|
-
* expect(await tableList.group('TabPanel').
|
|
600
|
+
* expect(await tableList.group('TabPanel').itemClick('Tab');
|
|
601
|
+
* expect(await tableList.group('Accordion').itemClick('AccordionItem');
|
|
521
602
|
*/
|
|
522
|
-
async
|
|
523
|
-
await this.
|
|
524
|
-
|
|
603
|
+
async itemClick(name) {
|
|
604
|
+
await this.initInstance();
|
|
605
|
+
const item = this.groupInstance.item?.(name);
|
|
606
|
+
await item?.click();
|
|
607
|
+
}
|
|
608
|
+
/**
|
|
609
|
+
* Метод работает если группа - это элемент аккордеона или вкладка таб панели
|
|
610
|
+
* @example
|
|
611
|
+
* expect(await tableList.group('Tab').click();
|
|
612
|
+
* expect(await tableList.group('AccordionItem').click();
|
|
613
|
+
*/
|
|
614
|
+
async click() {
|
|
615
|
+
await this.initInstance();
|
|
616
|
+
await this.groupInstance.click?.();
|
|
617
|
+
}
|
|
618
|
+
async collapse() {
|
|
619
|
+
await this.initInstance();
|
|
620
|
+
if (this.groupInstance instanceof AccordionItem) {
|
|
621
|
+
await this.groupInstance.collapse();
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
async expand() {
|
|
625
|
+
await this.initInstance();
|
|
626
|
+
if (this.groupInstance instanceof AccordionItem) {
|
|
627
|
+
await this.groupInstance.expand();
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
async isExpanded() {
|
|
631
|
+
await this.initInstance();
|
|
632
|
+
if (this.groupInstance instanceof AccordionItem) {
|
|
633
|
+
return await this.groupInstance.isExpanded();
|
|
634
|
+
}
|
|
635
|
+
return false;
|
|
636
|
+
}
|
|
637
|
+
async isCollapsed() {
|
|
638
|
+
await this.initInstance();
|
|
639
|
+
if (this.groupInstance instanceof AccordionItem) {
|
|
640
|
+
return await this.groupInstance.isCollapsed();
|
|
641
|
+
}
|
|
642
|
+
return false;
|
|
525
643
|
}
|
|
526
644
|
};
|
|
527
645
|
}
|
|
@@ -1131,7 +1249,7 @@ var init_TagBox = __esm({
|
|
|
1131
1249
|
init_locators();
|
|
1132
1250
|
init_SelectBoxEditor();
|
|
1133
1251
|
init_ClearButtonStrategy();
|
|
1134
|
-
|
|
1252
|
+
init_fixElementStaleError();
|
|
1135
1253
|
TAGS_SELECTOR = ".dx-tag .tag-text";
|
|
1136
1254
|
DX_TAG_CONTAINER = "dx-tag-container";
|
|
1137
1255
|
DX_TEXTEDITOR_EMPTY2 = "dx-texteditor-empty";
|
|
@@ -1152,8 +1270,7 @@ var init_TagBox = __esm({
|
|
|
1152
1270
|
await this.confirmSelection();
|
|
1153
1271
|
}
|
|
1154
1272
|
async waitOptionSelection() {
|
|
1155
|
-
|
|
1156
|
-
await wait(() => option.isDisplayed(), this.driver);
|
|
1273
|
+
await fixElementStaleError(import_selenium_webdriver16.By.css(TAG_BOX_LIST_ITEM_SELECTOR), this.driver);
|
|
1157
1274
|
}
|
|
1158
1275
|
async selectOption(inputEl, value, lastElement) {
|
|
1159
1276
|
try {
|
|
@@ -1168,7 +1285,7 @@ var init_TagBox = __esm({
|
|
|
1168
1285
|
}
|
|
1169
1286
|
}
|
|
1170
1287
|
async confirmSelection() {
|
|
1171
|
-
const btnOk = await
|
|
1288
|
+
const btnOk = await fixElementStaleError(import_selenium_webdriver16.By.css(BTN_OK_SELECTOR), this.driver);
|
|
1172
1289
|
await click(btnOk, this.driver);
|
|
1173
1290
|
}
|
|
1174
1291
|
async getTagBoxInputValue() {
|
|
@@ -2346,6 +2463,7 @@ __export(src_exports, {
|
|
|
2346
2463
|
LoginPage: () => LoginPage,
|
|
2347
2464
|
NumberEditor: () => NumberEditor,
|
|
2348
2465
|
PanelFilterField: () => PanelFilterField,
|
|
2466
|
+
ReportForm: () => ReportForm,
|
|
2349
2467
|
SubsystemsPanel: () => SubsystemsPanel,
|
|
2350
2468
|
TextEditor: () => TextEditor,
|
|
2351
2469
|
TreeView: () => TreeView,
|
|
@@ -2479,6 +2597,29 @@ var SubsystemsPanel = class extends AbstractElement {
|
|
|
2479
2597
|
init_FormEdit();
|
|
2480
2598
|
init_ListForm();
|
|
2481
2599
|
init_TreeView();
|
|
2600
|
+
|
|
2601
|
+
// src/pageObjects/elements/Forms/ReportForm.ts
|
|
2602
|
+
var import_selenium_webdriver26 = require("selenium-webdriver");
|
|
2603
|
+
init_FormEdit();
|
|
2604
|
+
var ReportForm = class extends FormEdit {
|
|
2605
|
+
constructor(driver) {
|
|
2606
|
+
super(driver);
|
|
2607
|
+
this.popupContainerCssSelector = `.popup .form-report-${this.formName}`;
|
|
2608
|
+
this.saveButtonBy = import_selenium_webdriver26.By.id("button-apply");
|
|
2609
|
+
}
|
|
2610
|
+
/**
|
|
2611
|
+
* Знаходить поле/фільтр у формі репорту за ім'ям
|
|
2612
|
+
* @example
|
|
2613
|
+
* const formReport = new MyForm();
|
|
2614
|
+
* //...
|
|
2615
|
+
* expect(await formReport.filterField('Name').getValue()).toBe('test value');
|
|
2616
|
+
*/
|
|
2617
|
+
filterField(name) {
|
|
2618
|
+
return super.field(name);
|
|
2619
|
+
}
|
|
2620
|
+
};
|
|
2621
|
+
|
|
2622
|
+
// src/index.ts
|
|
2482
2623
|
init_Editors();
|
|
2483
2624
|
init_FormField();
|
|
2484
2625
|
init_FormFilterField();
|
|
@@ -2487,7 +2628,7 @@ init_FilterPanel();
|
|
|
2487
2628
|
|
|
2488
2629
|
// src/pageObjects/elements/Dialog.ts
|
|
2489
2630
|
init_AbstractElement();
|
|
2490
|
-
var
|
|
2631
|
+
var import_selenium_webdriver27 = require("selenium-webdriver");
|
|
2491
2632
|
init_AbstractButton();
|
|
2492
2633
|
var DIALOG_CLASS = ".d5-dialog";
|
|
2493
2634
|
var DIALOG_TITLE_CLASS = ".dialog__title";
|
|
@@ -2502,7 +2643,7 @@ var DialogButton = class extends AbstractButton {
|
|
|
2502
2643
|
}
|
|
2503
2644
|
async getElement() {
|
|
2504
2645
|
const panel = await super.getElement();
|
|
2505
|
-
return panel.findElement(
|
|
2646
|
+
return panel.findElement(import_selenium_webdriver27.By.xpath(buttonByTextXpath2(this.text)));
|
|
2506
2647
|
}
|
|
2507
2648
|
buttonNotDisplayedError() {
|
|
2508
2649
|
return `Dialog button ${this.text} cannot be clicked. It is not displayed or it is disabled`;
|
|
@@ -2522,11 +2663,11 @@ var Dialog = class extends AbstractElement {
|
|
|
2522
2663
|
return this.joinRelativeCssSelectors([DIALOG_CLASS, DIALOG_BUTTONS_PANEL_CLASS]);
|
|
2523
2664
|
}
|
|
2524
2665
|
async title() {
|
|
2525
|
-
const el = await this.driver.findElement(
|
|
2666
|
+
const el = await this.driver.findElement(import_selenium_webdriver27.By.css(this.titleSelector));
|
|
2526
2667
|
return await el.getText();
|
|
2527
2668
|
}
|
|
2528
2669
|
async text() {
|
|
2529
|
-
const el = await this.driver.findElement(
|
|
2670
|
+
const el = await this.driver.findElement(import_selenium_webdriver27.By.css(this.textSelector));
|
|
2530
2671
|
return await el.getText();
|
|
2531
2672
|
}
|
|
2532
2673
|
button(text) {
|
|
@@ -2546,6 +2687,7 @@ var Dialog = class extends AbstractElement {
|
|
|
2546
2687
|
LoginPage,
|
|
2547
2688
|
NumberEditor,
|
|
2548
2689
|
PanelFilterField,
|
|
2690
|
+
ReportForm,
|
|
2549
2691
|
SubsystemsPanel,
|
|
2550
2692
|
TextEditor,
|
|
2551
2693
|
TreeView,
|
|
@@ -154,15 +154,18 @@ declare class FormButton extends DXButton {
|
|
|
154
154
|
protected buttonNotDisplayedError(): string;
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
interface Group {
|
|
157
|
+
interface Group<TItem = unknown> {
|
|
158
158
|
isDisplayed(): Promise<boolean>;
|
|
159
|
-
|
|
159
|
+
click?(): Promise<void>;
|
|
160
|
+
itemClick?(name: string): Promise<void>;
|
|
161
|
+
item?(name: string): TItem;
|
|
162
|
+
accordionClick?(): Promise<void>;
|
|
160
163
|
}
|
|
161
164
|
|
|
162
165
|
declare class FormGroup extends AbstractElementWithParent implements Group {
|
|
163
|
-
|
|
166
|
+
private groupInstance;
|
|
164
167
|
constructor(parentCssSelector: string, formName: string, name: string, driver?: WebDriver);
|
|
165
|
-
private
|
|
168
|
+
private initInstance;
|
|
166
169
|
/**
|
|
167
170
|
* Возвращает булевое значение доступна ли группа
|
|
168
171
|
* @example
|
|
@@ -170,11 +173,24 @@ declare class FormGroup extends AbstractElementWithParent implements Group {
|
|
|
170
173
|
*/
|
|
171
174
|
isDisplayed(): Promise<boolean>;
|
|
172
175
|
/**
|
|
173
|
-
*
|
|
176
|
+
* Клик по элементам группы.
|
|
177
|
+
* Метод работает если у группы есть дочерние элементы, например элементы аккордеона или вкладки таб панели.
|
|
174
178
|
* @example
|
|
175
|
-
* expect(await tableList.group('TabPanel').
|
|
179
|
+
* expect(await tableList.group('TabPanel').itemClick('Tab');
|
|
180
|
+
* expect(await tableList.group('Accordion').itemClick('AccordionItem');
|
|
176
181
|
*/
|
|
177
|
-
|
|
182
|
+
itemClick(name: string): Promise<void>;
|
|
183
|
+
/**
|
|
184
|
+
* Метод работает если группа - это элемент аккордеона или вкладка таб панели
|
|
185
|
+
* @example
|
|
186
|
+
* expect(await tableList.group('Tab').click();
|
|
187
|
+
* expect(await tableList.group('AccordionItem').click();
|
|
188
|
+
*/
|
|
189
|
+
click(): Promise<void>;
|
|
190
|
+
collapse(): Promise<void>;
|
|
191
|
+
expand(): Promise<void>;
|
|
192
|
+
isExpanded(): Promise<boolean>;
|
|
193
|
+
isCollapsed(): Promise<boolean>;
|
|
178
194
|
}
|
|
179
195
|
|
|
180
196
|
declare class AbstractForm extends AbstractPage {
|
|
@@ -586,6 +602,18 @@ declare class TreeView extends ListForm {
|
|
|
586
602
|
constructor(driver: WebDriver);
|
|
587
603
|
}
|
|
588
604
|
|
|
605
|
+
declare class ReportForm extends FormEdit {
|
|
606
|
+
constructor(driver: WebDriver);
|
|
607
|
+
/**
|
|
608
|
+
* Знаходить поле/фільтр у формі репорту за ім'ям
|
|
609
|
+
* @example
|
|
610
|
+
* const formReport = new MyForm();
|
|
611
|
+
* //...
|
|
612
|
+
* expect(await formReport.filterField('Name').getValue()).toBe('test value');
|
|
613
|
+
*/
|
|
614
|
+
filterField(name: string): FormField;
|
|
615
|
+
}
|
|
616
|
+
|
|
589
617
|
declare class DialogButton extends AbstractButton implements Button {
|
|
590
618
|
private readonly text;
|
|
591
619
|
constructor(parentCssSelector: string, text: string, driver?: WebDriver);
|
|
@@ -602,4 +630,4 @@ declare class Dialog extends AbstractElement {
|
|
|
602
630
|
button(text: string): DialogButton;
|
|
603
631
|
}
|
|
604
632
|
|
|
605
|
-
export { AbstractPage, ControlClass, Dialog, Editor, FilterPanel, FormEdit, FormField, FormFilterField, ListForm, LoginPage, NumberEditor, PanelFilterField, SubsystemsPanel, TextEditor, TreeView, byTestId, byTestIdCssSelector, click, config, createDriver, editorFactory, elementIsNotPresent, readonlyLocator, signIn, wait, waitElementIsVisible };
|
|
633
|
+
export { AbstractPage, ControlClass, Dialog, Editor, FilterPanel, FormEdit, FormField, FormFilterField, ListForm, LoginPage, NumberEditor, PanelFilterField, ReportForm, SubsystemsPanel, TextEditor, TreeView, byTestId, byTestIdCssSelector, click, config, createDriver, editorFactory, elementIsNotPresent, readonlyLocator, signIn, wait, waitElementIsVisible };
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TreeView
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CFJ5JWM7.mjs";
|
|
4
4
|
import {
|
|
5
5
|
FilterPanel,
|
|
6
6
|
FormFilterField,
|
|
7
7
|
ListForm,
|
|
8
8
|
PanelFilterField
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-3EQV252X.mjs";
|
|
10
10
|
import {
|
|
11
11
|
FormEdit
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-PNSQQKEY.mjs";
|
|
13
13
|
import {
|
|
14
14
|
AbstractButton,
|
|
15
15
|
AbstractElement,
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
readonlyLocator,
|
|
28
28
|
wait,
|
|
29
29
|
waitElementIsVisible
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-4VLJL7OZ.mjs";
|
|
31
31
|
|
|
32
32
|
// src/pageObjects/pages/LoginPage.ts
|
|
33
33
|
var LOGIN_PATH = "/login";
|
|
@@ -116,8 +116,28 @@ var SubsystemsPanel = class extends AbstractElement {
|
|
|
116
116
|
}
|
|
117
117
|
};
|
|
118
118
|
|
|
119
|
-
// src/pageObjects/elements/
|
|
119
|
+
// src/pageObjects/elements/Forms/ReportForm.ts
|
|
120
120
|
import { By as By3 } from "selenium-webdriver";
|
|
121
|
+
var ReportForm = class extends FormEdit {
|
|
122
|
+
constructor(driver) {
|
|
123
|
+
super(driver);
|
|
124
|
+
this.popupContainerCssSelector = `.popup .form-report-${this.formName}`;
|
|
125
|
+
this.saveButtonBy = By3.id("button-apply");
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Знаходить поле/фільтр у формі репорту за ім'ям
|
|
129
|
+
* @example
|
|
130
|
+
* const formReport = new MyForm();
|
|
131
|
+
* //...
|
|
132
|
+
* expect(await formReport.filterField('Name').getValue()).toBe('test value');
|
|
133
|
+
*/
|
|
134
|
+
filterField(name) {
|
|
135
|
+
return super.field(name);
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
// src/pageObjects/elements/Dialog.ts
|
|
140
|
+
import { By as By4 } from "selenium-webdriver";
|
|
121
141
|
var DIALOG_CLASS = ".d5-dialog";
|
|
122
142
|
var DIALOG_TITLE_CLASS = ".dialog__title";
|
|
123
143
|
var DIALOG_TEXT_CLASS = ".dialog__text";
|
|
@@ -131,7 +151,7 @@ var DialogButton = class extends AbstractButton {
|
|
|
131
151
|
}
|
|
132
152
|
async getElement() {
|
|
133
153
|
const panel = await super.getElement();
|
|
134
|
-
return panel.findElement(
|
|
154
|
+
return panel.findElement(By4.xpath(buttonByTextXpath(this.text)));
|
|
135
155
|
}
|
|
136
156
|
buttonNotDisplayedError() {
|
|
137
157
|
return `Dialog button ${this.text} cannot be clicked. It is not displayed or it is disabled`;
|
|
@@ -151,11 +171,11 @@ var Dialog = class extends AbstractElement {
|
|
|
151
171
|
return this.joinRelativeCssSelectors([DIALOG_CLASS, DIALOG_BUTTONS_PANEL_CLASS]);
|
|
152
172
|
}
|
|
153
173
|
async title() {
|
|
154
|
-
const el = await this.driver.findElement(
|
|
174
|
+
const el = await this.driver.findElement(By4.css(this.titleSelector));
|
|
155
175
|
return await el.getText();
|
|
156
176
|
}
|
|
157
177
|
async text() {
|
|
158
|
-
const el = await this.driver.findElement(
|
|
178
|
+
const el = await this.driver.findElement(By4.css(this.textSelector));
|
|
159
179
|
return await el.getText();
|
|
160
180
|
}
|
|
161
181
|
button(text) {
|
|
@@ -174,6 +194,7 @@ export {
|
|
|
174
194
|
LoginPage,
|
|
175
195
|
NumberEditor,
|
|
176
196
|
PanelFilterField,
|
|
197
|
+
ReportForm,
|
|
177
198
|
SubsystemsPanel,
|
|
178
199
|
TextEditor,
|
|
179
200
|
TreeView,
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TreeView
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CFJ5JWM7.mjs";
|
|
4
4
|
import {
|
|
5
5
|
FilterPanel,
|
|
6
6
|
FormFilterField,
|
|
7
7
|
ListForm,
|
|
8
8
|
PanelFilterField
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-3EQV252X.mjs";
|
|
10
10
|
import {
|
|
11
11
|
FormEdit
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-PNSQQKEY.mjs";
|
|
13
13
|
import {
|
|
14
14
|
AbstractButton,
|
|
15
15
|
AbstractElement,
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
readonlyLocator,
|
|
28
28
|
wait,
|
|
29
29
|
waitElementIsVisible
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-4VLJL7OZ.mjs";
|
|
31
31
|
|
|
32
32
|
// src/pageObjects/pages/LoginPage.ts
|
|
33
33
|
var LOGIN_PATH = "/login";
|
|
@@ -116,8 +116,28 @@ var SubsystemsPanel = class extends AbstractElement {
|
|
|
116
116
|
}
|
|
117
117
|
};
|
|
118
118
|
|
|
119
|
-
// src/pageObjects/elements/
|
|
119
|
+
// src/pageObjects/elements/Forms/ReportForm.ts
|
|
120
120
|
import { By as By3 } from "selenium-webdriver";
|
|
121
|
+
var ReportForm = class extends FormEdit {
|
|
122
|
+
constructor(driver) {
|
|
123
|
+
super(driver);
|
|
124
|
+
this.popupContainerCssSelector = `.popup .form-report-${this.formName}`;
|
|
125
|
+
this.saveButtonBy = By3.id("button-apply");
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Знаходить поле/фільтр у формі репорту за ім'ям
|
|
129
|
+
* @example
|
|
130
|
+
* const formReport = new MyForm();
|
|
131
|
+
* //...
|
|
132
|
+
* expect(await formReport.filterField('Name').getValue()).toBe('test value');
|
|
133
|
+
*/
|
|
134
|
+
filterField(name) {
|
|
135
|
+
return super.field(name);
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
// src/pageObjects/elements/Dialog.ts
|
|
140
|
+
import { By as By4 } from "selenium-webdriver";
|
|
121
141
|
var DIALOG_CLASS = ".d5-dialog";
|
|
122
142
|
var DIALOG_TITLE_CLASS = ".dialog__title";
|
|
123
143
|
var DIALOG_TEXT_CLASS = ".dialog__text";
|
|
@@ -131,7 +151,7 @@ var DialogButton = class extends AbstractButton {
|
|
|
131
151
|
}
|
|
132
152
|
async getElement() {
|
|
133
153
|
const panel = await super.getElement();
|
|
134
|
-
return panel.findElement(
|
|
154
|
+
return panel.findElement(By4.xpath(buttonByTextXpath(this.text)));
|
|
135
155
|
}
|
|
136
156
|
buttonNotDisplayedError() {
|
|
137
157
|
return `Dialog button ${this.text} cannot be clicked. It is not displayed or it is disabled`;
|
|
@@ -151,11 +171,11 @@ var Dialog = class extends AbstractElement {
|
|
|
151
171
|
return this.joinRelativeCssSelectors([DIALOG_CLASS, DIALOG_BUTTONS_PANEL_CLASS]);
|
|
152
172
|
}
|
|
153
173
|
async title() {
|
|
154
|
-
const el = await this.driver.findElement(
|
|
174
|
+
const el = await this.driver.findElement(By4.css(this.titleSelector));
|
|
155
175
|
return await el.getText();
|
|
156
176
|
}
|
|
157
177
|
async text() {
|
|
158
|
-
const el = await this.driver.findElement(
|
|
178
|
+
const el = await this.driver.findElement(By4.css(this.textSelector));
|
|
159
179
|
return await el.getText();
|
|
160
180
|
}
|
|
161
181
|
button(text) {
|
|
@@ -174,6 +194,7 @@ export {
|
|
|
174
194
|
LoginPage,
|
|
175
195
|
NumberEditor,
|
|
176
196
|
PanelFilterField,
|
|
197
|
+
ReportForm,
|
|
177
198
|
SubsystemsPanel,
|
|
178
199
|
TextEditor,
|
|
179
200
|
TreeView,
|
package/package.json
CHANGED