@gtkx/testing 1.0.0 → 1.1.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 (124) hide show
  1. package/README.md +1 -1
  2. package/dist/act.d.ts +1 -3
  3. package/dist/act.d.ts.map +1 -1
  4. package/dist/act.js +1 -1
  5. package/dist/act.js.map +1 -1
  6. package/dist/config.d.ts +8 -1
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +1 -0
  9. package/dist/config.js.map +1 -1
  10. package/dist/frame-sync.d.ts +2 -2
  11. package/dist/frame-sync.d.ts.map +1 -1
  12. package/dist/frame-sync.js +10 -10
  13. package/dist/frame-sync.js.map +1 -1
  14. package/dist/harness-window.d.ts +2 -1
  15. package/dist/harness-window.d.ts.map +1 -1
  16. package/dist/harness-window.js +12 -1
  17. package/dist/harness-window.js.map +1 -1
  18. package/dist/internal.d.ts +1 -0
  19. package/dist/internal.d.ts.map +1 -1
  20. package/dist/internal.js +1 -0
  21. package/dist/internal.js.map +1 -1
  22. package/dist/matchers.d.ts.map +1 -1
  23. package/dist/matchers.js +22 -2
  24. package/dist/matchers.js.map +1 -1
  25. package/dist/pretty-widget.d.ts.map +1 -1
  26. package/dist/pretty-widget.js +2 -1
  27. package/dist/pretty-widget.js.map +1 -1
  28. package/dist/production.d.ts.map +1 -1
  29. package/dist/production.js +2 -2
  30. package/dist/production.js.map +1 -1
  31. package/dist/render.d.ts +12 -1
  32. package/dist/render.d.ts.map +1 -1
  33. package/dist/render.js +45 -11
  34. package/dist/render.js.map +1 -1
  35. package/dist/role-helpers.d.ts.map +1 -1
  36. package/dist/role-helpers.js +2 -1
  37. package/dist/role-helpers.js.map +1 -1
  38. package/dist/screenshot.d.ts.map +1 -1
  39. package/dist/screenshot.js +8 -14
  40. package/dist/screenshot.js.map +1 -1
  41. package/dist/timers.d.ts +9 -0
  42. package/dist/timers.d.ts.map +1 -0
  43. package/dist/timers.js +21 -0
  44. package/dist/timers.js.map +1 -0
  45. package/dist/traversal.d.ts +4 -1
  46. package/dist/traversal.d.ts.map +1 -1
  47. package/dist/traversal.js +16 -1
  48. package/dist/traversal.js.map +1 -1
  49. package/dist/types.d.ts +6 -1
  50. package/dist/types.d.ts.map +1 -1
  51. package/dist/types.js.map +1 -1
  52. package/dist/user-event/adjustment.d.ts.map +1 -1
  53. package/dist/user-event/adjustment.js +2 -1
  54. package/dist/user-event/adjustment.js.map +1 -1
  55. package/dist/user-event/click.d.ts +5 -4
  56. package/dist/user-event/click.d.ts.map +1 -1
  57. package/dist/user-event/click.js +5 -4
  58. package/dist/user-event/click.js.map +1 -1
  59. package/dist/user-event/column-header-click.d.ts.map +1 -1
  60. package/dist/user-event/column-header-click.js +2 -12
  61. package/dist/user-event/column-header-click.js.map +1 -1
  62. package/dist/user-event/event-wrapper.d.ts.map +1 -1
  63. package/dist/user-event/event-wrapper.js +34 -21
  64. package/dist/user-event/event-wrapper.js.map +1 -1
  65. package/dist/user-event/index.d.ts +36 -10
  66. package/dist/user-event/index.d.ts.map +1 -1
  67. package/dist/user-event/index.js +4 -3
  68. package/dist/user-event/index.js.map +1 -1
  69. package/dist/user-event/keyboard.d.ts.map +1 -1
  70. package/dist/user-event/keyboard.js +93 -38
  71. package/dist/user-event/keyboard.js.map +1 -1
  72. package/dist/user-event/list-row-click.d.ts.map +1 -1
  73. package/dist/user-event/list-row-click.js +4 -5
  74. package/dist/user-event/list-row-click.js.map +1 -1
  75. package/dist/user-event/native-click.d.ts.map +1 -1
  76. package/dist/user-event/native-click.js +4 -0
  77. package/dist/user-event/native-click.js.map +1 -1
  78. package/dist/user-event/notebook-tab-click.d.ts +5 -0
  79. package/dist/user-event/notebook-tab-click.d.ts.map +1 -0
  80. package/dist/user-event/notebook-tab-click.js +39 -0
  81. package/dist/user-event/notebook-tab-click.js.map +1 -0
  82. package/dist/user-event/text.d.ts +6 -3
  83. package/dist/user-event/text.d.ts.map +1 -1
  84. package/dist/user-event/text.js +88 -33
  85. package/dist/user-event/text.js.map +1 -1
  86. package/dist/wait-for.d.ts.map +1 -1
  87. package/dist/wait-for.js +4 -3
  88. package/dist/wait-for.js.map +1 -1
  89. package/dist/widget-getters.d.ts +4 -1
  90. package/dist/widget-getters.d.ts.map +1 -1
  91. package/dist/widget-getters.js +29 -2
  92. package/dist/widget-getters.js.map +1 -1
  93. package/dist/window-state.d.ts +10 -0
  94. package/dist/window-state.d.ts.map +1 -0
  95. package/dist/window-state.js +41 -0
  96. package/dist/window-state.js.map +1 -0
  97. package/package.json +15 -7
  98. package/src/act.ts +1 -1
  99. package/src/config.ts +10 -1
  100. package/src/frame-sync.ts +15 -10
  101. package/src/harness-window.ts +15 -1
  102. package/src/internal.ts +1 -0
  103. package/src/matchers.ts +29 -2
  104. package/src/pretty-widget.ts +2 -1
  105. package/src/production.ts +2 -3
  106. package/src/render.tsx +67 -12
  107. package/src/role-helpers.ts +2 -1
  108. package/src/screenshot.ts +9 -16
  109. package/src/timers.ts +31 -0
  110. package/src/traversal.ts +22 -0
  111. package/src/types.ts +6 -1
  112. package/src/user-event/adjustment.ts +2 -1
  113. package/src/user-event/click.ts +5 -4
  114. package/src/user-event/column-header-click.ts +2 -16
  115. package/src/user-event/event-wrapper.ts +41 -25
  116. package/src/user-event/index.ts +40 -13
  117. package/src/user-event/keyboard.ts +124 -54
  118. package/src/user-event/list-row-click.ts +4 -7
  119. package/src/user-event/native-click.ts +5 -0
  120. package/src/user-event/notebook-tab-click.ts +57 -0
  121. package/src/user-event/text.ts +113 -38
  122. package/src/wait-for.ts +4 -4
  123. package/src/widget-getters.ts +55 -2
  124. package/src/window-state.ts +70 -0
package/README.md CHANGED
@@ -161,7 +161,7 @@ Explore the [example apps](https://github.com/gtkx-org/gtkx/tree/main/examples):
161
161
 
162
162
  ## Status
163
163
 
164
- GTKX 1.0 is released.
164
+ GTKX is stable and ready for production use.
165
165
 
166
166
  ## Contributing
167
167
 
package/dist/act.d.ts CHANGED
@@ -13,9 +13,7 @@ type ActImplementation = <T>(callback: ActCallback<T>) => PromiseLike<T>;
13
13
  * @returns A promise that resolves with the callback's result after updates flush.
14
14
  */
15
15
  declare const act: ActImplementation;
16
- declare const getIsReactActEnvironment: () => boolean | undefined;
17
- declare const setIsReactActEnvironment: (value: boolean | undefined) => void;
18
16
  declare const runWithActEnvironment: <T>(isForced: boolean, fn: () => T | PromiseLike<T>) => Promise<T>;
19
17
  declare const runInAct: (callback: () => unknown) => Promise<void>;
20
- export { act, getIsReactActEnvironment, setIsReactActEnvironment, runWithActEnvironment, runInAct };
18
+ export { act, runWithActEnvironment, runInAct };
21
19
  //# sourceMappingURL=act.d.ts.map
package/dist/act.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"act.d.ts","sourceRoot":"","sources":["../src/act.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,CAAC;IACX,IAAI,wBAAwB,EAAE,OAAO,GAAG,SAAS,CAAC;CACrD;AAED,+EAA+E;AAC/E,KAAK,WAAW,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAC/C,qGAAqG;AACrG,KAAK,iBAAiB,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC;AAGzE;;;;;;GAMG;AACH,QAAA,MAAM,GAAG,EAAE,iBAA+D,CAAC;AAU3E,QAAA,MAAM,wBAAwB,QAAO,OAAO,GAAG,SAAqD,CAAC;AAErG,QAAA,MAAM,wBAAwB,GAAI,OAAO,OAAO,GAAG,SAAS,KAAG,IAE9D,CAAC;AAaF,QAAA,MAAM,qBAAqB,GAAI,CAAC,EAAE,UAAU,OAAO,EAAE,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAkB5F,CAAC;AAUF,QAAA,MAAM,QAAQ,GAAU,UAAU,MAAM,OAAO,KAAG,OAAO,CAAC,IAAI,CAE7D,CAAC;AAEF,OAAO,EAAE,GAAG,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"act.d.ts","sourceRoot":"","sources":["../src/act.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,CAAC;IACX,IAAI,wBAAwB,EAAE,OAAO,GAAG,SAAS,CAAC;CACrD;AAED,+EAA+E;AAC/E,KAAK,WAAW,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAC/C,qGAAqG;AACrG,KAAK,iBAAiB,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC;AAGzE;;;;;;GAMG;AACH,QAAA,MAAM,GAAG,EAAE,iBAA+D,CAAC;AA2B3E,QAAA,MAAM,qBAAqB,GAAI,CAAC,EAAE,UAAU,OAAO,EAAE,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAkB5F,CAAC;AAUF,QAAA,MAAM,QAAQ,GAAU,UAAU,MAAM,OAAO,KAAG,OAAO,CAAC,IAAI,CAE7D,CAAC;AAEF,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,QAAQ,EAAE,CAAC"}
package/dist/act.js CHANGED
@@ -52,5 +52,5 @@ function withGlobalActEnvironment(actImplementation) {
52
52
  const runInAct = async (callback) => {
53
53
  await act(() => callback());
54
54
  };
55
- export { act, getIsReactActEnvironment, setIsReactActEnvironment, runWithActEnvironment, runInAct };
55
+ export { act, runWithActEnvironment, runInAct };
56
56
  //# sourceMappingURL=act.js.map
package/dist/act.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"act.js","sourceRoot":"","sources":["../src/act.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,QAAQ,EAAE,MAAM,OAAO,CAAC;AAWxC,MAAM,iBAAiB,GAAsB,QAAQ,CAAC;AACtD;;;;;;GAMG;AACH,MAAM,GAAG,GAAsB,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;AAE3E,MAAM,aAAa,GAAG,GAAsB,EAAE;IAC1C,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,GAAwB,EAAE,CAAC,aAAa,EAAE,CAAC,wBAAwB,CAAC;AAErG,MAAM,wBAAwB,GAAG,CAAC,KAA0B,EAAQ,EAAE;IAClE,aAAa,EAAE,CAAC,wBAAwB,GAAG,KAAK,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAI,KAAc,EAA2B,EAAE,CAC9D,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAQ,KAAwB,CAAC,IAAI,KAAK,UAAU,CAAC;AAExG,MAAM,YAAY,GAAG,KAAK,EAAK,MAAsB,EAAE,QAA6B,EAAc,EAAE;IAChG,IAAI,CAAC;QACD,OAAO,MAAM,MAAM,CAAC;IACxB,CAAC;YAAS,CAAC;QACP,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAI,QAAiB,EAAE,EAA4B,EAAc,EAAE;IAC7F,MAAM,sBAAsB,GAAG,wBAAwB,EAAE,CAAC;IAC1D,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAEnC,IAAI,CAAC;QACD,MAAM,MAAM,GAAuB,EAAE,EAAE,CAAC;QAExC,IAAI,UAAU,CAAI,MAAM,CAAC,EAAE,CAAC;YACxB,OAAO,YAAY,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QACxD,CAAC;QAED,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;QAEjD,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;QACjD,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC,CAAC;AAEF,SAAS,wBAAwB,CAAC,iBAAoC;IAClE,OAAO,CAAI,QAAwB,EAAkB,EAAE;QACnD,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAEvF,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAuB,EAAiB,EAAE;IAC9D,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,OAAO,EAAE,GAAG,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,CAAC","sourcesContent":["import { act as reactAct } from \"react\";\n\ndeclare global {\n var IS_REACT_ACT_ENVIRONMENT: boolean | undefined;\n}\n\n/** Work run inside the act environment, either synchronous or asynchronous. */\ntype ActCallback<T> = () => T | PromiseLike<T>;\n/** Runs a callback inside React's act environment and settles with its result once updates flush. */\ntype ActImplementation = <T>(callback: ActCallback<T>) => PromiseLike<T>;\n\nconst actImplementation: ActImplementation = reactAct;\n/**\n * Runs a callback inside React's act environment, flushing pending state\n * updates and effects, and resolves once the work has settled.\n *\n * @param callback Work to run within the act environment.\n * @returns A promise that resolves with the callback's result after updates flush.\n */\nconst act: ActImplementation = withGlobalActEnvironment(actImplementation);\n\nconst getGlobalThis = (): typeof globalThis => {\n if (typeof globalThis !== \"undefined\") {\n return globalThis;\n }\n\n throw new Error(\"unable to locate global object\");\n};\n\nconst getIsReactActEnvironment = (): boolean | undefined => getGlobalThis().IS_REACT_ACT_ENVIRONMENT;\n\nconst setIsReactActEnvironment = (value: boolean | undefined): void => {\n getGlobalThis().IS_REACT_ACT_ENVIRONMENT = value;\n};\n\nconst isThenable = <T>(value: unknown): value is PromiseLike<T> =>\n value !== null && typeof value === \"object\" && typeof (value as PromiseLike<T>).then === \"function\";\n\nconst restoreAfter = async <T>(result: PromiseLike<T>, previous: boolean | undefined): Promise<T> => {\n try {\n return await result;\n } finally {\n setIsReactActEnvironment(previous);\n }\n};\n\nconst runWithActEnvironment = <T>(isForced: boolean, fn: () => T | PromiseLike<T>): Promise<T> => {\n const previousActEnvironment = getIsReactActEnvironment();\n setIsReactActEnvironment(isForced);\n\n try {\n const result: T | PromiseLike<T> = fn();\n\n if (isThenable<T>(result)) {\n return restoreAfter(result, previousActEnvironment);\n }\n\n setIsReactActEnvironment(previousActEnvironment);\n\n return Promise.resolve(result);\n } catch (error) {\n setIsReactActEnvironment(previousActEnvironment);\n throw error;\n }\n};\n\nfunction withGlobalActEnvironment(actImplementation: ActImplementation): ActImplementation {\n return <T>(callback: ActCallback<T>): PromiseLike<T> => {\n const settled = runWithActEnvironment(true, () => actImplementation(() => callback()));\n\n return Promise.resolve(settled);\n };\n}\n\nconst runInAct = async (callback: () => unknown): Promise<void> => {\n await act(() => callback());\n};\n\nexport { act, getIsReactActEnvironment, setIsReactActEnvironment, runWithActEnvironment, runInAct };\n"]}
1
+ {"version":3,"file":"act.js","sourceRoot":"","sources":["../src/act.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,QAAQ,EAAE,MAAM,OAAO,CAAC;AAWxC,MAAM,iBAAiB,GAAsB,QAAQ,CAAC;AACtD;;;;;;GAMG;AACH,MAAM,GAAG,GAAsB,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;AAE3E,MAAM,aAAa,GAAG,GAAsB,EAAE;IAC1C,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,GAAwB,EAAE,CAAC,aAAa,EAAE,CAAC,wBAAwB,CAAC;AAErG,MAAM,wBAAwB,GAAG,CAAC,KAA0B,EAAQ,EAAE;IAClE,aAAa,EAAE,CAAC,wBAAwB,GAAG,KAAK,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAI,KAAc,EAA2B,EAAE,CAC9D,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAQ,KAAwB,CAAC,IAAI,KAAK,UAAU,CAAC;AAExG,MAAM,YAAY,GAAG,KAAK,EAAK,MAAsB,EAAE,QAA6B,EAAc,EAAE;IAChG,IAAI,CAAC;QACD,OAAO,MAAM,MAAM,CAAC;IACxB,CAAC;YAAS,CAAC;QACP,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAI,QAAiB,EAAE,EAA4B,EAAc,EAAE;IAC7F,MAAM,sBAAsB,GAAG,wBAAwB,EAAE,CAAC;IAC1D,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAEnC,IAAI,CAAC;QACD,MAAM,MAAM,GAAuB,EAAE,EAAE,CAAC;QAExC,IAAI,UAAU,CAAI,MAAM,CAAC,EAAE,CAAC;YACxB,OAAO,YAAY,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QACxD,CAAC;QAED,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;QAEjD,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;QACjD,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC,CAAC;AAEF,SAAS,wBAAwB,CAAC,iBAAoC;IAClE,OAAO,CAAI,QAAwB,EAAkB,EAAE;QACnD,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAEvF,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAuB,EAAiB,EAAE;IAC9D,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,QAAQ,EAAE,CAAC","sourcesContent":["import { act as reactAct } from \"react\";\n\ndeclare global {\n var IS_REACT_ACT_ENVIRONMENT: boolean | undefined;\n}\n\n/** Work run inside the act environment, either synchronous or asynchronous. */\ntype ActCallback<T> = () => T | PromiseLike<T>;\n/** Runs a callback inside React's act environment and settles with its result once updates flush. */\ntype ActImplementation = <T>(callback: ActCallback<T>) => PromiseLike<T>;\n\nconst actImplementation: ActImplementation = reactAct;\n/**\n * Runs a callback inside React's act environment, flushing pending state\n * updates and effects, and resolves once the work has settled.\n *\n * @param callback Work to run within the act environment.\n * @returns A promise that resolves with the callback's result after updates flush.\n */\nconst act: ActImplementation = withGlobalActEnvironment(actImplementation);\n\nconst getGlobalThis = (): typeof globalThis => {\n if (typeof globalThis !== \"undefined\") {\n return globalThis;\n }\n\n throw new Error(\"unable to locate global object\");\n};\n\nconst getIsReactActEnvironment = (): boolean | undefined => getGlobalThis().IS_REACT_ACT_ENVIRONMENT;\n\nconst setIsReactActEnvironment = (value: boolean | undefined): void => {\n getGlobalThis().IS_REACT_ACT_ENVIRONMENT = value;\n};\n\nconst isThenable = <T>(value: unknown): value is PromiseLike<T> =>\n value !== null && typeof value === \"object\" && typeof (value as PromiseLike<T>).then === \"function\";\n\nconst restoreAfter = async <T>(result: PromiseLike<T>, previous: boolean | undefined): Promise<T> => {\n try {\n return await result;\n } finally {\n setIsReactActEnvironment(previous);\n }\n};\n\nconst runWithActEnvironment = <T>(isForced: boolean, fn: () => T | PromiseLike<T>): Promise<T> => {\n const previousActEnvironment = getIsReactActEnvironment();\n setIsReactActEnvironment(isForced);\n\n try {\n const result: T | PromiseLike<T> = fn();\n\n if (isThenable<T>(result)) {\n return restoreAfter(result, previousActEnvironment);\n }\n\n setIsReactActEnvironment(previousActEnvironment);\n\n return Promise.resolve(result);\n } catch (error) {\n setIsReactActEnvironment(previousActEnvironment);\n throw error;\n }\n};\n\nfunction withGlobalActEnvironment(actImplementation: ActImplementation): ActImplementation {\n return <T>(callback: ActCallback<T>): PromiseLike<T> => {\n const settled = runWithActEnvironment(true, () => actImplementation(() => callback()));\n\n return Promise.resolve(settled);\n };\n}\n\nconst runInAct = async (callback: () => unknown): Promise<void> => {\n await act(() => callback());\n};\n\nexport { act, runWithActEnvironment, runInAct };\n"]}
package/dist/config.d.ts CHANGED
@@ -11,8 +11,15 @@ type Config = {
11
11
  getElementError: (message: string, container?: Container) => Error;
12
12
  /** Default timeout in milliseconds for async utilities such as waitFor. */
13
13
  asyncUtilTimeout: number;
14
- /** Timeout in milliseconds for waiting on a widget to become actionable. */
14
+ /** Timeout in milliseconds a user event waits for its widget to become actionable. */
15
15
  actionabilityTimeout: number;
16
+ /**
17
+ * Timeout in milliseconds `render` waits for the window it shows the tree in to be laid out and
18
+ * activated. A window becoming active is a round trip through the compositor rather than an
19
+ * in-process check, so this is far longer than {@link Config.actionabilityTimeout}: it bounds
20
+ * how long a window that never activates takes to report, and costs nothing when one does.
21
+ */
22
+ windowActivationTimeout: number;
16
23
  };
17
24
  /**
18
25
  * Function form of a configuration update: receives the current config and
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;GAIG;AACH,KAAK,MAAM,GAAG;IACV,+FAA+F;IAC/F,gBAAgB,EAAE,OAAO,CAAC;IAE1B,0FAA0F;IAC1F,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,KAAK,KAAK,CAAC;IAEnE,2EAA2E;IAC3E,gBAAgB,EAAE,MAAM,CAAC;IAEzB,4EAA4E;IAC5E,oBAAoB,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF;;;GAGG;AACH,KAAK,QAAQ,GAAG,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAe5D;;GAEG;AACH,QAAA,MAAM,SAAS,QAAO,MAErB,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,SAAS,GAAI,WAAW,OAAO,CAAC,MAAM,CAAC,GAAG,QAAQ,KAAG,IAG1D,CAAC;AAMF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;GAIG;AACH,KAAK,MAAM,GAAG;IACV,+FAA+F;IAC/F,gBAAgB,EAAE,OAAO,CAAC;IAE1B,0FAA0F;IAC1F,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,KAAK,KAAK,CAAC;IAEnE,2EAA2E;IAC3E,gBAAgB,EAAE,MAAM,CAAC;IAEzB,sFAAsF;IACtF,oBAAoB,EAAE,MAAM,CAAC;IAE7B;;;;;OAKG;IACH,uBAAuB,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF;;;GAGG;AACH,KAAK,QAAQ,GAAG,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAgB5D;;GAEG;AACH,QAAA,MAAM,SAAS,QAAO,MAErB,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,SAAS,GAAI,WAAW,OAAO,CAAC,MAAM,CAAC,GAAG,QAAQ,KAAG,IAG1D,CAAC;AAMF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,CAAC"}
package/dist/config.js CHANGED
@@ -3,6 +3,7 @@ const defaultConfig = {
3
3
  getElementError: defaultGetElementError,
4
4
  asyncUtilTimeout: 1000,
5
5
  actionabilityTimeout: 500,
6
+ windowActivationTimeout: 5000,
6
7
  };
7
8
  const currentConfig = { ...defaultConfig };
8
9
  function defaultGetElementError(message) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AA2BA,MAAM,aAAa,GAAW;IAC1B,gBAAgB,EAAE,KAAK;IACvB,eAAe,EAAE,sBAAsB;IACvC,gBAAgB,EAAE,IAAI;IACtB,oBAAoB,EAAE,GAAG;CAC5B,CAAC;AAEF,MAAM,aAAa,GAAW,EAAE,GAAG,aAAa,EAAE,CAAC;AAEnD,SAAS,sBAAsB,CAAC,OAAe;IAC3C,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,SAAS,GAAG,GAAW,EAAE;IAC3B,OAAO,aAAa,CAAC;AACzB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,SAAS,GAAG,CAAC,SAAqC,EAAQ,EAAE;IAC9D,MAAM,OAAO,GAAG,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,YAAa,SAAQ,KAAK;IACnB,IAAI,GAAG,cAAc,CAAC;CAClC;AAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAA8B,CAAC","sourcesContent":["import type { Container } from \"./traversal.js\";\n\n/**\n * Global configuration for the testing harness, controlling query behavior,\n * error formatting, and the timeouts used by async utilities and actionability\n * checks.\n */\ntype Config = {\n /** Whether a successful query throws instead, naming a better query, when one is available. */\n throwSuggestions: boolean;\n\n /** Builds the error thrown when a query fails, given a message and optional container. */\n getElementError: (message: string, container?: Container) => Error;\n\n /** Default timeout in milliseconds for async utilities such as waitFor. */\n asyncUtilTimeout: number;\n\n /** Timeout in milliseconds for waiting on a widget to become actionable. */\n actionabilityTimeout: number;\n};\n\n/**\n * Function form of a configuration update: receives the current config and\n * returns the fields to override.\n */\ntype ConfigFn = (existingConfig: Config) => Partial<Config>;\n\nconst defaultConfig: Config = {\n throwSuggestions: false,\n getElementError: defaultGetElementError,\n asyncUtilTimeout: 1000,\n actionabilityTimeout: 500,\n};\n\nconst currentConfig: Config = { ...defaultConfig };\n\nfunction defaultGetElementError(message: string): Error {\n return new ElementError(message);\n}\n\n/**\n * Returns the current global testing configuration.\n */\nconst getConfig = (): Config => {\n return currentConfig;\n};\n\n/**\n * Merges the given overrides into the global testing configuration.\n *\n * @param newConfig Either a partial config object or a function that receives\n * the current config and returns the fields to override.\n */\nconst configure = (newConfig: Partial<Config> | ConfigFn): void => {\n const updates = typeof newConfig === \"function\" ? newConfig(currentConfig) : newConfig;\n Object.assign(currentConfig, updates);\n};\n\nclass ElementError extends Error {\n override name = \"ElementError\";\n}\n\nexport { getConfig, configure, type Config, type ConfigFn };\n"]}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAmCA,MAAM,aAAa,GAAW;IAC1B,gBAAgB,EAAE,KAAK;IACvB,eAAe,EAAE,sBAAsB;IACvC,gBAAgB,EAAE,IAAI;IACtB,oBAAoB,EAAE,GAAG;IACzB,uBAAuB,EAAE,IAAI;CAChC,CAAC;AAEF,MAAM,aAAa,GAAW,EAAE,GAAG,aAAa,EAAE,CAAC;AAEnD,SAAS,sBAAsB,CAAC,OAAe;IAC3C,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,SAAS,GAAG,GAAW,EAAE;IAC3B,OAAO,aAAa,CAAC;AACzB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,SAAS,GAAG,CAAC,SAAqC,EAAQ,EAAE;IAC9D,MAAM,OAAO,GAAG,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,YAAa,SAAQ,KAAK;IACnB,IAAI,GAAG,cAAc,CAAC;CAClC;AAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAA8B,CAAC","sourcesContent":["import type { Container } from \"./traversal.js\";\n\n/**\n * Global configuration for the testing harness, controlling query behavior,\n * error formatting, and the timeouts used by async utilities and actionability\n * checks.\n */\ntype Config = {\n /** Whether a successful query throws instead, naming a better query, when one is available. */\n throwSuggestions: boolean;\n\n /** Builds the error thrown when a query fails, given a message and optional container. */\n getElementError: (message: string, container?: Container) => Error;\n\n /** Default timeout in milliseconds for async utilities such as waitFor. */\n asyncUtilTimeout: number;\n\n /** Timeout in milliseconds a user event waits for its widget to become actionable. */\n actionabilityTimeout: number;\n\n /**\n * Timeout in milliseconds `render` waits for the window it shows the tree in to be laid out and\n * activated. A window becoming active is a round trip through the compositor rather than an\n * in-process check, so this is far longer than {@link Config.actionabilityTimeout}: it bounds\n * how long a window that never activates takes to report, and costs nothing when one does.\n */\n windowActivationTimeout: number;\n};\n\n/**\n * Function form of a configuration update: receives the current config and\n * returns the fields to override.\n */\ntype ConfigFn = (existingConfig: Config) => Partial<Config>;\n\nconst defaultConfig: Config = {\n throwSuggestions: false,\n getElementError: defaultGetElementError,\n asyncUtilTimeout: 1000,\n actionabilityTimeout: 500,\n windowActivationTimeout: 5000,\n};\n\nconst currentConfig: Config = { ...defaultConfig };\n\nfunction defaultGetElementError(message: string): Error {\n return new ElementError(message);\n}\n\n/**\n * Returns the current global testing configuration.\n */\nconst getConfig = (): Config => {\n return currentConfig;\n};\n\n/**\n * Merges the given overrides into the global testing configuration.\n *\n * @param newConfig Either a partial config object or a function that receives\n * the current config and returns the fields to override.\n */\nconst configure = (newConfig: Partial<Config> | ConfigFn): void => {\n const updates = typeof newConfig === \"function\" ? newConfig(currentConfig) : newConfig;\n Object.assign(currentConfig, updates);\n};\n\nclass ElementError extends Error {\n override name = \"ElementError\";\n}\n\nexport { getConfig, configure, type Config, type ConfigFn };\n"]}
@@ -1,5 +1,5 @@
1
1
  import type * as Gtk from "@gtkx/gi/gtk";
2
2
  declare const scheduleNextFrame: (widget: Gtk.Widget) => Promise<void>;
3
- declare const scheduleAfterLayout: (widget: Gtk.Widget | null, callback: () => void) => void;
4
- export { scheduleAfterLayout, scheduleNextFrame };
3
+ declare const scheduleWhenWindowReady: (window: Gtk.Window | null, isReady: (window: Gtk.Window) => boolean, timeout: number, callback: () => void) => void;
4
+ export { scheduleNextFrame, scheduleWhenWindowReady };
5
5
  //# sourceMappingURL=frame-sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"frame-sync.d.ts","sourceRoot":"","sources":["../src/frame-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAC;AAyCzC,QAAA,MAAM,iBAAiB,GAAI,QAAQ,GAAG,CAAC,MAAM,KAAG,OAAO,CAAC,IAAI,CAWtD,CAAC;AAEP,QAAA,MAAM,mBAAmB,GAAI,QAAQ,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE,UAAU,MAAM,IAAI,KAAG,IAU9E,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"frame-sync.d.ts","sourceRoot":"","sources":["../src/frame-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAC;AAyCzC,QAAA,MAAM,iBAAiB,GAAI,QAAQ,GAAG,CAAC,MAAM,KAAG,OAAO,CAAC,IAAI,CAWtD,CAAC;AAEP,QAAA,MAAM,uBAAuB,GACzB,QAAQ,GAAG,CAAC,MAAM,GAAG,IAAI,EACzB,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,OAAO,EACxC,SAAS,MAAM,EACf,UAAU,MAAM,IAAI,KACrB,IAUF,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import * as GLib from "@gtkx/gi/glib";
2
+ import { cancelTimeout, scheduleTimeout } from "./timers.js";
2
3
  const CLOCK_STALL_FALLBACK_MS = 500;
3
4
  const once = (callback) => {
4
5
  let isCalled = false;
@@ -11,18 +12,17 @@ const once = (callback) => {
11
12
  };
12
13
  };
13
14
  const hasFrameClock = (widget) => widget?.getFrameClock() != null;
14
- const isSized = (widget) => widget.getWidth() > 0;
15
- const runUntilReady = (widget, isReady, finish) => {
15
+ const runUntilReady = (widget, isReady, timeout, finish) => {
16
16
  let tickId = 0;
17
- const fallback = setTimeout(() => {
17
+ const fallback = scheduleTimeout(() => {
18
18
  widget.removeTickCallback(tickId);
19
19
  finish();
20
- }, CLOCK_STALL_FALLBACK_MS);
20
+ }, timeout);
21
21
  tickId = widget.addTickCallback(() => {
22
22
  if (!isReady()) {
23
23
  return GLib.SOURCE_CONTINUE;
24
24
  }
25
- clearTimeout(fallback);
25
+ cancelTimeout(fallback);
26
26
  finish();
27
27
  return GLib.SOURCE_REMOVE;
28
28
  });
@@ -33,15 +33,15 @@ const scheduleNextFrame = (widget) => new Promise((resolve) => {
33
33
  queueMicrotask(finish);
34
34
  return;
35
35
  }
36
- runUntilReady(widget, () => true, finish);
36
+ runUntilReady(widget, () => true, CLOCK_STALL_FALLBACK_MS, finish);
37
37
  });
38
- const scheduleAfterLayout = (widget, callback) => {
38
+ const scheduleWhenWindowReady = (window, isReady, timeout, callback) => {
39
39
  const finish = once(callback);
40
- if (!hasFrameClock(widget) || isSized(widget)) {
40
+ if (!hasFrameClock(window) || isReady(window)) {
41
41
  queueMicrotask(finish);
42
42
  return;
43
43
  }
44
- runUntilReady(widget, () => isSized(widget), finish);
44
+ runUntilReady(window, () => isReady(window), timeout, finish);
45
45
  };
46
- export { scheduleAfterLayout, scheduleNextFrame };
46
+ export { scheduleNextFrame, scheduleWhenWindowReady };
47
47
  //# sourceMappingURL=frame-sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"frame-sync.js","sourceRoot":"","sources":["../src/frame-sync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,eAAe,CAAC;AAEtC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC,MAAM,IAAI,GAAG,CAAC,QAAoB,EAAgB,EAAE;IAChD,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,OAAO,GAAG,EAAE;QACR,IAAI,QAAQ,EAAE,CAAC;YACX,OAAO;QACX,CAAC;QAED,QAAQ,GAAG,IAAI,CAAC;QAChB,QAAQ,EAAE,CAAC;IACf,CAAC,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,MAAyB,EAAwB,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,IAAI,CAAC;AAC3G,MAAM,OAAO,GAAG,CAAC,MAAkB,EAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAEvE,MAAM,aAAa,GAAG,CAAC,MAAkB,EAAE,OAAsB,EAAE,MAAkB,EAAQ,EAAE;IAC3F,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;QAC7B,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,EAAE,CAAC;IACb,CAAC,EAAE,uBAAuB,CAAC,CAAC;IAE5B,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE;QACjC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,eAAe,CAAC;QAChC,CAAC;QAED,YAAY,CAAC,QAAQ,CAAC,CAAC;QACvB,MAAM,EAAE,CAAC;QAET,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,MAAkB,EAAiB,EAAE,CAC5D,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IACpB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAE7B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,cAAc,CAAC,MAAM,CAAC,CAAC;QAEvB,OAAO;IACX,CAAC;IAED,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEP,MAAM,mBAAmB,GAAG,CAAC,MAAyB,EAAE,QAAoB,EAAQ,EAAE;IAClF,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE9B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,cAAc,CAAC,MAAM,CAAC,CAAC;QAEvB,OAAO;IACX,CAAC;IAED,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC","sourcesContent":["import type * as Gtk from \"@gtkx/gi/gtk\";\nimport * as GLib from \"@gtkx/gi/glib\";\n\nconst CLOCK_STALL_FALLBACK_MS = 500;\n\nconst once = (callback: () => void): (() => void) => {\n let isCalled = false;\n\n return () => {\n if (isCalled) {\n return;\n }\n\n isCalled = true;\n callback();\n };\n};\n\nconst hasFrameClock = (widget: Gtk.Widget | null): widget is Gtk.Widget => widget?.getFrameClock() != null;\nconst isSized = (widget: Gtk.Widget): boolean => widget.getWidth() > 0;\n\nconst runUntilReady = (widget: Gtk.Widget, isReady: () => boolean, finish: () => void): void => {\n let tickId = 0;\n\n const fallback = setTimeout(() => {\n widget.removeTickCallback(tickId);\n finish();\n }, CLOCK_STALL_FALLBACK_MS);\n\n tickId = widget.addTickCallback(() => {\n if (!isReady()) {\n return GLib.SOURCE_CONTINUE;\n }\n\n clearTimeout(fallback);\n finish();\n\n return GLib.SOURCE_REMOVE;\n });\n};\n\nconst scheduleNextFrame = (widget: Gtk.Widget): Promise<void> =>\n new Promise((resolve) => {\n const finish = once(resolve);\n\n if (!hasFrameClock(widget)) {\n queueMicrotask(finish);\n\n return;\n }\n\n runUntilReady(widget, () => true, finish);\n });\n\nconst scheduleAfterLayout = (widget: Gtk.Widget | null, callback: () => void): void => {\n const finish = once(callback);\n\n if (!hasFrameClock(widget) || isSized(widget)) {\n queueMicrotask(finish);\n\n return;\n }\n\n runUntilReady(widget, () => isSized(widget), finish);\n};\n\nexport { scheduleAfterLayout, scheduleNextFrame };\n"]}
1
+ {"version":3,"file":"frame-sync.js","sourceRoot":"","sources":["../src/frame-sync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE7D,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC,MAAM,IAAI,GAAG,CAAC,QAAoB,EAAgB,EAAE;IAChD,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,OAAO,GAAG,EAAE;QACR,IAAI,QAAQ,EAAE,CAAC;YACX,OAAO;QACX,CAAC;QAED,QAAQ,GAAG,IAAI,CAAC;QAChB,QAAQ,EAAE,CAAC;IACf,CAAC,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,MAAyB,EAAwB,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,IAAI,CAAC;AAE3G,MAAM,aAAa,GAAG,CAAC,MAAkB,EAAE,OAAsB,EAAE,OAAe,EAAE,MAAkB,EAAQ,EAAE;IAC5G,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE;QAClC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,EAAE,CAAC;IACb,CAAC,EAAE,OAAO,CAAC,CAAC;IAEZ,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE;QACjC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,eAAe,CAAC;QAChC,CAAC;QAED,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxB,MAAM,EAAE,CAAC;QAET,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,MAAkB,EAAiB,EAAE,CAC5D,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IACpB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAE7B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,cAAc,CAAC,MAAM,CAAC,CAAC;QAEvB,OAAO;IACX,CAAC;IAED,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,uBAAuB,EAAE,MAAM,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC;AAEP,MAAM,uBAAuB,GAAG,CAC5B,MAAyB,EACzB,OAAwC,EACxC,OAAe,EACf,QAAoB,EAChB,EAAE;IACN,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE9B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,cAAc,CAAC,MAAM,CAAC,CAAC;QAEvB,OAAO;IACX,CAAC;IAED,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAClE,CAAC,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,CAAC","sourcesContent":["import type * as Gtk from \"@gtkx/gi/gtk\";\nimport * as GLib from \"@gtkx/gi/glib\";\nimport { cancelTimeout, scheduleTimeout } from \"./timers.js\";\n\nconst CLOCK_STALL_FALLBACK_MS = 500;\n\nconst once = (callback: () => void): (() => void) => {\n let isCalled = false;\n\n return () => {\n if (isCalled) {\n return;\n }\n\n isCalled = true;\n callback();\n };\n};\n\nconst hasFrameClock = (widget: Gtk.Widget | null): widget is Gtk.Widget => widget?.getFrameClock() != null;\n\nconst runUntilReady = (widget: Gtk.Widget, isReady: () => boolean, timeout: number, finish: () => void): void => {\n let tickId = 0;\n\n const fallback = scheduleTimeout(() => {\n widget.removeTickCallback(tickId);\n finish();\n }, timeout);\n\n tickId = widget.addTickCallback(() => {\n if (!isReady()) {\n return GLib.SOURCE_CONTINUE;\n }\n\n cancelTimeout(fallback);\n finish();\n\n return GLib.SOURCE_REMOVE;\n });\n};\n\nconst scheduleNextFrame = (widget: Gtk.Widget): Promise<void> =>\n new Promise((resolve) => {\n const finish = once(resolve);\n\n if (!hasFrameClock(widget)) {\n queueMicrotask(finish);\n\n return;\n }\n\n runUntilReady(widget, () => true, CLOCK_STALL_FALLBACK_MS, finish);\n });\n\nconst scheduleWhenWindowReady = (\n window: Gtk.Window | null,\n isReady: (window: Gtk.Window) => boolean,\n timeout: number,\n callback: () => void,\n): void => {\n const finish = once(callback);\n\n if (!hasFrameClock(window) || isReady(window)) {\n queueMicrotask(finish);\n\n return;\n }\n\n runUntilReady(window, () => isReady(window), timeout, finish);\n};\n\nexport { scheduleNextFrame, scheduleWhenWindowReady };\n"]}
@@ -1,4 +1,5 @@
1
1
  import * as Gtk from "@gtkx/gi/gtk";
2
2
  declare const createHarnessWindow: () => Gtk.Window;
3
- export { createHarnessWindow };
3
+ declare const presentHarnessWindow: (window: Gtk.Window | null) => void;
4
+ export { createHarnessWindow, presentHarnessWindow };
4
5
  //# sourceMappingURL=harness-window.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"harness-window.d.ts","sourceRoot":"","sources":["../src/harness-window.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAKpC,QAAA,MAAM,mBAAmB,QAAO,GAAG,CAAC,MAC4D,CAAC;AAEjG,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"harness-window.d.ts","sourceRoot":"","sources":["../src/harness-window.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAMpC,QAAA,MAAM,mBAAmB,QAAO,GAAG,CAAC,MAC4D,CAAC;AAEjG,QAAA,MAAM,oBAAoB,GAAI,QAAQ,GAAG,CAAC,MAAM,GAAG,IAAI,KAAG,IAWzD,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1,6 +1,17 @@
1
1
  import * as Gtk from "@gtkx/gi/gtk";
2
2
  const HARNESS_WINDOW_WIDTH = 800;
3
3
  const HARNESS_WINDOW_HEIGHT = 600;
4
+ const TEXT_END_POSITION = -1;
4
5
  const createHarnessWindow = () => new Gtk.Window({ defaultWidth: HARNESS_WINDOW_WIDTH, defaultHeight: HARNESS_WINDOW_HEIGHT });
5
- export { createHarnessWindow };
6
+ const presentHarnessWindow = (window) => {
7
+ if (!window) {
8
+ return;
9
+ }
10
+ window.present();
11
+ const focus = window.getFocus();
12
+ if (focus instanceof Gtk.Text) {
13
+ focus.setPosition(TEXT_END_POSITION);
14
+ }
15
+ };
16
+ export { createHarnessWindow, presentHarnessWindow };
6
17
  //# sourceMappingURL=harness-window.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"harness-window.js","sourceRoot":"","sources":["../src/harness-window.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAEpC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC,MAAM,mBAAmB,GAAG,GAAe,EAAE,CACzC,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,qBAAqB,EAAE,CAAC,CAAC;AAEjG,OAAO,EAAE,mBAAmB,EAAE,CAAC","sourcesContent":["import * as Gtk from \"@gtkx/gi/gtk\";\n\nconst HARNESS_WINDOW_WIDTH = 800;\nconst HARNESS_WINDOW_HEIGHT = 600;\n\nconst createHarnessWindow = (): Gtk.Window =>\n new Gtk.Window({ defaultWidth: HARNESS_WINDOW_WIDTH, defaultHeight: HARNESS_WINDOW_HEIGHT });\n\nexport { createHarnessWindow };\n"]}
1
+ {"version":3,"file":"harness-window.js","sourceRoot":"","sources":["../src/harness-window.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAEpC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,MAAM,iBAAiB,GAAG,CAAC,CAAC,CAAC;AAE7B,MAAM,mBAAmB,GAAG,GAAe,EAAE,CACzC,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,qBAAqB,EAAE,CAAC,CAAC;AAEjG,MAAM,oBAAoB,GAAG,CAAC,MAAyB,EAAQ,EAAE;IAC7D,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO;IACX,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAEhC,IAAI,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE,CAAC;QAC5B,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IACzC,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,CAAC","sourcesContent":["import * as Gtk from \"@gtkx/gi/gtk\";\n\nconst HARNESS_WINDOW_WIDTH = 800;\nconst HARNESS_WINDOW_HEIGHT = 600;\nconst TEXT_END_POSITION = -1;\n\nconst createHarnessWindow = (): Gtk.Window =>\n new Gtk.Window({ defaultWidth: HARNESS_WINDOW_WIDTH, defaultHeight: HARNESS_WINDOW_HEIGHT });\n\nconst presentHarnessWindow = (window: Gtk.Window | null): void => {\n if (!window) {\n return;\n }\n\n window.present();\n const focus = window.getFocus();\n\n if (focus instanceof Gtk.Text) {\n focus.setPosition(TEXT_END_POSITION);\n }\n};\n\nexport { createHarnessWindow, presentHarnessWindow };\n"]}
@@ -1,4 +1,5 @@
1
1
  export { readAccessibleBooleanProperty, readAccessibleFlag, readAccessibleInt, readAccessibleNumber, readAccessibleRelation, readAccessibleState, readAccessibleString, } from "./accessible-native.js";
2
2
  export { cleanup, render } from "./production.js";
3
3
  export { renderChildren, type ChildrenBuilder } from "./render-children.js";
4
+ export { getTypeTag } from "./widget-getters.js";
4
5
  //# sourceMappingURL=internal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,6BAA6B,EAC7B,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,6BAA6B,EAC7B,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/internal.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { readAccessibleBooleanProperty, readAccessibleFlag, readAccessibleInt, readAccessibleNumber, readAccessibleRelation, readAccessibleState, readAccessibleString, } from "./accessible-native.js";
2
2
  export { cleanup, render } from "./production.js";
3
3
  export { renderChildren } from "./render-children.js";
4
+ export { getTypeTag } from "./widget-getters.js";
4
5
  //# sourceMappingURL=internal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,6BAA6B,EAC7B,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAwB,MAAM,sBAAsB,CAAC","sourcesContent":["export {\n readAccessibleBooleanProperty,\n readAccessibleFlag,\n readAccessibleInt,\n readAccessibleNumber,\n readAccessibleRelation,\n readAccessibleState,\n readAccessibleString,\n} from \"./accessible-native.js\";\nexport { cleanup, render } from \"./production.js\";\nexport { renderChildren, type ChildrenBuilder } from \"./render-children.js\";\n"]}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,6BAA6B,EAC7B,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAwB,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC","sourcesContent":["export {\n readAccessibleBooleanProperty,\n readAccessibleFlag,\n readAccessibleInt,\n readAccessibleNumber,\n readAccessibleRelation,\n readAccessibleState,\n readAccessibleString,\n} from \"./accessible-native.js\";\nexport { cleanup, render } from \"./production.js\";\nexport { renderChildren, type ChildrenBuilder } from \"./render-children.js\";\nexport { getTypeTag } from \"./widget-getters.js\";\n"]}
@@ -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":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAEH,KAAK,wBAAwB,EAKhC,MAAM,wBAAwB,CAAC;AAiChC,sFAAsF;AACtF,KAAK,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvC,gFAAgF;AAChF,KAAK,kBAAkB,GAAG;IACtB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEF,yFAAyF;AACzF,KAAK,gBAAgB,GAAG,MAAM,GAAG,MAAM,CAAC;AACxC,yFAAyF;AACzF,KAAK,aAAa,GAAG,IAAI,CAAC,qBAAqB,EAAE,SAAS,GAAG,MAAM,CAAC,CAAC;AAErE,0FAA0F;AAC1F,KAAK,cAAc,GAAG;IAClB,wFAAwF;IACxF,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC;CAC3D,CAAC;AAEF,0GAA0G;AAC1G,KAAK,WAAW,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,eAAe,KAAK,aAAa,CAAC;AACpF,+EAA+E;AAC/E,KAAK,YAAY,GAAG,CAAC,QAAQ,EAAE,OAAO,KAAK,aAAa,CAAC;AACzD,4FAA4F;AAC5F,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC;AACzE,gGAAgG;AAChG,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC;AAC/D,6EAA6E;AAC7E,KAAK,kBAAkB,CAAC,IAAI,SAAS,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,aAAa,CAAC;AAKtG,KAAK,sBAAsB,GACvB,GAAG,CAAC,eAAe,CAAC,IAAI,GACxB,GAAG,CAAC,eAAe,CAAC,QAAQ,GAC5B,GAAG,CAAC,eAAe,CAAC,QAAQ,GAC5B,GAAG,CAAC,eAAe,CAAC,MAAM,GAC1B,GAAG,CAAC,eAAe,CAAC,QAAQ,GAC5B,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC;AAEhC,KAAK,uBAAuB,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC;AAEzF,KAAK,wBAAwB,GACzB,GAAG,CAAC,kBAAkB,CAAC,WAAW,GAClC,GAAG,CAAC,kBAAkB,CAAC,SAAS,GAChC,GAAG,CAAC,kBAAkB,CAAC,aAAa,GACpC,GAAG,CAAC,kBAAkB,CAAC,KAAK,GAC5B,GAAG,CAAC,kBAAkB,CAAC,WAAW,GAClC,GAAG,CAAC,kBAAkB,CAAC,gBAAgB,GACvC,GAAG,CAAC,kBAAkB,CAAC,UAAU,CAAC;AAEtC,KAAK,yBAAyB,GAC1B,GAAG,CAAC,kBAAkB,CAAC,SAAS,GAChC,GAAG,CAAC,kBAAkB,CAAC,KAAK,GAC5B,GAAG,CAAC,kBAAkB,CAAC,UAAU,GACjC,GAAG,CAAC,kBAAkB,CAAC,gBAAgB,GACvC,GAAG,CAAC,kBAAkB,CAAC,SAAS,GAChC,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AAEpC,KAAK,wBAAwB,GACzB,GAAG,CAAC,kBAAkB,CAAC,KAAK,GAC5B,GAAG,CAAC,kBAAkB,CAAC,SAAS,GAChC,GAAG,CAAC,kBAAkB,CAAC,SAAS,GAChC,GAAG,CAAC,kBAAkB,CAAC,SAAS,CAAC;AAErC,kFAAkF;AAClF,KAAK,kBAAkB,GAAG,CACtB,QAAQ,EAAE,OAAO,EACjB,QAAQ,CAAC,EAAE,eAAe,EAC1B,OAAO,CAAC,EAAE,kBAAkB,KAC3B,aAAa,CAAC;AAEnB,+FAA+F;AAC/F,KAAK,sBAAsB,GAAG;IAC1B,sGAAsG;IACtG,kBAAkB,EAAE,WAAW,CAAC;IAChC,gHAAgH;IAChH,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,+EAA+E;IAC/E,oBAAoB,EAAE,WAAW,CAAC;IAClC;;;OAGG;IACH,2BAA2B,EAAE,WAAW,CAAC;IACzC,kHAAkH;IAClH,4BAA4B,EAAE,WAAW,CAAC;IAC1C,iEAAiE;IACjE,eAAe,EAAE,WAAW,CAAC;IAC7B;;;OAGG;IACH,qBAAqB,EAAE,CACnB,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,GAAG,CAAC,eAAe,EAC1B,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,KAC1B,aAAa,CAAC;IACnB;;;;OAIG;IACH,wBAAwB,EAAE,CACtB,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,GAAG,CAAC,kBAAkB,EAChC,QAAQ,CAAC,EAAE,wBAAwB,KAClC,aAAa,CAAC;IACnB,oFAAoF;IACpF,WAAW,EAAE,YAAY,CAAC;IAC1B,mDAAmD;IACnD,oBAAoB,EAAE,YAAY,CAAC;IACnC,+EAA+E;IAC/E,WAAW,EAAE,YAAY,CAAC;IAC1B,+FAA+F;IAC/F,oBAAoB,EAAE,YAAY,CAAC;IACnC,iFAAiF;IACjF,YAAY,EAAE,YAAY,CAAC;IAC3B,iEAAiE;IACjE,WAAW,EAAE,YAAY,CAAC;IAC1B,wGAAwG;IACxG,WAAW,EAAE,YAAY,CAAC;IAC1B,gFAAgF;IAChF,UAAU,EAAE,YAAY,CAAC;IACzB,6DAA6D;IAC7D,eAAe,EAAE,YAAY,CAAC;IAC9B,yFAAyF;IACzF,WAAW,EAAE,YAAY,CAAC;IAC1B,uEAAuE;IACvE,SAAS,EAAE,YAAY,CAAC;IACxB,sDAAsD;IACtD,YAAY,EAAE,YAAY,CAAC;IAC3B,yDAAyD;IACzD,WAAW,EAAE,YAAY,CAAC;IAC1B;;;;;;;;;OASG;IACH,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,KAAK,aAAa,CAAC;IAC9E,4CAA4C;IAC5C,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,cAAc,KAAK,aAAa,CAAC;IAC/E,qEAAqE;IACrE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,KAAK,aAAa,CAAC;IACtF,yGAAyG;IACzG,cAAc,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,KAAK,aAAa,CAAC;IACxE,wGAAwG;IACxG,aAAa,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,KAAK,aAAa,CAAC;IACvE,qFAAqF;IACrF,kBAAkB,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACtD,oFAAoF;IACpF,kBAAkB,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACtD,qFAAqF;IACrF,kBAAkB,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACtD,oFAAoF;IACpF,kBAAkB,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACtD,0FAA0F;IAC1F,uBAAuB,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC3D,yFAAyF;IACzF,uBAAuB,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC3D,gGAAgG;IAChG,6BAA6B,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACjE,+FAA+F;IAC/F,6BAA6B,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACjE,6FAA6F;IAC7F,0BAA0B,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC9D,4FAA4F;IAC5F,0BAA0B,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC9D;;;OAGG;IACH,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;IACtE;;;OAGG;IACH,oBAAoB,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,aAAa,CAAC;CACxG,CAAC;AA+FF,4FAA4F;AAC5F,QAAA,MAAM,QAAQ,EAAE,sBAuCf,CAAC;AA+nBF,gHAAgH;AAChH,QAAA,MAAM,gBAAgB,QAAO,IAa5B,CAAC;AAEF,OAAO,QAAQ,gBAAgB,CAAC;IAE5B,UAAU,cAAc;QACpB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;QACrD,iBAAiB,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;QAClF,oBAAoB,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;QACvD,2BAA2B,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;QAC9D,4BAA4B,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;QAC/D,eAAe,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;QAElD,qBAAqB,CAAC,KAAK,EAAE,sBAAsB,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;QAC/E,qBAAqB,CAAC,KAAK,EAAE,uBAAuB,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/F,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACvG,wBAAwB,CAAC,QAAQ,EAAE,wBAAwB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAEtF,wBAAwB,CAAC,QAAQ,EAAE,yBAAyB,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;QACxF,wBAAwB,CAAC,QAAQ,EAAE,wBAAwB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtF,wBAAwB,CACpB,QAAQ,EAAE,GAAG,CAAC,kBAAkB,CAAC,YAAY,EAC7C,QAAQ,CAAC,EAAE,GAAG,CAAC,sBAAsB,GACtC,IAAI,CAAC;QACR,wBAAwB,CAAC,QAAQ,EAAE,GAAG,CAAC,kBAAkB,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;QACzG,wBAAwB,CAAC,QAAQ,EAAE,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC;QACrG,WAAW,IAAI,IAAI,CAAC;QACpB,oBAAoB,IAAI,IAAI,CAAC;QAC7B,WAAW,IAAI,IAAI,CAAC;QACpB,oBAAoB,IAAI,IAAI,CAAC;QAC7B,YAAY,IAAI,IAAI,CAAC;QACrB,WAAW,IAAI,IAAI,CAAC;QACpB,WAAW,IAAI,IAAI,CAAC;QACpB,UAAU,IAAI,IAAI,CAAC;QACnB,eAAe,IAAI,IAAI,CAAC;QACxB,WAAW,IAAI,IAAI,CAAC;QACpB,SAAS,IAAI,IAAI,CAAC;QAClB,YAAY,IAAI,IAAI,CAAC;QACrB,WAAW,IAAI,IAAI,CAAC;QACpB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;QAC9C,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC;QAC/C,gBAAgB,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;QACtD,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;QACxC,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;QACvC,kBAAkB,CAAC,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;QACjD,kBAAkB,CAAC,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;QACjD,kBAAkB,CAAC,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;QACjD,kBAAkB,CAAC,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;QACjD,uBAAuB,CAAC,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;QACtD,uBAAuB,CAAC,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;QACtD,6BAA6B,CAAC,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;QAC5D,6BAA6B,CAAC,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;QAC5D,0BAA0B,CAAC,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;QACzD,0BAA0B,CAAC,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;QACzD,WAAW,CAAC,GAAG,IAAI,EAAE,CAAC,gBAAgB,GAAG;YAAE,KAAK,EAAE,OAAO,CAAA;SAAE,CAAC,EAAE,GAAG,IAAI,CAAC;QACtE,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;KAChE;IAED,UAAU,SAAU,SAAQ,cAAc;KAAG;IAC7C,UAAU,4BAA6B,SAAQ,cAAc;KAAG;CAEnE;AAED,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,KAAK,eAAe,EAAE,CAAC"}
package/dist/matchers.js CHANGED
@@ -6,6 +6,8 @@ import { queryAllByDisplayValue, queryAllByLabelText, queryAllByPlaceholderText,
6
6
  import { formatRole } from "./role-helpers.js";
7
7
  import { descendants } from "./traversal.js";
8
8
  import { getWidgetAccessibleName, getWidgetCheckedState, getWidgetDescribedByText, getWidgetDisplayValue, getWidgetErrorMessage, getWidgetInvalidState, getWidgetLabelText, getWidgetPressedState, getWidgetRequiredState, getWidgetSelection, getWidgetTextContent, getWidgetValueNow, hasDisplayValue, isWidgetDisabled, isWidgetValueMatch, isWidgetVisible, } from "./widget-accessible-properties.js";
9
+ import { getTypeTag } from "./widget-getters.js";
10
+ import { isWindowActivated } from "./window-state.js";
9
11
  const registration = { isRegistered: false };
10
12
  const MIXED_TRISTATE = Gtk.AccessibleTristate.MIXED;
11
13
  const ROUNDED_READING = ", which the accessibility tree rounds to six significant digits";
@@ -84,7 +86,7 @@ const describeWidget = (widget) => {
84
86
  const name = getWidgetAccessibleName(widget);
85
87
  return name === null ? `<${role}>` : `<${role} name=${JSON.stringify(name)}>`;
86
88
  };
87
- const describeObject = (object) => object instanceof Gtk.Widget ? describeWidget(object) : `<${object.constructor.name}>`;
89
+ const describeObject = (object) => object instanceof Gtk.Widget ? describeWidget(object) : `<${getTypeTag(object)}>`;
88
90
  const isTextMatch = (actual, expected, mode) => {
89
91
  if (expected instanceof RegExp) {
90
92
  expected.lastIndex = 0;
@@ -111,6 +113,24 @@ const stateResult = (widget, stateName, isPass) => ({
111
113
  pass: isPass,
112
114
  message: () => `expected widget ${negationPrefix(isPass)}to be ${stateName}\n${describeWidget(widget)}`,
113
115
  });
116
+ const isHoldingFocus = (widget, root) => {
117
+ const focus = root.getFocus();
118
+ return focus !== null && (focus === widget || focus.isAncestor(widget));
119
+ };
120
+ const isFocusHeldByInactiveWindow = (widget) => {
121
+ const root = widget.getRoot();
122
+ return root instanceof Gtk.Window && !isWindowActivated(root) && isHoldingFocus(widget, root);
123
+ };
124
+ const focusResult = (widget, isPass) => {
125
+ if (isPass || !isFocusHeldByInactiveWindow(widget)) {
126
+ return stateResult(widget, "focused", isPass);
127
+ }
128
+ return {
129
+ pass: false,
130
+ message: () => "expected widget to be focused: its window has given it the focus, " +
131
+ `but that window is not active\n${describeWidget(widget)}`,
132
+ };
133
+ };
114
134
  const describeAttributeValue = (value) => value === null ? "unset" : JSON.stringify(value);
115
135
  const attributeSetResult = (widget, label, actual) => {
116
136
  const isSet = actual !== null;
@@ -419,7 +439,7 @@ function toBeValid(received) {
419
439
  }
420
440
  function toHaveFocus(received) {
421
441
  const widget = asWidget(received, "toHaveFocus");
422
- return stateResult(widget, "focused", widget.getPlatformState(Gtk.AccessiblePlatformState.FOCUSED));
442
+ return focusResult(widget, widget.getPlatformState(Gtk.AccessiblePlatformState.FOCUSED));
423
443
  }
424
444
  function toHaveRole(received, expected) {
425
445
  const widget = asWidget(received, "toHaveRole");