<div>graesslin created this revision.<br />
graesslin added a reviewer: Plasma.<br />
Restricted Application added a project: Plasma.<br />
Restricted Application added a subscriber: plasma-devel.</div><br /><div><strong>REVISION SUMMARY</strong><div><p>The idea of shipping a test server is to have something like Xvfb for<br />
Wayland. To be able to run a test application with a fake Wayland server.</p>

<p>To make this super easy the test server binary is installed into libexec<br />
directory and provides a cmake function to run a test application with<br />
the test server.</p>

<p>The test server takes full control over the process. It's a guiless<br />
application and starts the passed test application once it is fully<br />
set up. The environment is setup to have the test application connect<br />
to the fake server (WAYLAND_SOCKET env variable and QT_QPA_PLATFORM).</p>

<p>When the started application finishes the test server goes down and<br />
exits with the exit value of the test application. This allows a good<br />
integration with ctest.</p>

<p>The test server is a virtual server which supports the following<br />
interfaces:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">Shm</li>
<li class="remarkup-list-item">Compositor</li>
<li class="remarkup-list-item">Shell</li>
<li class="remarkup-list-item">Seat</li>
<li class="remarkup-list-item">DataDeviceManager</li>
<li class="remarkup-list-item">Idle</li>
<li class="remarkup-list-item">SubCompositor</li>
<li class="remarkup-list-item">Output (1280x1024 at 60 Hz with 96 dpi)</li>
<li class="remarkup-list-item">FakeInput</li>
</ul>

<p>This is sufficient to bring up a QtWayland based application and<br />
allows some basic interactions from a test application (e.g. fake<br />
input).</p>

<p>So far the server fakes a repaint every 16 msec, but does not yet<br />
pass events to the test applications.</p>

<p>To integrate this into an application for testing use:</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">find_package(KF5Wayland CONFIG)
add_executable(myTest myTest.cpp)
target_link_libraries(myTest Qt5::Gui Qt5::Test)
kwaylandtest(myTest)</pre></div>

<p>When now running ctest in the build directory the test server gets<br />
started and will start the myTest binary and report the passed/failed<br />
in the expected and normal way.</p>

<p>This way a test case can easily be run against both X11 and Wayland.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>rKWAYLAND KWayland</div></div></div><br /><div><strong>BRANCH</strong><div><div>test-server</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D1726" rel="noreferrer">https://phabricator.kde.org/D1726</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>KF5WaylandConfig.cmake.in<br />
src/tools/CMakeLists.txt<br />
src/tools/testserver/CMakeLists.txt<br />
src/tools/testserver/main.cpp<br />
src/tools/testserver/testserver.cpp<br />
src/tools/testserver/testserver.h</div></div></div><br /><div><strong>EMAIL PREFERENCES</strong><div><a href="https://phabricator.kde.org/settings/panel/emailpreferences/" rel="noreferrer">https://phabricator.kde.org/settings/panel/emailpreferences/</a></div></div><br /><div><strong>To: </strong>graesslin, Plasma<br /><strong>Cc: </strong>plasma-devel, sebas<br /></div>