Changelog
All notable changes to this project will be documented in this file.
[0.6.1] - 2026-10-02
Section titled “[0.6.1] - 2026-10-02”wait_until()no longer includesNonein the type of its result: it only returns once the condition returns a true value, sowait_until(lambda: next(iter(query.find_all()), None))is now typed asElementinstead ofElement | None.
[0.6] - 2026-10-02
Section titled “[0.6] - 2026-10-02”wait_until(), which waits for a condition on asynchronously changing UI state, and raises the newWaitTimeoutErrorif it isn’t met in time. Elements from tracking queries used in the condition don’t wait past its timeout.Element.absolute_rect, the element’s position and size as aLogicalRect, both read from the same instance of the element.
[0.5] - 2026-09-30
Section titled “[0.5] - 2026-09-30”AccessibleRole.WindowTitleBar, for thewindow-title-barvalue ofaccessible-rolein Slint 1.18 or newer. Previously, such elements reportedAccessibleRole.Unknown.Element.single_click()andElement.double_click()take an optionalKeyboardModifiers, to hold Shift, Control, Alt, or Meta during the click. This needs Slint 1.19 or newer; older versions ignore the modifiers.
Changed
Section titled “Changed”- Breaking:
ElementQuery.match_accessible_label()now requires an application built with Slint 1.19 or newer, which evaluates the match itself. A label query is now a single request, instead of one extra request per candidate element. With older Slint versions, running the query raisesRequestError. Matching an empty label now only finds elements whose label is explicitly empty, not elements without one.
[0.4] - 2026-09-29
Section titled “[0.4] - 2026-09-29”ElementQuery.tracking(): elements found by a tracking query run the query again every time they are used, and wait up to a timeout for it to match. They keep working when the UI replaces the element, for example when anifcondition toggles, a popup is shown again, or a live preview reloads.ElementQuery.find_one(), which returns the only match of a query and raises the newElementLookupErrorif there are none or several.ElementQuery.match_accessible_label(), to match elements by their accessible label.Window.query_descendants(), a query over the whole window that looks up the window’s root element each time it runs.
Changed
Section titled “Changed”- Breaking: Errors reported by the application under test are no longer
silently ignored. They now raise the new
RequestError. For example, invoking an accessibility action on, or reading a property of, anElementthat has since been removed from the UI used to do nothing or return a default value such as"",0orFalse; it now raises.Element.is_validis unchanged and still returnsFalsefor such elements. Likewise,Window.grab_window_with_mime_typenow raises instead of returning empty bytes when the application does not support the requested image format.
- The
ApplicationConnectionErrorraised when the application does not connect back in time now reports the actuallaunch_timeoutinstead of always saying 10 seconds.
[0.3] - 2026-08-13
Section titled “[0.3] - 2026-08-13”- New accessibility properties on
Element:accessible_item_selectable,accessible_item_selected,accessible_item_count,accessible_item_index,accessible_orientation, andaccessible_live_region. - New
OrientationandAccessibleLivenessenums, for the values of theaccessible-orientationandaccessible-live-regionproperties in Slint. - New
ApplicationConnectionError, raised when the application under test does not connect back within the launch timeout or the connection drops part-way through a request. These paths previously raised a plainException; it subclassesException, so an existingexcept Exceptionstill catches it.
Changed
Section titled “Changed”- Breaking:
Element.size/absolute_positionnow returnLogicalSize/LogicalPositionandWindow.size/positionnow returnPhysicalSize/PhysicalPosition, instead of plain tuples. Tuple unpacking (width, height = element.size) still works, and the components are also available as.width/.heightand.x/.y. But these are no longer tuples: comparing a logical to a physical value (e.g.element.size == window.size) is nowFalseinstead of a silent unit bug, and comparing against a plain tuple or indexing by position is no longer supported. - Breaking:
LogicalPositionis now an immutable (frozen) dataclass; you can no longer assign to its fields. - The
protobufdependency moved from 5.28.1 to 7.35.1. - Regenerated the protocol bindings against slint commit
3f26906↗, which is now the minimum version your application must be built against.
[0.2] - 2026-06-16
Section titled “[0.2] - 2026-06-16”- New
PointerEventButtonvalues:Back,Forward, andOther. - New
AccessibleRolelandmark values:RadioGroup,Banner,Complementary,ContentInfo,Form,Main,Navigation,Region, andSearch.
Changed
Section titled “Changed”- Regenerated the protocol bindings against slint commit
61acc0f↗.
- Initial release.
© 2026 SixtyFPS GmbH