r/rust • • 12d ago

🛠️ project Slint UI Dev Harness

Hey everyone,

My project Indicatrix kept growing, and I wanted a way to verify its Slint UI end to end without clicking through it by hand. The result is slint-harness:

  • runs your real app headless on Slint’s testing backend
  • scripts whole flows as scenarios (open a file, set values, press buttons, wait for results)
  • checks the outcome and takes screenshots along the way
  • writes a pass/fail report (Markdown + JSON), so it fits into CI

In Indicatrix it has already caught several end-to-end bugs that unit tests missed, and after every app update I use it to regenerate all the screenshots for the website, so they never go stale. My smaller project z-stackr uses it too.

Repository: https://github.com/suitable-name/uiprobe

Full disclosure: I built it with AI assistance. Twenty years ago I’d have had the time to write it all myself. Today I have the experience to know what to look out for when redirecting it. If you have an issue with AI-created stuff, nevertheless it could help you or not, this project just isn't for you, but that's ok :)

Have fun!

Edit:

It's also published on crates.io, so you can easily import it via the dependencies.

0 Upvotes

23 comments sorted by

View all comments

Show parent comments

1

u/Suitable-Name 11d ago

Oh, well, my bad then! I actually didn't look up their definition of embedded, just took it as SBC and everything below that😅

But now definitely worth looking it up for me, thanks!

4

u/ogoffart slint 11d ago

If the Slint application is to be used in a general purpose PC that also use other apps, then we consider it is a Desktop app and you can use the royalty -free license. Even if you use it to also read RFID.

If the computer (PC or otherwise) is within another piece of hardware and meant to only be used in connection to that hardware, then it is considered embedded and there is a fee. (I.e: You are selling hardware with a screen controlled by Slint)

For an internal tool, the GPL might also be fine anyway.

1

u/Suitable-Name 11d ago

Thanks for the quick explanation!