@skbkontur/playwright-react-ui-components 1.14.0-beta.1 → 1.14.0-beta.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.
Files changed (117) hide show
  1. package/build/src/assertions/AutocompleteAssertions.js +1 -1
  2. package/build/src/assertions/CheckboxAssertions.js +1 -1
  3. package/build/src/assertions/ComboBoxAssertions.js +4 -4
  4. package/build/src/assertions/DropdownAssertions.js +4 -4
  5. package/build/src/assertions/DropdownMenuAssertions.js +4 -4
  6. package/build/src/assertions/FileUploaderAssertions.js +1 -1
  7. package/build/src/assertions/FxInputAssertions.js +2 -2
  8. package/build/src/assertions/InputAssertions.js +1 -1
  9. package/build/src/assertions/KebabAssertions.js +4 -4
  10. package/build/src/assertions/LabelAssertions.js +2 -2
  11. package/build/src/assertions/LinkAssertions.js +2 -2
  12. package/build/src/assertions/PagingAssertions.js +2 -2
  13. package/build/src/assertions/RadioGroupAssertions.js +6 -6
  14. package/build/src/assertions/SelectAssertions.js +2 -2
  15. package/build/src/assertions/TabAssertions.js +2 -2
  16. package/build/src/assertions/TabsAssertions.js +3 -3
  17. package/build/src/assertions/TokenAssertions.js +1 -1
  18. package/build/src/assertions/TokenInputAssertions.js +1 -1
  19. package/build/src/components/ComboBox.d.ts +1 -2
  20. package/build/src/components/ComboBox.js +53 -54
  21. package/build/src/components/Dropdown.d.ts +1 -2
  22. package/build/src/components/Dropdown.js +61 -62
  23. package/build/src/components/DropdownMenu.d.ts +1 -2
  24. package/build/src/components/DropdownMenu.js +61 -62
  25. package/build/src/components/Kebab.d.ts +1 -2
  26. package/build/src/components/Kebab.js +43 -44
  27. package/build/src/components/MenuComponent.d.ts +2 -1
  28. package/build/src/components/MenuComponent.js +6 -5
  29. package/build/src/matchers/component/toBeActiveTab.d.ts +3 -0
  30. package/build/src/matchers/component/{toBeActiveEx.js → toBeActiveTab.js} +2 -2
  31. package/build/src/matchers/component/toBeAutoMode.d.ts +3 -0
  32. package/build/src/matchers/component/{toBeAutoEx.js → toBeAutoMode.js} +2 -2
  33. package/build/src/matchers/component/toBeCheckedByIndex.d.ts +3 -0
  34. package/build/src/matchers/component/{toBeUncheckedByIndexEx.js → toBeCheckedByIndex.js} +4 -4
  35. package/build/src/matchers/component/toBeCheckedByText.d.ts +3 -0
  36. package/build/src/matchers/component/{toBeCheckedByTextEx.js → toBeCheckedByText.js} +2 -2
  37. package/build/src/matchers/component/toBeCheckedByValue.d.ts +3 -0
  38. package/build/src/matchers/component/{toBeCheckedByValueEx.js → toBeCheckedByValue.js} +2 -2
  39. package/build/src/matchers/component/toBeDisabledEx.d.ts +1 -1
  40. package/build/src/matchers/component/toBeDisabledEx.js +7 -8
  41. package/build/src/matchers/component/toBeEmptyEx.d.ts +1 -1
  42. package/build/src/matchers/component/toBeEmptyEx.js +4 -5
  43. package/build/src/matchers/component/toBeEnabledEx.js +15 -25
  44. package/build/src/matchers/component/toBeHiddenEx.js +1 -2
  45. package/build/src/matchers/component/toBeInactiveTab.d.ts +3 -0
  46. package/build/src/matchers/component/{toBeInactiveEx.js → toBeInactiveTab.js} +2 -2
  47. package/build/src/matchers/component/toBeUnchecked.d.ts +3 -0
  48. package/build/src/matchers/component/{toBeUncheckedEx.js → toBeUnchecked.js} +2 -2
  49. package/build/src/matchers/component/{toBeCheckedByIndexEx.d.ts → toBeUncheckedByIndex.d.ts} +2 -2
  50. package/build/src/matchers/component/{toBeCheckedByIndexEx.js → toBeUncheckedByIndex.js} +4 -4
  51. package/build/src/matchers/component/{toBeCheckedByTextEx.d.ts → toBeUncheckedByText.d.ts} +2 -2
  52. package/build/src/matchers/component/{toBeUncheckedByTextEx.js → toBeUncheckedByText.js} +3 -3
  53. package/build/src/matchers/component/{toBeCheckedByValueEx.d.ts → toBeUncheckedByValue.d.ts} +2 -2
  54. package/build/src/matchers/component/{toBeUncheckedByValueEx.js → toBeUncheckedByValue.js} +3 -3
  55. package/build/src/matchers/component/toBeVisibleEx.js +1 -2
  56. package/build/src/matchers/component/toContainFormattedText.d.ts +3 -0
  57. package/build/src/matchers/component/{toContainFormattedTextEx.js → toContainFormattedText.js} +2 -2
  58. package/build/src/matchers/component/toContainItem.d.ts +4 -0
  59. package/build/src/matchers/component/{toContainItemEx.js → toContainItem.js} +2 -3
  60. package/build/src/matchers/component/toContainItems.d.ts +3 -0
  61. package/build/src/matchers/component/{toContainItemsEx.js → toContainItems.js} +4 -4
  62. package/build/src/matchers/component/toContainSelectValue.d.ts +3 -0
  63. package/build/src/matchers/component/{toContainValueEx.js → toContainSelectValue.js} +2 -2
  64. package/build/src/matchers/component/toContainTabs.d.ts +3 -0
  65. package/build/src/matchers/component/{toContainTabsEx.js → toContainTabs.js} +2 -2
  66. package/build/src/matchers/component/{toContainTokensEx.d.ts → toContainTokens.d.ts} +1 -1
  67. package/build/src/matchers/component/{toContainTokensEx.js → toContainTokens.js} +2 -2
  68. package/build/src/matchers/component/toContainUploadedFiles.d.ts +4 -0
  69. package/build/src/matchers/component/{toContainUploadedFilesEx.js → toContainUploadedFiles.js} +2 -2
  70. package/build/src/matchers/component/{toHavePageCountEx.d.ts → toHaveActivePage.d.ts} +1 -1
  71. package/build/src/matchers/component/{toHaveActivePageEx.js → toHaveActivePage.js} +2 -2
  72. package/build/src/matchers/component/toHaveActiveTab.d.ts +2 -0
  73. package/build/src/matchers/component/{toHaveActiveTabEx.js → toHaveActiveTab.js} +4 -4
  74. package/build/src/matchers/component/toHaveError.d.ts +3 -0
  75. package/build/src/matchers/component/{toHaveWarningEx.js → toHaveError.js} +3 -3
  76. package/build/src/matchers/component/toHaveFormattedText.d.ts +3 -0
  77. package/build/src/matchers/component/{toHaveFormattedTextEx.js → toHaveFormattedText.js} +2 -2
  78. package/build/src/matchers/component/toHaveFormattedValue.d.ts +3 -0
  79. package/build/src/matchers/component/{toHaveFormattedValueEx.js → toHaveFormattedValue.js} +2 -2
  80. package/build/src/matchers/component/toHaveHref.d.ts +3 -0
  81. package/build/src/matchers/component/{toHaveHrefEx.js → toHaveHref.js} +2 -2
  82. package/build/src/matchers/component/toHaveItems.d.ts +3 -0
  83. package/build/src/matchers/component/{toHaveItemsEx.js → toHaveItems.js} +4 -4
  84. package/build/src/matchers/component/{toHaveActivePageEx.d.ts → toHavePageCount.d.ts} +1 -1
  85. package/build/src/matchers/component/{toHavePageCountEx.js → toHavePageCount.js} +2 -2
  86. package/build/src/matchers/component/toHaveValueEx.d.ts +1 -1
  87. package/build/src/matchers/component/toHaveValueEx.js +4 -5
  88. package/build/src/matchers/component/{toHaveErrorEx.d.ts → toHaveWarning.d.ts} +2 -2
  89. package/build/src/matchers/component/{toHaveErrorEx.js → toHaveWarning.js} +3 -3
  90. package/build/src/matchers/componentMatchers.d.ts +76 -76
  91. package/build/src/matchers/componentMatchers.js +61 -55
  92. package/build/src/matchers/createAsyncMatcher.d.ts +35 -10
  93. package/build/src/matchers/createAsyncMatcher.js +38 -13
  94. package/build/src/utils/toMatchMessage.d.ts +11 -0
  95. package/build/src/utils/toMatchMessage.js +11 -0
  96. package/package.json +1 -1
  97. package/build/src/matchers/component/toBeActiveEx.d.ts +0 -3
  98. package/build/src/matchers/component/toBeAutoEx.d.ts +0 -3
  99. package/build/src/matchers/component/toBeInactiveEx.d.ts +0 -3
  100. package/build/src/matchers/component/toBeUncheckedByIndexEx.d.ts +0 -3
  101. package/build/src/matchers/component/toBeUncheckedByTextEx.d.ts +0 -3
  102. package/build/src/matchers/component/toBeUncheckedByValueEx.d.ts +0 -3
  103. package/build/src/matchers/component/toBeUncheckedEx.d.ts +0 -3
  104. package/build/src/matchers/component/toContainFormattedTextEx.d.ts +0 -3
  105. package/build/src/matchers/component/toContainItemEx.d.ts +0 -4
  106. package/build/src/matchers/component/toContainItemsEx.d.ts +0 -3
  107. package/build/src/matchers/component/toContainTabsEx.d.ts +0 -3
  108. package/build/src/matchers/component/toContainUploadedFilesEx.d.ts +0 -4
  109. package/build/src/matchers/component/toContainValueEx.d.ts +0 -3
  110. package/build/src/matchers/component/toHaveActiveTabEx.d.ts +0 -2
  111. package/build/src/matchers/component/toHaveFormattedTextEx.d.ts +0 -3
  112. package/build/src/matchers/component/toHaveFormattedValueEx.d.ts +0 -3
  113. package/build/src/matchers/component/toHaveHrefEx.d.ts +0 -3
  114. package/build/src/matchers/component/toHaveItemsEx.d.ts +0 -3
  115. package/build/src/matchers/component/toHaveWarningEx.d.ts +0 -3
  116. package/build/src/utils/is.d.ts +0 -3
  117. package/build/src/utils/is.js +0 -5
@@ -7,77 +7,83 @@ var toBeVisibleEx_1 = require("./component/toBeVisibleEx");
7
7
  var toBeHiddenEx_1 = require("./component/toBeHiddenEx");
8
8
  var toBeEnabledEx_1 = require("./component/toBeEnabledEx");
9
9
  var toBeDisabledEx_1 = require("./component/toBeDisabledEx");
10
- var toHaveErrorEx_1 = require("./component/toHaveErrorEx");
11
- var toHaveWarningEx_1 = require("./component/toHaveWarningEx");
12
10
  var toHaveAttributeEx_1 = require("./component/toHaveAttributeEx");
13
11
  var toHaveValueEx_1 = require("./component/toHaveValueEx");
14
12
  var toBeFocusedEx_1 = require("./component/toBeFocusedEx");
15
- var toContainUploadedFilesEx_1 = require("./component/toContainUploadedFilesEx");
16
13
  var toBeCheckedEx_1 = require("./component/toBeCheckedEx");
17
- var toBeUncheckedEx_1 = require("./component/toBeUncheckedEx");
14
+ var toBeUnchecked_1 = require("./component/toBeUnchecked");
18
15
  var toHaveTextEx_1 = require("./component/toHaveTextEx");
19
16
  var toContainTextEx_1 = require("./component/toContainTextEx");
20
- var toHaveItemsEx_1 = require("./component/toHaveItemsEx");
21
- var toContainItemsEx_1 = require("./component/toContainItemsEx");
22
- var toContainItemEx_1 = require("./component/toContainItemEx");
23
- var toContainFormattedTextEx_1 = require("./component/toContainFormattedTextEx");
24
17
  var toHaveCountEx_1 = require("./component/toHaveCountEx");
25
- var toBeActiveEx_1 = require("./component/toBeActiveEx");
26
- var toBeInactiveEx_1 = require("./component/toBeInactiveEx");
27
- var toContainTokensEx_1 = require("./component/toContainTokensEx");
28
- var toHaveActiveTabEx_1 = require("./component/toHaveActiveTabEx");
29
- var toContainTabsEx_1 = require("./component/toContainTabsEx");
30
- var toBeAutoEx_1 = require("./component/toBeAutoEx");
31
- var toHaveHrefEx_1 = require("./component/toHaveHrefEx");
32
- var toHavePageCountEx_1 = require("./component/toHavePageCountEx");
33
- var toBeCheckedByValueEx_1 = require("./component/toBeCheckedByValueEx");
34
- var toBeCheckedByIndexEx_1 = require("./component/toBeCheckedByIndexEx");
35
- var toBeUncheckedByValueEx_1 = require("./component/toBeUncheckedByValueEx");
36
- var toBeUncheckedByIndexEx_1 = require("./component/toBeUncheckedByIndexEx");
37
- var toContainValueEx_1 = require("./component/toContainValueEx");
38
- var toBeCheckedByTextEx_1 = require("./component/toBeCheckedByTextEx");
39
- var toBeUncheckedByTextEx_1 = require("./component/toBeUncheckedByTextEx");
40
- var toHaveActivePageEx_1 = require("./component/toHaveActivePageEx");
41
- var toHaveFormattedValueEx_1 = require("./component/toHaveFormattedValueEx");
42
- var toHaveFormattedTextEx_1 = require("./component/toHaveFormattedTextEx");
18
+ var toHaveItems_1 = require("./component/toHaveItems");
19
+ var toContainItems_1 = require("./component/toContainItems");
20
+ var toContainItem_1 = require("./component/toContainItem");
21
+ var toBeActiveTab_1 = require("./component/toBeActiveTab");
22
+ var toBeInactiveTab_1 = require("./component/toBeInactiveTab");
23
+ var toBeAutoMode_1 = require("./component/toBeAutoMode");
24
+ var toHaveError_1 = require("./component/toHaveError");
25
+ var toHaveWarning_1 = require("./component/toHaveWarning");
26
+ var toContainUploadedFiles_1 = require("./component/toContainUploadedFiles");
27
+ var toContainFormattedText_1 = require("./component/toContainFormattedText");
28
+ var toContainTokens_1 = require("./component/toContainTokens");
29
+ var toHaveActiveTab_1 = require("./component/toHaveActiveTab");
30
+ var toContainTabs_1 = require("./component/toContainTabs");
31
+ var toHaveHref_1 = require("./component/toHaveHref");
32
+ var toHavePageCount_1 = require("./component/toHavePageCount");
33
+ var toBeCheckedByValue_1 = require("./component/toBeCheckedByValue");
34
+ var toBeCheckedByIndex_1 = require("./component/toBeCheckedByIndex");
35
+ var toBeUncheckedByValue_1 = require("./component/toBeUncheckedByValue");
36
+ var toBeUncheckedByIndex_1 = require("./component/toBeUncheckedByIndex");
37
+ var toContainSelectValue_1 = require("./component/toContainSelectValue");
38
+ var toBeCheckedByText_1 = require("./component/toBeCheckedByText");
39
+ var toBeUncheckedByText_1 = require("./component/toBeUncheckedByText");
40
+ var toHaveActivePage_1 = require("./component/toHaveActivePage");
41
+ var toHaveFormattedValue_1 = require("./component/toHaveFormattedValue");
42
+ var toHaveFormattedText_1 = require("./component/toHaveFormattedText");
43
43
  var matchers = {
44
+ /*
45
+ NOTE: некоторые кастомные матчеры содержат суффикс "Ex",
46
+ для того чтобы не переопределять стандартные матчеры playwright,
47
+ тк. уже есть матчеры с такими же именами 'toBeEmpty' и тд и при extend они мутируются и перезаписываются { ...matchers, ...customMatchers }
48
+ https://playwright.dev/docs/test-assertions#auto-retrying-assertions
49
+ */
44
50
  toBeEmptyEx: toBeEmptyEx_1.toBeEmptyEx,
45
51
  toBeVisibleEx: toBeVisibleEx_1.toBeVisibleEx,
46
52
  toBeHiddenEx: toBeHiddenEx_1.toBeHiddenEx,
47
53
  toBeEnabledEx: toBeEnabledEx_1.toBeEnabledEx,
48
54
  toBeDisabledEx: toBeDisabledEx_1.toBeDisabledEx,
49
- toHaveErrorEx: toHaveErrorEx_1.toHaveErrorEx,
50
- toHaveWarningEx: toHaveWarningEx_1.toHaveWarningEx,
51
- toHaveAttributeEx: toHaveAttributeEx_1.toHaveAttributeEx,
52
- toHaveValueEx: toHaveValueEx_1.toHaveValueEx,
53
55
  toBeFocusedEx: toBeFocusedEx_1.toBeFocusedEx,
54
- toContainUploadedFilesEx: toContainUploadedFilesEx_1.toContainUploadedFilesEx,
55
56
  toBeCheckedEx: toBeCheckedEx_1.toBeCheckedEx,
56
- toBeUncheckedEx: toBeUncheckedEx_1.toBeUncheckedEx,
57
+ toHaveAttributeEx: toHaveAttributeEx_1.toHaveAttributeEx,
58
+ toHaveValueEx: toHaveValueEx_1.toHaveValueEx,
57
59
  toHaveTextEx: toHaveTextEx_1.toHaveTextEx,
58
- toContainTextEx: toContainTextEx_1.toContainTextEx,
59
- toHaveItemsEx: toHaveItemsEx_1.toHaveItemsEx,
60
- toContainItemsEx: toContainItemsEx_1.toContainItemsEx,
61
- toContainItemEx: toContainItemEx_1.toContainItemEx,
62
60
  toHaveCountEx: toHaveCountEx_1.toHaveCountEx,
63
- toBeActiveEx: toBeActiveEx_1.toBeActiveEx,
64
- toBeInactiveEx: toBeInactiveEx_1.toBeInactiveEx,
65
- toContainTokensEx: toContainTokensEx_1.toContainTokensEx,
66
- toHaveActiveTabEx: toHaveActiveTabEx_1.toHaveActiveTabEx,
67
- toContainTabsEx: toContainTabsEx_1.toContainTabsEx,
68
- toBeAutoEx: toBeAutoEx_1.toBeAutoEx,
69
- toHaveHrefEx: toHaveHrefEx_1.toHaveHrefEx,
70
- toHavePageCountEx: toHavePageCountEx_1.toHavePageCountEx,
71
- toBeCheckedByValueEx: toBeCheckedByValueEx_1.toBeCheckedByValueEx,
72
- toBeCheckedByIndexEx: toBeCheckedByIndexEx_1.toBeCheckedByIndexEx,
73
- toBeUncheckedByValueEx: toBeUncheckedByValueEx_1.toBeUncheckedByValueEx,
74
- toBeUncheckedByIndexEx: toBeUncheckedByIndexEx_1.toBeUncheckedByIndexEx,
75
- toContainValueEx: toContainValueEx_1.toContainValueEx,
76
- toBeCheckedByTextEx: toBeCheckedByTextEx_1.toBeCheckedByTextEx,
77
- toBeUncheckedByTextEx: toBeUncheckedByTextEx_1.toBeUncheckedByTextEx,
78
- toHaveActivePageEx: toHaveActivePageEx_1.toHaveActivePageEx,
79
- toHaveFormattedValueEx: toHaveFormattedValueEx_1.toHaveFormattedValueEx,
80
- toHaveFormattedTextEx: toHaveFormattedTextEx_1.toHaveFormattedTextEx,
81
- toContainFormattedTextEx: toContainFormattedTextEx_1.toContainFormattedTextEx,
61
+ toContainTextEx: toContainTextEx_1.toContainTextEx,
62
+ toBeAutoMode: toBeAutoMode_1.toBeAutoMode,
63
+ toBeUnchecked: toBeUnchecked_1.toBeUnchecked,
64
+ toBeActiveTab: toBeActiveTab_1.toBeActiveTab,
65
+ toBeInactiveTab: toBeInactiveTab_1.toBeInactiveTab,
66
+ toBeCheckedByValue: toBeCheckedByValue_1.toBeCheckedByValue,
67
+ toBeCheckedByIndex: toBeCheckedByIndex_1.toBeCheckedByIndex,
68
+ toBeUncheckedByValue: toBeUncheckedByValue_1.toBeUncheckedByValue,
69
+ toBeUncheckedByIndex: toBeUncheckedByIndex_1.toBeUncheckedByIndex,
70
+ toBeCheckedByText: toBeCheckedByText_1.toBeCheckedByText,
71
+ toBeUncheckedByText: toBeUncheckedByText_1.toBeUncheckedByText,
72
+ toHaveHref: toHaveHref_1.toHaveHref,
73
+ toHaveItems: toHaveItems_1.toHaveItems,
74
+ toHaveError: toHaveError_1.toHaveError,
75
+ toHaveWarning: toHaveWarning_1.toHaveWarning,
76
+ toHaveActiveTab: toHaveActiveTab_1.toHaveActiveTab,
77
+ toHavePageCount: toHavePageCount_1.toHavePageCount,
78
+ toHaveActivePage: toHaveActivePage_1.toHaveActivePage,
79
+ toHaveFormattedValue: toHaveFormattedValue_1.toHaveFormattedValue,
80
+ toHaveFormattedText: toHaveFormattedText_1.toHaveFormattedText,
81
+ toContainItems: toContainItems_1.toContainItems,
82
+ toContainItem: toContainItem_1.toContainItem,
83
+ toContainTokens: toContainTokens_1.toContainTokens,
84
+ toContainTabs: toContainTabs_1.toContainTabs,
85
+ toContainSelectValue: toContainSelectValue_1.toContainSelectValue,
86
+ toContainFormattedText: toContainFormattedText_1.toContainFormattedText,
87
+ toContainUploadedFiles: toContainUploadedFiles_1.toContainUploadedFiles,
82
88
  };
83
89
  exports.componentMatchers = test_1.expect.extend(matchers);
@@ -1,5 +1,5 @@
1
1
  import type { ExpectMatcherState, Locator, MatcherReturnType } from '@playwright/test';
2
- import type { LocatorType } from './component/LocatorSymbols';
2
+ import type { LocatorType, LocatorTypeFn } from './component/LocatorSymbols';
3
3
  export interface CreateMatcherLogicParams<TComponent> {
4
4
  isNot: boolean;
5
5
  locator: Locator;
@@ -7,12 +7,21 @@ export interface CreateMatcherLogicParams<TComponent> {
7
7
  }
8
8
  /**
9
9
  * Создает асинхронный матчер для конкретного компонента
10
- * @param matcherName - имя матчера
10
+ *
11
+ *
12
+ * @param matcherName - уникальное имя матчера
11
13
  * @param getLocator - функция для получения локатора
12
- * @param createMatcherLogic - функция для создания логики матчера
13
- * @param createMessage - функция для создания сообщения
14
+ * @param createMatcherLogicAsync - функция для создания логики матчера
15
+ * @param createExpectMessage - функция для создания сообщения для ожидания
14
16
  *
15
17
  * @example
18
+ *
19
+ * Дженерик аргументы:
20
+ *
21
+ * createComponentAsyncMatcher<Component, TArgs>
22
+ * - Component - тип компонента
23
+ * - TArgs - массив аргументов матчера
24
+ *
16
25
  * const toExampleEx = createComponentAsyncMatcher<Component, [AttributeOptions?]>(
17
26
  * 'toExampleEx',
18
27
  * component => component.rootLocator,
@@ -24,16 +33,32 @@ export interface CreateMatcherLogicParams<TComponent> {
24
33
  * isNot => (isNot ? 'not to be example' : 'to be example'),
25
34
  * );
26
35
  */
27
- export declare function createComponentAsyncMatcher<TComponent, TArgs extends unknown[]>(matcherName: string, getLocator: (component: TComponent) => LocatorType, createMatcherLogic: (params: CreateMatcherLogicParams<TComponent>, ...args: TArgs) => Promise<void>, createMessage?: (isNot: boolean, ...args: TArgs) => string): (this: ExpectMatcherState, component: TComponent, ...args: TArgs) => Promise<MatcherReturnType>;
36
+ export declare function createComponentAsyncMatcher<TComponent, TArgs extends unknown[]>(matcherName: string, getLocator: (component: TComponent) => LocatorType, createMatcherLogicAsync: (params: CreateMatcherLogicParams<TComponent>, ...args: TArgs) => Promise<void>, createExpectMessage?: (isNot: boolean, ...args: TArgs) => string): (this: ExpectMatcherState, component: TComponent, ...args: TArgs) => Promise<MatcherReturnType>;
28
37
  /**
29
38
  * Создает асинхронный типизированный матчер для компонента с символом локатора
30
- * @param matcherName - имя матчера
39
+ *
40
+ *
41
+ * @param matcherName - уникальное имя матчера
31
42
  * @param getLocator - функция для получения локатора
32
- * @param createMatcherLogic - функция для создания логики матчера
33
- * @param createMessage - функция для создания сообщения
43
+ * @param createMatcherLogicAsync - асинхронная функция для создания логики матчера
44
+ * @param createExpectMessage - функция для создания сообщения для ожидания
34
45
  *
35
46
  * @example
36
- * const toExampleEx = createAsyncMatcher<ToExampleExLocator, [AttributeOptions?], BaseComponent>(
47
+ * export type ToExampleExLocator = {
48
+ * [toExampleExLocator]: () => Locator;
49
+ * }
50
+ *
51
+ * export const toExampleExLocator = Symbol.for('toExampleExLocator');
52
+ *
53
+ * Дженерик аргументы:
54
+ *
55
+ * createAsyncMatcher<TLocatorSymbolInterface, TArgs, Component>
56
+ * - TLocatorSymbolInterface - тип с символом локатора
57
+ * - TArgs - массив аргументов матчера
58
+ * - TComponent - тип компонента
59
+ *
60
+ *
61
+ * const toExampleEx = createAsyncMatcher<ToExampleExLocator, [AttributeOptions?], Component>(
37
62
  * 'toExampleEx',
38
63
  * component => component[toExampleExLocator](),
39
64
  * async ({ isNot, locator, component }, options) => {
@@ -44,4 +69,4 @@ export declare function createComponentAsyncMatcher<TComponent, TArgs extends un
44
69
  * isNot => (isNot ? 'not to be example' : 'to be example'),
45
70
  * );
46
71
  */
47
- export declare function createAsyncMatcher<TLocatorSymbolInterface, TArgs extends unknown[], TComponent = unknown>(matcherName: string, getLocator: (component: TComponent & TLocatorSymbolInterface) => LocatorType, createMatcherLogic: (params: CreateMatcherLogicParams<TComponent>, ...args: TArgs) => Promise<void>, createMessage?: (isNot: boolean, ...args: TArgs) => string): (this: ExpectMatcherState, component: TComponent & TLocatorSymbolInterface, ...args: TArgs) => Promise<MatcherReturnType>;
72
+ export declare function createAsyncMatcher<TLocatorSymbolInterface extends Record<symbol, LocatorTypeFn>, TArgs extends unknown[], TComponent = unknown>(matcherName: string, getLocator: (component: TComponent & TLocatorSymbolInterface) => LocatorType, createMatcherLogicAsync: (params: CreateMatcherLogicParams<TComponent>, ...args: TArgs) => Promise<void>, createExpectMessage?: (isNot: boolean, ...args: TArgs) => string): (this: ExpectMatcherState, component: TComponent & TLocatorSymbolInterface, ...args: TArgs) => Promise<MatcherReturnType>;
@@ -51,12 +51,21 @@ var makeMatcher_1 = require("../utils/makeMatcher");
51
51
  var toMatchMessage_1 = require("../utils/toMatchMessage");
52
52
  /**
53
53
  * Создает асинхронный матчер для конкретного компонента
54
- * @param matcherName - имя матчера
54
+ *
55
+ *
56
+ * @param matcherName - уникальное имя матчера
55
57
  * @param getLocator - функция для получения локатора
56
- * @param createMatcherLogic - функция для создания логики матчера
57
- * @param createMessage - функция для создания сообщения
58
+ * @param createMatcherLogicAsync - функция для создания логики матчера
59
+ * @param createExpectMessage - функция для создания сообщения для ожидания
58
60
  *
59
61
  * @example
62
+ *
63
+ * Дженерик аргументы:
64
+ *
65
+ * createComponentAsyncMatcher<Component, TArgs>
66
+ * - Component - тип компонента
67
+ * - TArgs - массив аргументов матчера
68
+ *
60
69
  * const toExampleEx = createComponentAsyncMatcher<Component, [AttributeOptions?]>(
61
70
  * 'toExampleEx',
62
71
  * component => component.rootLocator,
@@ -68,7 +77,7 @@ var toMatchMessage_1 = require("../utils/toMatchMessage");
68
77
  * isNot => (isNot ? 'not to be example' : 'to be example'),
69
78
  * );
70
79
  */
71
- function createComponentAsyncMatcher(matcherName, getLocator, createMatcherLogic, createMessage) {
80
+ function createComponentAsyncMatcher(matcherName, getLocator, createMatcherLogicAsync, createExpectMessage) {
72
81
  return function matcher(component) {
73
82
  var args = [];
74
83
  for (var _i = 1; _i < arguments.length; _i++) {
@@ -88,14 +97,14 @@ function createComponentAsyncMatcher(matcherName, getLocator, createMatcherLogic
88
97
  return (0, makeMatcher_1.makeMatcher)(isNot, function () { return __awaiter(_this, void 0, void 0, function () {
89
98
  return __generator(this, function (_a) {
90
99
  switch (_a.label) {
91
- case 0: return [4 /*yield*/, createMatcherLogic.apply(void 0, __spreadArray([{ isNot: isNot, locator: locator, component: component }], args, false))];
100
+ case 0: return [4 /*yield*/, createMatcherLogicAsync.apply(void 0, __spreadArray([{ isNot: isNot, locator: locator, component: component }], args, false))];
92
101
  case 1:
93
102
  _a.sent();
94
103
  return [2 /*return*/];
95
104
  }
96
105
  });
97
106
  }); });
98
- }, createMessage === null || createMessage === void 0 ? void 0 : createMessage.apply(void 0, __spreadArray([this.isNot], args, false))]))];
107
+ }, createExpectMessage === null || createExpectMessage === void 0 ? void 0 : createExpectMessage.apply(void 0, __spreadArray([this.isNot], args, false))]))];
99
108
  }
100
109
  });
101
110
  });
@@ -103,13 +112,29 @@ function createComponentAsyncMatcher(matcherName, getLocator, createMatcherLogic
103
112
  }
104
113
  /**
105
114
  * Создает асинхронный типизированный матчер для компонента с символом локатора
106
- * @param matcherName - имя матчера
115
+ *
116
+ *
117
+ * @param matcherName - уникальное имя матчера
107
118
  * @param getLocator - функция для получения локатора
108
- * @param createMatcherLogic - функция для создания логики матчера
109
- * @param createMessage - функция для создания сообщения
119
+ * @param createMatcherLogicAsync - асинхронная функция для создания логики матчера
120
+ * @param createExpectMessage - функция для создания сообщения для ожидания
110
121
  *
111
122
  * @example
112
- * const toExampleEx = createAsyncMatcher<ToExampleExLocator, [AttributeOptions?], BaseComponent>(
123
+ * export type ToExampleExLocator = {
124
+ * [toExampleExLocator]: () => Locator;
125
+ * }
126
+ *
127
+ * export const toExampleExLocator = Symbol.for('toExampleExLocator');
128
+ *
129
+ * Дженерик аргументы:
130
+ *
131
+ * createAsyncMatcher<TLocatorSymbolInterface, TArgs, Component>
132
+ * - TLocatorSymbolInterface - тип с символом локатора
133
+ * - TArgs - массив аргументов матчера
134
+ * - TComponent - тип компонента
135
+ *
136
+ *
137
+ * const toExampleEx = createAsyncMatcher<ToExampleExLocator, [AttributeOptions?], Component>(
113
138
  * 'toExampleEx',
114
139
  * component => component[toExampleExLocator](),
115
140
  * async ({ isNot, locator, component }, options) => {
@@ -120,7 +145,7 @@ function createComponentAsyncMatcher(matcherName, getLocator, createMatcherLogic
120
145
  * isNot => (isNot ? 'not to be example' : 'to be example'),
121
146
  * );
122
147
  */
123
- function createAsyncMatcher(matcherName, getLocator, createMatcherLogic, createMessage) {
148
+ function createAsyncMatcher(matcherName, getLocator, createMatcherLogicAsync, createExpectMessage) {
124
149
  return function matcher(component) {
125
150
  var args = [];
126
151
  for (var _i = 1; _i < arguments.length; _i++) {
@@ -140,14 +165,14 @@ function createAsyncMatcher(matcherName, getLocator, createMatcherLogic, createM
140
165
  return (0, makeMatcher_1.makeMatcher)(isNot, function () { return __awaiter(_this, void 0, void 0, function () {
141
166
  return __generator(this, function (_a) {
142
167
  switch (_a.label) {
143
- case 0: return [4 /*yield*/, createMatcherLogic.apply(void 0, __spreadArray([{ isNot: isNot, locator: locator, component: component }], args, false))];
168
+ case 0: return [4 /*yield*/, createMatcherLogicAsync.apply(void 0, __spreadArray([{ isNot: isNot, locator: locator, component: component }], args, false))];
144
169
  case 1:
145
170
  _a.sent();
146
171
  return [2 /*return*/];
147
172
  }
148
173
  });
149
174
  }); });
150
- }, createMessage === null || createMessage === void 0 ? void 0 : createMessage.apply(void 0, __spreadArray([this.isNot], args, false))]))];
175
+ }, createExpectMessage === null || createExpectMessage === void 0 ? void 0 : createExpectMessage.apply(void 0, __spreadArray([this.isNot], args, false))]))];
151
176
  }
152
177
  });
153
178
  });
@@ -4,6 +4,17 @@ export type MatchQueryType = (isNot: boolean, locator: Locator) => Promise<{
4
4
  matches: boolean;
5
5
  matcherResult?: MatcherResult;
6
6
  }>;
7
+ /**
8
+ * Создает сообщение для ожидания
9
+ *
10
+ * @param state - this context
11
+ * @param matcherName - имя матчера
12
+ * @param receiver - локатор
13
+ * @param query - функция для проверки соответствия
14
+ *
15
+ * @param expectedMessage - сообщение для ожидания
16
+ * @param receiverType - тип локатора
17
+ */
7
18
  export declare function toMatchMessage(state: ExpectMatcherState, matcherName: string, receiver: Locator, query: MatchQueryType, expectedMessage?: string | RegExp, receiverType?: string): Promise<{
8
19
  message: () => string;
9
20
  pass: boolean;
@@ -37,6 +37,17 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.toMatchMessage = toMatchMessage;
40
+ /**
41
+ * Создает сообщение для ожидания
42
+ *
43
+ * @param state - this context
44
+ * @param matcherName - имя матчера
45
+ * @param receiver - локатор
46
+ * @param query - функция для проверки соответствия
47
+ *
48
+ * @param expectedMessage - сообщение для ожидания
49
+ * @param receiverType - тип локатора
50
+ */
40
51
  function toMatchMessage(state_1, matcherName_1, receiver_1, query_1) {
41
52
  return __awaiter(this, arguments, void 0, function (state, matcherName, receiver, query, expectedMessage, receiverType) {
42
53
  var _a, pass, matcherResult, _b, matcherHint, printExpected, printReceived, stringify, customExpectedMessage, message;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skbkontur/playwright-react-ui-components",
3
- "version": "1.14.0-beta.1",
3
+ "version": "1.14.0-beta.2",
4
4
  "description": "Пакет для взаимодействия с компонентами @skbkontur/react-ui при тестировании с помощью Playwright",
5
5
  "main": "build/index.js",
6
6
  "files": [
@@ -1,3 +0,0 @@
1
- import type { AttributeOptions } from '../../options';
2
- import type { Tab } from '../../components';
3
- export declare const toBeActiveEx: (this: import("@playwright/test").ExpectMatcherState, component: Tab, args_0?: AttributeOptions | undefined) => Promise<import("@playwright/test").MatcherReturnType>;
@@ -1,3 +0,0 @@
1
- import type { FxInput } from '../../components';
2
- import type { VisibleOptions } from '../../options';
3
- export declare const toBeAutoEx: (this: import("@playwright/test").ExpectMatcherState, component: FxInput, args_0?: VisibleOptions | undefined) => Promise<import("@playwright/test").MatcherReturnType>;
@@ -1,3 +0,0 @@
1
- import type { Tab } from '../../components';
2
- import type { AttributeOptions } from '../../options';
3
- export declare const toBeInactiveEx: (this: import("@playwright/test").ExpectMatcherState, component: Tab, args_0?: AttributeOptions | undefined) => Promise<import("@playwright/test").MatcherReturnType>;
@@ -1,3 +0,0 @@
1
- import type { RadioGroup } from '../../components';
2
- import type { CheckedOptions } from '../../options/AssertionOptions';
3
- export declare const toBeUncheckedByIndexEx: (this: import("playwright/test").ExpectMatcherState, component: RadioGroup, args_0: number, args_1?: CheckedOptions | undefined) => Promise<import("playwright/test").MatcherReturnType>;
@@ -1,3 +0,0 @@
1
- import type { RadioGroup } from '../../components';
2
- import type { CheckedOptions } from '../../options/AssertionOptions';
3
- export declare const toBeUncheckedByTextEx: (this: import("playwright/test").ExpectMatcherState, component: RadioGroup, args_0: string | RegExp, args_1?: CheckedOptions | undefined) => Promise<import("playwright/test").MatcherReturnType>;
@@ -1,3 +0,0 @@
1
- import type { RadioGroup } from '../../components';
2
- import type { CheckedOptions } from '../../options/AssertionOptions';
3
- export declare const toBeUncheckedByValueEx: (this: import("playwright/test").ExpectMatcherState, component: RadioGroup, args_0: string | RegExp, args_1?: CheckedOptions | undefined) => Promise<import("playwright/test").MatcherReturnType>;
@@ -1,3 +0,0 @@
1
- import type { CheckedOptions } from '../../options';
2
- import { type ToBeCheckableElementLocator } from './LocatorSymbols';
3
- export declare const toBeUncheckedEx: (this: import("@playwright/test").ExpectMatcherState, component: ToBeCheckableElementLocator, args_0?: CheckedOptions | undefined) => Promise<import("@playwright/test").MatcherReturnType>;
@@ -1,3 +0,0 @@
1
- import type { Label } from '../../components';
2
- import type { TransformOptions } from '../../options';
3
- export declare const toContainFormattedTextEx: (this: import("playwright/test").ExpectMatcherState, component: Label, args_0: string, args_1?: TransformOptions | undefined) => Promise<import("playwright/test").MatcherReturnType>;
@@ -1,4 +0,0 @@
1
- import type { MenuComponent } from '../../components';
2
- import type { TextOptions } from '../../options/AssertionOptions';
3
- import type { ToContainItemElementLocator } from './LocatorSymbols';
4
- export declare const toContainItemEx: (this: import("@playwright/test").ExpectMatcherState, component: MenuComponent & ToContainItemElementLocator, args_0: string, args_1?: TextOptions | undefined) => Promise<import("@playwright/test").MatcherReturnType>;
@@ -1,3 +0,0 @@
1
- import type { ToHaveItemsElementLocator } from './LocatorSymbols';
2
- import type { TextOptions } from '../../options';
3
- export declare const toContainItemsEx: (this: import("@playwright/test").ExpectMatcherState, component: ToHaveItemsElementLocator, args_0: string[], args_1?: TextOptions | undefined) => Promise<import("@playwright/test").MatcherReturnType>;
@@ -1,3 +0,0 @@
1
- import type { Tabs } from '../../components';
2
- import type { TextOptions } from '../../options';
3
- export declare const toContainTabsEx: (this: import("@playwright/test").ExpectMatcherState, component: Tabs, args_0: string[], args_1?: TextOptions | undefined) => Promise<import("@playwright/test").MatcherReturnType>;
@@ -1,4 +0,0 @@
1
- import type { FileUploader } from '../../components';
2
- export declare const toContainUploadedFilesEx: (this: import("@playwright/test").ExpectMatcherState, component: FileUploader, args_0: string[], args_1?: {
3
- timeout?: number;
4
- } | undefined) => Promise<import("@playwright/test").MatcherReturnType>;
@@ -1,3 +0,0 @@
1
- import type { TextOptions } from '../../options';
2
- import type { Select } from '../../components';
3
- export declare const toContainValueEx: (this: import("@playwright/test").ExpectMatcherState, component: Select, args_0: string | RegExp | readonly (string | RegExp)[], args_1?: TextOptions | undefined) => Promise<import("@playwright/test").MatcherReturnType>;
@@ -1,2 +0,0 @@
1
- import type { Tabs } from '../../components';
2
- export declare const toHaveActiveTabEx: (this: import("playwright/test").ExpectMatcherState, component: Tabs, args_0: string | RegExp) => Promise<import("playwright/test").MatcherReturnType>;
@@ -1,3 +0,0 @@
1
- import type { TransformOptions } from '../../options';
2
- import type { ToTextElementLocator } from './LocatorSymbols';
3
- export declare const toHaveFormattedTextEx: (this: import("playwright/test").ExpectMatcherState, component: ToTextElementLocator, args_0: string, args_1?: TransformOptions | undefined) => Promise<import("playwright/test").MatcherReturnType>;
@@ -1,3 +0,0 @@
1
- import type { TransformOptions } from '../../options';
2
- import { type ToWithValueElementLocator } from './LocatorSymbols';
3
- export declare const toHaveFormattedValueEx: (this: import("playwright/test").ExpectMatcherState, component: ToWithValueElementLocator, args_0: string, args_1?: TransformOptions | undefined) => Promise<import("playwright/test").MatcherReturnType>;
@@ -1,3 +0,0 @@
1
- import type { AttributeOptions } from '../../options';
2
- import type { Link } from '../../components';
3
- export declare const toHaveHrefEx: (this: import("@playwright/test").ExpectMatcherState, component: Link, args_0: string | RegExp, args_1?: AttributeOptions | undefined) => Promise<import("@playwright/test").MatcherReturnType>;
@@ -1,3 +0,0 @@
1
- import type { ToHaveItemsElementLocator } from './LocatorSymbols';
2
- import type { TextOptions } from '../../options';
3
- export declare const toHaveItemsEx: (this: import("@playwright/test").ExpectMatcherState, component: ToHaveItemsElementLocator, args_0: string[], args_1?: TextOptions | undefined) => Promise<import("@playwright/test").MatcherReturnType>;
@@ -1,3 +0,0 @@
1
- import type { AttributeOptions } from '../../options';
2
- import type { RootSymbolLocator } from './LocatorSymbols';
3
- export declare const toHaveWarningEx: (this: import("@playwright/test").ExpectMatcherState, component: RootSymbolLocator, args_0?: AttributeOptions | undefined) => Promise<import("@playwright/test").MatcherReturnType>;
@@ -1,3 +0,0 @@
1
- import type { Locator } from '@playwright/test';
2
- import type { BaseComponent } from '../components';
3
- export declare const isComponent: <T extends BaseComponent>(component: unknown, instance: new (rootLocator: Locator, itemsLocator: (rootLocator: Locator) => Locator, itemFactory: (locator: Locator) => BaseComponent) => T) => component is T;
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isComponent = void 0;
4
- var isComponent = function (component, instance) { return component instanceof instance; };
5
- exports.isComponent = isComponent;