d5-testing-library 1.8.0-alpha.2 → 1.8.0-alpha.21
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-GTZISTTI.mjs +7 -0
- package/dist/ListForm-EM7E4ZMM.mjs +7 -0
- package/dist/TreeView-F2XF44N2.mjs +8 -0
- package/dist/chunk-LMFYREYI.mjs +22 -0
- package/dist/{chunk-ZT3B7BQ2.mjs → chunk-MV63JF3H.mjs} +261 -79
- package/dist/{chunk-LTHDA5XH.mjs → chunk-PMZQRKUZ.mjs} +363 -75
- package/dist/{chunk-H3M6VBPP.mjs → chunk-WDYVVF7O.mjs} +16 -7
- package/dist/cjs/d5-testing-library.cjs +786 -216
- package/dist/d5-testing-library.d.ts +188 -21
- package/dist/d5-testing-library.legacy-esm.js +29 -13
- package/dist/d5-testing-library.mjs +29 -13
- package/package.json +18 -6
- package/dist/FormEdit-PRX4TB67.mjs +0 -7
- package/dist/ListForm-N6QNZXQE.mjs +0 -7
- package/dist/TreeView-JOHAYS2S.mjs +0 -8
- package/dist/chunk-4PUDCQM6.mjs +0 -17
|
@@ -92,6 +92,22 @@ interface WaitElementIsVisibleParams {
|
|
|
92
92
|
*/
|
|
93
93
|
declare function waitElementIsVisible({ element, timeout, errorMessage, driver }: WaitElementIsVisibleParams): Promise<void>;
|
|
94
94
|
|
|
95
|
+
type WithElement = {
|
|
96
|
+
element: WebElement;
|
|
97
|
+
};
|
|
98
|
+
type WithBy = {
|
|
99
|
+
by: By;
|
|
100
|
+
};
|
|
101
|
+
type Args = {
|
|
102
|
+
timeout?: number;
|
|
103
|
+
errorMessage?: string;
|
|
104
|
+
driver?: WebDriver;
|
|
105
|
+
};
|
|
106
|
+
type ArgsWithElement = Args & WithElement;
|
|
107
|
+
type ArgsWithWithBy = Args & WithBy;
|
|
108
|
+
declare function waitElementIsClickable(args: ArgsWithElement): Promise<void>;
|
|
109
|
+
declare function waitElementIsClickable(args: ArgsWithWithBy): Promise<void>;
|
|
110
|
+
|
|
95
111
|
interface WaiteParams {
|
|
96
112
|
condition: (driver?: WebDriver) => Promise<boolean>;
|
|
97
113
|
timeout?: number;
|
|
@@ -119,6 +135,7 @@ declare function signIn(driver?: WebDriver): Promise<WebDriver>;
|
|
|
119
135
|
* @returns {Promise<void>} A promise that resolves when the click action is complete.
|
|
120
136
|
*/
|
|
121
137
|
declare const click: (webElement: WebElement, driver?: WebDriver) => Promise<void>;
|
|
138
|
+
declare const contextMenu: (webElement: WebElement, driver?: WebDriver) => Promise<void>;
|
|
122
139
|
|
|
123
140
|
interface Editor {
|
|
124
141
|
setValue(value: any): Promise<void>;
|
|
@@ -138,7 +155,8 @@ declare enum ControlClass {
|
|
|
138
155
|
Date = "date-control",
|
|
139
156
|
SingleDateRange = "single-date-range-control",
|
|
140
157
|
BooleanSelector = "buttons-group",
|
|
141
|
-
ButtonGroup = "button-group-field"
|
|
158
|
+
ButtonGroup = "button-group-field",
|
|
159
|
+
HeaderFilterDictionary = "header-filter-dictionary"
|
|
142
160
|
}
|
|
143
161
|
|
|
144
162
|
interface ClearStrategy {
|
|
@@ -166,7 +184,7 @@ declare abstract class AbstractDXEditorWithInput extends AbstractElementWithPare
|
|
|
166
184
|
|
|
167
185
|
declare class TextEditor extends AbstractDXEditorWithInput {
|
|
168
186
|
constructor(parentCssSelector: string, elementCssSelector: string, driver?: WebDriver);
|
|
169
|
-
getValue(): Promise<string>;
|
|
187
|
+
getValue(): Promise<string | null>;
|
|
170
188
|
setValue(value: string): Promise<void>;
|
|
171
189
|
}
|
|
172
190
|
|
|
@@ -241,12 +259,14 @@ declare class SubsystemsPanel extends AbstractElement {
|
|
|
241
259
|
interface Button {
|
|
242
260
|
click(): Promise<void>;
|
|
243
261
|
isDisabled(): Promise<boolean>;
|
|
262
|
+
isDisplayed(): Promise<boolean>;
|
|
244
263
|
}
|
|
245
264
|
declare abstract class AbstractButton extends AbstractElementWithParent implements Button {
|
|
246
265
|
protected constructor(parentCssSelector: string, elementCssSelector: string, driver?: WebDriver);
|
|
247
266
|
protected abstract buttonNotDisplayedError(): string;
|
|
248
267
|
click(): Promise<void>;
|
|
249
268
|
isDisabled(): Promise<boolean>;
|
|
269
|
+
isDisplayed(): Promise<boolean>;
|
|
250
270
|
}
|
|
251
271
|
|
|
252
272
|
declare abstract class DXButton extends AbstractButton {
|
|
@@ -326,6 +346,9 @@ declare class AbstractForm extends AbstractPage {
|
|
|
326
346
|
group(name: string): FormGroup;
|
|
327
347
|
}
|
|
328
348
|
|
|
349
|
+
interface SubFormOptions {
|
|
350
|
+
isDockPanel?: boolean;
|
|
351
|
+
}
|
|
329
352
|
declare abstract class Form extends AbstractForm {
|
|
330
353
|
protected popupContainerCssSelector: string;
|
|
331
354
|
protected constructor(driver: WebDriver);
|
|
@@ -347,7 +370,15 @@ declare abstract class Form extends AbstractForm {
|
|
|
347
370
|
* //...
|
|
348
371
|
* expect(await form.subForm(name));
|
|
349
372
|
*/
|
|
350
|
-
subForm(name: string): Promise<unknown>;
|
|
373
|
+
subForm(name: string, options?: SubFormOptions): Promise<unknown>;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
declare class EditorButton extends AbstractElementWithParent {
|
|
377
|
+
private readonly name;
|
|
378
|
+
constructor(parentCssSelector: string, name: string, driver?: WebDriver);
|
|
379
|
+
protected buttonNotDisplayedError(): string;
|
|
380
|
+
click(): Promise<void>;
|
|
381
|
+
isDisplayed(): Promise<boolean>;
|
|
351
382
|
}
|
|
352
383
|
|
|
353
384
|
declare class AbstractEditor extends AbstractElementWithParent implements Editor {
|
|
@@ -387,6 +418,21 @@ declare class AbstractEditor extends AbstractElementWithParent implements Editor
|
|
|
387
418
|
* expect(await formEdit.field('TextFld').isReadonly()).toBe(false);
|
|
388
419
|
*/
|
|
389
420
|
isReadonly(): Promise<boolean>;
|
|
421
|
+
/**
|
|
422
|
+
* Возвращает значение true|false в зависимости isDisplayed поле или нет
|
|
423
|
+
* @example
|
|
424
|
+
* expect(await formEdit.field('NumberFld').isDisplayed()).toBe(true);
|
|
425
|
+
* expect(await formEdit.field('TextFld').isDisplayed()).toBe(false);
|
|
426
|
+
*/
|
|
427
|
+
isDisplayed(): Promise<boolean>;
|
|
428
|
+
/**
|
|
429
|
+
* Находит кнопку на поле по имени
|
|
430
|
+
* @example
|
|
431
|
+
* const form= new MyForm();
|
|
432
|
+
* //...
|
|
433
|
+
* await form.field('Name').button('editorButton).click()
|
|
434
|
+
*/
|
|
435
|
+
button(name: string): EditorButton;
|
|
390
436
|
}
|
|
391
437
|
|
|
392
438
|
declare class FormField extends AbstractEditor {
|
|
@@ -394,9 +440,10 @@ declare class FormField extends AbstractEditor {
|
|
|
394
440
|
}
|
|
395
441
|
|
|
396
442
|
declare class FormEdit extends Form {
|
|
397
|
-
|
|
398
|
-
|
|
443
|
+
saveButtonId: string;
|
|
444
|
+
closeButtonId: string;
|
|
399
445
|
constructor(driver: WebDriver);
|
|
446
|
+
private getButtonCssSelector;
|
|
400
447
|
/**
|
|
401
448
|
* Находит поле формы редактирования по имени
|
|
402
449
|
* @example
|
|
@@ -431,13 +478,27 @@ declare class FormEdit extends Form {
|
|
|
431
478
|
closeButtonClick(): Promise<void>;
|
|
432
479
|
}
|
|
433
480
|
|
|
434
|
-
declare class
|
|
435
|
-
|
|
481
|
+
declare abstract class AbstractDropDownMenuList extends AbstractElementWithParent {
|
|
482
|
+
protected abstract getButtonNameBy(name: string): By;
|
|
483
|
+
protected abstract getButtonTitleBy(name: string): By;
|
|
484
|
+
protected buttonNotDisplayedError(name: string): string;
|
|
485
|
+
private clickItemBy;
|
|
486
|
+
private clickItemByPath;
|
|
487
|
+
clickButton(name: string | string[]): Promise<void>;
|
|
488
|
+
clickButtonByTitle(title: string | string[]): Promise<void>;
|
|
489
|
+
isVisible(): Promise<boolean>;
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
declare abstract class AbstractDropDownMenuButton extends AbstractElementWithParent {
|
|
493
|
+
private readonly _list;
|
|
494
|
+
protected constructor(parentCssSelector: string, elementCssSelector: string, list: AbstractDropDownMenuList, driver?: WebDriver);
|
|
495
|
+
protected openDropdownMenu(): Promise<void>;
|
|
496
|
+
clickButton(name: string | string[]): Promise<void>;
|
|
497
|
+
clickButtonByTitle(title: string | string[]): Promise<void>;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
declare class ToolbarMenu extends AbstractDropDownMenuButton {
|
|
436
501
|
constructor(parentCssSelector: string, formName: string, name: string, driver?: WebDriver);
|
|
437
|
-
private openDropdownMenu;
|
|
438
|
-
private getCssSelectorToButton;
|
|
439
|
-
private buttonNotDisplayedError;
|
|
440
|
-
private goToButton;
|
|
441
502
|
clickButton(name: string | string[]): Promise<void>;
|
|
442
503
|
clickButtonByTitle(title: string | string[]): Promise<void>;
|
|
443
504
|
}
|
|
@@ -450,6 +511,7 @@ declare class ToolbarItem extends AbstractElementWithParent implements Button {
|
|
|
450
511
|
private init;
|
|
451
512
|
click(): Promise<void>;
|
|
452
513
|
isDisabled(): Promise<boolean>;
|
|
514
|
+
isDisplayed(): Promise<boolean>;
|
|
453
515
|
get menu(): ToolbarMenu;
|
|
454
516
|
}
|
|
455
517
|
|
|
@@ -460,12 +522,14 @@ declare class Cell extends AbstractElementWithParent {
|
|
|
460
522
|
private set index(value);
|
|
461
523
|
private getBooleanValue;
|
|
462
524
|
private getTagsValue;
|
|
525
|
+
private getNumberValue;
|
|
526
|
+
private getDateValue;
|
|
463
527
|
getElement(): Promise<WebElement>;
|
|
464
|
-
getValue(): Promise<string | 1 | 0 | string[]>;
|
|
528
|
+
getValue(): Promise<string | number | 1 | 0 | string[] | Date>;
|
|
465
529
|
getIndex(): number;
|
|
466
530
|
}
|
|
467
531
|
|
|
468
|
-
interface ConstructorParams {
|
|
532
|
+
interface ConstructorParams$1 {
|
|
469
533
|
parentCssSelector: string;
|
|
470
534
|
headerCssSelector?: string;
|
|
471
535
|
name?: string;
|
|
@@ -478,7 +542,7 @@ declare class Column extends AbstractElementWithParent {
|
|
|
478
542
|
private _caption;
|
|
479
543
|
private _name;
|
|
480
544
|
protected headerCssSelector: string | undefined;
|
|
481
|
-
constructor({ parentCssSelector, headerCssSelector, name, caption, index, driver }: ConstructorParams);
|
|
545
|
+
constructor({ parentCssSelector, headerCssSelector, name, caption, index, driver }: ConstructorParams$1);
|
|
482
546
|
private set index(value);
|
|
483
547
|
private get index();
|
|
484
548
|
getElement(): Promise<WebElement>;
|
|
@@ -490,12 +554,20 @@ declare class Column extends AbstractElementWithParent {
|
|
|
490
554
|
}
|
|
491
555
|
|
|
492
556
|
declare class Row extends AbstractElementWithParent {
|
|
493
|
-
index
|
|
557
|
+
private readonly index;
|
|
494
558
|
protected getColumnBy: (_: {
|
|
495
559
|
title?: string;
|
|
496
560
|
name?: string;
|
|
497
561
|
}) => Column;
|
|
498
|
-
|
|
562
|
+
protected fixedTableContentCssSelector: string;
|
|
563
|
+
/**
|
|
564
|
+
* @param parentCssSelector
|
|
565
|
+
* @param fixedTableContentCssSelector
|
|
566
|
+
* @param index починається з 0 (в getCssRowByIndexSelector додається +1)
|
|
567
|
+
* @param driver
|
|
568
|
+
* @param getColumnBy
|
|
569
|
+
*/
|
|
570
|
+
constructor(parentCssSelector: string, fixedTableContentCssSelector: string, index: number, driver?: WebDriver, getColumnBy?: (_: {
|
|
499
571
|
title?: string;
|
|
500
572
|
name?: string;
|
|
501
573
|
}) => Column);
|
|
@@ -514,15 +586,59 @@ declare class Row extends AbstractElementWithParent {
|
|
|
514
586
|
cancel(): Promise<void>;
|
|
515
587
|
}
|
|
516
588
|
|
|
589
|
+
declare abstract class DXContextMenuList extends AbstractDropDownMenuList {
|
|
590
|
+
/**
|
|
591
|
+
* @param parentCssSelector
|
|
592
|
+
* @param classNames - Список класів. Починається з крапки
|
|
593
|
+
* @param driver
|
|
594
|
+
*/
|
|
595
|
+
protected constructor(parentCssSelector: string, classNames: string, driver?: WebDriver);
|
|
596
|
+
protected getButtonTitleBy(title: string): By;
|
|
597
|
+
isVisible(): Promise<boolean>;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
declare class ContextMenu extends DXContextMenuList {
|
|
601
|
+
private readonly _formName;
|
|
602
|
+
private _initFn;
|
|
603
|
+
constructor(cssClass: string, formName: string, driver?: WebDriver);
|
|
604
|
+
setInit(cb: () => Promise<void>): this;
|
|
605
|
+
protected getButtonNameBy(name: string): By;
|
|
606
|
+
clickButtonByTitle(title: string | string[]): Promise<void>;
|
|
607
|
+
clickButton(name: string | string[]): Promise<void>;
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
interface ConstructorParams {
|
|
611
|
+
parentCssSelector: string;
|
|
612
|
+
headerCssSelector: string;
|
|
613
|
+
fixedTableContentCssSelector: string;
|
|
614
|
+
contextMenuCssSelector: string;
|
|
615
|
+
tableContentCssSelector: string;
|
|
616
|
+
formName: string;
|
|
617
|
+
driver?: WebDriver;
|
|
618
|
+
}
|
|
517
619
|
declare class Table extends AbstractElementWithParent {
|
|
518
620
|
protected formName: string;
|
|
519
621
|
protected headerCssSelector: string;
|
|
520
|
-
|
|
622
|
+
protected contextMenuCssSelector: string;
|
|
623
|
+
protected fixedTableContentCssSelector: string;
|
|
624
|
+
protected tableContentCssSelector: string;
|
|
625
|
+
constructor({ parentCssSelector, contextMenuCssSelector, tableContentCssSelector, headerCssSelector, fixedTableContentCssSelector, formName, driver }: ConstructorParams);
|
|
521
626
|
private getColumnBy;
|
|
627
|
+
/**
|
|
628
|
+
* Отримати рядок по індексу.
|
|
629
|
+
* @param index починається з 0
|
|
630
|
+
*/
|
|
522
631
|
getRowByIndex(index: number): Row;
|
|
632
|
+
/**
|
|
633
|
+
* @param index починається з 0
|
|
634
|
+
*/
|
|
523
635
|
getColumnByIndex(index: number): Column;
|
|
524
636
|
getColumnByTitle: (title: string) => Column;
|
|
525
637
|
getColumnByName: (name: string) => Column;
|
|
638
|
+
/**
|
|
639
|
+
* Вибрати рядок по індексу.
|
|
640
|
+
* @param index починається з 0
|
|
641
|
+
*/
|
|
526
642
|
selectRowByIndex(index: number): Promise<void>;
|
|
527
643
|
getRows(): Promise<Row[]>;
|
|
528
644
|
getColumns(): Promise<Column[]>;
|
|
@@ -535,6 +651,28 @@ declare class Table extends AbstractElementWithParent {
|
|
|
535
651
|
* expect(await form.field('Name').getValue()).toBe('test value');
|
|
536
652
|
*/
|
|
537
653
|
field(name: string): FormField;
|
|
654
|
+
/**
|
|
655
|
+
* Возвращает список строк которые выделены
|
|
656
|
+
* @returns Row[]
|
|
657
|
+
* @example
|
|
658
|
+
* const form = new MyForm();
|
|
659
|
+
* //...
|
|
660
|
+
* await form.getSelectedRows();
|
|
661
|
+
*/
|
|
662
|
+
getSelectedRows(): Promise<Row[]>;
|
|
663
|
+
/**
|
|
664
|
+
* Вызывает контекстное меню в области с данными.
|
|
665
|
+
* @param fieldName - имя поля
|
|
666
|
+
* @param [rowIndex] - индекс строки. Если значение не передано, то по умолчанию контекстное меню будет вызвано на первой выделенной строке.
|
|
667
|
+
* @throws {Error} Если нет выделенных строк, то выбросит исключение.
|
|
668
|
+
* @example
|
|
669
|
+
* const form = new MyForm();
|
|
670
|
+
* //...
|
|
671
|
+
* await form.contextMenu('FieldName').clickButton('OpenFormButton');
|
|
672
|
+
* // or
|
|
673
|
+
* await form.contextMenu('FieldName', 3).clickButton(['Group', 'ButtonInGroup']);
|
|
674
|
+
*/
|
|
675
|
+
contextMenu(fieldName: string, rowIndex?: number): ContextMenu;
|
|
538
676
|
}
|
|
539
677
|
|
|
540
678
|
declare class FormFilterField extends AbstractEditor {
|
|
@@ -553,8 +691,9 @@ declare class FormFilterField extends AbstractEditor {
|
|
|
553
691
|
* @example
|
|
554
692
|
* await form.formFilter('NumberFld').setValue(123);
|
|
555
693
|
* await form.formFilter('TextFld').setValue('TestValue');
|
|
694
|
+
* await form.formFilter('TextFld').setValue('TestValue', '=', true);
|
|
556
695
|
*/
|
|
557
|
-
setValue(value: any): Promise<void>;
|
|
696
|
+
setValue(value: any, operation?: string, isBlank?: boolean): Promise<void>;
|
|
558
697
|
/**
|
|
559
698
|
* Очищает значение в поле
|
|
560
699
|
* @example
|
|
@@ -613,8 +752,9 @@ declare class PanelFilterField extends AbstractEditor {
|
|
|
613
752
|
* @example
|
|
614
753
|
* await form.filterPanel.filterField('NumberFld').setValue(123);
|
|
615
754
|
* await form.filterPanel.filterField('TextFld').setValue('TestValue');
|
|
755
|
+
* await form.filterPanel.filterField('TextFld').setValue('TestValue', '=', true);
|
|
616
756
|
*/
|
|
617
|
-
setValue(value: any): Promise<void>;
|
|
757
|
+
setValue(value: any, operation?: string, isBlank?: boolean): Promise<void>;
|
|
618
758
|
/**
|
|
619
759
|
* Очищает значение в поле
|
|
620
760
|
* @example
|
|
@@ -720,8 +860,9 @@ declare class ColumnFilter extends AbstractElement {
|
|
|
720
860
|
* @example
|
|
721
861
|
* await form.columnFilter('NumberFld').setValue(123);
|
|
722
862
|
* await form.columnFilter('TextFld').setValue('TestValue');
|
|
863
|
+
* await form.columnFilter('TextFld').setValue('TestValue', '=', true);
|
|
723
864
|
*/
|
|
724
|
-
setValue(value: any): Promise<void>;
|
|
865
|
+
setValue(value: any, operation?: string, isBlank?: boolean): Promise<void>;
|
|
725
866
|
/**
|
|
726
867
|
* Очищает значение в поле
|
|
727
868
|
* @example
|
|
@@ -734,15 +875,41 @@ declare class ColumnFilter extends AbstractElement {
|
|
|
734
875
|
* await form.columnFilter('TagBox').remove('test');
|
|
735
876
|
*/
|
|
736
877
|
remove(itemText: string): Promise<void>;
|
|
878
|
+
/**
|
|
879
|
+
* Инициализация операции фильтра
|
|
880
|
+
*/
|
|
737
881
|
initOperation(): Promise<FilterOperation>;
|
|
882
|
+
/**
|
|
883
|
+
* Устанавливает операцию для фильтра
|
|
884
|
+
* @example
|
|
885
|
+
* await form.columnFilter('TagBox').setOperation("=");
|
|
886
|
+
*/
|
|
738
887
|
setOperation(operationName: string): Promise<void>;
|
|
888
|
+
/**
|
|
889
|
+
* Возвращает операцию фильтра
|
|
890
|
+
* @example
|
|
891
|
+
* expect(await form.columnFilter('NumberFld').getOperation()).toBe("=");
|
|
892
|
+
*/
|
|
739
893
|
getOperation(): Promise<any>;
|
|
894
|
+
/**
|
|
895
|
+
* Устанавливает операцию 'isblank' для фильтра
|
|
896
|
+
* @example
|
|
897
|
+
* await form.columnFilter('TagBox').setIsBlank(true);
|
|
898
|
+
*/
|
|
740
899
|
setIsBlank(value: boolean): Promise<void>;
|
|
900
|
+
/**
|
|
901
|
+
* Возвращает true|false, если операция 'isblank' установлена для фильтра
|
|
902
|
+
* @example
|
|
903
|
+
* expect(await form.columnFilter('NumberFld').getIsBlank()).toBe(false);
|
|
904
|
+
*/
|
|
741
905
|
getIsBlank(): Promise<boolean>;
|
|
742
906
|
}
|
|
743
907
|
|
|
744
908
|
declare class ListForm extends Form {
|
|
745
909
|
protected headerCssSelector: string;
|
|
910
|
+
protected fixedTableContentCssSelector: string;
|
|
911
|
+
protected tableContentCssSelector: string;
|
|
912
|
+
protected contextMenuCssSelector: string;
|
|
746
913
|
constructor(driver: WebDriver);
|
|
747
914
|
/**
|
|
748
915
|
* Находит таблицу
|
|
@@ -812,4 +979,4 @@ declare class Dialog extends AbstractElement {
|
|
|
812
979
|
button(text: string): DialogButton;
|
|
813
980
|
}
|
|
814
981
|
|
|
815
|
-
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 };
|
|
982
|
+
export { AbstractPage, ControlClass, Dialog, Editor, FilterPanel, FormEdit, FormField, FormFilterField, ListForm, LoginPage, NumberEditor, PanelFilterField, ReportForm, SubsystemsPanel, TextEditor, TreeView, byTestId, byTestIdCssSelector, click, config, contextMenu, createDriver, editorFactory, elementIsNotPresent, readonlyLocator, signIn, wait, waitElementIsClickable, waitElementIsVisible };
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TreeView
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LMFYREYI.mjs";
|
|
4
4
|
import {
|
|
5
5
|
FilterPanel,
|
|
6
6
|
FormFilterField,
|
|
7
7
|
ListForm,
|
|
8
8
|
PanelFilterField
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-PMZQRKUZ.mjs";
|
|
10
10
|
import {
|
|
11
11
|
FormEdit
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-WDYVVF7O.mjs";
|
|
13
13
|
import {
|
|
14
14
|
AbstractButton,
|
|
15
15
|
AbstractElement,
|
|
@@ -24,13 +24,15 @@ import {
|
|
|
24
24
|
byTestIdCssSelector,
|
|
25
25
|
click,
|
|
26
26
|
config,
|
|
27
|
+
contextMenu,
|
|
27
28
|
createSubSystemTestId,
|
|
28
29
|
editorFactory,
|
|
29
30
|
fixElementStaleError,
|
|
30
31
|
readonlyLocator,
|
|
31
32
|
wait,
|
|
33
|
+
waitElementIsClickable_default,
|
|
32
34
|
waitElementIsVisible
|
|
33
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-MV63JF3H.mjs";
|
|
34
36
|
|
|
35
37
|
// src/pageObjects/pages/LoginPage.ts
|
|
36
38
|
var LOGIN_PATH = "/login";
|
|
@@ -121,10 +123,22 @@ var SubsystemItem = class {
|
|
|
121
123
|
}
|
|
122
124
|
async getTitle() {
|
|
123
125
|
const el = await this.getElement();
|
|
126
|
+
await waitElementIsVisible(
|
|
127
|
+
{
|
|
128
|
+
element: el,
|
|
129
|
+
driver: this.driver
|
|
130
|
+
}
|
|
131
|
+
);
|
|
124
132
|
return await el.getAttribute("data-title");
|
|
125
133
|
}
|
|
126
134
|
async click() {
|
|
127
135
|
const el = await this.getElement();
|
|
136
|
+
await waitElementIsClickable_default(
|
|
137
|
+
{
|
|
138
|
+
element: el,
|
|
139
|
+
driver: this.driver
|
|
140
|
+
}
|
|
141
|
+
);
|
|
128
142
|
await click(el, this.driver);
|
|
129
143
|
}
|
|
130
144
|
};
|
|
@@ -159,6 +173,7 @@ var SubsystemsPanel = class extends AbstractElement {
|
|
|
159
173
|
*/
|
|
160
174
|
async search(title) {
|
|
161
175
|
const searchComponent = this.getSearchComponent();
|
|
176
|
+
await this.searchClear();
|
|
162
177
|
await searchComponent.setValue(title);
|
|
163
178
|
await wait(
|
|
164
179
|
async () => {
|
|
@@ -179,7 +194,7 @@ var SubsystemsPanel = class extends AbstractElement {
|
|
|
179
194
|
*/
|
|
180
195
|
async searchClear() {
|
|
181
196
|
const clearBtnSelector = `#aside ${byTestIdCssSelector(SEARCH_INPUT_SELECTOR)} .${DX_CLEAR_BUTTON_AREA}`;
|
|
182
|
-
const clearBtn = await
|
|
197
|
+
const clearBtn = await fixElementStaleError(By3.css(clearBtnSelector), this.driver);
|
|
183
198
|
if (await clearBtn.isDisplayed()) {
|
|
184
199
|
await click(clearBtn, this.driver);
|
|
185
200
|
}
|
|
@@ -213,7 +228,7 @@ var SubsystemsPanel = class extends AbstractElement {
|
|
|
213
228
|
* wait subsystemsPanel.back();
|
|
214
229
|
*/
|
|
215
230
|
async back() {
|
|
216
|
-
const backButton =
|
|
231
|
+
const backButton = await fixElementStaleError(By3.css(`#aside .${BACK_BUTTON_SELECTOR}`), this.driver);
|
|
217
232
|
await waitElementIsVisible(
|
|
218
233
|
{
|
|
219
234
|
element: backButton,
|
|
@@ -225,12 +240,11 @@ var SubsystemsPanel = class extends AbstractElement {
|
|
|
225
240
|
};
|
|
226
241
|
|
|
227
242
|
// src/pageObjects/elements/Forms/ReportForm.ts
|
|
228
|
-
import { By as By4 } from "selenium-webdriver";
|
|
229
243
|
var ReportForm = class extends FormEdit {
|
|
230
244
|
constructor(driver) {
|
|
231
245
|
super(driver);
|
|
232
|
-
this.popupContainerCssSelector = `.popup
|
|
233
|
-
this.
|
|
246
|
+
this.popupContainerCssSelector = `.popup.form-report-${this.formName}`;
|
|
247
|
+
this.saveButtonId = "#button-apply";
|
|
234
248
|
}
|
|
235
249
|
/**
|
|
236
250
|
* Знаходить поле/фільтр у формі репорту за ім'ям
|
|
@@ -245,7 +259,7 @@ var ReportForm = class extends FormEdit {
|
|
|
245
259
|
};
|
|
246
260
|
|
|
247
261
|
// src/pageObjects/elements/Dialog.ts
|
|
248
|
-
import { By as
|
|
262
|
+
import { By as By4 } from "selenium-webdriver";
|
|
249
263
|
var DIALOG_CLASS = ".d5-dialog";
|
|
250
264
|
var DIALOG_TITLE_CLASS = ".dialog__title";
|
|
251
265
|
var DIALOG_TEXT_CLASS = ".dialog__text";
|
|
@@ -259,7 +273,7 @@ var DialogButton = class extends AbstractButton {
|
|
|
259
273
|
}
|
|
260
274
|
async getElement() {
|
|
261
275
|
const panel = await super.getElement();
|
|
262
|
-
return panel.findElement(
|
|
276
|
+
return panel.findElement(By4.xpath(buttonByTextXpath(this.text)));
|
|
263
277
|
}
|
|
264
278
|
buttonNotDisplayedError() {
|
|
265
279
|
return `Dialog button ${this.text} cannot be clicked. It is not displayed or it is disabled`;
|
|
@@ -279,11 +293,11 @@ var Dialog = class extends AbstractElement {
|
|
|
279
293
|
return this.joinRelativeCssSelectors([DIALOG_CLASS, DIALOG_BUTTONS_PANEL_CLASS]);
|
|
280
294
|
}
|
|
281
295
|
async title() {
|
|
282
|
-
const el = await this.driver.findElement(
|
|
296
|
+
const el = await this.driver.findElement(By4.css(this.titleSelector));
|
|
283
297
|
return await el.getText();
|
|
284
298
|
}
|
|
285
299
|
async text() {
|
|
286
|
-
const el = await this.driver.findElement(
|
|
300
|
+
const el = await this.driver.findElement(By4.css(this.textSelector));
|
|
287
301
|
return await el.getText();
|
|
288
302
|
}
|
|
289
303
|
button(text) {
|
|
@@ -310,11 +324,13 @@ export {
|
|
|
310
324
|
byTestIdCssSelector,
|
|
311
325
|
click,
|
|
312
326
|
config,
|
|
327
|
+
contextMenu,
|
|
313
328
|
createDriver,
|
|
314
329
|
editorFactory,
|
|
315
330
|
elementIsNotPresent,
|
|
316
331
|
readonlyLocator,
|
|
317
332
|
signIn,
|
|
318
333
|
wait,
|
|
334
|
+
waitElementIsClickable_default as waitElementIsClickable,
|
|
319
335
|
waitElementIsVisible
|
|
320
336
|
};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TreeView
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LMFYREYI.mjs";
|
|
4
4
|
import {
|
|
5
5
|
FilterPanel,
|
|
6
6
|
FormFilterField,
|
|
7
7
|
ListForm,
|
|
8
8
|
PanelFilterField
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-PMZQRKUZ.mjs";
|
|
10
10
|
import {
|
|
11
11
|
FormEdit
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-WDYVVF7O.mjs";
|
|
13
13
|
import {
|
|
14
14
|
AbstractButton,
|
|
15
15
|
AbstractElement,
|
|
@@ -24,13 +24,15 @@ import {
|
|
|
24
24
|
byTestIdCssSelector,
|
|
25
25
|
click,
|
|
26
26
|
config,
|
|
27
|
+
contextMenu,
|
|
27
28
|
createSubSystemTestId,
|
|
28
29
|
editorFactory,
|
|
29
30
|
fixElementStaleError,
|
|
30
31
|
readonlyLocator,
|
|
31
32
|
wait,
|
|
33
|
+
waitElementIsClickable_default,
|
|
32
34
|
waitElementIsVisible
|
|
33
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-MV63JF3H.mjs";
|
|
34
36
|
|
|
35
37
|
// src/pageObjects/pages/LoginPage.ts
|
|
36
38
|
var LOGIN_PATH = "/login";
|
|
@@ -121,10 +123,22 @@ var SubsystemItem = class {
|
|
|
121
123
|
}
|
|
122
124
|
async getTitle() {
|
|
123
125
|
const el = await this.getElement();
|
|
126
|
+
await waitElementIsVisible(
|
|
127
|
+
{
|
|
128
|
+
element: el,
|
|
129
|
+
driver: this.driver
|
|
130
|
+
}
|
|
131
|
+
);
|
|
124
132
|
return await el.getAttribute("data-title");
|
|
125
133
|
}
|
|
126
134
|
async click() {
|
|
127
135
|
const el = await this.getElement();
|
|
136
|
+
await waitElementIsClickable_default(
|
|
137
|
+
{
|
|
138
|
+
element: el,
|
|
139
|
+
driver: this.driver
|
|
140
|
+
}
|
|
141
|
+
);
|
|
128
142
|
await click(el, this.driver);
|
|
129
143
|
}
|
|
130
144
|
};
|
|
@@ -159,6 +173,7 @@ var SubsystemsPanel = class extends AbstractElement {
|
|
|
159
173
|
*/
|
|
160
174
|
async search(title) {
|
|
161
175
|
const searchComponent = this.getSearchComponent();
|
|
176
|
+
await this.searchClear();
|
|
162
177
|
await searchComponent.setValue(title);
|
|
163
178
|
await wait(
|
|
164
179
|
async () => {
|
|
@@ -179,7 +194,7 @@ var SubsystemsPanel = class extends AbstractElement {
|
|
|
179
194
|
*/
|
|
180
195
|
async searchClear() {
|
|
181
196
|
const clearBtnSelector = `#aside ${byTestIdCssSelector(SEARCH_INPUT_SELECTOR)} .${DX_CLEAR_BUTTON_AREA}`;
|
|
182
|
-
const clearBtn = await
|
|
197
|
+
const clearBtn = await fixElementStaleError(By3.css(clearBtnSelector), this.driver);
|
|
183
198
|
if (await clearBtn.isDisplayed()) {
|
|
184
199
|
await click(clearBtn, this.driver);
|
|
185
200
|
}
|
|
@@ -213,7 +228,7 @@ var SubsystemsPanel = class extends AbstractElement {
|
|
|
213
228
|
* wait subsystemsPanel.back();
|
|
214
229
|
*/
|
|
215
230
|
async back() {
|
|
216
|
-
const backButton =
|
|
231
|
+
const backButton = await fixElementStaleError(By3.css(`#aside .${BACK_BUTTON_SELECTOR}`), this.driver);
|
|
217
232
|
await waitElementIsVisible(
|
|
218
233
|
{
|
|
219
234
|
element: backButton,
|
|
@@ -225,12 +240,11 @@ var SubsystemsPanel = class extends AbstractElement {
|
|
|
225
240
|
};
|
|
226
241
|
|
|
227
242
|
// src/pageObjects/elements/Forms/ReportForm.ts
|
|
228
|
-
import { By as By4 } from "selenium-webdriver";
|
|
229
243
|
var ReportForm = class extends FormEdit {
|
|
230
244
|
constructor(driver) {
|
|
231
245
|
super(driver);
|
|
232
|
-
this.popupContainerCssSelector = `.popup
|
|
233
|
-
this.
|
|
246
|
+
this.popupContainerCssSelector = `.popup.form-report-${this.formName}`;
|
|
247
|
+
this.saveButtonId = "#button-apply";
|
|
234
248
|
}
|
|
235
249
|
/**
|
|
236
250
|
* Знаходить поле/фільтр у формі репорту за ім'ям
|
|
@@ -245,7 +259,7 @@ var ReportForm = class extends FormEdit {
|
|
|
245
259
|
};
|
|
246
260
|
|
|
247
261
|
// src/pageObjects/elements/Dialog.ts
|
|
248
|
-
import { By as
|
|
262
|
+
import { By as By4 } from "selenium-webdriver";
|
|
249
263
|
var DIALOG_CLASS = ".d5-dialog";
|
|
250
264
|
var DIALOG_TITLE_CLASS = ".dialog__title";
|
|
251
265
|
var DIALOG_TEXT_CLASS = ".dialog__text";
|
|
@@ -259,7 +273,7 @@ var DialogButton = class extends AbstractButton {
|
|
|
259
273
|
}
|
|
260
274
|
async getElement() {
|
|
261
275
|
const panel = await super.getElement();
|
|
262
|
-
return panel.findElement(
|
|
276
|
+
return panel.findElement(By4.xpath(buttonByTextXpath(this.text)));
|
|
263
277
|
}
|
|
264
278
|
buttonNotDisplayedError() {
|
|
265
279
|
return `Dialog button ${this.text} cannot be clicked. It is not displayed or it is disabled`;
|
|
@@ -279,11 +293,11 @@ var Dialog = class extends AbstractElement {
|
|
|
279
293
|
return this.joinRelativeCssSelectors([DIALOG_CLASS, DIALOG_BUTTONS_PANEL_CLASS]);
|
|
280
294
|
}
|
|
281
295
|
async title() {
|
|
282
|
-
const el = await this.driver.findElement(
|
|
296
|
+
const el = await this.driver.findElement(By4.css(this.titleSelector));
|
|
283
297
|
return await el.getText();
|
|
284
298
|
}
|
|
285
299
|
async text() {
|
|
286
|
-
const el = await this.driver.findElement(
|
|
300
|
+
const el = await this.driver.findElement(By4.css(this.textSelector));
|
|
287
301
|
return await el.getText();
|
|
288
302
|
}
|
|
289
303
|
button(text) {
|
|
@@ -310,11 +324,13 @@ export {
|
|
|
310
324
|
byTestIdCssSelector,
|
|
311
325
|
click,
|
|
312
326
|
config,
|
|
327
|
+
contextMenu,
|
|
313
328
|
createDriver,
|
|
314
329
|
editorFactory,
|
|
315
330
|
elementIsNotPresent,
|
|
316
331
|
readonlyLocator,
|
|
317
332
|
signIn,
|
|
318
333
|
wait,
|
|
334
|
+
waitElementIsClickable_default as waitElementIsClickable,
|
|
319
335
|
waitElementIsVisible
|
|
320
336
|
};
|