@gtkx/testing 0.3.3 → 0.3.5
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 +25 -17
- package/dist/queries.js +5 -15
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -41,7 +41,14 @@ Edit your code and see changes instantly—no restart needed.
|
|
|
41
41
|
### Example
|
|
42
42
|
|
|
43
43
|
```tsx
|
|
44
|
-
import {
|
|
44
|
+
import {
|
|
45
|
+
render,
|
|
46
|
+
ApplicationWindow,
|
|
47
|
+
Box,
|
|
48
|
+
Button,
|
|
49
|
+
Label,
|
|
50
|
+
quit,
|
|
51
|
+
} from "@gtkx/react";
|
|
45
52
|
import { Orientation } from "@gtkx/ffi/gtk";
|
|
46
53
|
import { useState } from "react";
|
|
47
54
|
|
|
@@ -74,7 +81,7 @@ const primary = css`
|
|
|
74
81
|
color: white;
|
|
75
82
|
`;
|
|
76
83
|
|
|
77
|
-
<Button label="Click me" cssClasses={[primary]}
|
|
84
|
+
<Button label="Click me" cssClasses={[primary]} />;
|
|
78
85
|
```
|
|
79
86
|
|
|
80
87
|
GTK also provides built-in classes like `suggested-action`, `destructive-action`, `card`, and `heading`.
|
|
@@ -90,7 +97,9 @@ afterEach(() => cleanup());
|
|
|
90
97
|
test("increments count", async () => {
|
|
91
98
|
await render(<App />);
|
|
92
99
|
|
|
93
|
-
const button = await screen.findByRole(AccessibleRole.BUTTON, {
|
|
100
|
+
const button = await screen.findByRole(AccessibleRole.BUTTON, {
|
|
101
|
+
name: "Increment",
|
|
102
|
+
});
|
|
94
103
|
await userEvent.click(button);
|
|
95
104
|
|
|
96
105
|
await screen.findByText("Count: 1");
|
|
@@ -103,10 +112,10 @@ User events: `click`, `dblClick`, `type`, `clear`, `tab`, `selectOptions`
|
|
|
103
112
|
|
|
104
113
|
## Examples
|
|
105
114
|
|
|
106
|
-
| Example
|
|
107
|
-
|
|
|
108
|
-
| [gtk4-demo](examples/gtk4-demo) | Widget showcase
|
|
109
|
-
| [todo](examples/todo)
|
|
115
|
+
| Example | Description |
|
|
116
|
+
| ------------------------------- | ------------------- |
|
|
117
|
+
| [gtk4-demo](examples/gtk4-demo) | Widget showcase |
|
|
118
|
+
| [todo](examples/todo) | Todo app with tests |
|
|
110
119
|
|
|
111
120
|
```bash
|
|
112
121
|
cd examples/gtk4-demo && pnpm dev
|
|
@@ -114,15 +123,15 @@ cd examples/gtk4-demo && pnpm dev
|
|
|
114
123
|
|
|
115
124
|
## Packages
|
|
116
125
|
|
|
117
|
-
| Package
|
|
118
|
-
|
|
|
119
|
-
| [@gtkx/cli](packages/cli)
|
|
120
|
-
| [@gtkx/react](packages/react)
|
|
121
|
-
| [@gtkx/ffi](packages/ffi)
|
|
122
|
-
| [@gtkx/native](packages/native)
|
|
123
|
-
| [@gtkx/css](packages/css)
|
|
124
|
-
| [@gtkx/testing](packages/testing) | Testing utilities
|
|
125
|
-
| [@gtkx/gir](packages/gir)
|
|
126
|
+
| Package | Description |
|
|
127
|
+
| --------------------------------- | ------------------------------------- |
|
|
128
|
+
| [@gtkx/cli](packages/cli) | CLI with HMR dev server |
|
|
129
|
+
| [@gtkx/react](packages/react) | React reconciler and JSX components |
|
|
130
|
+
| [@gtkx/ffi](packages/ffi) | TypeScript bindings for GTK4/GLib/GIO |
|
|
131
|
+
| [@gtkx/native](packages/native) | Rust native module (libffi bridge) |
|
|
132
|
+
| [@gtkx/css](packages/css) | CSS-in-JS styling |
|
|
133
|
+
| [@gtkx/testing](packages/testing) | Testing utilities |
|
|
134
|
+
| [@gtkx/gir](packages/gir) | GObject Introspection parser |
|
|
126
135
|
|
|
127
136
|
## Requirements
|
|
128
137
|
|
|
@@ -136,7 +145,6 @@ We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
|
136
145
|
|
|
137
146
|
- [Report a bug](https://github.com/eugeniodepalo/gtkx/issues/new?template=bug_report.md)
|
|
138
147
|
- [Request a feature](https://github.com/eugeniodepalo/gtkx/issues/new?template=feature_request.md)
|
|
139
|
-
- [Read the Code of Conduct](CODE_OF_CONDUCT.md)
|
|
140
148
|
|
|
141
149
|
## License
|
|
142
150
|
|
package/dist/queries.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getInterface } from "@gtkx/ffi";
|
|
2
|
-
import { Accessible, AccessibleRole, Button, CheckButton, Editable, Expander, Frame, Label, StackPage, Switch, ToggleButton, Window, } from "@gtkx/ffi/gtk";
|
|
1
|
+
import { getInterface, tryGetInterface } from "@gtkx/ffi";
|
|
2
|
+
import { Accessible, AccessibleRole, Button, CheckButton, Editable, Expander, Frame, Label, MenuButton, StackPage, Switch, ToggleButton, Window, } from "@gtkx/ffi/gtk";
|
|
3
3
|
import { findAll } from "./traversal.js";
|
|
4
4
|
import { waitFor } from "./wait-for.js";
|
|
5
5
|
const DEFAULT_NORMALIZER = (text) => text.trim().replace(/\s+/g, " ");
|
|
@@ -47,7 +47,7 @@ const getWidgetText = (widget) => {
|
|
|
47
47
|
case AccessibleRole.BUTTON:
|
|
48
48
|
case AccessibleRole.LINK:
|
|
49
49
|
case AccessibleRole.TAB:
|
|
50
|
-
return
|
|
50
|
+
return (tryGetInterface(widget, Button)?.getLabel() ?? tryGetInterface(widget, MenuButton)?.getLabel() ?? null);
|
|
51
51
|
case AccessibleRole.TOGGLE_BUTTON:
|
|
52
52
|
return getInterface(widget, ToggleButton).getLabel();
|
|
53
53
|
case AccessibleRole.CHECKBOX:
|
|
@@ -60,23 +60,13 @@ const getWidgetText = (widget) => {
|
|
|
60
60
|
case AccessibleRole.SPIN_BUTTON:
|
|
61
61
|
return getInterface(widget, Editable).getText();
|
|
62
62
|
case AccessibleRole.GROUP:
|
|
63
|
-
|
|
64
|
-
return getInterface(widget, Frame).getLabel();
|
|
65
|
-
}
|
|
66
|
-
catch {
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
63
|
+
return tryGetInterface(widget, Frame)?.getLabel() ?? null;
|
|
69
64
|
case AccessibleRole.WINDOW:
|
|
70
65
|
case AccessibleRole.DIALOG:
|
|
71
66
|
case AccessibleRole.ALERT_DIALOG:
|
|
72
67
|
return getInterface(widget, Window).getTitle();
|
|
73
68
|
case AccessibleRole.TAB_PANEL:
|
|
74
|
-
|
|
75
|
-
return getInterface(widget, StackPage).getTitle();
|
|
76
|
-
}
|
|
77
|
-
catch {
|
|
78
|
-
return null;
|
|
79
|
-
}
|
|
69
|
+
return tryGetInterface(widget, StackPage)?.getTitle() ?? null;
|
|
80
70
|
case AccessibleRole.SWITCH:
|
|
81
71
|
return null;
|
|
82
72
|
default:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gtkx/testing",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.5",
|
|
4
4
|
"description": "Testing utilities for GTKX applications",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"gtk",
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
"dist"
|
|
33
33
|
],
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@gtkx/
|
|
36
|
-
"@gtkx/react": "0.3.
|
|
37
|
-
"@gtkx/
|
|
35
|
+
"@gtkx/native": "0.3.5",
|
|
36
|
+
"@gtkx/react": "0.3.5",
|
|
37
|
+
"@gtkx/ffi": "0.3.5"
|
|
38
38
|
},
|
|
39
39
|
"scripts": {
|
|
40
40
|
"build": "tsc -b && cp ../../README.md .",
|