Skip to content

Changelog

All notable changes to this project will be documented in this file.

  • wait_until() no longer includes None in the type of its result: it only returns once the condition returns a true value, so wait_until(lambda: next(iter(query.find_all()), None)) is now typed as Element instead of Element | None.
  • 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 raises RequestError. Matching an empty label now only finds elements whose label is explicitly empty, not elements without one.
  • 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, an Element that has since been removed from the UI used to do nothing or return a default value such as "", 0 or False; it now raises. Element.is_valid is unchanged and still returns False for such elements. Likewise, Window.grab_window_with_mime_type now raises instead of returning empty bytes when the application does not support the requested image format.
  • The ApplicationConnectionError raised when the application does not connect back in time now reports the actual launch_timeout instead of always saying 10 seconds.
  • Breaking: Element.size/absolute_position now return LogicalSize/LogicalPosition and Window.size/position now return PhysicalSize/PhysicalPosition, instead of plain tuples. Tuple unpacking (width, height = element.size) still works, and the components are also available as .width/.height and .x/.y. But these are no longer tuples: comparing a logical to a physical value (e.g. element.size == window.size) is now False instead of a silent unit bug, and comparing against a plain tuple or indexing by position is no longer supported.
  • Breaking: LogicalPosition is now an immutable (frozen) dataclass; you can no longer assign to its fields.
  • The protobuf dependency 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.
  • New PointerEventButton values: Back, Forward, and Other.
  • New AccessibleRole landmark values: RadioGroup, Banner, Complementary, ContentInfo, Form, Main, Navigation, Region, and Search.
  • Regenerated the protocol bindings against slint commit 61acc0f ↗.
  • Initial release.

© 2026 SixtyFPS GmbH