Three tests failed at random under make race, on main as well as on merge requests. Only test files change; compositor behaviour is unchanged.
TestCastOutputUnplugStops(wayland): the capture could complete before the output removal reached the display owner. The test now applies the removal before completing the capture, and still requires an error for the in-flight frame.TestCastInventoryPublishedOncePerChange(wayland): the next frame was lent before the previous one completed, so the owner rejected it as busy. The test now waits for eachCastFrameDone.TestPendingTableFull(screencast): the mockedOpenblocked the service owner and could hang the run for 10 minutes. The test now fills the pending table without blocking the owner, and reply reads are bounded.
Blocking receives in the harnesses fail after a few seconds instead of hanging.
Checks: each test 600 times with -race -cpu=1,2,4; the whole TestCast set and the screencast package 30 times; make check, make race, make mocks-check, staticcheck ./... pass.