Adds two new testium CLI subcommands:
testium schema dump the JSON-shaped schema of every test item type
(PARAMS merged with the common ones, console / plot /
json_rpc actions nested under their parent's "actions"
block). Zero runtime dependencies — usable by any editor
that speaks the YAML JSON Schema extension to get static
completion straight away.
testium lsp start a pygls LSP server over stdio. First feature:
completion of test item type names when the user starts
a new step (`- |`). The completion item carries the
item's display name and a hover doc listing its required
and optional non-common parameters.
pygls is declared as an optional extra ([project.optional-dependencies]
lsp = ["pygls>=1.3"]) so the core install isn't enlarged for users who
don't need the server. The import compatibility shim picks
pygls.lsp.server.LanguageServer (pygls 2.x) first and falls back to
pygls.server.LanguageServer (pygls 1.x).
The subcommands intercept argv[1] before argparse runs so they don't
share the GUI/batch flag surface.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
testium
testium is a YAML-driven test sequencer for hardware-in-the-loop and
integration testing. A test campaign is described in a .tum file as a tree
of items (checks, console interactions, Python/Lua functions, parallel blocks,
dialogs, …); testium executes the tree, captures results, and produces
reports in several formats.
Documentation
- Quick start — install and run your first test in five minutes.
- Tutorial — guided walk-through of the most common test items with a runnable example.
- User manual (PDF) — full reference.
doc/examples/— runnable.tumsnippets.
Pre-built releases
Pre-built artifacts are published at https://git.beafrancois.fr/v-and-v/testium/releases:
-
Python wheel (
testium-<version>-py3-none-any.whl) — install withpip install testium-*.whl. Lighter than the binary; pulls Python dependencies from PyPI on install. -
Self-contained Linux binary (
testium, built with PyInstaller) — runnable directly, no Python installation required on the host. Lua support still needs a systemluainterpreter and thelua-socket/lua-cjsonmodules. -
Flatpak bundle (
testium.flatpak) — install with:# Add Flathub (once, to fetch the KDE/PySide runtimes) flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo # Install the bundle flatpak install --user testium.flatpakAfter installation testium appears in the desktop application menu and the
testiumcommand is available in the terminal (requires~/.local/bininPATH, which most modern distributions provide by default).
Quick start
From a checkout of the repository:
| OS | Command |
|---|---|
| Linux | ./run.sh |
| Windows (cmd) | run.bat |
| Windows (PowerShell) | run.ps1 |
The wrapper creates a Python virtual environment on first run and starts
testium in GUI mode. Add -b path/to/test.tum to run a test in batch mode.
Manual installation
If the wrapper script does not fit your environment, set up testium manually:
python3 -m venv .venv
source .venv/bin/activate
pip install -r src/requirements.txt
Required Python packages (see src/requirements.txt):
pyside6, pyserial, pyyaml, pexpect, gitpython, jinja2, colorama,
matplotlib, junit-xml, lxml.
For tests using lua_func items, install Lua (>= 5.1) plus the socket and
cjson modules. On Debian/Ubuntu:
sudo apt install lua5.4 lua-socket lua-cjson
Run testium:
python3 src/testium # GUI
python3 src/testium -b mytest.tum # batch
Troubleshooting
wl_proxy_marshal_flags symbol error
testium: symbol lookup error: ... undefined symbol: wl_proxy_marshal_flags
Force the X11 Qt backend:
export QT_QPA_PLATFORM=xcb
testium
xcb plugin missing
qt.qpa.plugin: Could not load the Qt platform plugin "xcb"
Install the missing system libraries:
sudo apt install libxcb-cursor0 libicu-dev libxcb-cursor-dev
License
Copyright © 2025-2026 François Dausseur.
testium is distributed under the European Union Public Licence v. 1.2
(EUPL-1.2) — see LICENSE for the full text. SPDX:
EUPL-1.2.
Contributions are accepted under the same licence (inbound = outbound).
See CONTRIBUTING.md for development setup, debugging
workflow, and the release procedure.