@gtkx/testing 0.20.0 → 1.0.0-rc.1
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 +122 -55
- package/dist/act.d.ts +19 -0
- package/dist/act.d.ts.map +1 -0
- package/dist/act.js +48 -0
- package/dist/act.js.map +1 -0
- package/dist/bound-queries.d.ts +32 -0
- package/dist/bound-queries.d.ts.map +1 -0
- package/dist/bound-queries.js +2 -0
- package/dist/bound-queries.js.map +1 -0
- package/dist/build-queries.d.ts +16 -0
- package/dist/build-queries.d.ts.map +1 -0
- package/dist/build-queries.js +103 -0
- package/dist/build-queries.js.map +1 -0
- package/dist/cleanup-registry.d.ts +4 -0
- package/dist/cleanup-registry.d.ts.map +1 -0
- package/dist/cleanup-registry.js +11 -0
- package/dist/cleanup-registry.js.map +1 -0
- package/dist/config.d.ts +18 -51
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -40
- package/dist/config.js.map +1 -1
- package/dist/editable.d.ts +7 -0
- package/dist/editable.d.ts.map +1 -0
- package/dist/editable.js +24 -0
- package/dist/editable.js.map +1 -0
- package/dist/errors.d.ts +29 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +119 -0
- package/dist/errors.js.map +1 -0
- package/dist/fire-event.d.ts +7 -25
- package/dist/fire-event.d.ts.map +1 -1
- package/dist/fire-event.js +9 -29
- package/dist/fire-event.js.map +1 -1
- package/dist/frame-sync.d.ts +3 -0
- package/dist/frame-sync.d.ts.map +1 -0
- package/dist/frame-sync.js +30 -0
- package/dist/frame-sync.js.map +1 -0
- package/dist/index.d.ts +16 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -6
- package/dist/index.js.map +1 -1
- package/dist/matchers.d.ts +55 -0
- package/dist/matchers.d.ts.map +1 -0
- package/dist/matchers.js +103 -0
- package/dist/matchers.js.map +1 -0
- package/dist/pretty-widget.d.ts +21 -25
- package/dist/pretty-widget.d.ts.map +1 -1
- package/dist/pretty-widget.js +69 -115
- package/dist/pretty-widget.js.map +1 -1
- package/dist/queries.d.ts +130 -177
- package/dist/queries.d.ts.map +1 -1
- package/dist/queries.js +212 -325
- package/dist/queries.js.map +1 -1
- package/dist/register-test-hooks.d.ts +2 -0
- package/dist/register-test-hooks.d.ts.map +1 -0
- package/dist/register-test-hooks.js +15 -0
- package/dist/register-test-hooks.js.map +1 -0
- package/dist/render-hook.d.ts +14 -35
- package/dist/render-hook.d.ts.map +1 -1
- package/dist/render-hook.js +8 -45
- package/dist/render-hook.js.map +1 -1
- package/dist/render.d.ts +11 -41
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +129 -118
- package/dist/render.js.map +1 -1
- package/dist/role-helpers.d.ts +16 -51
- package/dist/role-helpers.d.ts.map +1 -1
- package/dist/role-helpers.js +39 -58
- package/dist/role-helpers.js.map +1 -1
- package/dist/screen.d.ts +6 -63
- package/dist/screen.d.ts.map +1 -1
- package/dist/screen.js +21 -109
- package/dist/screen.js.map +1 -1
- package/dist/screenshot.d.ts +20 -23
- package/dist/screenshot.d.ts.map +1 -1
- package/dist/screenshot.js +89 -48
- package/dist/screenshot.js.map +1 -1
- package/dist/suggestions.d.ts +22 -0
- package/dist/suggestions.d.ts.map +1 -0
- package/dist/suggestions.js +56 -0
- package/dist/suggestions.js.map +1 -0
- package/dist/traversal.d.ts +10 -8
- package/dist/traversal.d.ts.map +1 -1
- package/dist/traversal.js +28 -13
- package/dist/traversal.js.map +1 -1
- package/dist/types.d.ts +103 -172
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/user-event/adjustment.d.ts +8 -0
- package/dist/user-event/adjustment.d.ts.map +1 -0
- package/dist/user-event/adjustment.js +33 -0
- package/dist/user-event/adjustment.js.map +1 -0
- package/dist/user-event/click.d.ts +7 -0
- package/dist/user-event/click.d.ts.map +1 -0
- package/dist/user-event/click.js +65 -0
- package/dist/user-event/click.js.map +1 -0
- package/dist/user-event/controller.d.ts +7 -0
- package/dist/user-event/controller.d.ts.map +1 -0
- package/dist/user-event/controller.js +28 -0
- package/dist/user-event/controller.js.map +1 -0
- package/dist/user-event/dispatch.d.ts +7 -0
- package/dist/user-event/dispatch.d.ts.map +1 -0
- package/dist/user-event/dispatch.js +10 -0
- package/dist/user-event/dispatch.js.map +1 -0
- package/dist/user-event/event-wrapper.d.ts +3 -0
- package/dist/user-event/event-wrapper.d.ts.map +1 -0
- package/dist/user-event/event-wrapper.js +48 -0
- package/dist/user-event/event-wrapper.js.map +1 -0
- package/dist/user-event/gesture.d.ts +31 -0
- package/dist/user-event/gesture.d.ts.map +1 -0
- package/dist/user-event/gesture.js +105 -0
- package/dist/user-event/gesture.js.map +1 -0
- package/dist/user-event/index.d.ts +44 -0
- package/dist/user-event/index.d.ts.map +1 -0
- package/dist/user-event/index.js +38 -0
- package/dist/user-event/index.js.map +1 -0
- package/dist/user-event/keyboard.d.ts +9 -0
- package/dist/user-event/keyboard.d.ts.map +1 -0
- package/dist/user-event/keyboard.js +173 -0
- package/dist/user-event/keyboard.js.map +1 -0
- package/dist/user-event/pointer.d.ts +6 -0
- package/dist/user-event/pointer.d.ts.map +1 -0
- package/dist/user-event/pointer.js +27 -0
- package/dist/user-event/pointer.js.map +1 -0
- package/dist/user-event/selection.d.ts +4 -0
- package/dist/user-event/selection.d.ts.map +1 -0
- package/dist/user-event/selection.js +106 -0
- package/dist/user-event/selection.js.map +1 -0
- package/dist/user-event/state.d.ts +6 -0
- package/dist/user-event/state.d.ts.map +1 -0
- package/dist/user-event/state.js +2 -0
- package/dist/user-event/state.js.map +1 -0
- package/dist/user-event/text.d.ts +17 -0
- package/dist/user-event/text.d.ts.map +1 -0
- package/dist/user-event/text.js +107 -0
- package/dist/user-event/text.js.map +1 -0
- package/dist/wait-for.d.ts +13 -32
- package/dist/wait-for.d.ts.map +1 -1
- package/dist/wait-for.js +62 -73
- package/dist/wait-for.js.map +1 -1
- package/dist/widget-accessible-properties.d.ts +33 -0
- package/dist/widget-accessible-properties.d.ts.map +1 -0
- package/dist/widget-accessible-properties.js +215 -0
- package/dist/widget-accessible-properties.js.map +1 -0
- package/dist/within.d.ts +9 -26
- package/dist/within.d.ts.map +1 -1
- package/dist/within.js +15 -25
- package/dist/within.js.map +1 -1
- package/package.json +21 -12
- package/src/act.ts +68 -0
- package/src/bound-queries.ts +36 -0
- package/src/build-queries.ts +185 -0
- package/src/cleanup-registry.ts +14 -0
- package/src/config.ts +28 -59
- package/src/editable.ts +30 -0
- package/src/errors.ts +130 -0
- package/src/fire-event.ts +11 -38
- package/src/frame-sync.ts +34 -0
- package/src/index.ts +60 -18
- package/src/matchers.ts +200 -0
- package/src/pretty-widget.ts +99 -138
- package/src/queries.ts +321 -425
- package/src/register-test-hooks.ts +16 -0
- package/src/render-hook.tsx +31 -44
- package/src/render.tsx +161 -149
- package/src/role-helpers.ts +47 -67
- package/src/screen.ts +21 -114
- package/src/screenshot.ts +104 -55
- package/src/suggestions.ts +87 -0
- package/src/traversal.ts +32 -18
- package/src/types.ts +115 -176
- package/src/user-event/adjustment.ts +49 -0
- package/src/user-event/click.ts +70 -0
- package/src/user-event/controller.ts +44 -0
- package/src/user-event/dispatch.ts +23 -0
- package/src/user-event/event-wrapper.ts +54 -0
- package/src/user-event/gesture.ts +154 -0
- package/src/user-event/index.ts +74 -0
- package/src/user-event/keyboard.ts +204 -0
- package/src/user-event/pointer.ts +34 -0
- package/src/user-event/selection.ts +122 -0
- package/src/user-event/state.ts +6 -0
- package/src/user-event/text.ts +137 -0
- package/src/wait-for.ts +79 -80
- package/src/widget-accessible-properties.ts +244 -0
- package/src/within.ts +26 -27
- package/dist/bind-queries.d.ts +0 -14
- package/dist/bind-queries.d.ts.map +0 -1
- package/dist/bind-queries.js +0 -29
- package/dist/bind-queries.js.map +0 -1
- package/dist/error-builder.d.ts +0 -28
- package/dist/error-builder.d.ts.map +0 -1
- package/dist/error-builder.js +0 -81
- package/dist/error-builder.js.map +0 -1
- package/dist/timing.d.ts +0 -18
- package/dist/timing.d.ts.map +0 -1
- package/dist/timing.js +0 -18
- package/dist/timing.js.map +0 -1
- package/dist/user-event.d.ts +0 -138
- package/dist/user-event.d.ts.map +0 -1
- package/dist/user-event.js +0 -411
- package/dist/user-event.js.map +0 -1
- package/dist/widget-text.d.ts +0 -69
- package/dist/widget-text.d.ts.map +0 -1
- package/dist/widget-text.js +0 -177
- package/dist/widget-text.js.map +0 -1
- package/dist/widget.d.ts +0 -3
- package/dist/widget.d.ts.map +0 -1
- package/dist/widget.js +0 -13
- package/dist/widget.js.map +0 -1
- package/src/bind-queries.ts +0 -52
- package/src/error-builder.ts +0 -102
- package/src/timing.ts +0 -17
- package/src/user-event.ts +0 -492
- package/src/widget-text.ts +0 -202
- package/src/widget.ts +0 -15
package/dist/widget-text.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widget-text.js","sourceRoot":"","sources":["../src/widget-text.ts"],"names":[],"mappings":"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"}
|
package/dist/widget.d.ts
DELETED
package/dist/widget.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AAQrC,eAAO,MAAM,UAAU,GAAI,QAAQ,OAAO,KAAG,MAAM,IAAI,GAAG,CAAC,QAM1D,CAAC"}
|
package/dist/widget.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import * as Gtk from "@gtkx/ffi/gtk";
|
|
2
|
-
const EDITABLE_ROLES = new Set([
|
|
3
|
-
Gtk.AccessibleRole.TEXT_BOX,
|
|
4
|
-
Gtk.AccessibleRole.SEARCH_BOX,
|
|
5
|
-
Gtk.AccessibleRole.SPIN_BUTTON,
|
|
6
|
-
]);
|
|
7
|
-
export const isEditable = (widget) => {
|
|
8
|
-
if (!(widget instanceof Gtk.Widget)) {
|
|
9
|
-
return false;
|
|
10
|
-
}
|
|
11
|
-
return EDITABLE_ROLES.has(widget.getAccessibleRole());
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=widget.js.map
|
package/dist/widget.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widget.js","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AAErC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC3B,GAAG,CAAC,cAAc,CAAC,QAAQ;IAC3B,GAAG,CAAC,cAAc,CAAC,UAAU;IAC7B,GAAG,CAAC,cAAc,CAAC,WAAW;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAe,EAA0B,EAAE;IAClE,IAAI,CAAC,CAAC,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAC1D,CAAC,CAAC"}
|
package/src/bind-queries.ts
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import type * as Gtk from "@gtkx/ffi/gtk";
|
|
2
|
-
import * as queries from "./queries.js";
|
|
3
|
-
import type { Container } from "./traversal.js";
|
|
4
|
-
import type { BoundQueries, ByRoleOptions, TextMatch, TextMatchOptions } from "./types.js";
|
|
5
|
-
|
|
6
|
-
type ContainerOrGetter = Container | (() => Container);
|
|
7
|
-
|
|
8
|
-
const resolveContainer = (containerOrGetter: ContainerOrGetter): Container =>
|
|
9
|
-
typeof containerOrGetter === "function" ? containerOrGetter() : containerOrGetter;
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Binds all query functions to a container.
|
|
13
|
-
*
|
|
14
|
-
* @param containerOrGetter - The container to bind queries to, or a function that returns it
|
|
15
|
-
* @returns Object with all query methods bound to the container
|
|
16
|
-
*
|
|
17
|
-
* @internal
|
|
18
|
-
*/
|
|
19
|
-
export const bindQueries = (containerOrGetter: ContainerOrGetter): BoundQueries => ({
|
|
20
|
-
queryByRole: (role: Gtk.AccessibleRole, options?: ByRoleOptions) =>
|
|
21
|
-
queries.queryByRole(resolveContainer(containerOrGetter), role, options),
|
|
22
|
-
queryByLabelText: (text: TextMatch, options?: TextMatchOptions) =>
|
|
23
|
-
queries.queryByLabelText(resolveContainer(containerOrGetter), text, options),
|
|
24
|
-
queryByText: (text: TextMatch, options?: TextMatchOptions) =>
|
|
25
|
-
queries.queryByText(resolveContainer(containerOrGetter), text, options),
|
|
26
|
-
queryByTestId: (testId: TextMatch, options?: TextMatchOptions) =>
|
|
27
|
-
queries.queryByTestId(resolveContainer(containerOrGetter), testId, options),
|
|
28
|
-
queryAllByRole: (role: Gtk.AccessibleRole, options?: ByRoleOptions) =>
|
|
29
|
-
queries.queryAllByRole(resolveContainer(containerOrGetter), role, options),
|
|
30
|
-
queryAllByLabelText: (text: TextMatch, options?: TextMatchOptions) =>
|
|
31
|
-
queries.queryAllByLabelText(resolveContainer(containerOrGetter), text, options),
|
|
32
|
-
queryAllByText: (text: TextMatch, options?: TextMatchOptions) =>
|
|
33
|
-
queries.queryAllByText(resolveContainer(containerOrGetter), text, options),
|
|
34
|
-
queryAllByTestId: (testId: TextMatch, options?: TextMatchOptions) =>
|
|
35
|
-
queries.queryAllByTestId(resolveContainer(containerOrGetter), testId, options),
|
|
36
|
-
findByRole: (role: Gtk.AccessibleRole, options?: ByRoleOptions) =>
|
|
37
|
-
queries.findByRole(resolveContainer(containerOrGetter), role, options),
|
|
38
|
-
findByLabelText: (text: TextMatch, options?: TextMatchOptions) =>
|
|
39
|
-
queries.findByLabelText(resolveContainer(containerOrGetter), text, options),
|
|
40
|
-
findByText: (text: TextMatch, options?: TextMatchOptions) =>
|
|
41
|
-
queries.findByText(resolveContainer(containerOrGetter), text, options),
|
|
42
|
-
findByTestId: (testId: TextMatch, options?: TextMatchOptions) =>
|
|
43
|
-
queries.findByTestId(resolveContainer(containerOrGetter), testId, options),
|
|
44
|
-
findAllByRole: (role: Gtk.AccessibleRole, options?: ByRoleOptions) =>
|
|
45
|
-
queries.findAllByRole(resolveContainer(containerOrGetter), role, options),
|
|
46
|
-
findAllByLabelText: (text: TextMatch, options?: TextMatchOptions) =>
|
|
47
|
-
queries.findAllByLabelText(resolveContainer(containerOrGetter), text, options),
|
|
48
|
-
findAllByText: (text: TextMatch, options?: TextMatchOptions) =>
|
|
49
|
-
queries.findAllByText(resolveContainer(containerOrGetter), text, options),
|
|
50
|
-
findAllByTestId: (testId: TextMatch, options?: TextMatchOptions) =>
|
|
51
|
-
queries.findAllByTestId(resolveContainer(containerOrGetter), testId, options),
|
|
52
|
-
});
|
package/src/error-builder.ts
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import type * as Gtk from "@gtkx/ffi/gtk";
|
|
2
|
-
import { getConfig } from "./config.js";
|
|
3
|
-
import { prettyWidget } from "./pretty-widget.js";
|
|
4
|
-
import { formatRole, prettyRoles } from "./role-helpers.js";
|
|
5
|
-
import type { Container } from "./traversal.js";
|
|
6
|
-
import type { ByRoleOptions, TextMatch } from "./types.js";
|
|
7
|
-
|
|
8
|
-
type QueryType = "role" | "text" | "labelText" | "testId";
|
|
9
|
-
|
|
10
|
-
const formatTextMatcher = (text: TextMatch): string => {
|
|
11
|
-
if (typeof text === "function") {
|
|
12
|
-
return "custom function";
|
|
13
|
-
}
|
|
14
|
-
if (text instanceof RegExp) {
|
|
15
|
-
return text.toString();
|
|
16
|
-
}
|
|
17
|
-
return `'${text}'`;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
const formatByRoleDescription = (role: Gtk.AccessibleRole, options?: ByRoleOptions): string => {
|
|
21
|
-
const parts = [`role '${formatRole(role).toUpperCase()}'`];
|
|
22
|
-
if (options?.name) parts.push(`name ${formatTextMatcher(options.name)}`);
|
|
23
|
-
if (options?.checked !== undefined) parts.push(`checked=${options.checked}`);
|
|
24
|
-
if (options?.pressed !== undefined) parts.push(`pressed=${options.pressed}`);
|
|
25
|
-
if (options?.selected !== undefined) parts.push(`selected=${options.selected}`);
|
|
26
|
-
if (options?.expanded !== undefined) parts.push(`expanded=${options.expanded}`);
|
|
27
|
-
if (options?.level !== undefined) parts.push(`level=${options.level}`);
|
|
28
|
-
return parts.join(" and ");
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
const formatQueryDescription = (
|
|
32
|
-
queryType: QueryType,
|
|
33
|
-
args: { role?: Gtk.AccessibleRole; text?: TextMatch; testId?: TextMatch; options?: ByRoleOptions },
|
|
34
|
-
): string => {
|
|
35
|
-
switch (queryType) {
|
|
36
|
-
case "role":
|
|
37
|
-
return formatByRoleDescription(args.role as Gtk.AccessibleRole, args.options);
|
|
38
|
-
case "text":
|
|
39
|
-
return `text ${formatTextMatcher(args.text as TextMatch)}`;
|
|
40
|
-
case "labelText":
|
|
41
|
-
return `label text ${formatTextMatcher(args.text as TextMatch)}`;
|
|
42
|
-
case "testId":
|
|
43
|
-
return `test id ${formatTextMatcher(args.testId as TextMatch)}`;
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Builds an error for when no elements match a query.
|
|
49
|
-
*/
|
|
50
|
-
export const buildNotFoundError = (
|
|
51
|
-
container: Container,
|
|
52
|
-
queryType: QueryType,
|
|
53
|
-
args: { role?: Gtk.AccessibleRole; text?: TextMatch; testId?: TextMatch; options?: ByRoleOptions },
|
|
54
|
-
): Error => {
|
|
55
|
-
const config = getConfig();
|
|
56
|
-
const description = formatQueryDescription(queryType, args);
|
|
57
|
-
const lines: string[] = [`Unable to find an element with ${description}`];
|
|
58
|
-
|
|
59
|
-
if (config.showSuggestions && queryType === "role") {
|
|
60
|
-
lines.push("");
|
|
61
|
-
lines.push("Here are the accessible roles:");
|
|
62
|
-
lines.push("");
|
|
63
|
-
lines.push(prettyRoles(container));
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
lines.push("");
|
|
67
|
-
lines.push(prettyWidget(container, { highlight: false }));
|
|
68
|
-
|
|
69
|
-
const message = lines.join("\n");
|
|
70
|
-
return config.getElementError(message, container);
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Builds an error for when multiple elements match a query but only one was expected.
|
|
75
|
-
*/
|
|
76
|
-
export const buildMultipleFoundError = (
|
|
77
|
-
container: Container,
|
|
78
|
-
queryType: QueryType,
|
|
79
|
-
args: { role?: Gtk.AccessibleRole; text?: TextMatch; testId?: TextMatch; options?: ByRoleOptions },
|
|
80
|
-
count: number,
|
|
81
|
-
): Error => {
|
|
82
|
-
const config = getConfig();
|
|
83
|
-
const description = formatQueryDescription(queryType, args);
|
|
84
|
-
const lines: string[] = [`Found ${count} elements with ${description}, but expected only one`];
|
|
85
|
-
|
|
86
|
-
lines.push("");
|
|
87
|
-
lines.push(prettyWidget(container, { highlight: false }));
|
|
88
|
-
|
|
89
|
-
const message = lines.join("\n");
|
|
90
|
-
return config.getElementError(message, container);
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Builds a timeout error with the last query error message.
|
|
95
|
-
*/
|
|
96
|
-
export const buildTimeoutError = (timeout: number, lastError: Error | null): Error => {
|
|
97
|
-
const baseMessage = `Timed out after ${timeout}ms`;
|
|
98
|
-
if (lastError) {
|
|
99
|
-
return new Error(`${baseMessage}.\n\n${lastError.message}`);
|
|
100
|
-
}
|
|
101
|
-
return new Error(baseMessage);
|
|
102
|
-
};
|
package/src/timing.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Yields to the event loop, allowing pending GTK events to process.
|
|
3
|
-
*
|
|
4
|
-
* Use this after actions that trigger async widget updates.
|
|
5
|
-
*
|
|
6
|
-
* @returns Promise that resolves on the next event loop tick
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```tsx
|
|
10
|
-
* import { tick } from "@gtkx/testing";
|
|
11
|
-
*
|
|
12
|
-
* widget.setSensitive(false);
|
|
13
|
-
* await tick(); // Wait for GTK to process the change
|
|
14
|
-
* expect(widget.getSensitive()).toBe(false);
|
|
15
|
-
* ```
|
|
16
|
-
*/
|
|
17
|
-
export const tick = (): Promise<void> => new Promise((resolve) => setTimeout(resolve, 0));
|