/
CHANGELOG.txt
359 lines (288 loc) · 16.9 KB
/
CHANGELOG.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
Dear ImGui Test Engine
CHANGELOG
** Test Engine is regularly updated to support recent Dear ImGui version, when a change is required.
Those changes are not all listed here.
** For a while this is going to ONLY INCLUDE BREAKING CHANGES.
2024/05/16:
- TestEngine: Fixes/support for 1.90.7 swapping Ctrl<>Cmd on Mac OSX,
and ImGuiMod_Shortcut being made obsolete/unnecessary.
- TestEngine: Added debugger detection support on Mac OSX (disable watchdog,
enable asserts on failure or other options).
2024/05/14:
- TestEngine: IM_TEST_ENGINE_ASSERT() doesn't crash if called prior to test engine
initialization.
2024/04/22:
- TestEngine: *EXCEPTIONALLY BREAKING CHANGE*
Changed ItemInfo(), WindowInfo() and variants signatures to return
a full ImGuiTestItemInfo struct instead of a pointer.
Before:
ImGuiTestItemInfo* ItemInfo(ImGuiTestRef ref, ....);
ImGuiTestItemInfo* WindowInfo(ImGuiTestRef window_ref, ...);
After:
ImGuiTestItemInfo ItemInfo(ImGuiTestRef ref, ....);
ImGuiTestItemInfo WindowInfo(ImGuiTestRef window_ref, ...);
- The initial design suggested that the data could be updated on subsequent
frames, but it technically required to manipulate the RefCount field and it was
very easy to get wrong and mistakes were difficult to notice and debug,
occasionally leading to dangling pointers.
- We are instead returning a copy of the value at the current time.
You may call ItemInfo()/WindowInfo() again if you need refreshed values.
item = ItemInfo(item.ID); // refresh values
- If you were using info->RefCount++/info->RefCount-- is likely means that
you wanted to reuse an ItemInfo pointers accross frames and might
want to request the refreshed data.
- Removed the ImGuiTestItemInfo::RefCount field since it is now unused,
and its removal makes it easier to spot cases that might need fixing.
APOLOGIES FOR THE BREAKING CHANGE.
PLEASE CONTACT US IF YOU HAVE ISSUES OR FEEDBACK OR ANY QUESTION.
- TestEngine: Fixed a bug and potential crash in ItemDragAndDrop(). (#49)
2024/04/23:
- TestEngine: Added ItemSelectAndReadValue() helper to read a field from TestFunc
by selecting it and copying its value into clipboard. We will later introduce
more general alternatives but this is a simple and helpful tool.
2024/04/15:
- TestEngine: Added ImGuiTestEngine_UnregisterTest().
- TestEngine: Fixed directory creation for capture save when using IMGUI_USE_WCHAR32.
2024/04/11:
- TestEngine: Better assert on misusage of ComboClick().
2024/03/05:
- TestEngine: Fixed an issue with using DockInto() from one viewport to another.
2024/02/27:
- TestEngine: Added ImGuiTestOpFlags_NoYield support to MouseTeleportToPos(), useful in
situations where very precise timings are required (e.g. successive frames teleports).
2024/02/26:
- TestEngine: *BREAKING* fixed GetWindowByRef() behaving inconsistently by ignoring
current SetRef() base reference when non-empty. Most functions expected on windows
parts, such as WindowMove(), WindowResize(), WindowFocus(), WindowBringToFront(),
ScrollToXXX(), etc. were affected:
ctx->SetRef("Window 1"); + ctx->WindowFocus(""); // OK
ctx->SetRef("Window 1"); + ctx->WindowFocus("//Window1"); // OK
ctx->SetRef("window 1"); + ctx->WindowFocus("Window1"); // Not OK, previously worked.
2024/02/22:
- TestEngine: fixed MenuCheckAll(), MenuUncheckAll(), MenuActionAll() from trying to
perform actions on disabled menu items.
2024/02/07:
- TestEngine: fixed ImBuildFindGitBranchName() helper and auto-filling of io.GitBranchName
when using a detached head. (#42)
2024/01/25:
- TestEngine: Submitting a ImGuiKey_LeftAlt/ImGuiKey_RightAlt, ImGuiKey_LeftShift/ImGuiKey_RightShift,
ImGuiKey_LeftCtrl/ImGuiKey_RightCtrl, ImGuiKey_LeftSuper/ImGuiKey_RightSuper key interaction
will submit the equivalent ImGuiMod_XXX mod, as what would happen in a real backend.
- TestEngine: ...also done in the opposite direction: submitting e.g. ImGuiMod_XXX automatically
adds ImGuiKey_LeftXXX.
2024/01/16:
- TestEngine: Fixes crash when running an ImGui instanced compiled with IMGUI_ENABLE_TEST_ENGINE
but before a test engine has been attached to the ImGuiContext.
2024/01/15:
- TestEngine: Fixes for GetKeyChordName() api changes.
2024/01/09:
- TestEngine: Added ImGuiTestContext::KeySetEx() to manipulate keys with precise timings.
(most other functions add yields to accomodate for common use cases).
- app_minimal: Added a building batch file to provide an alternative building reference.
- app_minimal: Removed misleading optional dependency on implot.
- app_minimal, imgui_app: Fixed building in MBCS (non-Unicode) mode.
2024/01/08:
- TestEngine: Avoid allocations in IM_CHECK_XX macros.
2023/12/05:
- TestEngine: Made it possible to use ctx->RunChildTest() along with ctx->Finish(ImGuiTestStatus_Unknown)
to setup test dependencies without marking dependent tests as errored when the dependance is errored.
2023/11/30:
- TestEngine: Added ImGuiTestContext::RunChildTest() [Experimental].
- TestEngine: Added ImGuiTestRunFlags_ShareVars and ImGuiTestRunFlags_ShareTestContext for RunChildTest().
- TestEngine: Refactor ImGuiTest to isolate output (test status, log, start/end times) into
a dedicated ImguiTestOutput structure. 'test->Status' and 'test->TestLog' respectively
become 'test->Output.Status' and 'test->Output.Log'.
2023/11/15:
- TestEngine: UI: display failed counter in colored button while running (since tooltip is
likely not accessible while running tests).
2023/11/14:
- TestEngine: Update for BeginChild() internal naming changes in IMGUI_VERSION_NUM >= 18999.
2023/10/20:
- TestEngine: Support for BeginChild() internal naming changes in IMGUI_VERSION_NUM >= 18996.
2023/10/05:
- TestEngine: Capture: Fixed an issue capturing docked windows. (#34)
2023/09/28:
- TestEngine: Capture: Fixed use of ImGuiCaptureFlags_StitchAll when io.ConfigWindowsMoveFromTitleBarOnly
option is set. (#33)
2023/09/20:
- TestEngine: Fixed an aiming issue with DockInto() when src/dst window is in a nested node.
- TestEngine: "KeepGUI" option and IM_SUSPEND_TESTFUNC()/SuspendTestFunc() sets OS mouse
cursor to TestEngine mouse cursor, allowing user to more easily understand the failing state.
(require IMGUI_VERSION_NUM >= 18992).
- TestEngine: Renamed io.ConfigTakeFocusBackAfterTests to io.ConfigRestoreFocusAfterTests
and fixed to restore previous focus instead of always focus Test Engine UI window.
2023/09/06:
- TestEngine: WindowResize() can be used to auto-resize a window.
2023/09/05:
- TestEngine: Running a test in GuiFunc mode only provide access to backend clipboard
instead of redirecting it to a jailed clipboard.
2023/08/15:
- TestSuite: Added -list option (e.g. 'test_suite.exe -list "^table"').
- TestEngine: Added ImGuiTestEngine_GetTestList(), ImGuiTestEngine_GetTestQueue().
- TestEngine: Added IO.CheckDrawDataIntegrity helper (mostly for use by test suite).
2023/07/11:
- TestEngine: Fixed an issue accessing tabs in a TabBar without scrolling policy.
2023/06/23:
- TestEngine: Fixed two case where DockInto() would fail if one or both windows are already docked.
2023/06/22:
- TestEngine: Fixed WindowClose() support when window Docked.
2023/06/21:
- TestEngine: in helper ImGuiTestGenericItemStatus storage struct,
renamed 'bool Ret' to 'bool RetValue' as it is less ambiguous.
- TestEngine: Added ViewportPlatform_CloseWindow() function to simulate platform closure
(e.g. ALT+F4 on Windows with viewport enabled and OS decoration enabled) for the purpose
of testing viewport-specific features. Probably of little use to regular end-user.
2023/06/14
- TestEngine: ItemInfoOpenFullPath() can focus/select inactive docked windows.
(similar to e.g. opening an intermediary tree node).
2023/06/08
- TestEngine: Made failed IM_CHECK() with io.ConfigBreakOnError enabled call IM_DEBUG_BREAK()
directly instead of calling IM_ASSERT(0).
- TestEngine: Moved suggested IM_ASSERT() override out of test engine's imconfig.h and
into our TestSuite's imconfig.h.
2023/05/31
- TestEngine: Added ctx->ItemIsChecked() and ctx->ItemIsOpened() helpers.
2023/05/30:
- TestEngine: Attempt to resize host window when aiming at a clipped item within menu layer.
(which is non-scrolling).
- TestEngine: Mock viewport emulation transfer platform focus when a viewport is destroyed.
2023/05/09:
- TestEngine: Added IsWarmUpGuiFrame() query to avoid polling frame-count.
2023/04/26:
- TestEngine: Reworked mouse actions to avoid unnecessarily focusing windows if not necessary.
If an item is visible and within a window not inhibited by a popup, we don't need to focus
the target window before clicking.
This reduces the amount of inconsistency between TestEngine and user actions.
2023/04/24:
- TestEngine: Fixed IM_CHECK_STR_xxx() macros not honoring io.ConfigBreakOnError.
- TestEngine: Added result check in WindowFocus().
- TestEngine: Removed unnecessary bool return value from WindowBringToFront().
- TestEngine: Added ImGuiTestOpFlags_NoFocusWindow support in WindowBringToFront(). (#24)
2023/04/06;
- TestEngine: Made simulated mouse-clicks activate platform-level focus when changing viewports.
As platform-level focus signal leads to reactions at Dear ImGui this is desirable.
- TestEngine: MouseMoveToVoid(), MouseClickOnVoid(), GetPosOnVoid() now take an optional
viewport, and default to mouse current viewport if not specified.
2023/04/05:
- TestEngine: Added ViewportPlatform_SetWindowXXX() function to inject Platform-altering actions,
mostly for the purpose of testing viewport-specific features.
2023/03/28:
- TestEngine: Added ItemExists() helper.
2023/03/14:
- TestEngine: Fixed GatherItems() max-depth test being off-by-1 (regression in 2023/03/06 update).
2023/03/06:
- TestEngine: Made GatherItems() calls find items in child windows.
- TestEngine: Do not attempt Open/Close/Check/Uncheck actions on Disabled items.
2023/02/23:
- TestEngine: Fixed ItemDragAndDrop() to latch references in order to avoid breaking when
using "//$FOCUSED" in references, because focus is changed during the call.
2023/02/10:
- TestEngine: renamed 'ImGuiTestFlags_NoWarmUp' to 'ImGuiTestFlags_NoGuiWarmUp' (rarely used).
2023/02/09:
- TestEngine: Alter visibility checks to reduce unnecessary scrolling when items
are mostly visible. Bias toward reducing amount of horizontal scroll.
- TestEngine: Allow for extra frames when necessary to validates hovering.
e.g. blocking popups may be closed by external logic.
2023/02/03
- TestEngine: Update/fixes for Tables-related changes in main lib.
2023/01/20:
- TestEngine: Added a `ImGuiTestContext* ctx` parameter to the optional "pre-run" constructor
declared in ImGuiTest::SetVarsDataType<>:
before: test->SetVarsDataType<MyVars>([](MyVars& vars) { ... })
after: test->SetVarsDataType<MyVars>([](ImGuiTestContext* ctx, MyVars& vars) { ... })
This feature is useful to share GuiFunc/TestFunc accross multiple tests while needing
specific state initialized before the first run of GuiFunc. It is convenient because
the custom initialization code can be specified while registering the test.
(vs. t is also possible to set `test->ArgVariant` and run initialization code in the
first-frame of the GuiFunc, but this seems the init code is located in a same location).
2023/01/10
- TestEngine: Filtering can be done on Category string as well.
2023/01/02:
- TestEngine: Amend license to 1.02 (clarify/widen audience of free version).
2022/11/30
- TestEngine: Support ImGuiMod_Shortcut being an independent value.
2022/11/24
- TestEngine: Update/fixes for Docking node access.
2022/11/04
- TestEngine: UI: Added CTRL+R shortcut when focused.
- TestEngine: Fixed MenuCheckAll()/MenuUncheckAll() from trying to access non-checkable items.
- TestEngine: Added ImGuiTestOpFlags_NoError support in ItemAction() + ItemInfoOpenFullPath().
2022/10/24:
- TestEngine: DockInto() unmangle path references + verify result.
2022/10/03
- TestEngine: Added missing ImGuiTestOpFlags_NoError support in ItemAction()/ItemClick() family of
functions + in ItemInfoOpenFullPath() function.
- TestEngine: Fixed MenuCheckAll()/MenuUncheckAll() from trying to access non-checkable items.
2022/10/12
- TestEngine: WindowInfo() support when child is not in root of parent window.
- TestEngine: Removed legacy GetChildWindowID() in favor of easier to use and more featured WindowInfo().
e.g. ctx->GetChildWindowID(ImGuiTestRef("Parent"), "Child") --> ctx->WindowInfo("Parent/Child")->ID.
Note that 'WindowInfo("Parent/Child")->Window' is also frequently useful.
2022/10/11
- TestEngine: literals can now easily be encoded in decorated path strings using "$$xxxx",
making it easier to access items for which the ID stack used PushID(int) or PushID(void*).
ItemClick("list/$$1/button") : match id for PushID("list"), PushID(1), Item("button");
- TestEngine: removed 'ImGuiTestContext::GetIDByInt(int n)'' in favor of using "$$123" syntax.
- TestEngine: removed 'ImGuiTestContext::GetIDByPtr(void* ptr)'' in favor of using "$$(ptr)0xFFFFFFFF" syntax.
2022/09/26
- TestEngine: simplified merged Key functions following simplification in core lib.
ctx->KeyDown(ImGuiKey key, ImGuiKeyChord mods = 0); -> KeyDown(ImGuiKeyChord key_chord);
ctx->KeyPress(ImGuiKey key, ImGuiKeyChord mods = 0, int count = 1); -> KeyPress(ImGuiKeyChord key_chord, int count = 1);
ctx->KeyModPress(ImGuiModFlags mods); -> KeyPress(ImGuiKeyChord key_chord, int count = 1);
ImGuiKeyChord = ImGuiKey_XXX or ImGuiMod_XXX or ImGuiKey_XXX | ImGuiMod_XXX.
Same for all ctx->KeyXXX functions.
- TestEngine: following on core lib, renamed/merged mod enums and flags into same value:
ImGuiKey_ModXXX -> ImGuiMod_XXX
ImGuiModFlags_XXX -> ImGuiMod_XXX
See main library changelog for details.
2022/09/05
- TestEngine: renamed ImGuiTestEngine_UseSimulatedInputs() to ImGuiTestEngine_IsUsingSimulatedInputs().
2022/09/02
- TestEngine: removed ImGuiTestContext::NavCancel(): same as ->KeyPress(ImGuiKey_Escape);
Follow on core lib which is moving away from the NavInput_ semantic, in favor of using ImGuiKey enum
for both keys and gamepads actions.
- TestEngine: removed ImGuiTestContext::NavEnableForWindow() which was a workaround/kludge.
2022/08/25:
- TestEngine: Changed ItemInfo() functions to never return a NULL pointer anymore.
If you were testing for NULL pointer, the right test to do now is 'info->ID != 0'.
This change reduce the likehood of failing test code crashing the application.
- TestEngine: Changed signatured of ItemAction() from:
void ItemAction(ImGuiTestAction action, ImGuiTestRef ref, void* action_arg = NULL, ImGuiTestOpFlags flags = 0)
to
void ItemAction(ImGuiTestAction action, ImGuiTestRef ref, ImGuiTestOpFlags flags = 0, void* action_arg = NULL)
As action_arg is rarely used and may be removed.
2022/07/19
- TestEngine: The syntax "/someidentifier" to ignore the current SetRef() value has been changed
to "//someidentifier".
- "//" ref prefix now resets ID seed to 0 (old behavior)
- "/" ref prefix now refers to "current window" id.s
- In GuiFunc, "/" refers to current window we are Begin()-ing into.
- In TestFunc, "/" refers to the window set by SetRef().
- This change is to be consistent with core Dear ImGui adding ways to compute ID given a path,
and both "/" and "//" are desirable features.
2022/05/10
- TestEngine: Installation of a crash handler is now explicit and optional. Do one of the following:
- Call ImGuiTestEngine_InstallDefaultCrashHandler() to install default crash handler.
- Call ImGuiTestEngine_CrashHandler() from your own custom crash handler if such exists.
2022/04/08
- TestEngine: fix ItemAction() or ItemInfo() with leading **/ wildcard from not reporting any error on failure.
2022/04/07
- TestEngine: added more filtering options to ImGuiTestEngine_QueueTests() and command-line suppot.
- "all" : all tests, no matter what group they are in.
- "tests" : all tests in the ImGuiTestGroup_Tests group.
- "perfs" : all tests in the ImGuiTestGroup_Perfs group.
- "^nav_" : all tests with name starting with "nav_".
- "-xxxx" : no tests will be matched because query does not include any.
- "tests,-scroll,-^nav_" : all tests that do not contain "scroll" in their name and does not start with "nav_".
2022/03/28
- TestEngine: Capture: Removed requirement to store/pass a ImGuiCaptureArgs in ctx->CaptureXXX functions.
General tidying up of the capture API.
2022/03/23
- TestEngine: Renamed ImGuiTestEngineIO::VideoCaptureFFMPEGPath to ::VideoCaptureEncoderPath.
2022/03/15
- TestEngine: Moved the ImGuiContext* parameter from ImGuiTestEngine_CreateContext() to ImGuiTestEngine_Start().
- TestEngine: Renamed bool ImGuiTestEngineIO::RunningTest to bool ::IsRunningTests.
- TestEngine: Renamed bool ImGuiTestEngineIO::RenderWantMaxSpeed to ::IsRequestingMaxAppSpeed.
2022/02/15
- TestEngine: Capture: rename ImGuiCaptureArgs::InOutputFileTemplate to InOutputFile (it was only
used as template by the capture tool UI, which now manages its own data correctly).