@skbkontur/playwright-react-ui-components 1.13.0 → 1.13.2
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/build/src/components/ComponentList.d.ts +19 -0
- package/build/src/components/ComponentList.js +19 -0
- package/build/src/components/Loader.d.ts +6 -2
- package/build/src/components/Loader.js +4 -4
- package/build/src/components/Spinner.d.ts +6 -2
- package/build/src/components/Spinner.js +4 -4
- package/build/src/matchers/formattedMatchers.d.ts +3 -3
- package/build/src/matchers/formattedMatchers.js +9 -9
- package/build/src/matchers/mergedExpects.d.ts +12 -22
- package/package.json +4 -3
|
@@ -9,12 +9,31 @@ export declare class ComponentList<TItem extends BaseComponent> extends BaseComp
|
|
|
9
9
|
readonly itemsLocator: Locator;
|
|
10
10
|
constructor(rootLocator: Locator, itemsLocator: (rootLocator: Locator) => Locator, itemFactory: (locator: Locator) => TItem);
|
|
11
11
|
isVisible(options?: IsVisibleOptions): Promise<boolean>;
|
|
12
|
+
/**
|
|
13
|
+
* Поведение метода идентично вызову locator.all()
|
|
14
|
+
*
|
|
15
|
+
* getItems не ждет появления элементов, соответствующих локатору, а сразу возвращает всё, что есть на странице в данный момент.
|
|
16
|
+
* Когда список элементов меняется динамически, использование getItems приведёт к непредсказуемым и нестабильным результатам.
|
|
17
|
+
* Когда список элементов стабилен, но загружается динамически, необходимо дождаться полной загрузки списка перед вызовом getItems
|
|
18
|
+
*/
|
|
12
19
|
getItems(): Promise<TItem[]>;
|
|
20
|
+
/**
|
|
21
|
+
* Поведение метода идентично вызову locator.nth(0)
|
|
22
|
+
*/
|
|
13
23
|
getFirstItem(): Promise<TItem>;
|
|
24
|
+
/**
|
|
25
|
+
* Поведение метода идентично вызову locator.nth(-1)
|
|
26
|
+
*/
|
|
14
27
|
getLastItem(): Promise<TItem>;
|
|
28
|
+
/**
|
|
29
|
+
* Поведение метода идентично вызову locator.nth(index)
|
|
30
|
+
*/
|
|
15
31
|
getItemByIndex(index: number): Promise<TItem>;
|
|
16
32
|
getFirstItemByPredicate(predicate: (item: TItem) => Promise<boolean>): Promise<TItem>;
|
|
17
33
|
getItemsByPredicate(predicate: (item: TItem) => Promise<boolean>): Promise<TItem[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Поведение метода идентично вызову locator.count()
|
|
36
|
+
*/
|
|
18
37
|
count(): Promise<number>;
|
|
19
38
|
getTooltip(type: TooltipType): Promise<import("./Tooltip").Tooltip>;
|
|
20
39
|
expect(): ComponentListAssertions<TItem>;
|
|
@@ -75,6 +75,13 @@ var ComponentList = /** @class */ (function (_super) {
|
|
|
75
75
|
});
|
|
76
76
|
});
|
|
77
77
|
};
|
|
78
|
+
/**
|
|
79
|
+
* Поведение метода идентично вызову locator.all()
|
|
80
|
+
*
|
|
81
|
+
* getItems не ждет появления элементов, соответствующих локатору, а сразу возвращает всё, что есть на странице в данный момент.
|
|
82
|
+
* Когда список элементов меняется динамически, использование getItems приведёт к непредсказуемым и нестабильным результатам.
|
|
83
|
+
* Когда список элементов стабилен, но загружается динамически, необходимо дождаться полной загрузки списка перед вызовом getItems
|
|
84
|
+
*/
|
|
78
85
|
ComponentList.prototype.getItems = function () {
|
|
79
86
|
return __awaiter(this, void 0, void 0, function () {
|
|
80
87
|
var itemsLocators;
|
|
@@ -92,6 +99,9 @@ var ComponentList = /** @class */ (function (_super) {
|
|
|
92
99
|
});
|
|
93
100
|
});
|
|
94
101
|
};
|
|
102
|
+
/**
|
|
103
|
+
* Поведение метода идентично вызову locator.nth(0)
|
|
104
|
+
*/
|
|
95
105
|
ComponentList.prototype.getFirstItem = function () {
|
|
96
106
|
return __awaiter(this, void 0, void 0, function () {
|
|
97
107
|
return __generator(this, function (_a) {
|
|
@@ -99,6 +109,9 @@ var ComponentList = /** @class */ (function (_super) {
|
|
|
99
109
|
});
|
|
100
110
|
});
|
|
101
111
|
};
|
|
112
|
+
/**
|
|
113
|
+
* Поведение метода идентично вызову locator.nth(-1)
|
|
114
|
+
*/
|
|
102
115
|
ComponentList.prototype.getLastItem = function () {
|
|
103
116
|
return __awaiter(this, void 0, void 0, function () {
|
|
104
117
|
return __generator(this, function (_a) {
|
|
@@ -106,6 +119,9 @@ var ComponentList = /** @class */ (function (_super) {
|
|
|
106
119
|
});
|
|
107
120
|
});
|
|
108
121
|
};
|
|
122
|
+
/**
|
|
123
|
+
* Поведение метода идентично вызову locator.nth(index)
|
|
124
|
+
*/
|
|
109
125
|
ComponentList.prototype.getItemByIndex = function (index) {
|
|
110
126
|
return __awaiter(this, void 0, void 0, function () {
|
|
111
127
|
return __generator(this, function (_a) {
|
|
@@ -175,6 +191,9 @@ var ComponentList = /** @class */ (function (_super) {
|
|
|
175
191
|
});
|
|
176
192
|
});
|
|
177
193
|
};
|
|
194
|
+
/**
|
|
195
|
+
* Поведение метода идентично вызову locator.count()
|
|
196
|
+
*/
|
|
178
197
|
ComponentList.prototype.count = function () {
|
|
179
198
|
return __awaiter(this, void 0, void 0, function () {
|
|
180
199
|
return __generator(this, function (_a) {
|
|
@@ -5,7 +5,11 @@ import type { InnerTextOptions } from '../options';
|
|
|
5
5
|
export declare class Loader extends BaseComponent {
|
|
6
6
|
constructor(rootLocator: Locator);
|
|
7
7
|
getText(options?: InnerTextOptions): Promise<string>;
|
|
8
|
-
waitLoading(
|
|
9
|
-
|
|
8
|
+
waitLoading(options?: {
|
|
9
|
+
timeout?: number;
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
waitLoaded(options?: {
|
|
12
|
+
timeout?: number;
|
|
13
|
+
}): Promise<void>;
|
|
10
14
|
expect(): LoaderAssertions;
|
|
11
15
|
}
|
|
@@ -71,11 +71,11 @@ var Loader = /** @class */ (function (_super) {
|
|
|
71
71
|
});
|
|
72
72
|
});
|
|
73
73
|
};
|
|
74
|
-
Loader.prototype.waitLoading = function () {
|
|
74
|
+
Loader.prototype.waitLoading = function (options) {
|
|
75
75
|
return __awaiter(this, void 0, void 0, function () {
|
|
76
76
|
return __generator(this, function (_a) {
|
|
77
77
|
switch (_a.label) {
|
|
78
|
-
case 0: return [4 /*yield*/, this.waitFor()];
|
|
78
|
+
case 0: return [4 /*yield*/, this.waitFor(options)];
|
|
79
79
|
case 1:
|
|
80
80
|
_a.sent();
|
|
81
81
|
return [2 /*return*/];
|
|
@@ -83,11 +83,11 @@ var Loader = /** @class */ (function (_super) {
|
|
|
83
83
|
});
|
|
84
84
|
});
|
|
85
85
|
};
|
|
86
|
-
Loader.prototype.waitLoaded = function () {
|
|
86
|
+
Loader.prototype.waitLoaded = function (options) {
|
|
87
87
|
return __awaiter(this, void 0, void 0, function () {
|
|
88
88
|
return __generator(this, function (_a) {
|
|
89
89
|
switch (_a.label) {
|
|
90
|
-
case 0: return [4 /*yield*/, this.waitFor({ state: 'hidden' })];
|
|
90
|
+
case 0: return [4 /*yield*/, this.waitFor({ state: 'hidden', timeout: options === null || options === void 0 ? void 0 : options.timeout })];
|
|
91
91
|
case 1:
|
|
92
92
|
_a.sent();
|
|
93
93
|
return [2 /*return*/];
|
|
@@ -6,7 +6,11 @@ export declare class Spinner extends BaseComponent {
|
|
|
6
6
|
readonly rootLocator: Locator;
|
|
7
7
|
constructor(rootLocator: Locator);
|
|
8
8
|
getText(options?: InnerTextOptions): Promise<string>;
|
|
9
|
-
waitLoading(
|
|
10
|
-
|
|
9
|
+
waitLoading(options?: {
|
|
10
|
+
timeout?: number;
|
|
11
|
+
}): Promise<void>;
|
|
12
|
+
waitLoaded(options?: {
|
|
13
|
+
timeout?: number;
|
|
14
|
+
}): Promise<void>;
|
|
11
15
|
expect(): SpinnerAssertions;
|
|
12
16
|
}
|
|
@@ -71,11 +71,11 @@ var Spinner = /** @class */ (function (_super) {
|
|
|
71
71
|
});
|
|
72
72
|
});
|
|
73
73
|
};
|
|
74
|
-
Spinner.prototype.waitLoading = function () {
|
|
74
|
+
Spinner.prototype.waitLoading = function (options) {
|
|
75
75
|
return __awaiter(this, void 0, void 0, function () {
|
|
76
76
|
return __generator(this, function (_a) {
|
|
77
77
|
switch (_a.label) {
|
|
78
|
-
case 0: return [4 /*yield*/, this.waitFor()];
|
|
78
|
+
case 0: return [4 /*yield*/, this.waitFor(options)];
|
|
79
79
|
case 1:
|
|
80
80
|
_a.sent();
|
|
81
81
|
return [2 /*return*/];
|
|
@@ -83,11 +83,11 @@ var Spinner = /** @class */ (function (_super) {
|
|
|
83
83
|
});
|
|
84
84
|
});
|
|
85
85
|
};
|
|
86
|
-
Spinner.prototype.waitLoaded = function () {
|
|
86
|
+
Spinner.prototype.waitLoaded = function (options) {
|
|
87
87
|
return __awaiter(this, void 0, void 0, function () {
|
|
88
88
|
return __generator(this, function (_a) {
|
|
89
89
|
switch (_a.label) {
|
|
90
|
-
case 0: return [4 /*yield*/, this.waitFor({ state: 'hidden' })];
|
|
90
|
+
case 0: return [4 /*yield*/, this.waitFor({ state: 'hidden', timeout: options === null || options === void 0 ? void 0 : options.timeout })];
|
|
91
91
|
case 1:
|
|
92
92
|
_a.sent();
|
|
93
93
|
return [2 /*return*/];
|
|
@@ -12,7 +12,7 @@ export declare const formattedMatchers: import("@playwright/test").Expect<{
|
|
|
12
12
|
pass: boolean;
|
|
13
13
|
name: string;
|
|
14
14
|
expected: string;
|
|
15
|
-
actual:
|
|
15
|
+
actual: unknown;
|
|
16
16
|
}>;
|
|
17
17
|
toHaveFormattedText(this: ExpectMatcherState, locator: Locator, expected: string, options?: {
|
|
18
18
|
timeout?: number;
|
|
@@ -22,7 +22,7 @@ export declare const formattedMatchers: import("@playwright/test").Expect<{
|
|
|
22
22
|
pass: boolean;
|
|
23
23
|
name: string;
|
|
24
24
|
expected: string;
|
|
25
|
-
actual:
|
|
25
|
+
actual: unknown;
|
|
26
26
|
}>;
|
|
27
27
|
toContainFormattedText(this: ExpectMatcherState, locator: Locator, expected: string, options?: {
|
|
28
28
|
timeout?: number;
|
|
@@ -32,6 +32,6 @@ export declare const formattedMatchers: import("@playwright/test").Expect<{
|
|
|
32
32
|
pass: boolean;
|
|
33
33
|
name: string;
|
|
34
34
|
expected: string;
|
|
35
|
-
actual:
|
|
35
|
+
actual: unknown;
|
|
36
36
|
}>;
|
|
37
37
|
}>;
|
|
@@ -72,28 +72,28 @@ function toHaveFormatted(getter, assertionName, context, strictExpect) {
|
|
|
72
72
|
});
|
|
73
73
|
});
|
|
74
74
|
}
|
|
75
|
-
var _a, timeout, _b, transform, pass, actual,
|
|
76
|
-
return __generator(this, function (
|
|
77
|
-
switch (
|
|
75
|
+
var _a, timeout, _b, transform, pass, actual, _c, message;
|
|
76
|
+
return __generator(this, function (_d) {
|
|
77
|
+
switch (_d.label) {
|
|
78
78
|
case 0:
|
|
79
79
|
_a = options || {}, timeout = _a.timeout, _b = _a.transform, transform = _b === void 0 ? removeSpaces : _b;
|
|
80
|
-
|
|
80
|
+
_d.label = 1;
|
|
81
81
|
case 1:
|
|
82
|
-
|
|
82
|
+
_d.trys.push([1, 6, , 7]);
|
|
83
83
|
if (!strictExpect) return [3 /*break*/, 3];
|
|
84
84
|
return [4 /*yield*/, test_1.expect.poll(pollAndTransform, { timeout: timeout }).toEqual(transform(expected))];
|
|
85
85
|
case 2:
|
|
86
|
-
|
|
86
|
+
_d.sent();
|
|
87
87
|
return [3 /*break*/, 5];
|
|
88
88
|
case 3: return [4 /*yield*/, test_1.expect.poll(pollAndTransform, { timeout: timeout }).toContain(transform(expected))];
|
|
89
89
|
case 4:
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
_d.sent();
|
|
91
|
+
_d.label = 5;
|
|
92
92
|
case 5:
|
|
93
93
|
pass = true;
|
|
94
94
|
return [3 /*break*/, 7];
|
|
95
95
|
case 6:
|
|
96
|
-
|
|
96
|
+
_c = _d.sent();
|
|
97
97
|
pass = false;
|
|
98
98
|
return [3 /*break*/, 7];
|
|
99
99
|
case 7:
|
|
@@ -1,25 +1,15 @@
|
|
|
1
1
|
import { type Expect, type Locator } from '@playwright/test';
|
|
2
2
|
import type { TransformOptions } from '../options';
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
name: string;
|
|
15
|
-
expected: string;
|
|
16
|
-
actual: any;
|
|
17
|
-
}>;
|
|
18
|
-
toContainFormattedText(locator: Locator, expected: string, options?: TransformOptions): Promise<{
|
|
19
|
-
message: () => string;
|
|
20
|
-
pass: boolean;
|
|
21
|
-
name: string;
|
|
22
|
-
expected: string;
|
|
23
|
-
actual: any;
|
|
24
|
-
}>;
|
|
3
|
+
export interface FormattedMatcherResult {
|
|
4
|
+
message: () => string;
|
|
5
|
+
pass: boolean;
|
|
6
|
+
name: string;
|
|
7
|
+
expected: string;
|
|
8
|
+
actual: unknown;
|
|
9
|
+
}
|
|
10
|
+
export type ExtendedExpect = Expect<{
|
|
11
|
+
toHaveFormattedValue(locator: Locator, expected: string, options?: TransformOptions): Promise<FormattedMatcherResult>;
|
|
12
|
+
toHaveFormattedText(locator: Locator, expected: string, options?: TransformOptions): Promise<FormattedMatcherResult>;
|
|
13
|
+
toContainFormattedText(locator: Locator, expected: string, options?: TransformOptions): Promise<FormattedMatcherResult>;
|
|
25
14
|
}>;
|
|
15
|
+
export declare const mergedExpects: ExtendedExpect;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skbkontur/playwright-react-ui-components",
|
|
3
|
-
"version": "1.13.
|
|
3
|
+
"version": "1.13.2",
|
|
4
4
|
"description": "Пакет для взаимодействия с компонентами @skbkontur/react-ui при тестировании с помощью Playwright",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"files": [
|
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
"scripts": {
|
|
10
10
|
"prepare": "npm run build",
|
|
11
11
|
"build": "tsc",
|
|
12
|
-
"lint:eslint": "
|
|
13
|
-
"lint:types": "
|
|
12
|
+
"lint:eslint": "eslint --ext .ts,.tsx src --quiet",
|
|
13
|
+
"lint:types": "tsc --noEmit",
|
|
14
|
+
"test": "echo 'no tests in components package'"
|
|
14
15
|
},
|
|
15
16
|
"author": "Evgeniy Ivanov (https://staff.skbkontur.ru/profile/sephiroth) & Fintech",
|
|
16
17
|
"repository": {
|