d5-testing-library 1.9.0-alpha.2 → 1.9.0-alpha.22
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/README.md +1 -0
- package/dist/FormEdit-V2BBOANS.mjs +7 -0
- package/dist/ListForm-UBIG4ZP2.mjs +7 -0
- package/dist/TreeView-MIKFUI4Q.mjs +8 -0
- package/dist/{chunk-S62QEWWA.mjs → chunk-27XBX275.mjs} +121 -27
- package/dist/{chunk-32KSAOFJ.mjs → chunk-FRCMUAAY.mjs} +334 -64
- package/dist/{chunk-XGIXXZD6.mjs → chunk-GQKGCUVL.mjs} +1 -1
- package/dist/{chunk-75FRHQCI.mjs → chunk-ZWHGIJ3K.mjs} +4 -4
- package/dist/cjs/d5-testing-library.cjs +564 -160
- package/dist/cjs/d5-testing-library.d.ts +61 -2
- package/dist/d5-testing-library.d.mts +61 -2
- package/dist/d5-testing-library.legacy-esm.js +18 -5
- package/dist/d5-testing-library.mjs +18 -5
- package/package.json +7 -7
- package/dist/FormEdit-QNZOB7PA.mjs +0 -7
- package/dist/ListForm-MXGUBMWS.mjs +0 -7
- package/dist/TreeView-VZBOZCFW.mjs +0 -8
|
@@ -25,6 +25,7 @@ declare abstract class AbstractElement {
|
|
|
25
25
|
getAttribute(attr: string): Promise<string>;
|
|
26
26
|
getClasses(): Promise<string>;
|
|
27
27
|
getDataTestId(): Promise<string>;
|
|
28
|
+
getDataDateMode(): Promise<string>;
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
declare abstract class AbstractPage extends AbstractElement {
|
|
@@ -250,6 +251,7 @@ interface Button {
|
|
|
250
251
|
isDisabled(): Promise<boolean>;
|
|
251
252
|
isDisplayed(): Promise<boolean>;
|
|
252
253
|
getTitle(): Promise<string>;
|
|
254
|
+
isPressed(): Promise<boolean>;
|
|
253
255
|
}
|
|
254
256
|
declare abstract class AbstractButton extends AbstractElementWithParent implements Button {
|
|
255
257
|
protected constructor(parentCssSelector: string, elementCssSelector: string, driver: WebDriver);
|
|
@@ -257,6 +259,7 @@ declare abstract class AbstractButton extends AbstractElementWithParent implemen
|
|
|
257
259
|
click(): Promise<void>;
|
|
258
260
|
isDisabled(): Promise<boolean>;
|
|
259
261
|
isDisplayed(): Promise<boolean>;
|
|
262
|
+
isPressed(): Promise<boolean>;
|
|
260
263
|
abstract getTitle(): Promise<string>;
|
|
261
264
|
}
|
|
262
265
|
|
|
@@ -517,6 +520,7 @@ declare class ToolbarItem extends AbstractElementWithParent implements Button {
|
|
|
517
520
|
click(): Promise<void>;
|
|
518
521
|
isDisabled(): Promise<boolean>;
|
|
519
522
|
isDisplayed(): Promise<boolean>;
|
|
523
|
+
isPressed(): Promise<boolean>;
|
|
520
524
|
getTitle(): Promise<string>;
|
|
521
525
|
get menu(): ToolbarMenu;
|
|
522
526
|
}
|
|
@@ -581,7 +585,7 @@ declare class Row extends AbstractElementWithParent {
|
|
|
581
585
|
getCellByIndex(index: number): Cell;
|
|
582
586
|
getCell(name: string): Cell;
|
|
583
587
|
getCellByTitle(title: string): Cell;
|
|
584
|
-
select(): Promise<void>;
|
|
588
|
+
select(preserve?: boolean): Promise<void>;
|
|
585
589
|
isSelected(): Promise<boolean>;
|
|
586
590
|
getIndex(): number;
|
|
587
591
|
getCells(): Promise<Cell[]>;
|
|
@@ -644,8 +648,15 @@ declare class Table extends AbstractElementWithParent {
|
|
|
644
648
|
/**
|
|
645
649
|
* Вибрати рядок по індексу.
|
|
646
650
|
* @param index починається з 0
|
|
651
|
+
* @param preserve boolean який изначає, чи повинні раніше вибрані рядки залишатися вибраними
|
|
647
652
|
*/
|
|
648
|
-
selectRowByIndex(index: number): Promise<void>;
|
|
653
|
+
selectRowByIndex(index: number, preserve?: boolean): Promise<void>;
|
|
654
|
+
/**
|
|
655
|
+
* Вибрати масив рядків по індексу.
|
|
656
|
+
* @param indexes починається з 0
|
|
657
|
+
*/
|
|
658
|
+
selectRowsByIndexes(indexes: number[]): Promise<void>;
|
|
659
|
+
protected getRowElements(timeout?: number): Promise<selenium_webdriver.WebElement[]>;
|
|
649
660
|
getRows(): Promise<Row[]>;
|
|
650
661
|
getColumns(): Promise<Column[]>;
|
|
651
662
|
element(): Promise<selenium_webdriver.WebElement>;
|
|
@@ -679,6 +690,54 @@ declare class Table extends AbstractElementWithParent {
|
|
|
679
690
|
* await form.contextMenu('FieldName', 3).clickButton(['Group', 'ButtonInGroup']);
|
|
680
691
|
*/
|
|
681
692
|
contextMenu(fieldName: string, rowIndex?: number): ContextMenu;
|
|
693
|
+
/**
|
|
694
|
+
* Отримує значення комірки таблиці за ім'ям комірки та індексом рядка.
|
|
695
|
+
*
|
|
696
|
+
* @param {string} cellName - Ім'я комірки (поля) в таблиці
|
|
697
|
+
* @param {number} rowIndex - Індекс рядка (починається з 0)
|
|
698
|
+
* @throws {Error} Викидає помилку, якщо rowIndex не вказано
|
|
699
|
+
* @returns {Promise<string>} Повертає значення комірки
|
|
700
|
+
*
|
|
701
|
+
* @example
|
|
702
|
+
* const table = new Table(driver);
|
|
703
|
+
*
|
|
704
|
+
* // Отримання значення комірки 'Name' в першому рядку (індекс 0)
|
|
705
|
+
* const cellValue = await table.getCellValueByCellName('Name', 0);
|
|
706
|
+
* expect(cellValue).toBe('Очікуване значення');
|
|
707
|
+
*/
|
|
708
|
+
getCellValueByCellName(cellName: string, rowIndex: number): Promise<string | number | string[] | Date>;
|
|
709
|
+
/**
|
|
710
|
+
* Перевіряє, чи є таблиця порожньою (не містить жодного рядка з даними).
|
|
711
|
+
*
|
|
712
|
+
* @returns {Promise<boolean>} Повертає true, якщо таблиця порожня, false - якщо містить рядки
|
|
713
|
+
*
|
|
714
|
+
* @example
|
|
715
|
+
* const table = new Table(driver);
|
|
716
|
+
*
|
|
717
|
+
* // Перевірка чи порожня таблиця
|
|
718
|
+
* const empty = await table.isEmpty();
|
|
719
|
+
* expect(empty).toBe(true);
|
|
720
|
+
*/
|
|
721
|
+
isEmpty(): Promise<boolean>;
|
|
722
|
+
/**
|
|
723
|
+
* Очікує, поки кількість рядків у таблиці не стане рівною заданому значенню.
|
|
724
|
+
* Використовується для синхронізації тестів з динамічним завантаженням даних.
|
|
725
|
+
*
|
|
726
|
+
* @param {number} count - Очікувана кількість рядків у таблиці
|
|
727
|
+
* @returns {Promise<void>} Повертає Promise, який виконується, коли кількість рядків відповідає очікуваній
|
|
728
|
+
* @throws {Error} Викидає помилку, якщо очікування перевищує тайм-аут
|
|
729
|
+
*
|
|
730
|
+
* @example
|
|
731
|
+
* const table = new Table(driver);
|
|
732
|
+
*
|
|
733
|
+
* // Очікування, поки таблиця не стане порожньою
|
|
734
|
+
* await table.waitRowsCount(0);
|
|
735
|
+
*
|
|
736
|
+
* // Очікування, поки в таблиці не з'явиться 5 рядків
|
|
737
|
+
* await table.waitRowsCount(5);
|
|
738
|
+
* console.log('Таблиця містить 5 рядків');
|
|
739
|
+
*/
|
|
740
|
+
waitRowsCount(count: number): Promise<void>;
|
|
682
741
|
}
|
|
683
742
|
|
|
684
743
|
declare class FormFilterField extends AbstractEditor {
|
|
@@ -25,6 +25,7 @@ declare abstract class AbstractElement {
|
|
|
25
25
|
getAttribute(attr: string): Promise<string>;
|
|
26
26
|
getClasses(): Promise<string>;
|
|
27
27
|
getDataTestId(): Promise<string>;
|
|
28
|
+
getDataDateMode(): Promise<string>;
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
declare abstract class AbstractPage extends AbstractElement {
|
|
@@ -250,6 +251,7 @@ interface Button {
|
|
|
250
251
|
isDisabled(): Promise<boolean>;
|
|
251
252
|
isDisplayed(): Promise<boolean>;
|
|
252
253
|
getTitle(): Promise<string>;
|
|
254
|
+
isPressed(): Promise<boolean>;
|
|
253
255
|
}
|
|
254
256
|
declare abstract class AbstractButton extends AbstractElementWithParent implements Button {
|
|
255
257
|
protected constructor(parentCssSelector: string, elementCssSelector: string, driver: WebDriver);
|
|
@@ -257,6 +259,7 @@ declare abstract class AbstractButton extends AbstractElementWithParent implemen
|
|
|
257
259
|
click(): Promise<void>;
|
|
258
260
|
isDisabled(): Promise<boolean>;
|
|
259
261
|
isDisplayed(): Promise<boolean>;
|
|
262
|
+
isPressed(): Promise<boolean>;
|
|
260
263
|
abstract getTitle(): Promise<string>;
|
|
261
264
|
}
|
|
262
265
|
|
|
@@ -517,6 +520,7 @@ declare class ToolbarItem extends AbstractElementWithParent implements Button {
|
|
|
517
520
|
click(): Promise<void>;
|
|
518
521
|
isDisabled(): Promise<boolean>;
|
|
519
522
|
isDisplayed(): Promise<boolean>;
|
|
523
|
+
isPressed(): Promise<boolean>;
|
|
520
524
|
getTitle(): Promise<string>;
|
|
521
525
|
get menu(): ToolbarMenu;
|
|
522
526
|
}
|
|
@@ -581,7 +585,7 @@ declare class Row extends AbstractElementWithParent {
|
|
|
581
585
|
getCellByIndex(index: number): Cell;
|
|
582
586
|
getCell(name: string): Cell;
|
|
583
587
|
getCellByTitle(title: string): Cell;
|
|
584
|
-
select(): Promise<void>;
|
|
588
|
+
select(preserve?: boolean): Promise<void>;
|
|
585
589
|
isSelected(): Promise<boolean>;
|
|
586
590
|
getIndex(): number;
|
|
587
591
|
getCells(): Promise<Cell[]>;
|
|
@@ -644,8 +648,15 @@ declare class Table extends AbstractElementWithParent {
|
|
|
644
648
|
/**
|
|
645
649
|
* Вибрати рядок по індексу.
|
|
646
650
|
* @param index починається з 0
|
|
651
|
+
* @param preserve boolean який изначає, чи повинні раніше вибрані рядки залишатися вибраними
|
|
647
652
|
*/
|
|
648
|
-
selectRowByIndex(index: number): Promise<void>;
|
|
653
|
+
selectRowByIndex(index: number, preserve?: boolean): Promise<void>;
|
|
654
|
+
/**
|
|
655
|
+
* Вибрати масив рядків по індексу.
|
|
656
|
+
* @param indexes починається з 0
|
|
657
|
+
*/
|
|
658
|
+
selectRowsByIndexes(indexes: number[]): Promise<void>;
|
|
659
|
+
protected getRowElements(timeout?: number): Promise<selenium_webdriver.WebElement[]>;
|
|
649
660
|
getRows(): Promise<Row[]>;
|
|
650
661
|
getColumns(): Promise<Column[]>;
|
|
651
662
|
element(): Promise<selenium_webdriver.WebElement>;
|
|
@@ -679,6 +690,54 @@ declare class Table extends AbstractElementWithParent {
|
|
|
679
690
|
* await form.contextMenu('FieldName', 3).clickButton(['Group', 'ButtonInGroup']);
|
|
680
691
|
*/
|
|
681
692
|
contextMenu(fieldName: string, rowIndex?: number): ContextMenu;
|
|
693
|
+
/**
|
|
694
|
+
* Отримує значення комірки таблиці за ім'ям комірки та індексом рядка.
|
|
695
|
+
*
|
|
696
|
+
* @param {string} cellName - Ім'я комірки (поля) в таблиці
|
|
697
|
+
* @param {number} rowIndex - Індекс рядка (починається з 0)
|
|
698
|
+
* @throws {Error} Викидає помилку, якщо rowIndex не вказано
|
|
699
|
+
* @returns {Promise<string>} Повертає значення комірки
|
|
700
|
+
*
|
|
701
|
+
* @example
|
|
702
|
+
* const table = new Table(driver);
|
|
703
|
+
*
|
|
704
|
+
* // Отримання значення комірки 'Name' в першому рядку (індекс 0)
|
|
705
|
+
* const cellValue = await table.getCellValueByCellName('Name', 0);
|
|
706
|
+
* expect(cellValue).toBe('Очікуване значення');
|
|
707
|
+
*/
|
|
708
|
+
getCellValueByCellName(cellName: string, rowIndex: number): Promise<string | number | string[] | Date>;
|
|
709
|
+
/**
|
|
710
|
+
* Перевіряє, чи є таблиця порожньою (не містить жодного рядка з даними).
|
|
711
|
+
*
|
|
712
|
+
* @returns {Promise<boolean>} Повертає true, якщо таблиця порожня, false - якщо містить рядки
|
|
713
|
+
*
|
|
714
|
+
* @example
|
|
715
|
+
* const table = new Table(driver);
|
|
716
|
+
*
|
|
717
|
+
* // Перевірка чи порожня таблиця
|
|
718
|
+
* const empty = await table.isEmpty();
|
|
719
|
+
* expect(empty).toBe(true);
|
|
720
|
+
*/
|
|
721
|
+
isEmpty(): Promise<boolean>;
|
|
722
|
+
/**
|
|
723
|
+
* Очікує, поки кількість рядків у таблиці не стане рівною заданому значенню.
|
|
724
|
+
* Використовується для синхронізації тестів з динамічним завантаженням даних.
|
|
725
|
+
*
|
|
726
|
+
* @param {number} count - Очікувана кількість рядків у таблиці
|
|
727
|
+
* @returns {Promise<void>} Повертає Promise, який виконується, коли кількість рядків відповідає очікуваній
|
|
728
|
+
* @throws {Error} Викидає помилку, якщо очікування перевищує тайм-аут
|
|
729
|
+
*
|
|
730
|
+
* @example
|
|
731
|
+
* const table = new Table(driver);
|
|
732
|
+
*
|
|
733
|
+
* // Очікування, поки таблиця не стане порожньою
|
|
734
|
+
* await table.waitRowsCount(0);
|
|
735
|
+
*
|
|
736
|
+
* // Очікування, поки в таблиці не з'явиться 5 рядків
|
|
737
|
+
* await table.waitRowsCount(5);
|
|
738
|
+
* console.log('Таблиця містить 5 рядків');
|
|
739
|
+
*/
|
|
740
|
+
waitRowsCount(count: number): Promise<void>;
|
|
682
741
|
}
|
|
683
742
|
|
|
684
743
|
declare class FormFilterField extends AbstractEditor {
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TreeView
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ZWHGIJ3K.mjs";
|
|
4
4
|
import {
|
|
5
5
|
FilterPanel,
|
|
6
6
|
FormFilterField,
|
|
7
7
|
ListForm,
|
|
8
8
|
PanelFilterField
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-27XBX275.mjs";
|
|
10
10
|
import {
|
|
11
11
|
FormEdit
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-GQKGCUVL.mjs";
|
|
13
13
|
import {
|
|
14
14
|
AbstractButton,
|
|
15
15
|
AbstractElement,
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
safeWait,
|
|
33
33
|
waitElementIsClickable_default,
|
|
34
34
|
waitElementIsVisible_default
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-FRCMUAAY.mjs";
|
|
36
36
|
|
|
37
37
|
// src/pageObjects/pages/LoginPage.ts
|
|
38
38
|
import { By } from "selenium-webdriver";
|
|
@@ -78,13 +78,24 @@ var LoginPage = class extends AbstractPage {
|
|
|
78
78
|
|
|
79
79
|
// src/utils/createDriver.ts
|
|
80
80
|
import { Builder } from "selenium-webdriver";
|
|
81
|
+
import path from "node:path";
|
|
82
|
+
import fs from "node:fs";
|
|
83
|
+
import os from "node:os";
|
|
81
84
|
import Chrome from "selenium-webdriver/chrome";
|
|
82
85
|
import Firefox from "selenium-webdriver/firefox";
|
|
83
86
|
function chromeOptions(builder, options) {
|
|
84
87
|
const ChromeOptions = new Chrome.Options();
|
|
85
88
|
if (options.headless) {
|
|
86
89
|
ChromeOptions.addArguments(`--headless=new`);
|
|
90
|
+
ChromeOptions.addArguments(`--disable-gpu`);
|
|
91
|
+
ChromeOptions.addArguments(`--disable-dev-shm-usage`);
|
|
92
|
+
ChromeOptions.addArguments(`--window-size=1920,1080`);
|
|
87
93
|
}
|
|
94
|
+
const userDataDir = path.join(os.tmpdir(), ".chrome-cache");
|
|
95
|
+
if (!fs.existsSync(userDataDir)) {
|
|
96
|
+
fs.mkdirSync(userDataDir, { recursive: true });
|
|
97
|
+
}
|
|
98
|
+
ChromeOptions.addArguments(`--user-data-dir=${userDataDir}`);
|
|
88
99
|
return builder.setChromeOptions(ChromeOptions);
|
|
89
100
|
}
|
|
90
101
|
function firefoxOptions(builder, options) {
|
|
@@ -112,7 +123,9 @@ var createDriver = async (browser) => {
|
|
|
112
123
|
const driver = await builder.build();
|
|
113
124
|
const manage = driver.manage();
|
|
114
125
|
await manage.setTimeouts({ implicit: config().timeout });
|
|
115
|
-
|
|
126
|
+
if (!headless) {
|
|
127
|
+
await manage.window().maximize();
|
|
128
|
+
}
|
|
116
129
|
return driver;
|
|
117
130
|
};
|
|
118
131
|
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TreeView
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ZWHGIJ3K.mjs";
|
|
4
4
|
import {
|
|
5
5
|
FilterPanel,
|
|
6
6
|
FormFilterField,
|
|
7
7
|
ListForm,
|
|
8
8
|
PanelFilterField
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-27XBX275.mjs";
|
|
10
10
|
import {
|
|
11
11
|
FormEdit
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-GQKGCUVL.mjs";
|
|
13
13
|
import {
|
|
14
14
|
AbstractButton,
|
|
15
15
|
AbstractElement,
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
safeWait,
|
|
33
33
|
waitElementIsClickable_default,
|
|
34
34
|
waitElementIsVisible_default
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-FRCMUAAY.mjs";
|
|
36
36
|
|
|
37
37
|
// src/pageObjects/pages/LoginPage.ts
|
|
38
38
|
import { By } from "selenium-webdriver";
|
|
@@ -78,13 +78,24 @@ var LoginPage = class extends AbstractPage {
|
|
|
78
78
|
|
|
79
79
|
// src/utils/createDriver.ts
|
|
80
80
|
import { Builder } from "selenium-webdriver";
|
|
81
|
+
import path from "node:path";
|
|
82
|
+
import fs from "node:fs";
|
|
83
|
+
import os from "node:os";
|
|
81
84
|
import Chrome from "selenium-webdriver/chrome";
|
|
82
85
|
import Firefox from "selenium-webdriver/firefox";
|
|
83
86
|
function chromeOptions(builder, options) {
|
|
84
87
|
const ChromeOptions = new Chrome.Options();
|
|
85
88
|
if (options.headless) {
|
|
86
89
|
ChromeOptions.addArguments(`--headless=new`);
|
|
90
|
+
ChromeOptions.addArguments(`--disable-gpu`);
|
|
91
|
+
ChromeOptions.addArguments(`--disable-dev-shm-usage`);
|
|
92
|
+
ChromeOptions.addArguments(`--window-size=1920,1080`);
|
|
87
93
|
}
|
|
94
|
+
const userDataDir = path.join(os.tmpdir(), ".chrome-cache");
|
|
95
|
+
if (!fs.existsSync(userDataDir)) {
|
|
96
|
+
fs.mkdirSync(userDataDir, { recursive: true });
|
|
97
|
+
}
|
|
98
|
+
ChromeOptions.addArguments(`--user-data-dir=${userDataDir}`);
|
|
88
99
|
return builder.setChromeOptions(ChromeOptions);
|
|
89
100
|
}
|
|
90
101
|
function firefoxOptions(builder, options) {
|
|
@@ -112,7 +123,9 @@ var createDriver = async (browser) => {
|
|
|
112
123
|
const driver = await builder.build();
|
|
113
124
|
const manage = driver.manage();
|
|
114
125
|
await manage.setTimeouts({ implicit: config().timeout });
|
|
115
|
-
|
|
126
|
+
if (!headless) {
|
|
127
|
+
await manage.window().maximize();
|
|
128
|
+
}
|
|
116
129
|
return driver;
|
|
117
130
|
};
|
|
118
131
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "d5-testing-library",
|
|
3
|
-
"version": "1.9.0-alpha.
|
|
3
|
+
"version": "1.9.0-alpha.22",
|
|
4
4
|
"description": "e2e testing D5 projects",
|
|
5
5
|
"main": "dist/cjs/d5-testing-library.cjs",
|
|
6
6
|
"module": "dist/d5-testing-library.legacy-esm.js",
|
|
@@ -38,23 +38,23 @@
|
|
|
38
38
|
"author": "",
|
|
39
39
|
"license": "ISC",
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"selenium-webdriver": "4.
|
|
41
|
+
"selenium-webdriver": "4.34.0",
|
|
42
42
|
"typescript": "5.8.2"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@babel/core": "7.
|
|
45
|
+
"@babel/core": "7.27.4",
|
|
46
46
|
"@types/node": "20.11.16",
|
|
47
|
-
"@types/jest": "
|
|
47
|
+
"@types/jest": "30.0.0",
|
|
48
48
|
"@types/selenium-webdriver": "4.1.28",
|
|
49
49
|
"commander": "12.1.0",
|
|
50
50
|
"esbuild-extra": "0.4.0",
|
|
51
51
|
"rimraf": "5.0.10",
|
|
52
|
-
"jest": "
|
|
53
|
-
"ts-jest": "29.
|
|
52
|
+
"jest": "30.0.5",
|
|
53
|
+
"ts-jest": "29.4.0",
|
|
54
54
|
"tsup": "8.4.0"
|
|
55
55
|
},
|
|
56
56
|
"peerDependencies": {
|
|
57
|
-
"selenium-webdriver": "4.
|
|
57
|
+
"selenium-webdriver": "4.34.0"
|
|
58
58
|
},
|
|
59
59
|
"jest": {
|
|
60
60
|
"preset": "ts-jest",
|