@emersion wleird looks useful, but I always thought such a thing should be called Wayland Test Fuzzer. It has a nice abbreviation.
@wmww Ahah, nice! Writing a Wayland protocol fuzzer is on my todo-list, I'll definitely consider that name when I get to it :)
(wleird is for manual testing, not really fuzzing)
@emersion if you're looking into automatic Wayland tests, you might want to check out WLCS (https://github.com/MirServer/wlcs). We've been building it for Mir, but designing it for use with other compositors as well. It's not quite a Fuzzer yet either, as it mainly sticks to the basics now, but does a pretty good job of covering them.
@emersion To use WLCS with wlroots, you'd just have to implement the hooks into the compositor for things like creating and moving a fake pointer. This is done for Mir here: https://github.com/MirServer/wlcs/blob/master/example/mir_integration.cpp
@wmww Hmm. What IPC are you using between test clients and the compositor?
@emersion no IPC, the tests run the compositor in-process. Thus we don't need the added complexity of a protocol extension or anything.
@emersion For every test it spins up a new instance of the compositor and tears it down at the end, so you don't have to worry about one test messing with compositor state and that effecting a subsequent test.
@emersion which means tests can do stuff like creating a mock pointer, or move top-level surfaces around with just normal function calls.