@gtkx/testing 1.0.0-rc.3 → 1.0.0

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 (215) hide show
  1. package/README.md +8 -9
  2. package/dist/accessible-native.d.ts +16 -0
  3. package/dist/accessible-native.d.ts.map +1 -0
  4. package/dist/accessible-native.js +206 -0
  5. package/dist/accessible-native.js.map +1 -0
  6. package/dist/act.d.ts +2 -0
  7. package/dist/act.d.ts.map +1 -1
  8. package/dist/act.js.map +1 -1
  9. package/dist/build-queries.d.ts +27 -10
  10. package/dist/build-queries.d.ts.map +1 -1
  11. package/dist/build-queries.js +39 -30
  12. package/dist/build-queries.js.map +1 -1
  13. package/dist/cleanup-registry.d.ts +1 -1
  14. package/dist/cleanup-registry.d.ts.map +1 -1
  15. package/dist/cleanup-registry.js.map +1 -1
  16. package/dist/config.d.ts +1 -0
  17. package/dist/config.d.ts.map +1 -1
  18. package/dist/config.js +3 -3
  19. package/dist/config.js.map +1 -1
  20. package/dist/errors.d.ts +10 -1
  21. package/dist/errors.d.ts.map +1 -1
  22. package/dist/errors.js +12 -3
  23. package/dist/errors.js.map +1 -1
  24. package/dist/fire-event.d.ts +35 -6
  25. package/dist/fire-event.d.ts.map +1 -1
  26. package/dist/fire-event.js +23 -7
  27. package/dist/fire-event.js.map +1 -1
  28. package/dist/frame-sync.d.ts +2 -1
  29. package/dist/frame-sync.d.ts.map +1 -1
  30. package/dist/frame-sync.js +15 -5
  31. package/dist/frame-sync.js.map +1 -1
  32. package/dist/harness-window.d.ts +4 -0
  33. package/dist/harness-window.d.ts.map +1 -0
  34. package/dist/harness-window.js +6 -0
  35. package/dist/harness-window.js.map +1 -0
  36. package/dist/index.d.ts +14 -7
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +9 -5
  39. package/dist/index.js.map +1 -1
  40. package/dist/internal.d.ts +4 -0
  41. package/dist/internal.d.ts.map +1 -0
  42. package/dist/internal.js +4 -0
  43. package/dist/internal.js.map +1 -0
  44. package/dist/matchers.d.ts +125 -39
  45. package/dist/matchers.d.ts.map +1 -1
  46. package/dist/matchers.js +156 -18
  47. package/dist/matchers.js.map +1 -1
  48. package/dist/pretty-format.d.ts +2 -0
  49. package/dist/pretty-format.d.ts.map +1 -0
  50. package/dist/pretty-format.js +2 -0
  51. package/dist/pretty-format.js.map +1 -0
  52. package/dist/pretty-widget.d.ts +7 -3
  53. package/dist/pretty-widget.d.ts.map +1 -1
  54. package/dist/pretty-widget.js +74 -57
  55. package/dist/pretty-widget.js.map +1 -1
  56. package/dist/production.d.ts +8 -0
  57. package/dist/production.d.ts.map +1 -0
  58. package/dist/production.js +34 -0
  59. package/dist/production.js.map +1 -0
  60. package/dist/queries.d.ts +99 -56
  61. package/dist/queries.d.ts.map +1 -1
  62. package/dist/queries.js +123 -83
  63. package/dist/queries.js.map +1 -1
  64. package/dist/query-helpers.d.ts +44 -0
  65. package/dist/query-helpers.d.ts.map +1 -0
  66. package/dist/query-helpers.js +57 -0
  67. package/dist/query-helpers.js.map +1 -0
  68. package/dist/render-children.d.ts +9 -0
  69. package/dist/render-children.d.ts.map +1 -0
  70. package/dist/render-children.js +11 -0
  71. package/dist/render-children.js.map +1 -0
  72. package/dist/render.d.ts.map +1 -1
  73. package/dist/render.js +13 -11
  74. package/dist/render.js.map +1 -1
  75. package/dist/role-helpers.d.ts +12 -3
  76. package/dist/role-helpers.d.ts.map +1 -1
  77. package/dist/role-helpers.js +13 -4
  78. package/dist/role-helpers.js.map +1 -1
  79. package/dist/role-naming.d.ts +5 -0
  80. package/dist/role-naming.d.ts.map +1 -0
  81. package/dist/role-naming.js +96 -0
  82. package/dist/role-naming.js.map +1 -0
  83. package/dist/screenshot.d.ts +12 -20
  84. package/dist/screenshot.d.ts.map +1 -1
  85. package/dist/screenshot.js +183 -91
  86. package/dist/screenshot.js.map +1 -1
  87. package/dist/suggestions.d.ts +3 -0
  88. package/dist/suggestions.d.ts.map +1 -1
  89. package/dist/suggestions.js.map +1 -1
  90. package/dist/traversal.d.ts +9 -1
  91. package/dist/traversal.d.ts.map +1 -1
  92. package/dist/traversal.js +26 -6
  93. package/dist/traversal.js.map +1 -1
  94. package/dist/types.d.ts +67 -17
  95. package/dist/types.d.ts.map +1 -1
  96. package/dist/types.js.map +1 -1
  97. package/dist/user-event/adjustment.d.ts +16 -0
  98. package/dist/user-event/adjustment.d.ts.map +1 -1
  99. package/dist/user-event/adjustment.js +34 -2
  100. package/dist/user-event/adjustment.js.map +1 -1
  101. package/dist/user-event/click.d.ts +45 -3
  102. package/dist/user-event/click.d.ts.map +1 -1
  103. package/dist/user-event/click.js +177 -39
  104. package/dist/user-event/click.js.map +1 -1
  105. package/dist/user-event/column-header-click.d.ts +4 -0
  106. package/dist/user-event/column-header-click.d.ts.map +1 -0
  107. package/dist/user-event/column-header-click.js +65 -0
  108. package/dist/user-event/column-header-click.js.map +1 -0
  109. package/dist/user-event/controller.d.ts +29 -0
  110. package/dist/user-event/controller.d.ts.map +1 -1
  111. package/dist/user-event/controller.js +28 -0
  112. package/dist/user-event/controller.js.map +1 -1
  113. package/dist/user-event/event-wrapper.d.ts.map +1 -1
  114. package/dist/user-event/event-wrapper.js +2 -1
  115. package/dist/user-event/event-wrapper.js.map +1 -1
  116. package/dist/user-event/gesture.d.ts +51 -0
  117. package/dist/user-event/gesture.d.ts.map +1 -1
  118. package/dist/user-event/gesture.js +47 -4
  119. package/dist/user-event/gesture.js.map +1 -1
  120. package/dist/user-event/index.d.ts +70 -2
  121. package/dist/user-event/index.d.ts.map +1 -1
  122. package/dist/user-event/index.js +43 -26
  123. package/dist/user-event/index.js.map +1 -1
  124. package/dist/user-event/indexed-children.d.ts +10 -0
  125. package/dist/user-event/indexed-children.d.ts.map +1 -0
  126. package/dist/user-event/indexed-children.js +50 -0
  127. package/dist/user-event/indexed-children.js.map +1 -0
  128. package/dist/user-event/keyboard.d.ts +4 -2
  129. package/dist/user-event/keyboard.d.ts.map +1 -1
  130. package/dist/user-event/keyboard.js +46 -16
  131. package/dist/user-event/keyboard.js.map +1 -1
  132. package/dist/user-event/list-row-click.d.ts +4 -0
  133. package/dist/user-event/list-row-click.d.ts.map +1 -0
  134. package/dist/user-event/list-row-click.js +39 -0
  135. package/dist/user-event/list-row-click.js.map +1 -0
  136. package/dist/user-event/native-click.d.ts +6 -0
  137. package/dist/user-event/native-click.d.ts.map +1 -0
  138. package/dist/user-event/native-click.js +32 -0
  139. package/dist/user-event/native-click.js.map +1 -0
  140. package/dist/user-event/pointer.d.ts +1 -1
  141. package/dist/user-event/pointer.d.ts.map +1 -1
  142. package/dist/user-event/pointer.js +37 -13
  143. package/dist/user-event/pointer.js.map +1 -1
  144. package/dist/user-event/selection.d.ts +18 -0
  145. package/dist/user-event/selection.d.ts.map +1 -1
  146. package/dist/user-event/selection.js +56 -30
  147. package/dist/user-event/selection.js.map +1 -1
  148. package/dist/user-event/state.d.ts +1 -1
  149. package/dist/user-event/state.d.ts.map +1 -1
  150. package/dist/user-event/state.js +1 -1
  151. package/dist/user-event/state.js.map +1 -1
  152. package/dist/user-event/text.d.ts +34 -3
  153. package/dist/user-event/text.d.ts.map +1 -1
  154. package/dist/user-event/text.js +94 -17
  155. package/dist/user-event/text.js.map +1 -1
  156. package/dist/wait-for.d.ts +2 -0
  157. package/dist/wait-for.d.ts.map +1 -1
  158. package/dist/wait-for.js.map +1 -1
  159. package/dist/widget-accessible-properties.d.ts +14 -10
  160. package/dist/widget-accessible-properties.d.ts.map +1 -1
  161. package/dist/widget-accessible-properties.js +135 -173
  162. package/dist/widget-accessible-properties.js.map +1 -1
  163. package/dist/widget-getters.d.ts +8 -0
  164. package/dist/widget-getters.d.ts.map +1 -0
  165. package/dist/widget-getters.js +19 -0
  166. package/dist/widget-getters.js.map +1 -0
  167. package/dist/within.d.ts +3 -2
  168. package/dist/within.d.ts.map +1 -1
  169. package/dist/within.js +3 -2
  170. package/dist/within.js.map +1 -1
  171. package/package.json +13 -8
  172. package/src/accessible-native.ts +333 -0
  173. package/src/act.ts +2 -0
  174. package/src/build-queries.ts +66 -48
  175. package/src/cleanup-registry.ts +1 -1
  176. package/src/config.ts +4 -3
  177. package/src/errors.ts +14 -3
  178. package/src/fire-event.ts +61 -8
  179. package/src/frame-sync.ts +21 -5
  180. package/src/harness-window.ts +9 -0
  181. package/src/index.ts +18 -11
  182. package/src/internal.ts +11 -0
  183. package/src/matchers.ts +466 -64
  184. package/src/pretty-format.ts +1 -0
  185. package/src/pretty-widget.ts +100 -72
  186. package/src/production.ts +52 -0
  187. package/src/queries.ts +128 -89
  188. package/src/query-helpers.ts +97 -0
  189. package/src/render-children.ts +25 -0
  190. package/src/render.tsx +18 -13
  191. package/src/role-helpers.ts +14 -4
  192. package/src/role-naming.ts +99 -0
  193. package/src/screenshot.ts +272 -103
  194. package/src/suggestions.ts +3 -0
  195. package/src/traversal.ts +49 -6
  196. package/src/types.ts +69 -19
  197. package/src/user-event/adjustment.ts +42 -2
  198. package/src/user-event/click.ts +248 -46
  199. package/src/user-event/column-header-click.ts +90 -0
  200. package/src/user-event/controller.ts +29 -0
  201. package/src/user-event/event-wrapper.ts +3 -1
  202. package/src/user-event/gesture.ts +57 -6
  203. package/src/user-event/index.ts +119 -29
  204. package/src/user-event/indexed-children.ts +75 -0
  205. package/src/user-event/keyboard.ts +70 -20
  206. package/src/user-event/list-row-click.ts +57 -0
  207. package/src/user-event/native-click.ts +46 -0
  208. package/src/user-event/pointer.ts +52 -13
  209. package/src/user-event/selection.ts +74 -33
  210. package/src/user-event/state.ts +2 -2
  211. package/src/user-event/text.ts +121 -23
  212. package/src/wait-for.ts +2 -0
  213. package/src/widget-accessible-properties.ts +183 -214
  214. package/src/widget-getters.ts +32 -0
  215. package/src/within.ts +3 -2
@@ -1,4 +1,7 @@
1
+ import type { SyncExpectationResult } from "@vitest/expect";
1
2
  import * as Gtk from "@gtkx/gi/gtk";
3
+ import type { ByRoleOptions, Matcher, MatcherOptions } from "./types.js";
4
+ import { type AccessibleAttributeValue } from "./accessible-native.js";
2
5
  /** The expected value for a text matcher: an exact string or a regular expression. */
3
6
  type TextExpectation = string | RegExp;
4
7
  /** Options controlling how `toHaveTextContent` normalizes the text it reads. */
@@ -11,72 +14,136 @@ type TextContentOptions = {
11
14
  };
12
15
  /** The expected value for a style class: an exact class name or a regular expression. */
13
16
  type ClassExpectation = string | RegExp;
14
- type MatcherResult = {
15
- pass: boolean;
16
- message: () => string;
17
- };
17
+ /** The outcome of a matcher: whether it passed, and the failure text built on demand. */
18
+ type MatcherResult = Pick<SyncExpectationResult, "message" | "pass">;
19
+ /** The matcher state bound as `this`, supplying the test runner's deep equality check. */
18
20
  type MatcherContext = {
21
+ /** Compares a received value against an expected one, resolving asymmetric matchers. */
19
22
  equals: (actual: unknown, expected: unknown) => boolean;
20
23
  };
24
+ /** Compares text read from the received widget; with no expected value, asserts the text is non-empty. */
21
25
  type TextMatcher = (received: unknown, expected?: TextExpectation) => MatcherResult;
26
+ /** Asserts a single state of the received widget, taking no expected value. */
22
27
  type StateMatcher = (received: unknown) => MatcherResult;
28
+ /** Trailing arguments of the `ByRole` query family, as a containment matcher takes them. */
29
+ type RoleQueryArgs = [role: Gtk.AccessibleRole, options?: ByRoleOptions];
30
+ /** Trailing arguments of the text-based query families, as a containment matcher takes them. */
31
+ type TextQueryArgs = [text: Matcher, options?: MatcherOptions];
32
+ /** Counts the descendants a query family finds under the received widget. */
33
+ type ContainmentMatcher<Args extends unknown[]> = (received: unknown, ...args: Args) => MatcherResult;
34
+ type BooleanAccessibleState = Gtk.AccessibleState.BUSY | Gtk.AccessibleState.DISABLED | Gtk.AccessibleState.EXPANDED | Gtk.AccessibleState.HIDDEN | Gtk.AccessibleState.SELECTED | Gtk.AccessibleState.VISITED;
35
+ type TristateAccessibleState = Gtk.AccessibleState.CHECKED | Gtk.AccessibleState.PRESSED;
36
+ type StringAccessibleProperty = Gtk.AccessibleProperty.DESCRIPTION | Gtk.AccessibleProperty.HELP_TEXT | Gtk.AccessibleProperty.KEY_SHORTCUTS | Gtk.AccessibleProperty.LABEL | Gtk.AccessibleProperty.PLACEHOLDER | Gtk.AccessibleProperty.ROLE_DESCRIPTION | Gtk.AccessibleProperty.VALUE_TEXT;
37
+ type BooleanAccessibleProperty = Gtk.AccessibleProperty.HAS_POPUP | Gtk.AccessibleProperty.MODAL | Gtk.AccessibleProperty.MULTI_LINE | Gtk.AccessibleProperty.MULTI_SELECTABLE | Gtk.AccessibleProperty.READ_ONLY | Gtk.AccessibleProperty.REQUIRED;
38
+ type NumberAccessibleProperty = Gtk.AccessibleProperty.LEVEL | Gtk.AccessibleProperty.VALUE_MAX | Gtk.AccessibleProperty.VALUE_MIN | Gtk.AccessibleProperty.VALUE_NOW;
39
+ /** A text matcher that also takes normalization options for the text it reads. */
23
40
  type TextContentMatcher = (received: unknown, expected?: TextExpectation, options?: TextContentOptions) => MatcherResult;
41
+ /** Signatures of the widget assertion matchers, keyed by the name each is registered under. */
24
42
  type MatcherImplementations = {
43
+ /** Asserts the text an editable widget or combo box shows; with no argument, that it is not empty. */
25
44
  toHaveDisplayValue: TextMatcher;
45
+ /** Asserts the widget's own text, or its descendants' when it has none, contains or matches the expectation. */
26
46
  toHaveTextContent: TextContentMatcher;
47
+ /** Asserts the widget's accessible name; with no argument, that it has one. */
27
48
  toHaveAccessibleName: TextMatcher;
49
+ /**
50
+ * Asserts the joined accessible names of the widget's `described-by` targets, falling back to its
51
+ * `description` and then to its tooltip.
52
+ */
28
53
  toHaveAccessibleDescription: TextMatcher;
54
+ /** Asserts the joined accessible names of the widget's `error-message` targets, read only while it is invalid. */
29
55
  toHaveAccessibleErrorMessage: TextMatcher;
30
- toHavePlaceholderText: TextMatcher;
56
+ /** Asserts the text currently selected in an editable widget. */
31
57
  toHaveSelection: TextMatcher;
58
+ /**
59
+ * Asserts an accessible state GTK holds for the widget, taking the value type that state carries.
60
+ * With no expected value, asserts only that the state is set to something determinate.
61
+ */
62
+ toHaveAccessibleState: (received: unknown, state: Gtk.AccessibleState, expected?: boolean | number) => MatcherResult;
63
+ /**
64
+ * Asserts an accessible property GTK holds for the widget, taking the value type that property
65
+ * carries. With no expected value, asserts only that the property is set. Numeric properties
66
+ * compare the way `toHaveValue` and the `value` option of the `ByRole` queries do, within 0.001.
67
+ */
68
+ toHaveAccessibleProperty: (received: unknown, property: Gtk.AccessibleProperty, expected?: AccessibleAttributeValue) => MatcherResult;
69
+ /** Asserts the widget's checked state is checked rather than unchecked or mixed. */
32
70
  toBeChecked: StateMatcher;
71
+ /** Asserts the widget's checked state is mixed. */
33
72
  toBePartiallyChecked: StateMatcher;
73
+ /** Asserts a `Gtk.ToggleButton` is active, and throws for any other widget. */
34
74
  toBePressed: StateMatcher;
35
- toBeExpanded: StateMatcher;
36
- toBeSelected: StateMatcher;
75
+ /** Asserts the widget's accessible pressed state is mixed, and throws when it exposes none. */
76
+ toBePartiallyPressed: StateMatcher;
77
+ /** Asserts the widget is insensitive, or sits inside an insensitive ancestor. */
37
78
  toBeDisabled: StateMatcher;
79
+ /** Asserts the widget and all of its ancestors are sensitive. */
38
80
  toBeEnabled: StateMatcher;
81
+ /** Asserts the widget and its ancestors are all visible, and that none of them is fully transparent. */
39
82
  toBeVisible: StateMatcher;
83
+ /** Asserts the widget's root is a window that is still in the toplevel list. */
40
84
  toBeRooted: StateMatcher;
41
- toBeEmpty: StateMatcher;
85
+ /** Asserts the widget has neither a child nor label text. */
86
+ toBeEmptyWidget: StateMatcher;
87
+ /** Asserts the widget's accessible invalid state is set to anything other than false. */
42
88
  toBeInvalid: StateMatcher;
89
+ /** Asserts the widget's accessible invalid state is unset or false. */
43
90
  toBeValid: StateMatcher;
91
+ /** Asserts the widget's accessible required state. */
44
92
  toBeRequired: StateMatcher;
93
+ /** Asserts the widget holds the platform focus state. */
45
94
  toHaveFocus: StateMatcher;
95
+ /**
96
+ * Asserts a widget's numeric value, or its display value when a string is given.
97
+ *
98
+ * Numbers come from the accessibility tree, which GTK keeps to a resolution of 0.001: it drops an
99
+ * update whose value is nearer than that to the one already published, so a widget that moves by
100
+ * less keeps its previous value. Numbers therefore match within 0.001, the same tolerance the
101
+ * `value` option of the `ByRole` queries and `toHaveAccessibleProperty` apply. That option reads
102
+ * the same tree, where the maximum of a paged widget such as a scrollbar is the last value it can
103
+ * reach, its adjustment's upper bound less one page.
104
+ */
46
105
  toHaveValue: (received: unknown, expected?: number | string) => MatcherResult;
106
+ /** Asserts the widget's accessible role. */
47
107
  toHaveRole: (received: unknown, expected: Gtk.AccessibleRole) => MatcherResult;
108
+ /** Asserts the widget is, or is an ancestor of, the given widget. */
48
109
  toContainElement: (received: unknown, descendant: Gtk.Widget | null) => MatcherResult;
110
+ /** Asserts the widget comes before the given widget in the widget tree, neither containing the other. */
111
+ toAppearBefore: (received: unknown, other: Gtk.Widget) => MatcherResult;
112
+ /** Asserts the widget comes after the given widget in the widget tree, neither containing the other. */
113
+ toAppearAfter: (received: unknown, other: Gtk.Widget) => MatcherResult;
114
+ /** Asserts at least one widget under the received one matches the `ByRole` query. */
115
+ toContainAnyByRole: ContainmentMatcher<RoleQueryArgs>;
116
+ /** Asserts exactly one widget under the received one matches the `ByRole` query. */
117
+ toContainOneByRole: ContainmentMatcher<RoleQueryArgs>;
118
+ /** Asserts at least one widget under the received one matches the `ByText` query. */
119
+ toContainAnyByText: ContainmentMatcher<TextQueryArgs>;
120
+ /** Asserts exactly one widget under the received one matches the `ByText` query. */
121
+ toContainOneByText: ContainmentMatcher<TextQueryArgs>;
122
+ /** Asserts at least one widget under the received one matches the `ByLabelText` query. */
123
+ toContainAnyByLabelText: ContainmentMatcher<TextQueryArgs>;
124
+ /** Asserts exactly one widget under the received one matches the `ByLabelText` query. */
125
+ toContainOneByLabelText: ContainmentMatcher<TextQueryArgs>;
126
+ /** Asserts at least one widget under the received one matches the `ByPlaceholderText` query. */
127
+ toContainAnyByPlaceholderText: ContainmentMatcher<TextQueryArgs>;
128
+ /** Asserts exactly one widget under the received one matches the `ByPlaceholderText` query. */
129
+ toContainOneByPlaceholderText: ContainmentMatcher<TextQueryArgs>;
130
+ /** Asserts at least one widget under the received one matches the `ByDisplayValue` query. */
131
+ toContainAnyByDisplayValue: ContainmentMatcher<TextQueryArgs>;
132
+ /** Asserts exactly one widget under the received one matches the `ByDisplayValue` query. */
133
+ toContainOneByDisplayValue: ContainmentMatcher<TextQueryArgs>;
134
+ /**
135
+ * Asserts the widget carries every given style class, each a name, a space-separated list, or a pattern.
136
+ * Pass `{ exact: true }` last to require exactly that set, which rules out patterns.
137
+ */
49
138
  toHaveClass: (received: unknown, ...args: unknown[]) => MatcherResult;
139
+ /**
140
+ * Asserts a GObject property, named as in GObject and looked up by its camel-cased accessor, equals the
141
+ * expected value. With no expected value, asserts the property is set. GObject values compare by identity.
142
+ */
50
143
  toHaveObjectProperty: (this: MatcherContext, received: unknown, ...args: unknown[]) => MatcherResult;
51
144
  };
52
- declare const toHaveAccessibleName: TextMatcher;
53
- declare const toHaveAccessibleDescription: TextMatcher;
54
- declare const toHaveAccessibleErrorMessage: TextMatcher;
55
- declare const toHavePlaceholderText: TextMatcher;
56
- declare const toHaveSelection: TextMatcher;
57
- declare const toBePressed: StateMatcher;
58
- declare const toBeExpanded: StateMatcher;
59
- declare const toBeSelected: StateMatcher;
60
- declare const toBeRequired: StateMatcher;
61
145
  /** The widget assertion matchers keyed by name, suitable for passing to `expect.extend`. */
62
146
  declare const matchers: MatcherImplementations;
63
- declare function toHaveTextContent(received: unknown, expected?: TextExpectation, options?: TextContentOptions): MatcherResult;
64
- declare function toBeChecked(received: unknown): MatcherResult;
65
- declare function toBePartiallyChecked(received: unknown): MatcherResult;
66
- declare function toHaveDisplayValue(received: unknown, expected?: TextExpectation): MatcherResult;
67
- declare function toHaveValue(received: unknown, expected?: number | string): MatcherResult;
68
- declare function toBeDisabled(received: unknown): MatcherResult;
69
- declare function toBeEnabled(received: unknown): MatcherResult;
70
- declare function toBeVisible(received: unknown): MatcherResult;
71
- declare function toBeRooted(received: unknown): MatcherResult;
72
- declare function toBeEmpty(received: unknown): MatcherResult;
73
- declare function toBeInvalid(received: unknown): MatcherResult;
74
- declare function toBeValid(received: unknown): MatcherResult;
75
- declare function toHaveFocus(received: unknown): MatcherResult;
76
- declare function toHaveRole(received: unknown, expected: Gtk.AccessibleRole): MatcherResult;
77
- declare function toContainElement(received: unknown, descendant: Gtk.Widget | null): MatcherResult;
78
- declare function toHaveClass(received: unknown, ...args: unknown[]): MatcherResult;
79
- declare function toHaveObjectProperty(this: MatcherContext, received: unknown, ...args: unknown[]): MatcherResult;
80
147
  /** Registers the widget matchers on the global `expect`, when one is available. Safe to call more than once. */
81
148
  declare const registerMatchers: () => void;
82
149
  declare module "@vitest/expect" {
@@ -86,18 +153,25 @@ declare module "@vitest/expect" {
86
153
  toHaveAccessibleName(expected?: TextExpectation): void;
87
154
  toHaveAccessibleDescription(expected?: TextExpectation): void;
88
155
  toHaveAccessibleErrorMessage(expected?: TextExpectation): void;
89
- toHavePlaceholderText(expected?: TextExpectation): void;
90
156
  toHaveSelection(expected?: TextExpectation): void;
157
+ toHaveAccessibleState(state: BooleanAccessibleState, expected?: boolean): void;
158
+ toHaveAccessibleState(state: TristateAccessibleState, expected?: Gtk.AccessibleTristate): void;
159
+ toHaveAccessibleState(state: Gtk.AccessibleState.INVALID, expected?: Gtk.AccessibleInvalidState): void;
160
+ toHaveAccessibleProperty(property: StringAccessibleProperty, expected?: string): void;
161
+ toHaveAccessibleProperty(property: BooleanAccessibleProperty, expected?: boolean): void;
162
+ toHaveAccessibleProperty(property: NumberAccessibleProperty, expected?: number): void;
163
+ toHaveAccessibleProperty(property: Gtk.AccessibleProperty.AUTOCOMPLETE, expected?: Gtk.AccessibleAutocomplete): void;
164
+ toHaveAccessibleProperty(property: Gtk.AccessibleProperty.ORIENTATION, expected?: Gtk.Orientation): void;
165
+ toHaveAccessibleProperty(property: Gtk.AccessibleProperty.SORT, expected?: Gtk.AccessibleSort): void;
91
166
  toBeChecked(): void;
92
167
  toBePartiallyChecked(): void;
93
168
  toBePressed(): void;
94
- toBeExpanded(): void;
95
- toBeSelected(): void;
169
+ toBePartiallyPressed(): void;
96
170
  toBeDisabled(): void;
97
171
  toBeEnabled(): void;
98
172
  toBeVisible(): void;
99
173
  toBeRooted(): void;
100
- toBeEmpty(): void;
174
+ toBeEmptyWidget(): void;
101
175
  toBeInvalid(): void;
102
176
  toBeValid(): void;
103
177
  toBeRequired(): void;
@@ -105,6 +179,18 @@ declare module "@vitest/expect" {
105
179
  toHaveValue(expected?: number | string): void;
106
180
  toHaveRole(expected: Gtk.AccessibleRole): void;
107
181
  toContainElement(descendant: Gtk.Widget | null): void;
182
+ toAppearBefore(other: Gtk.Widget): void;
183
+ toAppearAfter(other: Gtk.Widget): void;
184
+ toContainAnyByRole(...args: RoleQueryArgs): void;
185
+ toContainOneByRole(...args: RoleQueryArgs): void;
186
+ toContainAnyByText(...args: TextQueryArgs): void;
187
+ toContainOneByText(...args: TextQueryArgs): void;
188
+ toContainAnyByLabelText(...args: TextQueryArgs): void;
189
+ toContainOneByLabelText(...args: TextQueryArgs): void;
190
+ toContainAnyByPlaceholderText(...args: TextQueryArgs): void;
191
+ toContainOneByPlaceholderText(...args: TextQueryArgs): void;
192
+ toContainAnyByDisplayValue(...args: TextQueryArgs): void;
193
+ toContainOneByDisplayValue(...args: TextQueryArgs): void;
108
194
  toHaveClass(...args: (ClassExpectation | {
109
195
  exact: boolean;
110
196
  })[]): void;
@@ -115,5 +201,5 @@ declare module "@vitest/expect" {
115
201
  interface AsymmetricMatchersContaining extends WidgetMatchers {
116
202
  }
117
203
  }
118
- export { toHaveDisplayValue, toHaveTextContent, toHaveAccessibleName, toHaveAccessibleDescription, toHaveAccessibleErrorMessage, toHavePlaceholderText, toHaveSelection, toBeChecked, toBePartiallyChecked, toBePressed, toBeExpanded, toBeSelected, toBeDisabled, toBeEnabled, toBeVisible, toBeRooted, toBeEmpty, toBeInvalid, toBeValid, toBeRequired, toHaveFocus, toHaveValue, toHaveRole, toContainElement, toHaveClass, toHaveObjectProperty, matchers, registerMatchers, type ClassExpectation, type TextContentOptions, type TextExpectation, };
204
+ export { matchers, registerMatchers, type ClassExpectation, type TextContentOptions, type TextExpectation };
119
205
  //# sourceMappingURL=matchers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"matchers.d.ts","sourceRoot":"","sources":["../src/matchers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"matchers.d.ts","sourceRoot":"","sources":["../src/matchers.ts"],"names":[],"mappings":"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"}
package/dist/matchers.js CHANGED
@@ -1,20 +1,31 @@
1
- /// <reference types="@vitest/expect" />
2
1
  import * as GObject from "@gtkx/gi/gobject";
3
2
  import * as Gtk from "@gtkx/gi/gtk";
3
+ import { ACCESSIBLE_NUMBER_TOLERANCE, isAccessibleNumberMatch, isAccessibleNumberProperty, readAccessibleProperty, readAccessibleState, } from "./accessible-native.js";
4
4
  import { getDefaultNormalizer } from "./normalize.js";
5
+ import { queryAllByDisplayValue, queryAllByLabelText, queryAllByPlaceholderText, queryAllByRole, queryAllByText, } from "./queries.js";
5
6
  import { formatRole } from "./role-helpers.js";
6
- import { getWidgetAccessibleName, getWidgetCheckedState, getWidgetDescribedByText, getWidgetDisplayValue, getWidgetErrorMessage, getWidgetExpandedState, getWidgetInvalidState, getWidgetLabelText, getWidgetPlaceholderText, getWidgetPressedState, getWidgetRequiredState, getWidgetSelectedState, getWidgetSelection, getWidgetTextContent, getWidgetValue, hasDisplayValue, isWidgetDisabled, isWidgetVisible, } from "./widget-accessible-properties.js";
7
+ import { descendants } from "./traversal.js";
8
+ import { getWidgetAccessibleName, getWidgetCheckedState, getWidgetDescribedByText, getWidgetDisplayValue, getWidgetErrorMessage, getWidgetInvalidState, getWidgetLabelText, getWidgetPressedState, getWidgetRequiredState, getWidgetSelection, getWidgetTextContent, getWidgetValueNow, hasDisplayValue, isWidgetDisabled, isWidgetValueMatch, isWidgetVisible, } from "./widget-accessible-properties.js";
7
9
  const registration = { isRegistered: false };
10
+ const MIXED_TRISTATE = Gtk.AccessibleTristate.MIXED;
11
+ const ROUNDED_READING = ", which the accessibility tree rounds to six significant digits";
8
12
  const displayValueMatcher = textMatcher("toHaveDisplayValue", getWidgetDisplayValue, "exact");
9
13
  const toHaveAccessibleName = textMatcher("toHaveAccessibleName", getWidgetAccessibleName, "exact");
10
14
  const toHaveAccessibleDescription = textMatcher("toHaveAccessibleDescription", getWidgetDescribedByText, "exact");
11
15
  const toHaveAccessibleErrorMessage = textMatcher("toHaveAccessibleErrorMessage", readErrorMessageText, "exact");
12
- const toHavePlaceholderText = textMatcher("toHavePlaceholderText", getWidgetPlaceholderText, "exact");
13
16
  const toHaveSelection = textMatcher("toHaveSelection", getWidgetSelection, "exact");
14
17
  const toBePressed = booleanStateMatcher("toBePressed", "pressed", getWidgetPressedState);
15
- const toBeExpanded = booleanStateMatcher("toBeExpanded", "expanded", getWidgetExpandedState);
16
- const toBeSelected = booleanStateMatcher("toBeSelected", "selected", getWidgetSelectedState);
17
18
  const toBeRequired = booleanStateMatcher("toBeRequired", "required", getWidgetRequiredState);
19
+ const toContainAnyByRole = containmentMatcher("toContainAnyByRole", false, queryAllByRole);
20
+ const toContainOneByRole = containmentMatcher("toContainOneByRole", true, queryAllByRole);
21
+ const toContainAnyByText = containmentMatcher("toContainAnyByText", false, queryAllByText);
22
+ const toContainOneByText = containmentMatcher("toContainOneByText", true, queryAllByText);
23
+ const toContainAnyByLabelText = containmentMatcher("toContainAnyByLabelText", false, queryAllByLabelText);
24
+ const toContainOneByLabelText = containmentMatcher("toContainOneByLabelText", true, queryAllByLabelText);
25
+ const toContainAnyByPlaceholderText = containmentMatcher("toContainAnyByPlaceholderText", false, queryAllByPlaceholderText);
26
+ const toContainOneByPlaceholderText = containmentMatcher("toContainOneByPlaceholderText", true, queryAllByPlaceholderText);
27
+ const toContainAnyByDisplayValue = containmentMatcher("toContainAnyByDisplayValue", false, queryAllByDisplayValue);
28
+ const toContainOneByDisplayValue = containmentMatcher("toContainOneByDisplayValue", true, queryAllByDisplayValue);
18
29
  /** The widget assertion matchers keyed by name, suitable for passing to `expect.extend`. */
19
30
  const matchers = {
20
31
  toHaveDisplayValue,
@@ -22,18 +33,18 @@ const matchers = {
22
33
  toHaveAccessibleName,
23
34
  toHaveAccessibleDescription,
24
35
  toHaveAccessibleErrorMessage,
25
- toHavePlaceholderText,
26
36
  toHaveSelection,
37
+ toHaveAccessibleState,
38
+ toHaveAccessibleProperty,
27
39
  toBeChecked,
28
40
  toBePartiallyChecked,
29
41
  toBePressed,
30
- toBeExpanded,
31
- toBeSelected,
42
+ toBePartiallyPressed,
32
43
  toBeDisabled,
33
44
  toBeEnabled,
34
45
  toBeVisible,
35
46
  toBeRooted,
36
- toBeEmpty,
47
+ toBeEmptyWidget,
37
48
  toBeInvalid,
38
49
  toBeValid,
39
50
  toBeRequired,
@@ -41,6 +52,18 @@ const matchers = {
41
52
  toHaveValue,
42
53
  toHaveRole,
43
54
  toContainElement,
55
+ toAppearBefore,
56
+ toAppearAfter,
57
+ toContainAnyByRole,
58
+ toContainOneByRole,
59
+ toContainAnyByText,
60
+ toContainOneByText,
61
+ toContainAnyByLabelText,
62
+ toContainOneByLabelText,
63
+ toContainAnyByPlaceholderText,
64
+ toContainOneByPlaceholderText,
65
+ toContainAnyByDisplayValue,
66
+ toContainOneByDisplayValue,
44
67
  toHaveClass,
45
68
  toHaveObjectProperty,
46
69
  };
@@ -88,6 +111,51 @@ const stateResult = (widget, stateName, isPass) => ({
88
111
  pass: isPass,
89
112
  message: () => `expected widget ${negationPrefix(isPass)}to be ${stateName}\n${describeWidget(widget)}`,
90
113
  });
114
+ const describeAttributeValue = (value) => value === null ? "unset" : JSON.stringify(value);
115
+ const attributeSetResult = (widget, label, actual) => {
116
+ const isSet = actual !== null;
117
+ return {
118
+ pass: isSet,
119
+ message: () => `expected widget ${negationPrefix(isSet)}to have ${label} set\n${describeWidget(widget)}`,
120
+ };
121
+ };
122
+ const describeReading = (expectation) => `${describeAttributeValue(expectation.actual)}${expectation.isReadingRounded ? ROUNDED_READING : ""}`;
123
+ const attributeValueResult = (widget, expectation) => ({
124
+ pass: expectation.isPass,
125
+ message: () => `expected widget ${negationPrefix(expectation.isPass)}to have ${expectation.label} ` +
126
+ `${expectation.comparison} ${describeAttributeValue(expectation.expected)}, but received ` +
127
+ `${describeReading(expectation)}\n${describeWidget(widget)}`,
128
+ });
129
+ const orderResult = (widget, other, position, isPass) => ({
130
+ pass: isPass,
131
+ message: () => `expected widget ${negationPrefix(isPass)}to appear ${position} ${describeWidget(other)} ` +
132
+ `in the widget tree\n${describeWidget(widget)}`,
133
+ });
134
+ const getTreeRoot = (widget) => {
135
+ let root = widget;
136
+ let parent = root.getParent();
137
+ while (parent) {
138
+ root = parent;
139
+ parent = root.getParent();
140
+ }
141
+ return root;
142
+ };
143
+ const isSeparateWidget = (first, second) => first !== second && !first.isAncestor(second) && !second.isAncestor(first);
144
+ const isPrecedingWidget = (root, first, second) => {
145
+ for (const widget of descendants(root)) {
146
+ if (widget === first) {
147
+ return true;
148
+ }
149
+ if (widget === second) {
150
+ return false;
151
+ }
152
+ }
153
+ return false;
154
+ };
155
+ const isAppearingBefore = (first, second) => {
156
+ const root = getTreeRoot(first);
157
+ return isSeparateWidget(first, second) && root === getTreeRoot(second) && isPrecedingWidget(root, first, second);
158
+ };
91
159
  const camelCase = (name) => name.replaceAll(/-([a-z])/g, (_match, letter) => letter.toUpperCase());
92
160
  const isAsymmetricMatcher = (value) => typeof value === "object" && value !== null && typeof Reflect.get(value, "asymmetricMatch") === "function";
93
161
  const isEqualValue = (context, actual, expected) => {
@@ -206,6 +274,77 @@ function booleanStateMatcher(matcherName, stateName, read) {
206
274
  return stateResult(widget, stateName, state);
207
275
  };
208
276
  }
277
+ function containmentMatcher(matcherName, isSingle, queryAll) {
278
+ const quantity = isSingle ? "exactly one widget" : "any widget";
279
+ return (received, ...args) => {
280
+ const widget = asWidget(received, matcherName);
281
+ const matches = queryAll(widget, ...args);
282
+ const isPass = isSingle ? matches.length === 1 : matches.length > 0;
283
+ return {
284
+ pass: isPass,
285
+ message: () => `expected widget ${negationPrefix(isPass)}to contain ${quantity} matching ${matcherName}, ` +
286
+ `but found ${String(matches.length)}\n${describeWidget(widget)}`,
287
+ };
288
+ };
289
+ }
290
+ function toHaveAccessibleState(received, state, expected) {
291
+ const widget = asWidget(received, "toHaveAccessibleState");
292
+ const actual = readAccessibleState(widget, state);
293
+ const label = `accessible state ${Gtk.AccessibleState[state]}`;
294
+ if (expected === undefined) {
295
+ return attributeSetResult(widget, label, actual);
296
+ }
297
+ const wanted = typeof expected === "boolean" ? Number(expected) : expected;
298
+ return attributeValueResult(widget, {
299
+ label,
300
+ comparison: "equal to",
301
+ expected: wanted,
302
+ actual,
303
+ isPass: actual === wanted,
304
+ isReadingRounded: false,
305
+ });
306
+ }
307
+ const propertyLabel = (property) => `accessible property ${Gtk.AccessibleProperty[property]}`;
308
+ const propertyExpectation = (widget, property, expected, actual) => {
309
+ const label = propertyLabel(property);
310
+ if (typeof expected === "number" && isAccessibleNumberProperty(property)) {
311
+ return {
312
+ label,
313
+ comparison: `within ${String(ACCESSIBLE_NUMBER_TOLERANCE)} of`,
314
+ expected,
315
+ actual,
316
+ isPass: isAccessibleNumberMatch(widget, property, expected),
317
+ isReadingRounded: actual !== null,
318
+ };
319
+ }
320
+ return { label, comparison: "equal to", expected, actual, isPass: actual === expected, isReadingRounded: false };
321
+ };
322
+ function toHaveAccessibleProperty(received, property, expected) {
323
+ const widget = asWidget(received, "toHaveAccessibleProperty");
324
+ const actual = readAccessibleProperty(widget, property);
325
+ if (expected === undefined) {
326
+ return attributeSetResult(widget, propertyLabel(property), actual);
327
+ }
328
+ return attributeValueResult(widget, propertyExpectation(widget, property, expected, actual));
329
+ }
330
+ function toBePartiallyPressed(received) {
331
+ const widget = asWidget(received, "toBePartiallyPressed");
332
+ const state = readAccessibleState(widget, Gtk.AccessibleState.PRESSED);
333
+ if (state === null) {
334
+ throw notApplicable("toBePartiallyPressed", "pressed state", widget);
335
+ }
336
+ return stateResult(widget, "partially pressed", state === MIXED_TRISTATE);
337
+ }
338
+ function toAppearBefore(received, other) {
339
+ const widget = asWidget(received, "toAppearBefore");
340
+ const target = asWidget(other, "toAppearBefore");
341
+ return orderResult(widget, target, "before", isAppearingBefore(widget, target));
342
+ }
343
+ function toAppearAfter(received, other) {
344
+ const widget = asWidget(received, "toAppearAfter");
345
+ const target = asWidget(other, "toAppearAfter");
346
+ return orderResult(widget, target, "after", isAppearingBefore(target, widget));
347
+ }
209
348
  function readCheckedState(widget, matcherName) {
210
349
  const state = getWidgetCheckedState(widget);
211
350
  if (state === null) {
@@ -228,20 +367,21 @@ function toHaveDisplayValue(received, expected) {
228
367
  }
229
368
  return displayValueMatcher(received, expected);
230
369
  }
370
+ const describeValueExpectation = (expected) => expected === undefined ? "set" : `within ${String(ACCESSIBLE_NUMBER_TOLERANCE)} of ${String(expected)}`;
231
371
  function toHaveValue(received, expected) {
232
372
  const widget = asWidget(received, "toHaveValue");
233
373
  if (typeof expected === "string") {
234
374
  return displayValueMatcher(received, expected);
235
375
  }
236
- const actual = getWidgetValue(widget).now;
376
+ const actual = getWidgetValueNow(widget);
237
377
  if (actual === null) {
238
378
  throw notApplicable("toHaveValue", "numeric value", widget);
239
379
  }
240
- const isPass = expected === undefined || actual === expected;
380
+ const isPass = expected === undefined || isWidgetValueMatch(widget, "now", expected);
241
381
  return {
242
382
  pass: isPass,
243
- message: () => `expected widget ${negationPrefix(isPass)}to have value ${String(expected)}, ` +
244
- `but received ${String(actual)}\n${describeWidget(widget)}`,
383
+ message: () => `expected widget ${negationPrefix(isPass)}to have value ${describeValueExpectation(expected)}, ` +
384
+ `but received ${String(actual)}${ROUNDED_READING}\n${describeWidget(widget)}`,
245
385
  };
246
386
  }
247
387
  function toBeDisabled(received) {
@@ -263,8 +403,8 @@ function toBeRooted(received) {
263
403
  const widget = asWidget(received, "toBeRooted");
264
404
  return stateResult(widget, "rooted in a window", isWidgetRooted(widget));
265
405
  }
266
- function toBeEmpty(received) {
267
- const widget = asWidget(received, "toBeEmpty");
406
+ function toBeEmptyWidget(received) {
407
+ const widget = asWidget(received, "toBeEmptyWidget");
268
408
  return stateResult(widget, "empty", widget.getFirstChild() === null && getWidgetLabelText(widget) === null);
269
409
  }
270
410
  function toBeInvalid(received) {
@@ -329,8 +469,6 @@ function toHaveObjectProperty(received, ...args) {
329
469
  `"${String(name)}", but received ${JSON.stringify(actual)}`,
330
470
  };
331
471
  }
332
- /* eslint-disable-next-line unicorn/no-this-outside-of-class --
333
- expect.extend invokes matchers with the matcher state as `this` */
334
472
  const isPass = isEqualValue(this, actual, expected);
335
473
  return {
336
474
  pass: isPass,
@@ -350,5 +488,5 @@ const registerMatchers = () => {
350
488
  expect.extend(matchers);
351
489
  registration.isRegistered = true;
352
490
  };
353
- export { toHaveDisplayValue, toHaveTextContent, toHaveAccessibleName, toHaveAccessibleDescription, toHaveAccessibleErrorMessage, toHavePlaceholderText, toHaveSelection, toBeChecked, toBePartiallyChecked, toBePressed, toBeExpanded, toBeSelected, toBeDisabled, toBeEnabled, toBeVisible, toBeRooted, toBeEmpty, toBeInvalid, toBeValid, toBeRequired, toHaveFocus, toHaveValue, toHaveRole, toContainElement, toHaveClass, toHaveObjectProperty, matchers, registerMatchers, };
491
+ export { matchers, registerMatchers };
354
492
  //# sourceMappingURL=matchers.js.map