d5-testing-library 2.0.0-alpha.11 → 2.0.0-alpha.13
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-XTRS74QI.mjs → FormEdit-N37GKB3D.mjs} +1 -1
- package/dist/{ListForm-DSQ4LR7B.mjs → ListForm-5IEPHR73.mjs} +1 -1
- package/dist/{TreeView-HFUTD2JY.mjs → TreeView-VBE3G4KU.mjs} +1 -1
- package/dist/{chunk-I5BQCTAW.mjs → chunk-VB77YEH6.mjs} +180 -4
- package/dist/cjs/d5-testing-library.cjs +196 -1
- package/dist/cjs/d5-testing-library.d.ts +51 -1
- package/dist/d5-testing-library.d.mts +51 -1
- package/dist/d5-testing-library.legacy-esm.js +5 -1
- package/dist/d5-testing-library.mjs +5 -1
- package/package.json +1 -1
|
@@ -3320,15 +3320,15 @@ async function classDependencyInjector(formType) {
|
|
|
3320
3320
|
let SubFormFactoryClass;
|
|
3321
3321
|
switch (formType) {
|
|
3322
3322
|
case "1" /* LIST */:
|
|
3323
|
-
SubFormFactoryClass = (await import("./ListForm-
|
|
3323
|
+
SubFormFactoryClass = (await import("./ListForm-5IEPHR73.mjs")).default;
|
|
3324
3324
|
break;
|
|
3325
3325
|
case "3" /* TREE */:
|
|
3326
|
-
SubFormFactoryClass = (await import("./TreeView-
|
|
3326
|
+
SubFormFactoryClass = (await import("./TreeView-VBE3G4KU.mjs")).default;
|
|
3327
3327
|
break;
|
|
3328
3328
|
case "2" /* EDIT */:
|
|
3329
3329
|
case "99" /* FREE_FORM */:
|
|
3330
3330
|
case "4" /* REPORT */:
|
|
3331
|
-
SubFormFactoryClass = (await import("./FormEdit-
|
|
3331
|
+
SubFormFactoryClass = (await import("./FormEdit-N37GKB3D.mjs")).default;
|
|
3332
3332
|
break;
|
|
3333
3333
|
default:
|
|
3334
3334
|
throw new Error(`Unsupported form type ${formType}`);
|
|
@@ -3773,6 +3773,119 @@ var NumberEditor = class extends AbstractDXEditorWithInput {
|
|
|
3773
3773
|
}
|
|
3774
3774
|
};
|
|
3775
3775
|
|
|
3776
|
+
// src/pageObjects/elements/Editors/ListItem.ts
|
|
3777
|
+
var DropDownListItem = class {
|
|
3778
|
+
page;
|
|
3779
|
+
itemSelector;
|
|
3780
|
+
textSelector;
|
|
3781
|
+
index;
|
|
3782
|
+
exactText;
|
|
3783
|
+
constructor(options) {
|
|
3784
|
+
this.page = options.page;
|
|
3785
|
+
this.itemSelector = options.itemSelector;
|
|
3786
|
+
this.textSelector = options.textSelector;
|
|
3787
|
+
this.index = options.index;
|
|
3788
|
+
this.exactText = options.exactText;
|
|
3789
|
+
}
|
|
3790
|
+
getExactTextRegExp(value) {
|
|
3791
|
+
const escapedText = value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
3792
|
+
return new RegExp(`^\\s*${escapedText}\\s*$`);
|
|
3793
|
+
}
|
|
3794
|
+
getLocatorInternal() {
|
|
3795
|
+
const items = this.page.locator(this.itemSelector);
|
|
3796
|
+
if (this.index != null) {
|
|
3797
|
+
return items.nth(this.index);
|
|
3798
|
+
}
|
|
3799
|
+
if (this.exactText != null) {
|
|
3800
|
+
return items.filter({ has: this.page.locator(this.textSelector), hasText: this.getExactTextRegExp(this.exactText) }).first();
|
|
3801
|
+
}
|
|
3802
|
+
return items.first();
|
|
3803
|
+
}
|
|
3804
|
+
async text() {
|
|
3805
|
+
const value = await this.getLocatorInternal().locator(this.textSelector).first().innerText();
|
|
3806
|
+
return value.trim();
|
|
3807
|
+
}
|
|
3808
|
+
getLocator() {
|
|
3809
|
+
return this.getLocatorInternal();
|
|
3810
|
+
}
|
|
3811
|
+
};
|
|
3812
|
+
|
|
3813
|
+
// src/pageObjects/elements/Editors/DropDownList.ts
|
|
3814
|
+
var OVERLAY_SELECTOR = ".dx-overlay-wrapper";
|
|
3815
|
+
var DROPDOWN_BUTTON_SELECTOR = ".dx-icon.dx-dropdowneditor-icon";
|
|
3816
|
+
var DROPDOWN_LIST_ITEM_SELECTOR = ".dx-item.dx-list-item";
|
|
3817
|
+
var LIST_ITEM_TEXT_SELECTOR = ".d5-multi-select-item__text";
|
|
3818
|
+
var DROPDOWN_LIST_SELECTOR = ".dx-list-items";
|
|
3819
|
+
var LIST_ITEMS_WAIT_TIMEOUT = 1e3;
|
|
3820
|
+
var DropDownList = class {
|
|
3821
|
+
page;
|
|
3822
|
+
parentCssSelector;
|
|
3823
|
+
constructor(options) {
|
|
3824
|
+
this.page = options.page;
|
|
3825
|
+
this.parentCssSelector = options.parentCssSelector;
|
|
3826
|
+
}
|
|
3827
|
+
getDropDownButtonLocator() {
|
|
3828
|
+
return this.page.locator(`${this.parentCssSelector} ${DROPDOWN_BUTTON_SELECTOR}`).first();
|
|
3829
|
+
}
|
|
3830
|
+
getDropDownListItemLocator() {
|
|
3831
|
+
return this.page.locator(`${OVERLAY_SELECTOR} ${DROPDOWN_LIST_ITEM_SELECTOR}`);
|
|
3832
|
+
}
|
|
3833
|
+
async isDropDownListVisible() {
|
|
3834
|
+
try {
|
|
3835
|
+
return await this.page.locator(`${OVERLAY_SELECTOR} ${DROPDOWN_LIST_SELECTOR}`).isVisible();
|
|
3836
|
+
} catch (_) {
|
|
3837
|
+
return false;
|
|
3838
|
+
}
|
|
3839
|
+
}
|
|
3840
|
+
async open() {
|
|
3841
|
+
if (await this.isDropDownListVisible()) return;
|
|
3842
|
+
await this.getDropDownButtonLocator().click();
|
|
3843
|
+
await this.waitForListItems("visible");
|
|
3844
|
+
}
|
|
3845
|
+
async close() {
|
|
3846
|
+
if (!await this.isDropDownListVisible()) return;
|
|
3847
|
+
await this.getDropDownButtonLocator().click();
|
|
3848
|
+
await this.waitForListItems("hidden");
|
|
3849
|
+
}
|
|
3850
|
+
async waitForListItems(state) {
|
|
3851
|
+
try {
|
|
3852
|
+
await this.getDropDownListItemLocator().first().waitFor({
|
|
3853
|
+
state,
|
|
3854
|
+
timeout: LIST_ITEMS_WAIT_TIMEOUT
|
|
3855
|
+
});
|
|
3856
|
+
return true;
|
|
3857
|
+
} catch {
|
|
3858
|
+
return false;
|
|
3859
|
+
}
|
|
3860
|
+
}
|
|
3861
|
+
async list() {
|
|
3862
|
+
if (!await this.waitForListItems("visible")) {
|
|
3863
|
+
return [];
|
|
3864
|
+
}
|
|
3865
|
+
const count = await this.getDropDownListItemLocator().count();
|
|
3866
|
+
const result = [];
|
|
3867
|
+
for (let i = 0; i < count; i++) {
|
|
3868
|
+
result.push(
|
|
3869
|
+
new DropDownListItem({
|
|
3870
|
+
page: this.page,
|
|
3871
|
+
itemSelector: DROPDOWN_LIST_ITEM_SELECTOR,
|
|
3872
|
+
textSelector: LIST_ITEM_TEXT_SELECTOR,
|
|
3873
|
+
index: i
|
|
3874
|
+
})
|
|
3875
|
+
);
|
|
3876
|
+
}
|
|
3877
|
+
return result;
|
|
3878
|
+
}
|
|
3879
|
+
listItem(text) {
|
|
3880
|
+
return new DropDownListItem({
|
|
3881
|
+
page: this.page,
|
|
3882
|
+
itemSelector: `${OVERLAY_SELECTOR} ${DROPDOWN_LIST_ITEM_SELECTOR}`,
|
|
3883
|
+
textSelector: LIST_ITEM_TEXT_SELECTOR,
|
|
3884
|
+
exactText: text.trim()
|
|
3885
|
+
});
|
|
3886
|
+
}
|
|
3887
|
+
};
|
|
3888
|
+
|
|
3776
3889
|
// src/pageObjects/elements/Editors/types.ts
|
|
3777
3890
|
var ControlClass = /* @__PURE__ */ ((ControlClass2) => {
|
|
3778
3891
|
ControlClass2["Text"] = "text-control";
|
|
@@ -4563,13 +4676,30 @@ var dropDownOptionClick = async (optionValue, page, delay = true) => {
|
|
|
4563
4676
|
await locator.click();
|
|
4564
4677
|
};
|
|
4565
4678
|
var SelectBoxEditor = class extends AbstractDXEditorWithInput {
|
|
4679
|
+
dropdownList;
|
|
4566
4680
|
constructor(parentCssSelector, elementCssSelector, page) {
|
|
4567
4681
|
super(parentCssSelector, elementCssSelector, page);
|
|
4568
4682
|
this.setClearStrategy(new ClearButtonStrategy(this.getFullCssSelector(), page));
|
|
4683
|
+
this.dropdownList = new DropDownList({
|
|
4684
|
+
page,
|
|
4685
|
+
parentCssSelector: this.getFullCssSelector()
|
|
4686
|
+
});
|
|
4569
4687
|
}
|
|
4570
4688
|
getInputLocator() {
|
|
4571
4689
|
return this.page.locator(`${this.getFullCssSelector()} .dx-texteditor-input`);
|
|
4572
4690
|
}
|
|
4691
|
+
async dropDownOpen() {
|
|
4692
|
+
await this.dropdownList.open();
|
|
4693
|
+
}
|
|
4694
|
+
async dropDownClose() {
|
|
4695
|
+
await this.dropdownList.close();
|
|
4696
|
+
}
|
|
4697
|
+
async dropDownList() {
|
|
4698
|
+
return this.dropdownList.list();
|
|
4699
|
+
}
|
|
4700
|
+
dropDownListItem(text) {
|
|
4701
|
+
return this.dropdownList.listItem(text);
|
|
4702
|
+
}
|
|
4573
4703
|
async setSelectInputValue(value) {
|
|
4574
4704
|
const inputEl = this.getInputLocator();
|
|
4575
4705
|
await inputEl.click();
|
|
@@ -4634,13 +4764,30 @@ var DX_TAG_CONTAINER = "dx-tag-container";
|
|
|
4634
4764
|
var DX_TEXTEDITOR_EMPTY2 = "dx-texteditor-empty";
|
|
4635
4765
|
var BTN_OK_SELECTOR = ".dx-tagbox-popup-wrapper .dx-popup-bottom .dx-button.dx-popup-done";
|
|
4636
4766
|
var TagBox = class extends AbstractDXEditorWithInput {
|
|
4767
|
+
dropdownList;
|
|
4637
4768
|
constructor(parentCssSelector, elementCssSelector, page) {
|
|
4638
4769
|
super(parentCssSelector, elementCssSelector, page);
|
|
4639
4770
|
this.setClearStrategy(new ClearButtonStrategy(this.getFullCssSelector(), page));
|
|
4771
|
+
this.dropdownList = new DropDownList({
|
|
4772
|
+
page,
|
|
4773
|
+
parentCssSelector: this.getFullCssSelector()
|
|
4774
|
+
});
|
|
4640
4775
|
}
|
|
4641
4776
|
getInputLocator() {
|
|
4642
4777
|
return this.page.locator(`${this.getFullCssSelector()} .dx-texteditor-input`);
|
|
4643
4778
|
}
|
|
4779
|
+
async dropDownOpen() {
|
|
4780
|
+
await this.dropdownList.open();
|
|
4781
|
+
}
|
|
4782
|
+
async dropDownClose() {
|
|
4783
|
+
await this.dropdownList.close();
|
|
4784
|
+
}
|
|
4785
|
+
async dropDownList() {
|
|
4786
|
+
return this.dropdownList.list();
|
|
4787
|
+
}
|
|
4788
|
+
dropDownListItem(text) {
|
|
4789
|
+
return this.dropdownList.listItem(text);
|
|
4790
|
+
}
|
|
4644
4791
|
async setTagBoxInputValue(values) {
|
|
4645
4792
|
const lastElement = values[values.length - 1];
|
|
4646
4793
|
const input = this.getInputLocator();
|
|
@@ -4806,7 +4953,7 @@ var CALENDAR_PREVIOUS_SELECTOR = "dx-calendar-navigator-previous-month";
|
|
|
4806
4953
|
var CALENDAR_NEXT_SELECTOR = "dx-calendar-navigator-next-month";
|
|
4807
4954
|
var TEXT_EDITOR_SELECTOR = "dx-texteditor-input";
|
|
4808
4955
|
var movesToCalendarEndForWeek = 3;
|
|
4809
|
-
var movesToCalendarEndForMonth =
|
|
4956
|
+
var movesToCalendarEndForMonth = 0;
|
|
4810
4957
|
var Calendar = class extends AbstractElementWithParent {
|
|
4811
4958
|
_parentCssSelector;
|
|
4812
4959
|
constructor({ parentCssSelector, dateFieldDataTestID, page }) {
|
|
@@ -4819,6 +4966,7 @@ var Calendar = class extends AbstractElementWithParent {
|
|
|
4819
4966
|
async init() {
|
|
4820
4967
|
const dateField = this.page.locator(this._parentCssSelector);
|
|
4821
4968
|
await dateField.locator(`.${BTN_CALENDAR_POPOVER_OPEN_SELECTOR}`).click();
|
|
4969
|
+
await this.root.waitFor({ state: "visible" });
|
|
4822
4970
|
}
|
|
4823
4971
|
async moveToCalendarEnd(count) {
|
|
4824
4972
|
while (count >= 0) {
|
|
@@ -5486,6 +5634,32 @@ var AbstractEditor = class extends AbstractElementWithParent {
|
|
|
5486
5634
|
}
|
|
5487
5635
|
return this.editor.download();
|
|
5488
5636
|
}
|
|
5637
|
+
async dropDownOpen() {
|
|
5638
|
+
await this.initEditor();
|
|
5639
|
+
if (!this.editor.dropDownOpen) {
|
|
5640
|
+
throw new Error("The dropDownOpen method is not available for this field type.");
|
|
5641
|
+
}
|
|
5642
|
+
return this.editor.dropDownOpen();
|
|
5643
|
+
}
|
|
5644
|
+
async dropDownClose() {
|
|
5645
|
+
await this.initEditor();
|
|
5646
|
+
if (!this.editor.dropDownClose) {
|
|
5647
|
+
throw new Error("The dropDownClose method is not available for this field type.");
|
|
5648
|
+
}
|
|
5649
|
+
return this.editor.dropDownClose();
|
|
5650
|
+
}
|
|
5651
|
+
async dropDownList() {
|
|
5652
|
+
return new DropDownList({
|
|
5653
|
+
page: this.page,
|
|
5654
|
+
parentCssSelector: this.getFullCssSelector()
|
|
5655
|
+
}).list();
|
|
5656
|
+
}
|
|
5657
|
+
dropDownListItem(text) {
|
|
5658
|
+
return new DropDownList({
|
|
5659
|
+
page: this.page,
|
|
5660
|
+
parentCssSelector: this.getFullCssSelector()
|
|
5661
|
+
}).listItem(text);
|
|
5662
|
+
}
|
|
5489
5663
|
};
|
|
5490
5664
|
|
|
5491
5665
|
// src/pageObjects/elements/FormField.ts
|
|
@@ -6373,6 +6547,8 @@ export {
|
|
|
6373
6547
|
wait,
|
|
6374
6548
|
TextEditor,
|
|
6375
6549
|
NumberEditor,
|
|
6550
|
+
DropDownListItem,
|
|
6551
|
+
DropDownList,
|
|
6376
6552
|
ControlClass,
|
|
6377
6553
|
editorFactory,
|
|
6378
6554
|
SubsystemsPanel,
|
|
@@ -388,6 +388,132 @@ var init_NumberEditor = __esm({
|
|
|
388
388
|
}
|
|
389
389
|
});
|
|
390
390
|
|
|
391
|
+
// src/pageObjects/elements/Editors/ListItem.ts
|
|
392
|
+
var DropDownListItem;
|
|
393
|
+
var init_ListItem = __esm({
|
|
394
|
+
"src/pageObjects/elements/Editors/ListItem.ts"() {
|
|
395
|
+
"use strict";
|
|
396
|
+
DropDownListItem = class {
|
|
397
|
+
page;
|
|
398
|
+
itemSelector;
|
|
399
|
+
textSelector;
|
|
400
|
+
index;
|
|
401
|
+
exactText;
|
|
402
|
+
constructor(options) {
|
|
403
|
+
this.page = options.page;
|
|
404
|
+
this.itemSelector = options.itemSelector;
|
|
405
|
+
this.textSelector = options.textSelector;
|
|
406
|
+
this.index = options.index;
|
|
407
|
+
this.exactText = options.exactText;
|
|
408
|
+
}
|
|
409
|
+
getExactTextRegExp(value) {
|
|
410
|
+
const escapedText = value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
411
|
+
return new RegExp(`^\\s*${escapedText}\\s*$`);
|
|
412
|
+
}
|
|
413
|
+
getLocatorInternal() {
|
|
414
|
+
const items = this.page.locator(this.itemSelector);
|
|
415
|
+
if (this.index != null) {
|
|
416
|
+
return items.nth(this.index);
|
|
417
|
+
}
|
|
418
|
+
if (this.exactText != null) {
|
|
419
|
+
return items.filter({ has: this.page.locator(this.textSelector), hasText: this.getExactTextRegExp(this.exactText) }).first();
|
|
420
|
+
}
|
|
421
|
+
return items.first();
|
|
422
|
+
}
|
|
423
|
+
async text() {
|
|
424
|
+
const value = await this.getLocatorInternal().locator(this.textSelector).first().innerText();
|
|
425
|
+
return value.trim();
|
|
426
|
+
}
|
|
427
|
+
getLocator() {
|
|
428
|
+
return this.getLocatorInternal();
|
|
429
|
+
}
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
});
|
|
433
|
+
|
|
434
|
+
// src/pageObjects/elements/Editors/DropDownList.ts
|
|
435
|
+
var OVERLAY_SELECTOR, DROPDOWN_BUTTON_SELECTOR, DROPDOWN_LIST_ITEM_SELECTOR, LIST_ITEM_TEXT_SELECTOR, DROPDOWN_LIST_SELECTOR, LIST_ITEMS_WAIT_TIMEOUT, DropDownList;
|
|
436
|
+
var init_DropDownList = __esm({
|
|
437
|
+
"src/pageObjects/elements/Editors/DropDownList.ts"() {
|
|
438
|
+
"use strict";
|
|
439
|
+
init_ListItem();
|
|
440
|
+
OVERLAY_SELECTOR = ".dx-overlay-wrapper";
|
|
441
|
+
DROPDOWN_BUTTON_SELECTOR = ".dx-icon.dx-dropdowneditor-icon";
|
|
442
|
+
DROPDOWN_LIST_ITEM_SELECTOR = ".dx-item.dx-list-item";
|
|
443
|
+
LIST_ITEM_TEXT_SELECTOR = ".d5-multi-select-item__text";
|
|
444
|
+
DROPDOWN_LIST_SELECTOR = ".dx-list-items";
|
|
445
|
+
LIST_ITEMS_WAIT_TIMEOUT = 1e3;
|
|
446
|
+
DropDownList = class {
|
|
447
|
+
page;
|
|
448
|
+
parentCssSelector;
|
|
449
|
+
constructor(options) {
|
|
450
|
+
this.page = options.page;
|
|
451
|
+
this.parentCssSelector = options.parentCssSelector;
|
|
452
|
+
}
|
|
453
|
+
getDropDownButtonLocator() {
|
|
454
|
+
return this.page.locator(`${this.parentCssSelector} ${DROPDOWN_BUTTON_SELECTOR}`).first();
|
|
455
|
+
}
|
|
456
|
+
getDropDownListItemLocator() {
|
|
457
|
+
return this.page.locator(`${OVERLAY_SELECTOR} ${DROPDOWN_LIST_ITEM_SELECTOR}`);
|
|
458
|
+
}
|
|
459
|
+
async isDropDownListVisible() {
|
|
460
|
+
try {
|
|
461
|
+
return await this.page.locator(`${OVERLAY_SELECTOR} ${DROPDOWN_LIST_SELECTOR}`).isVisible();
|
|
462
|
+
} catch (_) {
|
|
463
|
+
return false;
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
async open() {
|
|
467
|
+
if (await this.isDropDownListVisible()) return;
|
|
468
|
+
await this.getDropDownButtonLocator().click();
|
|
469
|
+
await this.waitForListItems("visible");
|
|
470
|
+
}
|
|
471
|
+
async close() {
|
|
472
|
+
if (!await this.isDropDownListVisible()) return;
|
|
473
|
+
await this.getDropDownButtonLocator().click();
|
|
474
|
+
await this.waitForListItems("hidden");
|
|
475
|
+
}
|
|
476
|
+
async waitForListItems(state) {
|
|
477
|
+
try {
|
|
478
|
+
await this.getDropDownListItemLocator().first().waitFor({
|
|
479
|
+
state,
|
|
480
|
+
timeout: LIST_ITEMS_WAIT_TIMEOUT
|
|
481
|
+
});
|
|
482
|
+
return true;
|
|
483
|
+
} catch {
|
|
484
|
+
return false;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
async list() {
|
|
488
|
+
if (!await this.waitForListItems("visible")) {
|
|
489
|
+
return [];
|
|
490
|
+
}
|
|
491
|
+
const count = await this.getDropDownListItemLocator().count();
|
|
492
|
+
const result = [];
|
|
493
|
+
for (let i = 0; i < count; i++) {
|
|
494
|
+
result.push(
|
|
495
|
+
new DropDownListItem({
|
|
496
|
+
page: this.page,
|
|
497
|
+
itemSelector: DROPDOWN_LIST_ITEM_SELECTOR,
|
|
498
|
+
textSelector: LIST_ITEM_TEXT_SELECTOR,
|
|
499
|
+
index: i
|
|
500
|
+
})
|
|
501
|
+
);
|
|
502
|
+
}
|
|
503
|
+
return result;
|
|
504
|
+
}
|
|
505
|
+
listItem(text) {
|
|
506
|
+
return new DropDownListItem({
|
|
507
|
+
page: this.page,
|
|
508
|
+
itemSelector: `${OVERLAY_SELECTOR} ${DROPDOWN_LIST_ITEM_SELECTOR}`,
|
|
509
|
+
textSelector: LIST_ITEM_TEXT_SELECTOR,
|
|
510
|
+
exactText: text.trim()
|
|
511
|
+
});
|
|
512
|
+
}
|
|
513
|
+
};
|
|
514
|
+
}
|
|
515
|
+
});
|
|
516
|
+
|
|
391
517
|
// src/pageObjects/elements/Editors/types.ts
|
|
392
518
|
var ControlClass;
|
|
393
519
|
var init_types = __esm({
|
|
@@ -530,6 +656,7 @@ var init_SelectBoxEditor = __esm({
|
|
|
530
656
|
init_xpathHelper();
|
|
531
657
|
init_src();
|
|
532
658
|
init_typesUtil();
|
|
659
|
+
init_DropDownList();
|
|
533
660
|
SELECT_BOX_OPTION_TEXT_CONTAINER_CLASS = "d5-multi-select-item";
|
|
534
661
|
combinedValueXpath = (value) => `//body/div[@id="root"]/div[contains(@class, "dx-overlay-wrapper")]//${XPathHelper.getClassAndValueXpath(SELECT_BOX_OPTION_TEXT_CONTAINER_CLASS, value)}`;
|
|
535
662
|
dropDownOptionClick = async (optionValue, page, delay = true) => {
|
|
@@ -548,13 +675,30 @@ var init_SelectBoxEditor = __esm({
|
|
|
548
675
|
await locator.click();
|
|
549
676
|
};
|
|
550
677
|
SelectBoxEditor = class extends AbstractDXEditorWithInput {
|
|
678
|
+
dropdownList;
|
|
551
679
|
constructor(parentCssSelector, elementCssSelector, page) {
|
|
552
680
|
super(parentCssSelector, elementCssSelector, page);
|
|
553
681
|
this.setClearStrategy(new ClearButtonStrategy(this.getFullCssSelector(), page));
|
|
682
|
+
this.dropdownList = new DropDownList({
|
|
683
|
+
page,
|
|
684
|
+
parentCssSelector: this.getFullCssSelector()
|
|
685
|
+
});
|
|
554
686
|
}
|
|
555
687
|
getInputLocator() {
|
|
556
688
|
return this.page.locator(`${this.getFullCssSelector()} .dx-texteditor-input`);
|
|
557
689
|
}
|
|
690
|
+
async dropDownOpen() {
|
|
691
|
+
await this.dropdownList.open();
|
|
692
|
+
}
|
|
693
|
+
async dropDownClose() {
|
|
694
|
+
await this.dropdownList.close();
|
|
695
|
+
}
|
|
696
|
+
async dropDownList() {
|
|
697
|
+
return this.dropdownList.list();
|
|
698
|
+
}
|
|
699
|
+
dropDownListItem(text) {
|
|
700
|
+
return this.dropdownList.listItem(text);
|
|
701
|
+
}
|
|
558
702
|
async setSelectInputValue(value) {
|
|
559
703
|
const inputEl = this.getInputLocator();
|
|
560
704
|
await inputEl.click();
|
|
@@ -633,18 +777,36 @@ var init_TagBox = __esm({
|
|
|
633
777
|
init_locators();
|
|
634
778
|
init_SelectBoxEditor();
|
|
635
779
|
init_wait();
|
|
780
|
+
init_DropDownList();
|
|
636
781
|
TAGS_SELECTOR = ".dx-tag .tag-text";
|
|
637
782
|
DX_TAG_CONTAINER = "dx-tag-container";
|
|
638
783
|
DX_TEXTEDITOR_EMPTY2 = "dx-texteditor-empty";
|
|
639
784
|
BTN_OK_SELECTOR = ".dx-tagbox-popup-wrapper .dx-popup-bottom .dx-button.dx-popup-done";
|
|
640
785
|
TagBox = class extends AbstractDXEditorWithInput {
|
|
786
|
+
dropdownList;
|
|
641
787
|
constructor(parentCssSelector, elementCssSelector, page) {
|
|
642
788
|
super(parentCssSelector, elementCssSelector, page);
|
|
643
789
|
this.setClearStrategy(new ClearButtonStrategy(this.getFullCssSelector(), page));
|
|
790
|
+
this.dropdownList = new DropDownList({
|
|
791
|
+
page,
|
|
792
|
+
parentCssSelector: this.getFullCssSelector()
|
|
793
|
+
});
|
|
644
794
|
}
|
|
645
795
|
getInputLocator() {
|
|
646
796
|
return this.page.locator(`${this.getFullCssSelector()} .dx-texteditor-input`);
|
|
647
797
|
}
|
|
798
|
+
async dropDownOpen() {
|
|
799
|
+
await this.dropdownList.open();
|
|
800
|
+
}
|
|
801
|
+
async dropDownClose() {
|
|
802
|
+
await this.dropdownList.close();
|
|
803
|
+
}
|
|
804
|
+
async dropDownList() {
|
|
805
|
+
return this.dropdownList.list();
|
|
806
|
+
}
|
|
807
|
+
dropDownListItem(text) {
|
|
808
|
+
return this.dropdownList.listItem(text);
|
|
809
|
+
}
|
|
648
810
|
async setTagBoxInputValue(values) {
|
|
649
811
|
const lastElement = values[values.length - 1];
|
|
650
812
|
const input = this.getInputLocator();
|
|
@@ -845,7 +1007,7 @@ var init_Calendar = __esm({
|
|
|
845
1007
|
CALENDAR_NEXT_SELECTOR = "dx-calendar-navigator-next-month";
|
|
846
1008
|
TEXT_EDITOR_SELECTOR = "dx-texteditor-input";
|
|
847
1009
|
movesToCalendarEndForWeek = 3;
|
|
848
|
-
movesToCalendarEndForMonth =
|
|
1010
|
+
movesToCalendarEndForMonth = 0;
|
|
849
1011
|
Calendar = class extends AbstractElementWithParent {
|
|
850
1012
|
_parentCssSelector;
|
|
851
1013
|
constructor({ parentCssSelector, dateFieldDataTestID, page }) {
|
|
@@ -858,6 +1020,7 @@ var init_Calendar = __esm({
|
|
|
858
1020
|
async init() {
|
|
859
1021
|
const dateField = this.page.locator(this._parentCssSelector);
|
|
860
1022
|
await dateField.locator(`.${BTN_CALENDAR_POPOVER_OPEN_SELECTOR}`).click();
|
|
1023
|
+
await this.root.waitFor({ state: "visible" });
|
|
861
1024
|
}
|
|
862
1025
|
async moveToCalendarEnd(count) {
|
|
863
1026
|
while (count >= 0) {
|
|
@@ -1445,6 +1608,8 @@ var init_Editors = __esm({
|
|
|
1445
1608
|
"use strict";
|
|
1446
1609
|
init_TextEditor();
|
|
1447
1610
|
init_NumberEditor();
|
|
1611
|
+
init_ListItem();
|
|
1612
|
+
init_DropDownList();
|
|
1448
1613
|
init_editorFactory();
|
|
1449
1614
|
init_types();
|
|
1450
1615
|
}
|
|
@@ -2522,6 +2687,32 @@ var init_AbstractEditor2 = __esm({
|
|
|
2522
2687
|
}
|
|
2523
2688
|
return this.editor.download();
|
|
2524
2689
|
}
|
|
2690
|
+
async dropDownOpen() {
|
|
2691
|
+
await this.initEditor();
|
|
2692
|
+
if (!this.editor.dropDownOpen) {
|
|
2693
|
+
throw new Error("The dropDownOpen method is not available for this field type.");
|
|
2694
|
+
}
|
|
2695
|
+
return this.editor.dropDownOpen();
|
|
2696
|
+
}
|
|
2697
|
+
async dropDownClose() {
|
|
2698
|
+
await this.initEditor();
|
|
2699
|
+
if (!this.editor.dropDownClose) {
|
|
2700
|
+
throw new Error("The dropDownClose method is not available for this field type.");
|
|
2701
|
+
}
|
|
2702
|
+
return this.editor.dropDownClose();
|
|
2703
|
+
}
|
|
2704
|
+
async dropDownList() {
|
|
2705
|
+
return new DropDownList({
|
|
2706
|
+
page: this.page,
|
|
2707
|
+
parentCssSelector: this.getFullCssSelector()
|
|
2708
|
+
}).list();
|
|
2709
|
+
}
|
|
2710
|
+
dropDownListItem(text) {
|
|
2711
|
+
return new DropDownList({
|
|
2712
|
+
page: this.page,
|
|
2713
|
+
parentCssSelector: this.getFullCssSelector()
|
|
2714
|
+
}).listItem(text);
|
|
2715
|
+
}
|
|
2525
2716
|
};
|
|
2526
2717
|
}
|
|
2527
2718
|
});
|
|
@@ -7079,6 +7270,8 @@ __export(src_exports, {
|
|
|
7079
7270
|
ApiRequest: () => ApiRequest,
|
|
7080
7271
|
ControlClass: () => ControlClass,
|
|
7081
7272
|
Dialog: () => Dialog,
|
|
7273
|
+
DropDownList: () => DropDownList,
|
|
7274
|
+
DropDownListItem: () => DropDownListItem,
|
|
7082
7275
|
FilterPanel: () => FilterPanel,
|
|
7083
7276
|
FormEdit: () => FormEdit,
|
|
7084
7277
|
FormField: () => FormField,
|
|
@@ -7131,6 +7324,8 @@ init_src();
|
|
|
7131
7324
|
ApiRequest,
|
|
7132
7325
|
ControlClass,
|
|
7133
7326
|
Dialog,
|
|
7327
|
+
DropDownList,
|
|
7328
|
+
DropDownListItem,
|
|
7134
7329
|
FilterPanel,
|
|
7135
7330
|
FormEdit,
|
|
7136
7331
|
FormField,
|
|
@@ -89,11 +89,19 @@ interface PlaywrightWaitParams {
|
|
|
89
89
|
*/
|
|
90
90
|
declare function wait(condition: PlaywrightWaitParams['condition'], page: Page, errorMessage?: string, timeout?: number): Promise<void>;
|
|
91
91
|
|
|
92
|
+
interface ListItem {
|
|
93
|
+
text(): Promise<string>;
|
|
94
|
+
getLocator(): Locator;
|
|
95
|
+
}
|
|
92
96
|
interface Editor {
|
|
93
97
|
setValue(value: any): Promise<void>;
|
|
94
98
|
getValue(): Promise<any>;
|
|
95
99
|
remove?(itemText: string): Promise<void>;
|
|
96
100
|
clear?(): Promise<void>;
|
|
101
|
+
dropDownOpen?(): Promise<void>;
|
|
102
|
+
dropDownClose?(): Promise<void>;
|
|
103
|
+
dropDownList?(): Promise<ListItem[]>;
|
|
104
|
+
dropDownListItem?(text: string): ListItem;
|
|
97
105
|
isReadonly?(): Promise<boolean>;
|
|
98
106
|
isDisabled?(): Promise<boolean>;
|
|
99
107
|
download?(): Promise<string>;
|
|
@@ -150,6 +158,44 @@ declare class NumberEditor extends AbstractDXEditorWithInput {
|
|
|
150
158
|
setValue(value: any): Promise<void>;
|
|
151
159
|
}
|
|
152
160
|
|
|
161
|
+
interface DropDownListItemOptions {
|
|
162
|
+
page: Page;
|
|
163
|
+
itemSelector: string;
|
|
164
|
+
textSelector: string;
|
|
165
|
+
index?: number;
|
|
166
|
+
exactText?: string;
|
|
167
|
+
}
|
|
168
|
+
declare class DropDownListItem implements ListItem {
|
|
169
|
+
private readonly page;
|
|
170
|
+
private readonly itemSelector;
|
|
171
|
+
private readonly textSelector;
|
|
172
|
+
private readonly index?;
|
|
173
|
+
private readonly exactText?;
|
|
174
|
+
constructor(options: DropDownListItemOptions);
|
|
175
|
+
private getExactTextRegExp;
|
|
176
|
+
private getLocatorInternal;
|
|
177
|
+
text(): Promise<string>;
|
|
178
|
+
getLocator(): Locator;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
interface DropDownListOptions {
|
|
182
|
+
page: Page;
|
|
183
|
+
parentCssSelector: string;
|
|
184
|
+
}
|
|
185
|
+
declare class DropDownList {
|
|
186
|
+
private readonly page;
|
|
187
|
+
private readonly parentCssSelector;
|
|
188
|
+
constructor(options: DropDownListOptions);
|
|
189
|
+
private getDropDownButtonLocator;
|
|
190
|
+
private getDropDownListItemLocator;
|
|
191
|
+
private isDropDownListVisible;
|
|
192
|
+
open(): Promise<void>;
|
|
193
|
+
close(): Promise<void>;
|
|
194
|
+
private waitForListItems;
|
|
195
|
+
list(): Promise<ListItem[]>;
|
|
196
|
+
listItem(text: string): ListItem;
|
|
197
|
+
}
|
|
198
|
+
|
|
153
199
|
declare const editorFactory: (parentCssSelector: string, elementCssSelector: string, page: Page) => Promise<Editor>;
|
|
154
200
|
|
|
155
201
|
interface ISubsystemItem {
|
|
@@ -427,6 +473,10 @@ declare class AbstractEditor extends AbstractElementWithParent implements Editor
|
|
|
427
473
|
* expect(filename()).toBe('file.pdf');
|
|
428
474
|
*/
|
|
429
475
|
download(): Promise<string>;
|
|
476
|
+
dropDownOpen(): Promise<void>;
|
|
477
|
+
dropDownClose(): Promise<void>;
|
|
478
|
+
dropDownList(): Promise<ListItem[]>;
|
|
479
|
+
dropDownListItem(text: string): ListItem;
|
|
430
480
|
}
|
|
431
481
|
|
|
432
482
|
declare class FormField extends AbstractEditor {
|
|
@@ -1055,4 +1105,4 @@ declare class Dialog extends AbstractElement {
|
|
|
1055
1105
|
|
|
1056
1106
|
declare function ApiRequest(objectName: string, operation: string): any;
|
|
1057
1107
|
|
|
1058
|
-
export { AbstractPage, ApiRequest, ControlClass, Dialog, type Editor, FilterPanel, FormEdit, FormField, FormFilterField, ListForm, LoginPage, NumberEditor, PanelFilterField, ReportForm, SubsystemsPanel, TextEditor, TreeView, byTestId, byTestIdCssSelector, config, disabledLocator, editorFactory, readonlyLocator, wait, waitElementIsVisible };
|
|
1108
|
+
export { AbstractPage, ApiRequest, ControlClass, Dialog, DropDownList, DropDownListItem, type Editor, FilterPanel, FormEdit, FormField, FormFilterField, ListForm, type ListItem, LoginPage, NumberEditor, PanelFilterField, ReportForm, SubsystemsPanel, TextEditor, TreeView, byTestId, byTestIdCssSelector, config, disabledLocator, editorFactory, readonlyLocator, wait, waitElementIsVisible };
|
|
@@ -89,11 +89,19 @@ interface PlaywrightWaitParams {
|
|
|
89
89
|
*/
|
|
90
90
|
declare function wait(condition: PlaywrightWaitParams['condition'], page: Page, errorMessage?: string, timeout?: number): Promise<void>;
|
|
91
91
|
|
|
92
|
+
interface ListItem {
|
|
93
|
+
text(): Promise<string>;
|
|
94
|
+
getLocator(): Locator;
|
|
95
|
+
}
|
|
92
96
|
interface Editor {
|
|
93
97
|
setValue(value: any): Promise<void>;
|
|
94
98
|
getValue(): Promise<any>;
|
|
95
99
|
remove?(itemText: string): Promise<void>;
|
|
96
100
|
clear?(): Promise<void>;
|
|
101
|
+
dropDownOpen?(): Promise<void>;
|
|
102
|
+
dropDownClose?(): Promise<void>;
|
|
103
|
+
dropDownList?(): Promise<ListItem[]>;
|
|
104
|
+
dropDownListItem?(text: string): ListItem;
|
|
97
105
|
isReadonly?(): Promise<boolean>;
|
|
98
106
|
isDisabled?(): Promise<boolean>;
|
|
99
107
|
download?(): Promise<string>;
|
|
@@ -150,6 +158,44 @@ declare class NumberEditor extends AbstractDXEditorWithInput {
|
|
|
150
158
|
setValue(value: any): Promise<void>;
|
|
151
159
|
}
|
|
152
160
|
|
|
161
|
+
interface DropDownListItemOptions {
|
|
162
|
+
page: Page;
|
|
163
|
+
itemSelector: string;
|
|
164
|
+
textSelector: string;
|
|
165
|
+
index?: number;
|
|
166
|
+
exactText?: string;
|
|
167
|
+
}
|
|
168
|
+
declare class DropDownListItem implements ListItem {
|
|
169
|
+
private readonly page;
|
|
170
|
+
private readonly itemSelector;
|
|
171
|
+
private readonly textSelector;
|
|
172
|
+
private readonly index?;
|
|
173
|
+
private readonly exactText?;
|
|
174
|
+
constructor(options: DropDownListItemOptions);
|
|
175
|
+
private getExactTextRegExp;
|
|
176
|
+
private getLocatorInternal;
|
|
177
|
+
text(): Promise<string>;
|
|
178
|
+
getLocator(): Locator;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
interface DropDownListOptions {
|
|
182
|
+
page: Page;
|
|
183
|
+
parentCssSelector: string;
|
|
184
|
+
}
|
|
185
|
+
declare class DropDownList {
|
|
186
|
+
private readonly page;
|
|
187
|
+
private readonly parentCssSelector;
|
|
188
|
+
constructor(options: DropDownListOptions);
|
|
189
|
+
private getDropDownButtonLocator;
|
|
190
|
+
private getDropDownListItemLocator;
|
|
191
|
+
private isDropDownListVisible;
|
|
192
|
+
open(): Promise<void>;
|
|
193
|
+
close(): Promise<void>;
|
|
194
|
+
private waitForListItems;
|
|
195
|
+
list(): Promise<ListItem[]>;
|
|
196
|
+
listItem(text: string): ListItem;
|
|
197
|
+
}
|
|
198
|
+
|
|
153
199
|
declare const editorFactory: (parentCssSelector: string, elementCssSelector: string, page: Page) => Promise<Editor>;
|
|
154
200
|
|
|
155
201
|
interface ISubsystemItem {
|
|
@@ -427,6 +473,10 @@ declare class AbstractEditor extends AbstractElementWithParent implements Editor
|
|
|
427
473
|
* expect(filename()).toBe('file.pdf');
|
|
428
474
|
*/
|
|
429
475
|
download(): Promise<string>;
|
|
476
|
+
dropDownOpen(): Promise<void>;
|
|
477
|
+
dropDownClose(): Promise<void>;
|
|
478
|
+
dropDownList(): Promise<ListItem[]>;
|
|
479
|
+
dropDownListItem(text: string): ListItem;
|
|
430
480
|
}
|
|
431
481
|
|
|
432
482
|
declare class FormField extends AbstractEditor {
|
|
@@ -1055,4 +1105,4 @@ declare class Dialog extends AbstractElement {
|
|
|
1055
1105
|
|
|
1056
1106
|
declare function ApiRequest(objectName: string, operation: string): any;
|
|
1057
1107
|
|
|
1058
|
-
export { AbstractPage, ApiRequest, ControlClass, Dialog, type Editor, FilterPanel, FormEdit, FormField, FormFilterField, ListForm, LoginPage, NumberEditor, PanelFilterField, ReportForm, SubsystemsPanel, TextEditor, TreeView, byTestId, byTestIdCssSelector, config, disabledLocator, editorFactory, readonlyLocator, wait, waitElementIsVisible };
|
|
1108
|
+
export { AbstractPage, ApiRequest, ControlClass, Dialog, DropDownList, DropDownListItem, type Editor, FilterPanel, FormEdit, FormField, FormFilterField, ListForm, type ListItem, LoginPage, NumberEditor, PanelFilterField, ReportForm, SubsystemsPanel, TextEditor, TreeView, byTestId, byTestIdCssSelector, config, disabledLocator, editorFactory, readonlyLocator, wait, waitElementIsVisible };
|
|
@@ -3,6 +3,8 @@ import {
|
|
|
3
3
|
ApiRequest,
|
|
4
4
|
ControlClass,
|
|
5
5
|
Dialog,
|
|
6
|
+
DropDownList,
|
|
7
|
+
DropDownListItem,
|
|
6
8
|
FilterPanel,
|
|
7
9
|
FormEdit,
|
|
8
10
|
FormField,
|
|
@@ -23,12 +25,14 @@ import {
|
|
|
23
25
|
readonlyLocator,
|
|
24
26
|
wait,
|
|
25
27
|
waitElementIsVisible_default
|
|
26
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-VB77YEH6.mjs";
|
|
27
29
|
export {
|
|
28
30
|
AbstractPage,
|
|
29
31
|
ApiRequest,
|
|
30
32
|
ControlClass,
|
|
31
33
|
Dialog,
|
|
34
|
+
DropDownList,
|
|
35
|
+
DropDownListItem,
|
|
32
36
|
FilterPanel,
|
|
33
37
|
FormEdit,
|
|
34
38
|
FormField,
|
|
@@ -3,6 +3,8 @@ import {
|
|
|
3
3
|
ApiRequest,
|
|
4
4
|
ControlClass,
|
|
5
5
|
Dialog,
|
|
6
|
+
DropDownList,
|
|
7
|
+
DropDownListItem,
|
|
6
8
|
FilterPanel,
|
|
7
9
|
FormEdit,
|
|
8
10
|
FormField,
|
|
@@ -23,12 +25,14 @@ import {
|
|
|
23
25
|
readonlyLocator,
|
|
24
26
|
wait,
|
|
25
27
|
waitElementIsVisible_default
|
|
26
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-VB77YEH6.mjs";
|
|
27
29
|
export {
|
|
28
30
|
AbstractPage,
|
|
29
31
|
ApiRequest,
|
|
30
32
|
ControlClass,
|
|
31
33
|
Dialog,
|
|
34
|
+
DropDownList,
|
|
35
|
+
DropDownListItem,
|
|
32
36
|
FilterPanel,
|
|
33
37
|
FormEdit,
|
|
34
38
|
FormField,
|