@gtkx/testing 1.6.0 → 2.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -44
- package/dist/accessible-native.d.ts +1 -1
- package/dist/accessible-native.d.ts.map +1 -1
- package/dist/accessible-native.js +29 -8
- package/dist/accessible-native.js.map +1 -1
- package/dist/build-queries.d.ts +9 -9
- package/dist/build-queries.d.ts.map +1 -1
- package/dist/build-queries.js +2 -1
- package/dist/build-queries.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -3
- package/dist/config.js.map +1 -1
- package/dist/fire-event.d.ts +3 -3
- package/dist/fire-event.d.ts.map +1 -1
- package/dist/fire-event.js +14 -4
- package/dist/fire-event.js.map +1 -1
- package/dist/matchers.d.ts +52 -56
- package/dist/matchers.d.ts.map +1 -1
- package/dist/matchers.js +4 -16
- package/dist/matchers.js.map +1 -1
- package/dist/queries.d.ts +37 -133
- package/dist/queries.d.ts.map +1 -1
- package/dist/queries.js +48 -136
- package/dist/queries.js.map +1 -1
- package/dist/query-helpers.d.ts +2 -2
- package/dist/query-helpers.d.ts.map +1 -1
- package/dist/query-helpers.js +10 -3
- package/dist/query-helpers.js.map +1 -1
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +4 -0
- package/dist/render.js.map +1 -1
- package/dist/role-helpers.d.ts +1 -1
- package/dist/role-helpers.d.ts.map +1 -1
- package/dist/role-helpers.js +2 -1
- package/dist/role-helpers.js.map +1 -1
- package/dist/screenshot.d.ts +1 -1
- package/dist/screenshot.d.ts.map +1 -1
- package/dist/screenshot.js +26 -8
- package/dist/screenshot.js.map +1 -1
- package/dist/suggestions.d.ts +1 -1
- package/dist/suggestions.d.ts.map +1 -1
- package/dist/suggestions.js +3 -1
- package/dist/suggestions.js.map +1 -1
- package/dist/traversal.d.ts +4 -4
- package/dist/traversal.d.ts.map +1 -1
- package/dist/traversal.js +25 -7
- package/dist/traversal.js.map +1 -1
- package/dist/types.d.ts +10 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/user-event/adjustment.d.ts +2 -14
- package/dist/user-event/adjustment.d.ts.map +1 -1
- package/dist/user-event/adjustment.js +2 -14
- package/dist/user-event/adjustment.js.map +1 -1
- package/dist/user-event/click.d.ts +20 -45
- package/dist/user-event/click.d.ts.map +1 -1
- package/dist/user-event/click.js +31 -50
- package/dist/user-event/click.js.map +1 -1
- package/dist/user-event/controller.d.ts +5 -5
- package/dist/user-event/controller.d.ts.map +1 -1
- package/dist/user-event/controller.js +5 -2
- package/dist/user-event/controller.js.map +1 -1
- package/dist/user-event/gesture.d.ts +9 -43
- package/dist/user-event/gesture.d.ts.map +1 -1
- package/dist/user-event/gesture.js +9 -43
- package/dist/user-event/gesture.js.map +1 -1
- package/dist/user-event/index.d.ts +38 -107
- package/dist/user-event/index.d.ts.map +1 -1
- package/dist/user-event/index.js +29 -30
- package/dist/user-event/index.js.map +1 -1
- package/dist/user-event/keyboard.d.ts +1 -1
- package/dist/user-event/keyboard.d.ts.map +1 -1
- package/dist/user-event/keyboard.js +24 -3
- package/dist/user-event/keyboard.js.map +1 -1
- package/dist/user-event/list-row-click.d.ts +1 -1
- package/dist/user-event/list-row-click.d.ts.map +1 -1
- package/dist/user-event/list-row-click.js +2 -1
- package/dist/user-event/list-row-click.js.map +1 -1
- package/dist/user-event/pointer.d.ts.map +1 -1
- package/dist/user-event/pointer.js +9 -11
- package/dist/user-event/pointer.js.map +1 -1
- package/dist/user-event/selection.d.ts +4 -20
- package/dist/user-event/selection.d.ts.map +1 -1
- package/dist/user-event/selection.js +11 -23
- package/dist/user-event/selection.js.map +1 -1
- package/dist/user-event/text.d.ts +5 -34
- package/dist/user-event/text.d.ts.map +1 -1
- package/dist/user-event/text.js +5 -34
- package/dist/user-event/text.js.map +1 -1
- package/dist/wait-for.d.ts +2 -2
- package/dist/wait-for.d.ts.map +1 -1
- package/dist/wait-for.js +6 -4
- package/dist/wait-for.js.map +1 -1
- package/dist/widget-accessible-properties.d.ts +4 -3
- package/dist/widget-accessible-properties.d.ts.map +1 -1
- package/dist/widget-accessible-properties.js +38 -51
- package/dist/widget-accessible-properties.js.map +1 -1
- package/dist/widget-getters.d.ts +7 -9
- package/dist/widget-getters.d.ts.map +1 -1
- package/dist/widget-getters.js.map +1 -1
- package/dist/widget-target.d.ts +4 -0
- package/dist/widget-target.d.ts.map +1 -0
- package/dist/widget-target.js +9 -0
- package/dist/widget-target.js.map +1 -0
- package/package.json +17 -10
- package/src/accessible-native.ts +45 -9
- package/src/build-queries.ts +60 -30
- package/src/config.ts +1 -3
- package/src/fire-event.ts +32 -8
- package/src/matchers.ts +63 -85
- package/src/queries.ts +94 -156
- package/src/query-helpers.ts +17 -9
- package/src/render.tsx +7 -2
- package/src/role-helpers.ts +3 -1
- package/src/screenshot.ts +49 -8
- package/src/suggestions.ts +3 -1
- package/src/traversal.ts +35 -11
- package/src/types.ts +14 -10
- package/src/user-event/adjustment.ts +2 -14
- package/src/user-event/click.ts +40 -58
- package/src/user-event/controller.ts +8 -5
- package/src/user-event/gesture.ts +9 -43
- package/src/user-event/index.ts +149 -132
- package/src/user-event/keyboard.ts +33 -4
- package/src/user-event/list-row-click.ts +2 -2
- package/src/user-event/pointer.ts +11 -15
- package/src/user-event/selection.ts +15 -25
- package/src/user-event/text.ts +5 -34
- package/src/wait-for.ts +9 -6
- package/src/widget-accessible-properties.ts +61 -69
- package/src/widget-getters.ts +11 -13
- package/src/widget-target.ts +11 -0
package/dist/fire-event.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import * as GObject from "@gtkx/gi/gobject";
|
|
2
2
|
import { runInAct } from "./act.js";
|
|
3
|
+
const requireObject = (target) => {
|
|
4
|
+
if (!(target instanceof GObject.Object)) {
|
|
5
|
+
throw new TypeError("Expected a GObject instance");
|
|
6
|
+
}
|
|
7
|
+
return target;
|
|
8
|
+
};
|
|
3
9
|
/**
|
|
4
10
|
* Records a signal emission without delivering it, so it can be inspected or held and passed to
|
|
5
11
|
* {@link fireEvent} later.
|
|
@@ -10,23 +16,27 @@ import { runInAct } from "./act.js";
|
|
|
10
16
|
* @returns The recorded emission.
|
|
11
17
|
*/
|
|
12
18
|
const createEvent = (target, signalName, ...args) => ({
|
|
13
|
-
target,
|
|
19
|
+
target: requireObject(target),
|
|
14
20
|
signalName,
|
|
15
21
|
args,
|
|
16
22
|
});
|
|
17
23
|
const dispatchEvent = async (event) => {
|
|
24
|
+
const target = requireObject(event.target);
|
|
18
25
|
await runInAct(() => {
|
|
19
|
-
|
|
26
|
+
Reflect.apply(GObject.signalEmit, undefined, [target, event.signalName, ...event.args]);
|
|
20
27
|
});
|
|
21
28
|
};
|
|
29
|
+
const isWidgetEvent = (value) => "target" in value && "signalName" in value && "args" in value &&
|
|
30
|
+
typeof value.signalName === "string" && Array.isArray(value.args);
|
|
22
31
|
function fireEvent(eventOrTarget, signalName, ...args) {
|
|
23
|
-
if (
|
|
32
|
+
if (signalName === undefined && isWidgetEvent(eventOrTarget)) {
|
|
24
33
|
return dispatchEvent(eventOrTarget);
|
|
25
34
|
}
|
|
26
35
|
if (signalName === undefined) {
|
|
27
36
|
throw new Error("Unable to fire an event: pass a signal name, or an event built by createEvent.");
|
|
28
37
|
}
|
|
29
|
-
|
|
38
|
+
const target = requireObject(eventOrTarget);
|
|
39
|
+
return dispatchEvent({ target, signalName, args });
|
|
30
40
|
}
|
|
31
41
|
export { createEvent, fireEvent };
|
|
32
42
|
//# sourceMappingURL=fire-event.js.map
|
package/dist/fire-event.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fire-event.js","sourceRoot":"","sources":["../src/fire-event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAepC;;;;;;;;GAQG;AACH,MAAM,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"fire-event.js","sourceRoot":"","sources":["../src/fire-event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAepC,MAAM,aAAa,GAAG,CAAC,MAAc,EAAkB,EAAE;IACrD,IAAI,CAAC,CAAC,MAAM,YAAY,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,SAAS,CAAC,6BAA6B,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,WAAW,GAAG,CAChB,MAAwC,EACxC,UAAkB,EAClB,GAAG,IAAe,EACP,EAAE,CAAC,CAAC;IACf,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC;IAC7B,UAAU;IACV,IAAI;CACP,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,KAAK,EAAE,KAAkB,EAAiB,EAAE;IAC9D,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE3C,MAAM,QAAQ,CAAC,GAAG,EAAE;QAChB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAa,EAAwB,EAAE,CAC1D,QAAQ,IAAI,KAAK,IAAI,YAAY,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK;IAC7D,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAuBtE,SAAS,SAAS,CACd,aAA6D,EAC7D,UAAmB,EACnB,GAAG,IAAe;IAElB,IAAI,UAAU,KAAK,SAAS,IAAI,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;QAC3D,OAAO,aAAa,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;IACtG,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;IAE5C,OAAO,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,SAAS,EAAoB,CAAC","sourcesContent":["import * as GObject from \"@gtkx/gi/gobject\";\nimport { runInAct } from \"./act.js\";\n\n/**\n * A signal emission built but not yet delivered. GObject has no event object to construct, so this\n * records the target, signal, and arguments {@link fireEvent} will emit.\n */\ntype WidgetEvent = {\n /** The GObject instance the signal is emitted on. */\n target: Pick<GObject.Object, \"__type__\">;\n /** Name of the signal to emit. */\n signalName: string;\n /** Arguments passed to the signal handlers. */\n args: unknown[];\n};\n\nconst requireObject = (target: object): GObject.Object => {\n if (!(target instanceof GObject.Object)) {\n throw new TypeError(\"Expected a GObject instance\");\n }\n\n return target;\n};\n\n/**\n * Records a signal emission without delivering it, so it can be inspected or held and passed to\n * {@link fireEvent} later.\n *\n * @param target The GObject instance the signal would be emitted on.\n * @param signalName Name of the signal to emit.\n * @param args Arguments to pass to the signal handlers.\n * @returns The recorded emission.\n */\nconst createEvent = (\n target: Pick<GObject.Object, \"__type__\">,\n signalName: string,\n ...args: unknown[]\n): WidgetEvent => ({\n target: requireObject(target),\n signalName,\n args,\n});\n\nconst dispatchEvent = async (event: WidgetEvent): Promise<void> => {\n const target = requireObject(event.target);\n\n await runInAct(() => {\n Reflect.apply(GObject.signalEmit, undefined, [target, event.signalName, ...event.args]);\n });\n};\n\nconst isWidgetEvent = (value: object): value is WidgetEvent =>\n \"target\" in value && \"signalName\" in value && \"args\" in value &&\n typeof value.signalName === \"string\" && Array.isArray(value.args);\n\n/**\n * Emits a recorded signal emission inside React's act environment, so any resulting state updates are\n * flushed before the promise resolves.\n *\n * @param event An emission built by {@link createEvent}.\n */\nfunction fireEvent(event: WidgetEvent): Promise<void>;\n/**\n * Emits a GObject signal on a widget or object inside React's act environment, so any resulting state\n * updates are flushed before the promise resolves.\n *\n * @param target The GObject instance to emit the signal on.\n * @param signalName Name of the signal to emit.\n * @param args Arguments passed to the signal handlers.\n */\nfunction fireEvent(\n target: Pick<GObject.Object, \"__type__\">,\n signalName: string,\n ...args: unknown[]\n): Promise<void>;\n\nfunction fireEvent(\n eventOrTarget: WidgetEvent | Pick<GObject.Object, \"__type__\">,\n signalName?: string,\n ...args: unknown[]\n): Promise<void> {\n if (signalName === undefined && isWidgetEvent(eventOrTarget)) {\n return dispatchEvent(eventOrTarget);\n }\n\n if (signalName === undefined) {\n throw new Error(\"Unable to fire an event: pass a signal name, or an event built by createEvent.\");\n }\n\n const target = requireObject(eventOrTarget);\n\n return dispatchEvent({ target, signalName, args });\n}\n\nexport { createEvent, fireEvent, type WidgetEvent };\n"]}
|
package/dist/matchers.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { SyncMatcherResult } from "vitest";
|
|
2
2
|
import * as Gtk from "@gtkx/gi/gtk";
|
|
3
3
|
import type { ByRoleOptions, Matcher, MatcherOptions } from "./types.js";
|
|
4
4
|
import { type AccessibleAttributeValue } from "./accessible-native.js";
|
|
@@ -15,7 +15,7 @@ type TextContentOptions = {
|
|
|
15
15
|
/** The expected value for a style class: an exact class name or a regular expression. */
|
|
16
16
|
type ClassExpectation = string | RegExp;
|
|
17
17
|
/** The outcome of a matcher: whether it passed, and the failure text built on demand. */
|
|
18
|
-
type MatcherResult = Pick<
|
|
18
|
+
type MatcherResult = Pick<SyncMatcherResult, "message" | "pass">;
|
|
19
19
|
/** The matcher state bound as `this`, supplying the test runner's deep equality check. */
|
|
20
20
|
type MatcherContext = {
|
|
21
21
|
/** Compares a received value against an expected one, resolving asymmetric matchers. */
|
|
@@ -106,11 +106,11 @@ type MatcherImplementations = {
|
|
|
106
106
|
/** Asserts the widget's accessible role. */
|
|
107
107
|
toHaveRole: (received: unknown, expected: Gtk.AccessibleRole) => MatcherResult;
|
|
108
108
|
/** Asserts the widget is, or is an ancestor of, the given widget. */
|
|
109
|
-
toContainElement: (received: unknown, descendant: Gtk.
|
|
109
|
+
toContainElement: (received: unknown, descendant: Gtk.Accessible | null) => MatcherResult;
|
|
110
110
|
/** Asserts the widget comes before the given widget in the widget tree, neither containing the other. */
|
|
111
|
-
toAppearBefore: (received: unknown, other: Gtk.
|
|
111
|
+
toAppearBefore: (received: unknown, other: Gtk.Accessible) => MatcherResult;
|
|
112
112
|
/** Asserts the widget comes after the given widget in the widget tree, neither containing the other. */
|
|
113
|
-
toAppearAfter: (received: unknown, other: Gtk.
|
|
113
|
+
toAppearAfter: (received: unknown, other: Gtk.Accessible) => MatcherResult;
|
|
114
114
|
/** Asserts at least one widget under the received one matches the `ByRole` query. */
|
|
115
115
|
toContainAnyByRole: ContainmentMatcher<RoleQueryArgs>;
|
|
116
116
|
/** Asserts exactly one widget under the received one matches the `ByRole` query. */
|
|
@@ -146,59 +146,55 @@ type MatcherImplementations = {
|
|
|
146
146
|
declare const matchers: MatcherImplementations;
|
|
147
147
|
/** Registers the widget matchers on the global `expect`, when one is available. Safe to call more than once. */
|
|
148
148
|
declare const registerMatchers: () => void;
|
|
149
|
-
declare module "
|
|
150
|
-
interface
|
|
151
|
-
toHaveDisplayValue(expected?: TextExpectation):
|
|
152
|
-
toHaveTextContent(expected?: TextExpectation, options?: TextContentOptions):
|
|
153
|
-
toHaveAccessibleName(expected?: TextExpectation):
|
|
154
|
-
toHaveAccessibleDescription(expected?: TextExpectation):
|
|
155
|
-
toHaveAccessibleErrorMessage(expected?: TextExpectation):
|
|
156
|
-
toHaveSelection(expected?: TextExpectation):
|
|
157
|
-
toHaveAccessibleState(state: BooleanAccessibleState, expected?: boolean):
|
|
158
|
-
toHaveAccessibleState(state: TristateAccessibleState, expected?: Gtk.AccessibleTristate):
|
|
159
|
-
toHaveAccessibleState(state: Gtk.AccessibleState.INVALID, expected?: Gtk.AccessibleInvalidState):
|
|
160
|
-
toHaveAccessibleProperty(property: StringAccessibleProperty, expected?: string):
|
|
161
|
-
toHaveAccessibleProperty(property: BooleanAccessibleProperty, expected?: boolean):
|
|
162
|
-
toHaveAccessibleProperty(property: NumberAccessibleProperty, expected?: number):
|
|
163
|
-
toHaveAccessibleProperty(property: Gtk.AccessibleProperty.AUTOCOMPLETE, expected?: Gtk.AccessibleAutocomplete):
|
|
164
|
-
toHaveAccessibleProperty(property: Gtk.AccessibleProperty.ORIENTATION, expected?: Gtk.Orientation):
|
|
165
|
-
toHaveAccessibleProperty(property: Gtk.AccessibleProperty.SORT, expected?: Gtk.AccessibleSort):
|
|
166
|
-
toBeChecked():
|
|
167
|
-
toBePartiallyChecked():
|
|
168
|
-
toBePressed():
|
|
169
|
-
toBePartiallyPressed():
|
|
170
|
-
toBeDisabled():
|
|
171
|
-
toBeEnabled():
|
|
172
|
-
toBeVisible():
|
|
173
|
-
toBeRooted():
|
|
174
|
-
toBeEmptyWidget():
|
|
175
|
-
toBeInvalid():
|
|
176
|
-
toBeValid():
|
|
177
|
-
toBeRequired():
|
|
178
|
-
toHaveFocus():
|
|
179
|
-
toHaveValue(expected?: number | string):
|
|
180
|
-
toHaveRole(expected: Gtk.AccessibleRole):
|
|
181
|
-
toContainElement(descendant: Gtk.
|
|
182
|
-
toAppearBefore(other: Gtk.
|
|
183
|
-
toAppearAfter(other: Gtk.
|
|
184
|
-
toContainAnyByRole(...args: RoleQueryArgs):
|
|
185
|
-
toContainOneByRole(...args: RoleQueryArgs):
|
|
186
|
-
toContainAnyByText(...args: TextQueryArgs):
|
|
187
|
-
toContainOneByText(...args: TextQueryArgs):
|
|
188
|
-
toContainAnyByLabelText(...args: TextQueryArgs):
|
|
189
|
-
toContainOneByLabelText(...args: TextQueryArgs):
|
|
190
|
-
toContainAnyByPlaceholderText(...args: TextQueryArgs):
|
|
191
|
-
toContainOneByPlaceholderText(...args: TextQueryArgs):
|
|
192
|
-
toContainAnyByDisplayValue(...args: TextQueryArgs):
|
|
193
|
-
toContainOneByDisplayValue(...args: TextQueryArgs):
|
|
149
|
+
declare module "vitest" {
|
|
150
|
+
interface Matchers<R extends void | Promise<void> = void | Promise<void>, T = unknown> {
|
|
151
|
+
toHaveDisplayValue(expected?: TextExpectation): R;
|
|
152
|
+
toHaveTextContent(expected?: TextExpectation, options?: TextContentOptions): R;
|
|
153
|
+
toHaveAccessibleName(expected?: TextExpectation): R;
|
|
154
|
+
toHaveAccessibleDescription(expected?: TextExpectation): R;
|
|
155
|
+
toHaveAccessibleErrorMessage(expected?: TextExpectation): R;
|
|
156
|
+
toHaveSelection(expected?: TextExpectation): R;
|
|
157
|
+
toHaveAccessibleState(state: BooleanAccessibleState, expected?: boolean): R;
|
|
158
|
+
toHaveAccessibleState(state: TristateAccessibleState, expected?: Gtk.AccessibleTristate): R;
|
|
159
|
+
toHaveAccessibleState(state: Gtk.AccessibleState.INVALID, expected?: Gtk.AccessibleInvalidState): R;
|
|
160
|
+
toHaveAccessibleProperty(property: StringAccessibleProperty, expected?: string): R;
|
|
161
|
+
toHaveAccessibleProperty(property: BooleanAccessibleProperty, expected?: boolean): R;
|
|
162
|
+
toHaveAccessibleProperty(property: NumberAccessibleProperty, expected?: number): R;
|
|
163
|
+
toHaveAccessibleProperty(property: Gtk.AccessibleProperty.AUTOCOMPLETE, expected?: Gtk.AccessibleAutocomplete): R;
|
|
164
|
+
toHaveAccessibleProperty(property: Gtk.AccessibleProperty.ORIENTATION, expected?: Gtk.Orientation): R;
|
|
165
|
+
toHaveAccessibleProperty(property: Gtk.AccessibleProperty.SORT, expected?: Gtk.AccessibleSort): R;
|
|
166
|
+
toBeChecked(): R;
|
|
167
|
+
toBePartiallyChecked(): R;
|
|
168
|
+
toBePressed(): R;
|
|
169
|
+
toBePartiallyPressed(): R;
|
|
170
|
+
toBeDisabled(): R;
|
|
171
|
+
toBeEnabled(): R;
|
|
172
|
+
toBeVisible(): R;
|
|
173
|
+
toBeRooted(): R;
|
|
174
|
+
toBeEmptyWidget(): R;
|
|
175
|
+
toBeInvalid(): R;
|
|
176
|
+
toBeValid(): R;
|
|
177
|
+
toBeRequired(): R;
|
|
178
|
+
toHaveFocus(): R;
|
|
179
|
+
toHaveValue(expected?: number | string): R;
|
|
180
|
+
toHaveRole(expected: Gtk.AccessibleRole): R;
|
|
181
|
+
toContainElement(descendant: Gtk.Accessible | null): R;
|
|
182
|
+
toAppearBefore(other: Gtk.Accessible): R;
|
|
183
|
+
toAppearAfter(other: Gtk.Accessible): R;
|
|
184
|
+
toContainAnyByRole(...args: RoleQueryArgs): R;
|
|
185
|
+
toContainOneByRole(...args: RoleQueryArgs): R;
|
|
186
|
+
toContainAnyByText(...args: TextQueryArgs): R;
|
|
187
|
+
toContainOneByText(...args: TextQueryArgs): R;
|
|
188
|
+
toContainAnyByLabelText(...args: TextQueryArgs): R;
|
|
189
|
+
toContainOneByLabelText(...args: TextQueryArgs): R;
|
|
190
|
+
toContainAnyByPlaceholderText(...args: TextQueryArgs): R;
|
|
191
|
+
toContainOneByPlaceholderText(...args: TextQueryArgs): R;
|
|
192
|
+
toContainAnyByDisplayValue(...args: TextQueryArgs): R;
|
|
193
|
+
toContainOneByDisplayValue(...args: TextQueryArgs): R;
|
|
194
194
|
toHaveClass(...args: (ClassExpectation | {
|
|
195
195
|
exact: boolean;
|
|
196
|
-
})[]):
|
|
197
|
-
toHaveObjectProperty(name: string, expected?: unknown):
|
|
198
|
-
}
|
|
199
|
-
interface Assertion extends WidgetMatchers {
|
|
200
|
-
}
|
|
201
|
-
interface AsymmetricMatchersContaining extends WidgetMatchers {
|
|
196
|
+
})[]): R;
|
|
197
|
+
toHaveObjectProperty(name: string, expected?: unknown): R;
|
|
202
198
|
}
|
|
203
199
|
}
|
|
204
200
|
export { matchers, registerMatchers, type ClassExpectation, type TextContentOptions, type TextExpectation };
|
package/dist/matchers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matchers.d.ts","sourceRoot":"","sources":["../src/matchers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"matchers.d.ts","sourceRoot":"","sources":["../src/matchers.ts"],"names":[],"mappings":"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"}
|
package/dist/matchers.js
CHANGED
|
@@ -176,7 +176,6 @@ const isAppearingBefore = (first, second) => {
|
|
|
176
176
|
const root = getTreeRoot(first);
|
|
177
177
|
return isSeparateWidget(first, second) && root === getTreeRoot(second) && isPrecedingWidget(root, first, second);
|
|
178
178
|
};
|
|
179
|
-
const camelCase = (name) => name.replaceAll(/-([a-z])/g, (_match, letter) => letter.toUpperCase());
|
|
180
179
|
const isAsymmetricMatcher = (value) => typeof value === "object" && value !== null && typeof Reflect.get(value, "asymmetricMatch") === "function";
|
|
181
180
|
const isEqualValue = (context, actual, expected) => {
|
|
182
181
|
if (isAsymmetricMatcher(expected)) {
|
|
@@ -217,20 +216,8 @@ function readErrorMessageText(widget) {
|
|
|
217
216
|
const texts = targets.map((target) => getWidgetAccessibleName(target)).filter((text) => text !== null);
|
|
218
217
|
return texts.length > 0 ? texts.join(" ") : null;
|
|
219
218
|
}
|
|
220
|
-
function assertReadableProperty(object, name, property, value) {
|
|
221
|
-
if (typeof value === "function") {
|
|
222
|
-
throw new TypeError(`toHaveObjectProperty: "${name}" is shadowed by a method of the same name; ` +
|
|
223
|
-
`call ${property}() and assert on its result instead`);
|
|
224
|
-
}
|
|
225
|
-
if (value === undefined && !Reflect.has(object, property)) {
|
|
226
|
-
throw new TypeError(`toHaveObjectProperty: no readable property "${name}" on ${describeObject(object)}; ` +
|
|
227
|
-
"construct-only and write-only properties cannot be read back");
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
219
|
function readObjectProperty(object, name) {
|
|
231
|
-
const
|
|
232
|
-
const value = Reflect.get(object, property);
|
|
233
|
-
assertReadableProperty(object, name, property, value);
|
|
220
|
+
const value = Reflect.apply(GObject.getProperty, undefined, [object, name]);
|
|
234
221
|
return value;
|
|
235
222
|
}
|
|
236
223
|
function classEntries(entry) {
|
|
@@ -453,11 +440,12 @@ function toHaveRole(received, expected) {
|
|
|
453
440
|
}
|
|
454
441
|
function toContainElement(received, descendant) {
|
|
455
442
|
const widget = asWidget(received, "toContainElement");
|
|
456
|
-
const
|
|
443
|
+
const target = descendant === null ? null : asWidget(descendant, "toContainElement");
|
|
444
|
+
const isPass = target !== null && (target === widget || target.isAncestor(widget));
|
|
457
445
|
return {
|
|
458
446
|
pass: isPass,
|
|
459
447
|
message: () => `expected widget ${negationPrefix(isPass)}to contain ` +
|
|
460
|
-
`${
|
|
448
|
+
`${target === null ? "null" : describeWidget(target)}\n${describeWidget(widget)}`,
|
|
461
449
|
};
|
|
462
450
|
}
|
|
463
451
|
function toHaveClass(received, ...args) {
|