Wlcs
Wayland Conformance Test Suite
Install / Use
/learn @canonical/WlcsREADME
============================== Wayland Conformance Test Suite
wlcs aspires to be a protocol-conformance-verifying test suite usable by
Wayland compositor implementors.
It is growing out of porting the existing Weston test suite to be run
in Mir's <https://github.com/MirServer/mir>_ test suite,
but it is designed to be usable by any compositor.
There have been a number of previous attempts at a Wayland compositor test
suite - the Wayland Functional Integration Test Suite <https://github.com/intel/wayland-fits>,
and the Weston test suite <https://wayland.freedesktop.org/testing.html#heading_toc_j_3>
are a couple of examples.
What sets wlcs apart from the graveyard of existing test suites is its
integration method.
Previous test suites have used a Wayland protocol extension to interrogate the compositor state. This obviously requires that compositors implement that protocol, means that tests only have access to information provided by that protocol, and the IPC means that there isn't a canonical happens-before ordering available.
Instead, wlcs relies on compositors providing an integration module,
providing wlcs with API hooks to start a compositor, connect a client,
move a window, and so on. This makes both writing and debugging tests easier -
the tests are (generally) in the same address space as the compositor, so there
is a consistent global clock available, it's easier to poke around in
compositor internals, and standard debugging tools can follow control flow from
the test client to the compositor and back again.
Usage
In order for wlcs to test your compositor you need to provide an
integration module. This needs to implement the interfaces found in
include/wlcs. If your integration module is
awesome_compositor_wlcs_integration.so, then running wlcs awesome_compositor_wlcs_integration.so will load and run all the tests.
Development
wlcs requires a small number of hooks into your compositor to drive the
tests - it needs to know how to start and stop the mainloop, to get an fd to
connect a client to, and so on.
To access these hooks, wlcs looks for a symbol wlcs_server_integration
of type struct WlcsServerIntegration const (defined in
include/wlcs/display_server.h) in your integration module.
Related Skills
node-connect
349.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
349.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
