From d903afecef5a5ade3d0eaae8679106927346857c Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Sat, 29 Nov 2025 15:56:16 +0100 Subject: [PATCH] Python: Fix tests in the CI having difficulties connecting to Xvfb Instead of connecting to the X server, let's run the Python tests with the testing backend, like we do for test-driver-rust, test-driver-cpp, etc. When building the Python package, pass --features backend-testing to Cargo, to forward to enabling the backend-testing feature in i-slint-backend-selector. That consequently enables SLINT_BACKEND=testing. --- .github/workflows/python_test_reusable.yaml | 6 ++---- api/python/slint/Cargo.toml | 1 + internal/backends/selector/Cargo.toml | 1 + internal/backends/selector/lib.rs | 4 ++++ 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/python_test_reusable.yaml b/.github/workflows/python_test_reusable.yaml index f55a4755e2..ac4a165ffc 100644 --- a/.github/workflows/python_test_reusable.yaml +++ b/.github/workflows/python_test_reusable.yaml @@ -22,7 +22,8 @@ env: CARGO_PROFILE_DEV_DEBUG: 0 CARGO_INCREMENTAL: false RUST_BACKTRACE: full - SLINT_BACKEND: winit + SLINT_BACKEND: testing + MATURIN_PEP517_ARGS: --features backend-testing jobs: python_test: @@ -31,9 +32,6 @@ jobs: steps: - uses: actions/checkout@v6 - uses: ./.github/actions/install-linux-dependencies - - name: Setup headless display - if: runner.os != 'macOS' - uses: pyvista/setup-headless-display-action@v4 - uses: ./.github/actions/setup-rust with: key: x-python-v0-${{ steps.node-install.outputs.node-version }} # the cache key consists of a manually bumpable version and the node version, as the cached rustc artifacts contain linking information where to find node.lib, which is in a versioned directory. diff --git a/api/python/slint/Cargo.toml b/api/python/slint/Cargo.toml index 8bd281f6a4..36a7472d54 100644 --- a/api/python/slint/Cargo.toml +++ b/api/python/slint/Cargo.toml @@ -32,6 +32,7 @@ backend-winit-x11 = ["slint-interpreter/backend-winit-x11"] backend-winit-wayland = ["slint-interpreter/backend-winit-wayland"] backend-linuxkms = ["slint-interpreter/backend-linuxkms"] backend-linuxkms-noseat = ["slint-interpreter/backend-linuxkms-noseat"] +backend-testing = ["i-slint-backend-selector/backend-testing"] renderer-femtovg = ["slint-interpreter/renderer-femtovg"] renderer-femtovg-wgpu = ["slint-interpreter/renderer-femtovg-wgpu"] renderer-skia = ["slint-interpreter/renderer-skia"] diff --git a/internal/backends/selector/Cargo.toml b/internal/backends/selector/Cargo.toml index a1f4701a41..36f0a2aa7e 100644 --- a/internal/backends/selector/Cargo.toml +++ b/internal/backends/selector/Cargo.toml @@ -23,6 +23,7 @@ backend-winit-wayland = ["i-slint-backend-winit/wayland"] backend-linuxkms = ["i-slint-backend-linuxkms/libseat"] backend-linuxkms-noseat = ["i-slint-backend-linuxkms"] backend-qt = ["i-slint-backend-qt/enable"] +backend-testing = ["i-slint-backend-testing/internal"] renderer-femtovg = ["i-slint-backend-winit?/renderer-femtovg", "i-slint-backend-linuxkms?/renderer-femtovg"] renderer-femtovg-wgpu = ["i-slint-backend-winit?/renderer-femtovg-wgpu"] diff --git a/internal/backends/selector/lib.rs b/internal/backends/selector/lib.rs index 896a25239c..9bf2930ab5 100644 --- a/internal/backends/selector/lib.rs +++ b/internal/backends/selector/lib.rs @@ -108,6 +108,10 @@ cfg_if::cfg_if! { } return builder.build().map(|b| Box::new(b) as Box) }, + #[cfg(feature = "i-slint-backend-testing")] + "testing" => return Ok(Box::new(i_slint_backend_testing::TestingBackend::new( + i_slint_backend_testing::TestingBackendOptions { mock_time: false, threading: true }, + ))), _ => {}, }