@gtkx/testing 0.18.8 → 0.19.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.
- package/dist/pretty-widget.js +2 -2
- package/dist/pretty-widget.js.map +1 -1
- package/dist/queries.d.ts.map +1 -1
- package/dist/queries.js +3 -4
- package/dist/queries.js.map +1 -1
- package/dist/role-helpers.js +2 -2
- package/dist/role-helpers.js.map +1 -1
- package/dist/traversal.d.ts.map +1 -1
- package/dist/traversal.js +2 -0
- package/dist/traversal.js.map +1 -1
- package/dist/widget-text.d.ts +27 -2
- package/dist/widget-text.d.ts.map +1 -1
- package/dist/widget-text.js +64 -72
- package/dist/widget-text.js.map +1 -1
- package/package.json +4 -4
- package/src/pretty-widget.ts +2 -2
- package/src/queries.ts +3 -3
- package/src/role-helpers.ts +2 -2
- package/src/traversal.ts +1 -0
- package/src/widget-text.ts +69 -73
package/dist/pretty-widget.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Gtk from "@gtkx/ffi/gtk";
|
|
2
2
|
import { formatRole } from "./role-helpers.js";
|
|
3
3
|
import { isApplication } from "./traversal.js";
|
|
4
|
-
import {
|
|
4
|
+
import { getWidgetPropertyText } from "./widget-text.js";
|
|
5
5
|
const DEFAULT_MAX_LENGTH = 7000;
|
|
6
6
|
const INDENT = " ";
|
|
7
7
|
const debugIdMap = new WeakMap();
|
|
@@ -87,7 +87,7 @@ const printWidget = (widget, colors, depth, includeIds) => {
|
|
|
87
87
|
const indent = INDENT.repeat(depth);
|
|
88
88
|
const tagName = formatTagName(widget);
|
|
89
89
|
const attributes = formatAttributes(widget, colors, includeIds);
|
|
90
|
-
const text =
|
|
90
|
+
const text = getWidgetPropertyText(widget);
|
|
91
91
|
const children = [];
|
|
92
92
|
let child = widget.getFirstChild();
|
|
93
93
|
while (child) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pretty-widget.js","sourceRoot":"","sources":["../src/pretty-widget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAkB,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"pretty-widget.js","sourceRoot":"","sources":["../src/pretty-widget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAkB,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,MAAM,GAAG,IAAI,CAAC;AAEpB,MAAM,UAAU,GAAG,IAAI,OAAO,EAAsB,CAAC;AACrD,IAAI,WAAW,GAAG,CAAC,CAAC;AAEpB,MAAM,gBAAgB,GAAG,CAAC,MAAkB,EAAU,EAAE;IACpD,IAAI,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3B,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,EAAE,CAAC;AACd,CAAC,CAAC;AAsBF,MAAM,eAAe,GAAG,GAAY,EAAE;IAClC,IAAI,OAAO,OAAO,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IACjD,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IACzE,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC1E,OAAO,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,KAAK,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG;IACT,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,SAAS;CACnB,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAmB,EAAE;IACvD,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC;QAC1C,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACzF,CAAC;IACD,OAAO;QACH,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QAC3C,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QAC9C,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QAC9C,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACd,KAAK,EAAE,IAAI,CAAC,KAAK;KACpB,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,MAAkB,EAAU,EAAE;IACjD,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,KAAa,EAAU,EAAE;IAC9C,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,MAAkB,EAAE,MAAuB,EAAE,UAAmB,EAAU,EAAE;IAClG,MAAM,KAAK,GAAuB,EAAE,CAAC;IAErC,IAAI,UAAU,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAC9B,IAAI,IAAI,EAAE,CAAC;QACP,KAAK,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;IACxC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,OAAO,KAAK;SACP,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QACf,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC;QACzB,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;SAC5F,IAAI,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,MAAkB,EAAW,EAAE;IAChD,OAAO,MAAM,CAAC,aAAa,EAAE,KAAK,IAAI,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,MAAkB,EAAE,MAAuB,EAAE,KAAa,EAAE,UAAmB,EAAU,EAAE;IAC5G,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,KAAK,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;IACnC,OAAO,KAAK,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;QACjE,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;IAE1F,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,OAAO,GAAG,MAAM,GAAG,OAAO,IAAI,CAAC;IACnC,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;IAE/E,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,GAAG,MAAM,GAAG,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,WAAW,KAAK,MAAM,GAAG,QAAQ,IAAI,CAAC;IAC3F,CAAC;IAED,IAAI,MAAM,GAAG,GAAG,MAAM,GAAG,OAAO,IAAI,CAAC;IACrC,IAAI,IAAI,EAAE,CAAC;QACP,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACzD,CAAC;IACD,KAAK,MAAM,WAAW,IAAI,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,WAAW,CAAC;IAC1B,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,GAAG,QAAQ,IAAI,CAAC;IAEnC,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,SAAoB,EAAE,MAAuB,EAAE,UAAmB,EAAU,EAAE;IAClG,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAoB,EAAE,UAA+B,EAAE,EAAU,EAAE;IAC5F,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAC5G,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC;IAChD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,eAAe,EAAE,CAAC;IACzD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC;IAE/C,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAE7D,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QAC5B,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;IAC9C,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;AAC5B,CAAC,CAAC"}
|
package/dist/queries.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AAErC,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,gBAAgB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"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"}
|
package/dist/queries.js
CHANGED
|
@@ -2,7 +2,7 @@ import * as Gtk from "@gtkx/ffi/gtk";
|
|
|
2
2
|
import { buildMultipleFoundError, buildNotFoundError } from "./error-builder.js";
|
|
3
3
|
import { findAll, traverse } from "./traversal.js";
|
|
4
4
|
import { waitFor } from "./wait-for.js";
|
|
5
|
-
import { getWidgetCheckedState, getWidgetExpandedState, getWidgetPressedState, getWidgetSelectedState, getWidgetTestId, getWidgetText, } from "./widget-text.js";
|
|
5
|
+
import { getWidgetAccessibleName, getWidgetCheckedState, getWidgetExpandedState, getWidgetPressedState, getWidgetSelectedState, getWidgetTestId, getWidgetText, } from "./widget-text.js";
|
|
6
6
|
const buildNormalizer = (options) => {
|
|
7
7
|
if (options?.normalizer) {
|
|
8
8
|
return options.normalizer;
|
|
@@ -45,7 +45,7 @@ const matchByRoleOptions = (widget, options) => {
|
|
|
45
45
|
if (!options)
|
|
46
46
|
return true;
|
|
47
47
|
if (options.name !== undefined) {
|
|
48
|
-
const text =
|
|
48
|
+
const text = getWidgetAccessibleName(widget);
|
|
49
49
|
if (!matchText(text, options.name, widget, options))
|
|
50
50
|
return false;
|
|
51
51
|
}
|
|
@@ -157,8 +157,7 @@ export const queryByLabelText = (container, text, options) => {
|
|
|
157
157
|
*/
|
|
158
158
|
export const queryAllByText = (container, text, options) => {
|
|
159
159
|
return findAll(container, (node) => {
|
|
160
|
-
|
|
161
|
-
return matchText(widgetText, text, node, options);
|
|
160
|
+
return matchText(getWidgetText(node), text, node, options);
|
|
162
161
|
});
|
|
163
162
|
};
|
|
164
163
|
/**
|
package/dist/queries.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAkB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACH,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,aAAa,GAChB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,eAAe,GAAG,CAAC,OAA0B,EAA8B,EAAE;IAC/E,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC,UAAU,CAAC;IAC9B,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC;IACnC,MAAM,kBAAkB,GAAG,OAAO,EAAE,kBAAkB,IAAI,IAAI,CAAC;IAE/D,OAAO,CAAC,IAAY,EAAU,EAAE;QAC5B,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI,IAAI,EAAE,CAAC;YACP,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,kBAAkB,EAAE,CAAC;YACrB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,OAA0B,EAAU,EAAE;IACvE,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CACd,MAAqB,EACrB,QAAmB,EACnB,MAAkB,EAClB,OAA0B,EACnB,EAAE;IACT,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAElC,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAExD,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,QAAQ,YAAY,MAAM,EAAE,CAAC;QAC7B,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;QACvB,OAAO,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC;IACrC,OAAO,KAAK;QACR,CAAC,CAAC,gBAAgB,KAAK,kBAAkB;QACzC,CAAC,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,CAAC;AACpF,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,MAAkB,EAAE,OAAuB,EAAW,EAAE;IAChF,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"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"}
|
package/dist/role-helpers.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as Gtk from "@gtkx/ffi/gtk";
|
|
2
2
|
import { traverse } from "./traversal.js";
|
|
3
|
-
import {
|
|
3
|
+
import { getWidgetAccessibleName } from "./widget-text.js";
|
|
4
4
|
/**
|
|
5
5
|
* Formats a GTK accessible role to a lowercase string.
|
|
6
6
|
*
|
|
@@ -42,7 +42,7 @@ export const getRoles = (container) => {
|
|
|
42
42
|
if (role === undefined)
|
|
43
43
|
continue;
|
|
44
44
|
const roleName = formatRole(role);
|
|
45
|
-
const name =
|
|
45
|
+
const name = getWidgetAccessibleName(widget);
|
|
46
46
|
const info = { widget, name };
|
|
47
47
|
const existing = roles.get(roleName);
|
|
48
48
|
if (existing) {
|
package/dist/role-helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role-helpers.js","sourceRoot":"","sources":["../src/role-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,EAAkB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"role-helpers.js","sourceRoot":"","sources":["../src/role-helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/traversal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traversal.d.ts","sourceRoot":"","sources":["../src/traversal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC;AAErD,eAAO,MAAM,aAAa,GAAI,WAAW,SAAS,KAAG,SAAS,IAAI,GAAG,CAAC,WACK,CAAC;AAmB5E,eAAO,MAAM,QAAQ,GAAc,WAAW,SAAS,KAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAM7E,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,WAAW,SAAS,EAAE,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,KAAK,OAAO,KAAG,GAAG,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"traversal.d.ts","sourceRoot":"","sources":["../src/traversal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC;AAErD,eAAO,MAAM,aAAa,GAAI,WAAW,SAAS,KAAG,SAAS,IAAI,GAAG,CAAC,WACK,CAAC;AAmB5E,eAAO,MAAM,QAAQ,GAAc,WAAW,SAAS,KAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAM7E,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,WAAW,SAAS,EAAE,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,KAAK,OAAO,KAAG,GAAG,CAAC,MAAM,EASlG,CAAC"}
|
package/dist/traversal.js
CHANGED
|
@@ -25,6 +25,8 @@ export const traverse = function* (container) {
|
|
|
25
25
|
export const findAll = (container, predicate) => {
|
|
26
26
|
const results = [];
|
|
27
27
|
for (const node of traverse(container)) {
|
|
28
|
+
if (node.getAccessibleRole?.() === Gtk.AccessibleRole.LABEL)
|
|
29
|
+
continue;
|
|
28
30
|
if (predicate(node)) {
|
|
29
31
|
results.push(node);
|
|
30
32
|
}
|
package/dist/traversal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traversal.js","sourceRoot":"","sources":["../src/traversal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AAWrC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAoB,EAAgC,EAAE,CAChF,YAAY,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,UAAU,KAAK,UAAU,CAAC;AAE5E,MAAM,kBAAkB,GAAG,QAAQ,CAAC,EAAE,IAAgB;IAClD,MAAM,IAAI,CAAC;IAEX,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IACjC,OAAO,KAAK,EAAE,CAAC;QACX,KAAK,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACjC,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;IACnC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,QAAQ,CAAC;IAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;IAC3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC3B,KAAK,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,SAAoB;IACnD,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;IAC7B,CAAC;SAAM,CAAC;QACJ,KAAK,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,SAAoB,EAAE,SAAwC,EAAgB,EAAE;IACpG,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"traversal.js","sourceRoot":"","sources":["../src/traversal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AAWrC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAoB,EAAgC,EAAE,CAChF,YAAY,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,UAAU,KAAK,UAAU,CAAC;AAE5E,MAAM,kBAAkB,GAAG,QAAQ,CAAC,EAAE,IAAgB;IAClD,MAAM,IAAI,CAAC;IAEX,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IACjC,OAAO,KAAK,EAAE,CAAC;QACX,KAAK,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACjC,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;IACnC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,QAAQ,CAAC;IAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;IAC3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC3B,KAAK,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,SAAoB;IACnD,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;IAC7B,CAAC;SAAM,CAAC;QACJ,KAAK,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,SAAoB,EAAE,SAAwC,EAAgB,EAAE;IACpG,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE,KAAK,GAAG,CAAC,cAAc,CAAC,KAAK;YAAE,SAAS;QACtE,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC"}
|
package/dist/widget-text.d.ts
CHANGED
|
@@ -1,11 +1,36 @@
|
|
|
1
1
|
import * as Gtk from "@gtkx/ffi/gtk";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Returns the text content of a widget, analogous to RTL's getNodeText.
|
|
4
|
+
*
|
|
5
|
+
* Collects direct child GtkLabel text (treated as text nodes) and joins
|
|
6
|
+
* them into a single string. Widget properties like getLabel(), getTitle(),
|
|
7
|
+
* getText() are NOT included — those are attributes, not text content.
|
|
4
8
|
*
|
|
5
9
|
* @param widget - The widget to extract text from
|
|
6
|
-
* @returns The
|
|
10
|
+
* @returns The joined text content or null if none found
|
|
7
11
|
*/
|
|
8
12
|
export declare const getWidgetText: (widget: Gtk.Widget) => string | null;
|
|
13
|
+
/**
|
|
14
|
+
* Returns the widget's own text from properties (getLabel, getText, getTitle).
|
|
15
|
+
*
|
|
16
|
+
* Used for display/debugging purposes (e.g., prettyWidget). This is
|
|
17
|
+
* analogous to HTML attributes like aria-label, not text content.
|
|
18
|
+
*
|
|
19
|
+
* @param widget - The widget to extract property text from
|
|
20
|
+
* @returns The property text or null if none found
|
|
21
|
+
*/
|
|
22
|
+
export declare const getWidgetPropertyText: (widget: Gtk.Widget) => string | null;
|
|
23
|
+
/**
|
|
24
|
+
* Computes the accessible name of a widget for role-based queries.
|
|
25
|
+
*
|
|
26
|
+
* Uses the widget's own text properties first, then recursively collects
|
|
27
|
+
* all descendant label text. This mirrors how ARIA accessible name
|
|
28
|
+
* computation works in the DOM.
|
|
29
|
+
*
|
|
30
|
+
* @param widget - The widget to compute the accessible name for
|
|
31
|
+
* @returns The accessible name or null if none found
|
|
32
|
+
*/
|
|
33
|
+
export declare const getWidgetAccessibleName: (widget: Gtk.Widget) => string | null;
|
|
9
34
|
/**
|
|
10
35
|
* Gets the test ID from a widget (uses the widget's name property).
|
|
11
36
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget-text.d.ts","sourceRoot":"","sources":["../src/widget-text.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"widget-text.d.ts","sourceRoot":"","sources":["../src/widget-text.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AAwDrC;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,GAAG,CAAC,MAAM,KAAG,MAAM,GAAG,IAM3D,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,GAAG,CAAC,MAAM,KAAG,MAAM,GAAG,IAEnE,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,GAAI,QAAQ,GAAG,CAAC,MAAM,KAAG,MAAM,GAAG,IAqBrE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,GAAG,CAAC,MAAM,KAAG,MAAM,GAAG,IAE7D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,GAAG,CAAC,MAAM,KAAG,OAAO,GAAG,IAcpE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,GAAG,CAAC,MAAM,KAAG,OAAO,GAAG,IAQpE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,GAAG,CAAC,MAAM,KAAG,OAAO,GAAG,IAUrE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,GAAG,CAAC,MAAM,KAAG,OAAO,GAAG,IAQrE,CAAC"}
|
package/dist/widget-text.js
CHANGED
|
@@ -1,46 +1,5 @@
|
|
|
1
1
|
import { getNativeInterface } from "@gtkx/ffi";
|
|
2
2
|
import * as Gtk from "@gtkx/ffi/gtk";
|
|
3
|
-
const ROLES_WITH_INTERNAL_LABELS = new Set([
|
|
4
|
-
Gtk.AccessibleRole.BUTTON,
|
|
5
|
-
Gtk.AccessibleRole.TOGGLE_BUTTON,
|
|
6
|
-
Gtk.AccessibleRole.CHECKBOX,
|
|
7
|
-
Gtk.AccessibleRole.RADIO,
|
|
8
|
-
Gtk.AccessibleRole.LIST_ITEM,
|
|
9
|
-
Gtk.AccessibleRole.MENU_ITEM,
|
|
10
|
-
Gtk.AccessibleRole.MENU_ITEM_CHECKBOX,
|
|
11
|
-
Gtk.AccessibleRole.MENU_ITEM_RADIO,
|
|
12
|
-
Gtk.AccessibleRole.ROW,
|
|
13
|
-
Gtk.AccessibleRole.TAB,
|
|
14
|
-
Gtk.AccessibleRole.LINK,
|
|
15
|
-
]);
|
|
16
|
-
const isInternalLabel = (widget) => {
|
|
17
|
-
if (widget.getAccessibleRole() !== Gtk.AccessibleRole.LABEL)
|
|
18
|
-
return false;
|
|
19
|
-
const parent = widget.getParent();
|
|
20
|
-
if (!parent)
|
|
21
|
-
return false;
|
|
22
|
-
if (parent.getAccessibleRole === undefined)
|
|
23
|
-
return false;
|
|
24
|
-
const parentRole = parent.getAccessibleRole();
|
|
25
|
-
if (!parentRole)
|
|
26
|
-
return false;
|
|
27
|
-
if (ROLES_WITH_INTERNAL_LABELS.has(parentRole))
|
|
28
|
-
return true;
|
|
29
|
-
const labelText = getLabelText(widget);
|
|
30
|
-
if (!labelText)
|
|
31
|
-
return false;
|
|
32
|
-
let ancestor = parent;
|
|
33
|
-
while (ancestor) {
|
|
34
|
-
if (ancestor.getAccessibleRole === undefined)
|
|
35
|
-
return false;
|
|
36
|
-
const role = ancestor.getAccessibleRole();
|
|
37
|
-
if (role && ROLES_WITH_INTERNAL_LABELS.has(role)) {
|
|
38
|
-
return getDefaultText(ancestor) === labelText;
|
|
39
|
-
}
|
|
40
|
-
ancestor = ancestor.getParent();
|
|
41
|
-
}
|
|
42
|
-
return false;
|
|
43
|
-
};
|
|
44
3
|
const getLabelText = (widget) => {
|
|
45
4
|
const asLabel = widget;
|
|
46
5
|
const asInscription = widget;
|
|
@@ -48,15 +7,28 @@ const getLabelText = (widget) => {
|
|
|
48
7
|
};
|
|
49
8
|
const getDefaultText = (widget) => {
|
|
50
9
|
if ("getLabel" in widget && typeof widget.getLabel === "function") {
|
|
51
|
-
return widget.getLabel()
|
|
10
|
+
return widget.getLabel() || null;
|
|
52
11
|
}
|
|
53
12
|
if ("getText" in widget && typeof widget.getText === "function") {
|
|
54
|
-
return widget.getText()
|
|
13
|
+
return widget.getText() || null;
|
|
55
14
|
}
|
|
56
15
|
if ("getTitle" in widget && typeof widget.getTitle === "function") {
|
|
57
|
-
return widget.getTitle()
|
|
16
|
+
return widget.getTitle() || null;
|
|
58
17
|
}
|
|
59
|
-
return getNativeInterface(widget, Gtk.Editable)?.getText()
|
|
18
|
+
return getNativeInterface(widget, Gtk.Editable)?.getText() || null;
|
|
19
|
+
};
|
|
20
|
+
const collectDirectChildLabels = (widget) => {
|
|
21
|
+
const labels = [];
|
|
22
|
+
let child = widget.getFirstChild();
|
|
23
|
+
while (child) {
|
|
24
|
+
if (child.getAccessibleRole() === Gtk.AccessibleRole.LABEL) {
|
|
25
|
+
const labelText = getLabelText(child);
|
|
26
|
+
if (labelText)
|
|
27
|
+
labels.push(labelText);
|
|
28
|
+
}
|
|
29
|
+
child = child.getNextSibling();
|
|
30
|
+
}
|
|
31
|
+
return labels;
|
|
60
32
|
};
|
|
61
33
|
const collectChildLabels = (widget) => {
|
|
62
34
|
const labels = [];
|
|
@@ -73,44 +45,64 @@ const collectChildLabels = (widget) => {
|
|
|
73
45
|
return labels;
|
|
74
46
|
};
|
|
75
47
|
/**
|
|
76
|
-
*
|
|
48
|
+
* Returns the text content of a widget, analogous to RTL's getNodeText.
|
|
49
|
+
*
|
|
50
|
+
* Collects direct child GtkLabel text (treated as text nodes) and joins
|
|
51
|
+
* them into a single string. Widget properties like getLabel(), getTitle(),
|
|
52
|
+
* getText() are NOT included — those are attributes, not text content.
|
|
77
53
|
*
|
|
78
54
|
* @param widget - The widget to extract text from
|
|
79
|
-
* @returns The
|
|
55
|
+
* @returns The joined text content or null if none found
|
|
80
56
|
*/
|
|
81
57
|
export const getWidgetText = (widget) => {
|
|
82
|
-
|
|
58
|
+
const role = widget.getAccessibleRole();
|
|
59
|
+
if (role === undefined)
|
|
83
60
|
return null;
|
|
61
|
+
const childLabels = collectDirectChildLabels(widget);
|
|
62
|
+
return childLabels.length > 0 ? childLabels.join("") : null;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Returns the widget's own text from properties (getLabel, getText, getTitle).
|
|
66
|
+
*
|
|
67
|
+
* Used for display/debugging purposes (e.g., prettyWidget). This is
|
|
68
|
+
* analogous to HTML attributes like aria-label, not text content.
|
|
69
|
+
*
|
|
70
|
+
* @param widget - The widget to extract property text from
|
|
71
|
+
* @returns The property text or null if none found
|
|
72
|
+
*/
|
|
73
|
+
export const getWidgetPropertyText = (widget) => {
|
|
74
|
+
return getDefaultText(widget);
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Computes the accessible name of a widget for role-based queries.
|
|
78
|
+
*
|
|
79
|
+
* Uses the widget's own text properties first, then recursively collects
|
|
80
|
+
* all descendant label text. This mirrors how ARIA accessible name
|
|
81
|
+
* computation works in the DOM.
|
|
82
|
+
*
|
|
83
|
+
* @param widget - The widget to compute the accessible name for
|
|
84
|
+
* @returns The accessible name or null if none found
|
|
85
|
+
*/
|
|
86
|
+
export const getWidgetAccessibleName = (widget) => {
|
|
84
87
|
const role = widget.getAccessibleRole();
|
|
85
88
|
if (role === undefined)
|
|
86
89
|
return null;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
const directLabel = getDefaultText(widget);
|
|
95
|
-
if (directLabel)
|
|
96
|
-
return directLabel;
|
|
97
|
-
const childLabels = collectChildLabels(widget);
|
|
98
|
-
return childLabels.length > 0 ? childLabels.join(" ") : null;
|
|
99
|
-
}
|
|
100
|
-
case Gtk.AccessibleRole.TAB_PANEL: {
|
|
101
|
-
const parent = widget.getParent();
|
|
102
|
-
if (parent) {
|
|
103
|
-
const stack = parent;
|
|
104
|
-
const page = stack.getPage?.(widget);
|
|
105
|
-
if (page) {
|
|
106
|
-
return page.getTitle() ?? null;
|
|
107
|
-
}
|
|
90
|
+
if (role === Gtk.AccessibleRole.TAB_PANEL) {
|
|
91
|
+
const parent = widget.getParent();
|
|
92
|
+
if (parent) {
|
|
93
|
+
const stack = parent;
|
|
94
|
+
const page = stack.getPage?.(widget);
|
|
95
|
+
if (page) {
|
|
96
|
+
return page.getTitle() ?? null;
|
|
108
97
|
}
|
|
109
|
-
return null;
|
|
110
98
|
}
|
|
111
|
-
|
|
112
|
-
return getDefaultText(widget);
|
|
99
|
+
return null;
|
|
113
100
|
}
|
|
101
|
+
const ownText = getDefaultText(widget);
|
|
102
|
+
if (ownText)
|
|
103
|
+
return ownText;
|
|
104
|
+
const childLabels = collectChildLabels(widget);
|
|
105
|
+
return childLabels.length > 0 ? childLabels.join(" ") : null;
|
|
114
106
|
};
|
|
115
107
|
/**
|
|
116
108
|
* Gets the test ID from a widget (uses the widget's name property).
|
package/dist/widget-text.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget-text.js","sourceRoot":"","sources":["../src/widget-text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AAErC,MAAM,
|
|
1
|
+
{"version":3,"file":"widget-text.js","sourceRoot":"","sources":["../src/widget-text.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gtkx/testing",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"description": "Testing utilities for GTKX applications",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"gtkx",
|
|
@@ -38,13 +38,13 @@
|
|
|
38
38
|
"src"
|
|
39
39
|
],
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@gtkx/
|
|
42
|
-
"@gtkx/
|
|
41
|
+
"@gtkx/ffi": "0.19.0",
|
|
42
|
+
"@gtkx/react": "0.19.0"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@types/react-reconciler": "^0.33.0",
|
|
46
46
|
"react-reconciler": "^0.33.0",
|
|
47
|
-
"@gtkx/vitest": "0.
|
|
47
|
+
"@gtkx/vitest": "0.19.0"
|
|
48
48
|
},
|
|
49
49
|
"scripts": {
|
|
50
50
|
"build": "tsc -b && cp ../../README.md .",
|
package/src/pretty-widget.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Gtk from "@gtkx/ffi/gtk";
|
|
2
2
|
import { formatRole } from "./role-helpers.js";
|
|
3
3
|
import { type Container, isApplication } from "./traversal.js";
|
|
4
|
-
import {
|
|
4
|
+
import { getWidgetPropertyText } from "./widget-text.js";
|
|
5
5
|
|
|
6
6
|
const DEFAULT_MAX_LENGTH = 7000;
|
|
7
7
|
const INDENT = " ";
|
|
@@ -119,7 +119,7 @@ const printWidget = (widget: Gtk.Widget, colors: HighlightColors, depth: number,
|
|
|
119
119
|
const indent = INDENT.repeat(depth);
|
|
120
120
|
const tagName = formatTagName(widget);
|
|
121
121
|
const attributes = formatAttributes(widget, colors, includeIds);
|
|
122
|
-
const text =
|
|
122
|
+
const text = getWidgetPropertyText(widget);
|
|
123
123
|
const children: string[] = [];
|
|
124
124
|
|
|
125
125
|
let child = widget.getFirstChild();
|
package/src/queries.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { type Container, findAll, traverse } from "./traversal.js";
|
|
|
4
4
|
import type { ByRoleOptions, TextMatch, TextMatchOptions } from "./types.js";
|
|
5
5
|
import { waitFor } from "./wait-for.js";
|
|
6
6
|
import {
|
|
7
|
+
getWidgetAccessibleName,
|
|
7
8
|
getWidgetCheckedState,
|
|
8
9
|
getWidgetExpandedState,
|
|
9
10
|
getWidgetPressedState,
|
|
@@ -69,7 +70,7 @@ const matchByRoleOptions = (widget: Gtk.Widget, options?: ByRoleOptions): boolea
|
|
|
69
70
|
if (!options) return true;
|
|
70
71
|
|
|
71
72
|
if (options.name !== undefined) {
|
|
72
|
-
const text =
|
|
73
|
+
const text = getWidgetAccessibleName(widget);
|
|
73
74
|
if (!matchText(text, options.name, widget, options)) return false;
|
|
74
75
|
}
|
|
75
76
|
|
|
@@ -206,8 +207,7 @@ export const queryByLabelText = (
|
|
|
206
207
|
*/
|
|
207
208
|
export const queryAllByText = (container: Container, text: TextMatch, options?: TextMatchOptions): Gtk.Widget[] => {
|
|
208
209
|
return findAll(container, (node) => {
|
|
209
|
-
|
|
210
|
-
return matchText(widgetText, text, node, options);
|
|
210
|
+
return matchText(getWidgetText(node), text, node, options);
|
|
211
211
|
});
|
|
212
212
|
};
|
|
213
213
|
|
package/src/role-helpers.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as Gtk from "@gtkx/ffi/gtk";
|
|
2
2
|
import { type Container, traverse } from "./traversal.js";
|
|
3
|
-
import {
|
|
3
|
+
import { getWidgetAccessibleName } from "./widget-text.js";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Information about a widget and its accessible name.
|
|
@@ -51,7 +51,7 @@ export const getRoles = (container: Container): Map<string, RoleInfo[]> => {
|
|
|
51
51
|
if (role === undefined) continue;
|
|
52
52
|
|
|
53
53
|
const roleName = formatRole(role);
|
|
54
|
-
const name =
|
|
54
|
+
const name = getWidgetAccessibleName(widget);
|
|
55
55
|
const info: RoleInfo = { widget, name };
|
|
56
56
|
|
|
57
57
|
const existing = roles.get(roleName);
|
package/src/traversal.ts
CHANGED
|
@@ -40,6 +40,7 @@ export const traverse = function* (container: Container): Generator<Gtk.Widget>
|
|
|
40
40
|
export const findAll = (container: Container, predicate: (node: Gtk.Widget) => boolean): Gtk.Widget[] => {
|
|
41
41
|
const results: Gtk.Widget[] = [];
|
|
42
42
|
for (const node of traverse(container)) {
|
|
43
|
+
if (node.getAccessibleRole?.() === Gtk.AccessibleRole.LABEL) continue;
|
|
43
44
|
if (predicate(node)) {
|
|
44
45
|
results.push(node);
|
|
45
46
|
}
|
package/src/widget-text.ts
CHANGED
|
@@ -1,48 +1,6 @@
|
|
|
1
1
|
import { getNativeInterface } from "@gtkx/ffi";
|
|
2
2
|
import * as Gtk from "@gtkx/ffi/gtk";
|
|
3
3
|
|
|
4
|
-
const ROLES_WITH_INTERNAL_LABELS = new Set([
|
|
5
|
-
Gtk.AccessibleRole.BUTTON,
|
|
6
|
-
Gtk.AccessibleRole.TOGGLE_BUTTON,
|
|
7
|
-
Gtk.AccessibleRole.CHECKBOX,
|
|
8
|
-
Gtk.AccessibleRole.RADIO,
|
|
9
|
-
Gtk.AccessibleRole.LIST_ITEM,
|
|
10
|
-
Gtk.AccessibleRole.MENU_ITEM,
|
|
11
|
-
Gtk.AccessibleRole.MENU_ITEM_CHECKBOX,
|
|
12
|
-
Gtk.AccessibleRole.MENU_ITEM_RADIO,
|
|
13
|
-
Gtk.AccessibleRole.ROW,
|
|
14
|
-
Gtk.AccessibleRole.TAB,
|
|
15
|
-
Gtk.AccessibleRole.LINK,
|
|
16
|
-
]);
|
|
17
|
-
|
|
18
|
-
const isInternalLabel = (widget: Gtk.Widget): boolean => {
|
|
19
|
-
if (widget.getAccessibleRole() !== Gtk.AccessibleRole.LABEL) return false;
|
|
20
|
-
|
|
21
|
-
const parent = widget.getParent();
|
|
22
|
-
if (!parent) return false;
|
|
23
|
-
|
|
24
|
-
if (parent.getAccessibleRole === undefined) return false;
|
|
25
|
-
const parentRole = parent.getAccessibleRole();
|
|
26
|
-
if (!parentRole) return false;
|
|
27
|
-
|
|
28
|
-
if (ROLES_WITH_INTERNAL_LABELS.has(parentRole)) return true;
|
|
29
|
-
|
|
30
|
-
const labelText = getLabelText(widget);
|
|
31
|
-
if (!labelText) return false;
|
|
32
|
-
|
|
33
|
-
let ancestor: Gtk.Widget | null = parent;
|
|
34
|
-
while (ancestor) {
|
|
35
|
-
if (ancestor.getAccessibleRole === undefined) return false;
|
|
36
|
-
const role = ancestor.getAccessibleRole();
|
|
37
|
-
if (role && ROLES_WITH_INTERNAL_LABELS.has(role)) {
|
|
38
|
-
return getDefaultText(ancestor) === labelText;
|
|
39
|
-
}
|
|
40
|
-
ancestor = ancestor.getParent();
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return false;
|
|
44
|
-
};
|
|
45
|
-
|
|
46
4
|
const getLabelText = (widget: Gtk.Widget): string | null => {
|
|
47
5
|
const asLabel = widget as Gtk.Label;
|
|
48
6
|
const asInscription = widget as Gtk.Inscription;
|
|
@@ -51,18 +9,33 @@ const getLabelText = (widget: Gtk.Widget): string | null => {
|
|
|
51
9
|
|
|
52
10
|
const getDefaultText = (widget: Gtk.Widget): string | null => {
|
|
53
11
|
if ("getLabel" in widget && typeof widget.getLabel === "function") {
|
|
54
|
-
return (widget.getLabel() as string)
|
|
12
|
+
return (widget.getLabel() as string) || null;
|
|
55
13
|
}
|
|
56
14
|
|
|
57
15
|
if ("getText" in widget && typeof widget.getText === "function") {
|
|
58
|
-
return (widget.getText() as string)
|
|
16
|
+
return (widget.getText() as string) || null;
|
|
59
17
|
}
|
|
60
18
|
|
|
61
19
|
if ("getTitle" in widget && typeof widget.getTitle === "function") {
|
|
62
|
-
return (widget.getTitle() as string)
|
|
20
|
+
return (widget.getTitle() as string) || null;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return getNativeInterface(widget, Gtk.Editable)?.getText() || null;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const collectDirectChildLabels = (widget: Gtk.Widget): string[] => {
|
|
27
|
+
const labels: string[] = [];
|
|
28
|
+
let child = widget.getFirstChild();
|
|
29
|
+
|
|
30
|
+
while (child) {
|
|
31
|
+
if (child.getAccessibleRole() === Gtk.AccessibleRole.LABEL) {
|
|
32
|
+
const labelText = getLabelText(child);
|
|
33
|
+
if (labelText) labels.push(labelText);
|
|
34
|
+
}
|
|
35
|
+
child = child.getNextSibling();
|
|
63
36
|
}
|
|
64
37
|
|
|
65
|
-
return
|
|
38
|
+
return labels;
|
|
66
39
|
};
|
|
67
40
|
|
|
68
41
|
const collectChildLabels = (widget: Gtk.Widget): string[] => {
|
|
@@ -83,44 +56,67 @@ const collectChildLabels = (widget: Gtk.Widget): string[] => {
|
|
|
83
56
|
};
|
|
84
57
|
|
|
85
58
|
/**
|
|
86
|
-
*
|
|
59
|
+
* Returns the text content of a widget, analogous to RTL's getNodeText.
|
|
60
|
+
*
|
|
61
|
+
* Collects direct child GtkLabel text (treated as text nodes) and joins
|
|
62
|
+
* them into a single string. Widget properties like getLabel(), getTitle(),
|
|
63
|
+
* getText() are NOT included — those are attributes, not text content.
|
|
87
64
|
*
|
|
88
65
|
* @param widget - The widget to extract text from
|
|
89
|
-
* @returns The
|
|
66
|
+
* @returns The joined text content or null if none found
|
|
90
67
|
*/
|
|
91
68
|
export const getWidgetText = (widget: Gtk.Widget): string | null => {
|
|
92
|
-
|
|
69
|
+
const role = widget.getAccessibleRole();
|
|
70
|
+
if (role === undefined) return null;
|
|
71
|
+
|
|
72
|
+
const childLabels = collectDirectChildLabels(widget);
|
|
73
|
+
return childLabels.length > 0 ? childLabels.join("") : null;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Returns the widget's own text from properties (getLabel, getText, getTitle).
|
|
78
|
+
*
|
|
79
|
+
* Used for display/debugging purposes (e.g., prettyWidget). This is
|
|
80
|
+
* analogous to HTML attributes like aria-label, not text content.
|
|
81
|
+
*
|
|
82
|
+
* @param widget - The widget to extract property text from
|
|
83
|
+
* @returns The property text or null if none found
|
|
84
|
+
*/
|
|
85
|
+
export const getWidgetPropertyText = (widget: Gtk.Widget): string | null => {
|
|
86
|
+
return getDefaultText(widget);
|
|
87
|
+
};
|
|
93
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Computes the accessible name of a widget for role-based queries.
|
|
91
|
+
*
|
|
92
|
+
* Uses the widget's own text properties first, then recursively collects
|
|
93
|
+
* all descendant label text. This mirrors how ARIA accessible name
|
|
94
|
+
* computation works in the DOM.
|
|
95
|
+
*
|
|
96
|
+
* @param widget - The widget to compute the accessible name for
|
|
97
|
+
* @returns The accessible name or null if none found
|
|
98
|
+
*/
|
|
99
|
+
export const getWidgetAccessibleName = (widget: Gtk.Widget): string | null => {
|
|
94
100
|
const role = widget.getAccessibleRole();
|
|
95
101
|
if (role === undefined) return null;
|
|
96
102
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
const directLabel = getDefaultText(widget);
|
|
105
|
-
if (directLabel) return directLabel;
|
|
106
|
-
|
|
107
|
-
const childLabels = collectChildLabels(widget);
|
|
108
|
-
return childLabels.length > 0 ? childLabels.join(" ") : null;
|
|
109
|
-
}
|
|
110
|
-
case Gtk.AccessibleRole.TAB_PANEL: {
|
|
111
|
-
const parent = widget.getParent();
|
|
112
|
-
if (parent) {
|
|
113
|
-
const stack = parent as Gtk.Stack;
|
|
114
|
-
const page = stack.getPage?.(widget);
|
|
115
|
-
if (page) {
|
|
116
|
-
return page.getTitle() ?? null;
|
|
117
|
-
}
|
|
103
|
+
if (role === Gtk.AccessibleRole.TAB_PANEL) {
|
|
104
|
+
const parent = widget.getParent();
|
|
105
|
+
if (parent) {
|
|
106
|
+
const stack = parent as Gtk.Stack;
|
|
107
|
+
const page = stack.getPage?.(widget);
|
|
108
|
+
if (page) {
|
|
109
|
+
return page.getTitle() ?? null;
|
|
118
110
|
}
|
|
119
|
-
return null;
|
|
120
111
|
}
|
|
121
|
-
|
|
122
|
-
return getDefaultText(widget);
|
|
112
|
+
return null;
|
|
123
113
|
}
|
|
114
|
+
|
|
115
|
+
const ownText = getDefaultText(widget);
|
|
116
|
+
if (ownText) return ownText;
|
|
117
|
+
|
|
118
|
+
const childLabels = collectChildLabels(widget);
|
|
119
|
+
return childLabels.length > 0 ? childLabels.join(" ") : null;
|
|
124
120
|
};
|
|
125
121
|
|
|
126
122
|
/**
|