d5-testing-library 1.8.0-alpha.3 → 1.8.0-alpha.4
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-VOA5OIJ2.mjs +7 -0
- package/dist/ListForm-FHAD7GLJ.mjs +7 -0
- package/dist/TreeView-QDCXAJZ2.mjs +8 -0
- package/dist/{chunk-R25O5O4T.mjs → chunk-HXXWTKEP.mjs} +1 -1
- package/dist/{chunk-F57G2ZDW.mjs → chunk-JGX24TXO.mjs} +51 -17
- package/dist/{chunk-2DQ5YCRB.mjs → chunk-LLH235HI.mjs} +1 -1
- package/dist/{chunk-MH6NCS6F.mjs → chunk-TFKTH7JY.mjs} +1 -1
- package/dist/cjs/d5-testing-library.cjs +46 -0
- package/dist/d5-testing-library.d.ts +15 -0
- 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-2USHOJID.mjs +0 -7
- package/dist/ListForm-KXMIP4EA.mjs +0 -7
- package/dist/TreeView-5QQREFJ6.mjs +0 -8
|
@@ -736,6 +736,44 @@ function createFormButtonTestId(formName, itemName) {
|
|
|
736
736
|
function createSubSystemTestId(itemName) {
|
|
737
737
|
return `${"subsystem-item" /* SUBSYSTEM_ITEM */}-${itemName}`;
|
|
738
738
|
}
|
|
739
|
+
function createEditorButtonTestId(itemName) {
|
|
740
|
+
return `${"editor-button" /* EDITOR_BUTTON */}-${itemName}`;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
// src/utils/waitElementIsClickable.ts
|
|
744
|
+
async function waitElementIsClickable({
|
|
745
|
+
element,
|
|
746
|
+
timeout,
|
|
747
|
+
errorMessage,
|
|
748
|
+
driver
|
|
749
|
+
}) {
|
|
750
|
+
driver = driver ?? config().driver;
|
|
751
|
+
await wait(async () => {
|
|
752
|
+
const isDisabled = await element.getCssValue("pointer-events") === "none";
|
|
753
|
+
return await element.isDisplayed() && !isDisabled;
|
|
754
|
+
}, driver, errorMessage, timeout ?? config().timeout);
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
// src/pageObjects/elements/EditorButton.ts
|
|
758
|
+
var EditorButton = class extends AbstractElementWithParent {
|
|
759
|
+
name;
|
|
760
|
+
constructor(parentCssSelector, name, driver) {
|
|
761
|
+
super(parentCssSelector, byTestIdCssSelector(createEditorButtonTestId(name)), driver);
|
|
762
|
+
this.name = name;
|
|
763
|
+
}
|
|
764
|
+
buttonNotDisplayedError() {
|
|
765
|
+
return `Editor Button ${this.name} cannot be clicked. It is not displayed or it is disabled`;
|
|
766
|
+
}
|
|
767
|
+
async click() {
|
|
768
|
+
const button = await this.getElement();
|
|
769
|
+
await waitElementIsClickable({
|
|
770
|
+
element: button,
|
|
771
|
+
errorMessage: this.buttonNotDisplayedError(),
|
|
772
|
+
driver: this.driver
|
|
773
|
+
});
|
|
774
|
+
await click(button, this.driver);
|
|
775
|
+
}
|
|
776
|
+
};
|
|
739
777
|
|
|
740
778
|
// src/pageObjects/elements/AbstractEditor.ts
|
|
741
779
|
var AbstractEditor = class extends AbstractElementWithParent {
|
|
@@ -802,6 +840,16 @@ var AbstractEditor = class extends AbstractElementWithParent {
|
|
|
802
840
|
await this.initEditor();
|
|
803
841
|
return this.editor.isReadonly();
|
|
804
842
|
}
|
|
843
|
+
/**
|
|
844
|
+
* Находит кнопку на поле по имени
|
|
845
|
+
* @example
|
|
846
|
+
* const form= new MyForm();
|
|
847
|
+
* //...
|
|
848
|
+
* await form.field('Name').button('editorButton).click()
|
|
849
|
+
*/
|
|
850
|
+
button(name) {
|
|
851
|
+
return new EditorButton(this.getFullCssSelector(), name, this.driver);
|
|
852
|
+
}
|
|
805
853
|
};
|
|
806
854
|
|
|
807
855
|
// src/pageObjects/elements/FormField.ts
|
|
@@ -814,20 +862,6 @@ var FormField = class extends AbstractEditor {
|
|
|
814
862
|
// src/pageObjects/elements/Forms/Form.ts
|
|
815
863
|
import { By as By14 } from "selenium-webdriver";
|
|
816
864
|
|
|
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
|
-
}
|
|
830
|
-
|
|
831
865
|
// src/pageObjects/elements/TableToolbar/AbstractButton.ts
|
|
832
866
|
var AbstractButton = class extends AbstractElementWithParent {
|
|
833
867
|
constructor(parentCssSelector, elementCssSelector, driver) {
|
|
@@ -1114,15 +1148,15 @@ async function classDependencyInjector(formType) {
|
|
|
1114
1148
|
let SubFormFactoryClass;
|
|
1115
1149
|
switch (formType) {
|
|
1116
1150
|
case "1" /* LIST */:
|
|
1117
|
-
SubFormFactoryClass = (await import("./ListForm-
|
|
1151
|
+
SubFormFactoryClass = (await import("./ListForm-FHAD7GLJ.mjs")).default;
|
|
1118
1152
|
break;
|
|
1119
1153
|
case "3" /* TREE */:
|
|
1120
|
-
SubFormFactoryClass = (await import("./TreeView-
|
|
1154
|
+
SubFormFactoryClass = (await import("./TreeView-QDCXAJZ2.mjs")).default;
|
|
1121
1155
|
break;
|
|
1122
1156
|
case "2" /* EDIT */:
|
|
1123
1157
|
case "99" /* FREE_FORM */:
|
|
1124
1158
|
case "4" /* REPORT */:
|
|
1125
|
-
SubFormFactoryClass = (await import("./FormEdit-
|
|
1159
|
+
SubFormFactoryClass = (await import("./FormEdit-VOA5OIJ2.mjs")).default;
|
|
1126
1160
|
break;
|
|
1127
1161
|
default:
|
|
1128
1162
|
throw new Error(`Unsupported form type ${formType}`);
|
|
@@ -1003,6 +1003,9 @@ function createFormButtonTestId(formName, itemName) {
|
|
|
1003
1003
|
function createSubSystemTestId(itemName) {
|
|
1004
1004
|
return `${"subsystem-item" /* SUBSYSTEM_ITEM */}-${itemName}`;
|
|
1005
1005
|
}
|
|
1006
|
+
function createEditorButtonTestId(itemName) {
|
|
1007
|
+
return `${"editor-button" /* EDITOR_BUTTON */}-${itemName}`;
|
|
1008
|
+
}
|
|
1006
1009
|
var init_createDataTestId = __esm({
|
|
1007
1010
|
"src/utils/createDataTestId.ts"() {
|
|
1008
1011
|
"use strict";
|
|
@@ -1663,6 +1666,38 @@ var init_Column = __esm({
|
|
|
1663
1666
|
}
|
|
1664
1667
|
});
|
|
1665
1668
|
|
|
1669
|
+
// src/pageObjects/elements/EditorButton.ts
|
|
1670
|
+
var EditorButton;
|
|
1671
|
+
var init_EditorButton = __esm({
|
|
1672
|
+
"src/pageObjects/elements/EditorButton.ts"() {
|
|
1673
|
+
"use strict";
|
|
1674
|
+
init_locators();
|
|
1675
|
+
init_createDataTestId();
|
|
1676
|
+
init_AbstractElementWithParent();
|
|
1677
|
+
init_waitElementIsClickable();
|
|
1678
|
+
init_actions();
|
|
1679
|
+
EditorButton = class extends AbstractElementWithParent {
|
|
1680
|
+
name;
|
|
1681
|
+
constructor(parentCssSelector, name, driver) {
|
|
1682
|
+
super(parentCssSelector, byTestIdCssSelector(createEditorButtonTestId(name)), driver);
|
|
1683
|
+
this.name = name;
|
|
1684
|
+
}
|
|
1685
|
+
buttonNotDisplayedError() {
|
|
1686
|
+
return `Editor Button ${this.name} cannot be clicked. It is not displayed or it is disabled`;
|
|
1687
|
+
}
|
|
1688
|
+
async click() {
|
|
1689
|
+
const button = await this.getElement();
|
|
1690
|
+
await waitElementIsClickable({
|
|
1691
|
+
element: button,
|
|
1692
|
+
errorMessage: this.buttonNotDisplayedError(),
|
|
1693
|
+
driver: this.driver
|
|
1694
|
+
});
|
|
1695
|
+
await click(button, this.driver);
|
|
1696
|
+
}
|
|
1697
|
+
};
|
|
1698
|
+
}
|
|
1699
|
+
});
|
|
1700
|
+
|
|
1666
1701
|
// src/pageObjects/elements/AbstractEditor.ts
|
|
1667
1702
|
var AbstractEditor;
|
|
1668
1703
|
var init_AbstractEditor2 = __esm({
|
|
@@ -1670,6 +1705,7 @@ var init_AbstractEditor2 = __esm({
|
|
|
1670
1705
|
"use strict";
|
|
1671
1706
|
init_AbstractElementWithParent();
|
|
1672
1707
|
init_Editors();
|
|
1708
|
+
init_EditorButton();
|
|
1673
1709
|
AbstractEditor = class extends AbstractElementWithParent {
|
|
1674
1710
|
editor;
|
|
1675
1711
|
constructor(parentCssSelector, elementCssSelector, driver) {
|
|
@@ -1734,6 +1770,16 @@ var init_AbstractEditor2 = __esm({
|
|
|
1734
1770
|
await this.initEditor();
|
|
1735
1771
|
return this.editor.isReadonly();
|
|
1736
1772
|
}
|
|
1773
|
+
/**
|
|
1774
|
+
* Находит кнопку на поле по имени
|
|
1775
|
+
* @example
|
|
1776
|
+
* const form= new MyForm();
|
|
1777
|
+
* //...
|
|
1778
|
+
* await form.field('Name').button('editorButton).click()
|
|
1779
|
+
*/
|
|
1780
|
+
button(name) {
|
|
1781
|
+
return new EditorButton(this.getFullCssSelector(), name, this.driver);
|
|
1782
|
+
}
|
|
1737
1783
|
};
|
|
1738
1784
|
}
|
|
1739
1785
|
});
|
|
@@ -350,6 +350,13 @@ declare abstract class Form extends AbstractForm {
|
|
|
350
350
|
subForm(name: string): Promise<unknown>;
|
|
351
351
|
}
|
|
352
352
|
|
|
353
|
+
declare class EditorButton extends AbstractElementWithParent {
|
|
354
|
+
private readonly name;
|
|
355
|
+
constructor(parentCssSelector: string, name: string, driver?: WebDriver);
|
|
356
|
+
protected buttonNotDisplayedError(): string;
|
|
357
|
+
click(): Promise<void>;
|
|
358
|
+
}
|
|
359
|
+
|
|
353
360
|
declare class AbstractEditor extends AbstractElementWithParent implements Editor {
|
|
354
361
|
protected editor: Editor;
|
|
355
362
|
constructor(parentCssSelector: string, elementCssSelector: string, driver?: WebDriver);
|
|
@@ -387,6 +394,14 @@ declare class AbstractEditor extends AbstractElementWithParent implements Editor
|
|
|
387
394
|
* expect(await formEdit.field('TextFld').isReadonly()).toBe(false);
|
|
388
395
|
*/
|
|
389
396
|
isReadonly(): Promise<boolean>;
|
|
397
|
+
/**
|
|
398
|
+
* Находит кнопку на поле по имени
|
|
399
|
+
* @example
|
|
400
|
+
* const form= new MyForm();
|
|
401
|
+
* //...
|
|
402
|
+
* await form.field('Name').button('editorButton).click()
|
|
403
|
+
*/
|
|
404
|
+
button(name: string): EditorButton;
|
|
390
405
|
}
|
|
391
406
|
|
|
392
407
|
declare class FormField extends AbstractEditor {
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TreeView
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-HXXWTKEP.mjs";
|
|
4
4
|
import {
|
|
5
5
|
FilterPanel,
|
|
6
6
|
FormFilterField,
|
|
7
7
|
ListForm,
|
|
8
8
|
PanelFilterField
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-TFKTH7JY.mjs";
|
|
10
10
|
import {
|
|
11
11
|
FormEdit
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-LLH235HI.mjs";
|
|
13
13
|
import {
|
|
14
14
|
AbstractButton,
|
|
15
15
|
AbstractElement,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
readonlyLocator,
|
|
31
31
|
wait,
|
|
32
32
|
waitElementIsVisible
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-JGX24TXO.mjs";
|
|
34
34
|
|
|
35
35
|
// src/pageObjects/pages/LoginPage.ts
|
|
36
36
|
var LOGIN_PATH = "/login";
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TreeView
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-HXXWTKEP.mjs";
|
|
4
4
|
import {
|
|
5
5
|
FilterPanel,
|
|
6
6
|
FormFilterField,
|
|
7
7
|
ListForm,
|
|
8
8
|
PanelFilterField
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-TFKTH7JY.mjs";
|
|
10
10
|
import {
|
|
11
11
|
FormEdit
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-LLH235HI.mjs";
|
|
13
13
|
import {
|
|
14
14
|
AbstractButton,
|
|
15
15
|
AbstractElement,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
readonlyLocator,
|
|
31
31
|
wait,
|
|
32
32
|
waitElementIsVisible
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-JGX24TXO.mjs";
|
|
34
34
|
|
|
35
35
|
// src/pageObjects/pages/LoginPage.ts
|
|
36
36
|
var LOGIN_PATH = "/login";
|
package/package.json
CHANGED