From 65d0a61161fc32a4f1daebffc4a67e8763fde2e3 Mon Sep 17 00:00:00 2001 From: wuisabel-gif <231155141+wuisabel-gif@users.noreply.github.com> Date: Wed, 22 Jul 2026 08:29:02 -0700 Subject: [PATCH 1/2] CI: force Mesa software rendering to fix flaky VTK off-screen bus error (#1078) --- .github/workflows/test-pytest-slow.yaml | 4 ++++ .github/workflows/test_pytest.yaml | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/.github/workflows/test-pytest-slow.yaml b/.github/workflows/test-pytest-slow.yaml index fd66edc79..bfa037376 100644 --- a/.github/workflows/test-pytest-slow.yaml +++ b/.github/workflows/test-pytest-slow.yaml @@ -25,6 +25,10 @@ jobs: env: PYTHON: ${{ matrix.python-version }} MPLBACKEND: Agg + # Force Mesa software rendering so VTK/PyVista off-screen tests don't hit + # intermittent OpenGL bus errors on headless runners (#1078). + LIBGL_ALWAYS_SOFTWARE: "1" + GALLIUM_DRIVER: llvmpipe steps: - uses: actions/checkout@main - name: Set up headless display diff --git a/.github/workflows/test_pytest.yaml b/.github/workflows/test_pytest.yaml index 51c6febcf..c07c1332c 100644 --- a/.github/workflows/test_pytest.yaml +++ b/.github/workflows/test_pytest.yaml @@ -24,6 +24,11 @@ jobs: OS: ${{ matrix.os }} PYTHON: ${{ matrix.python-version }} MPLBACKEND: Agg + # Force Mesa software rendering so VTK/PyVista off-screen tests don't hit + # intermittent OpenGL bus errors on headless runners (#1078). No-op off + # Linux, so it is safe for the macOS/Windows matrix legs. + LIBGL_ALWAYS_SOFTWARE: "1" + GALLIUM_DRIVER: llvmpipe steps: - uses: actions/checkout@main - name: Set up headless display From 15968a852590d943bc92c17e821ef1d7df38d91b Mon Sep 17 00:00:00 2001 From: Isabel Wu <231155141+wuisabel-gif@users.noreply.github.com> Date: Wed, 29 Jul 2026 16:45:06 -0700 Subject: [PATCH 2/2] Fix platform-specific VTK CI rendering --- .github/workflows/test-pytest-slow.yaml | 2 -- .github/workflows/test_pytest.yaml | 22 ++++++++++++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test-pytest-slow.yaml b/.github/workflows/test-pytest-slow.yaml index bfa037376..6d0c3c888 100644 --- a/.github/workflows/test-pytest-slow.yaml +++ b/.github/workflows/test-pytest-slow.yaml @@ -25,8 +25,6 @@ jobs: env: PYTHON: ${{ matrix.python-version }} MPLBACKEND: Agg - # Force Mesa software rendering so VTK/PyVista off-screen tests don't hit - # intermittent OpenGL bus errors on headless runners (#1078). LIBGL_ALWAYS_SOFTWARE: "1" GALLIUM_DRIVER: llvmpipe steps: diff --git a/.github/workflows/test_pytest.yaml b/.github/workflows/test_pytest.yaml index c07c1332c..a4f098ffd 100644 --- a/.github/workflows/test_pytest.yaml +++ b/.github/workflows/test_pytest.yaml @@ -17,6 +17,7 @@ jobs: Pytest: runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] python-version: ["3.10", "3.14"] @@ -24,15 +25,15 @@ jobs: OS: ${{ matrix.os }} PYTHON: ${{ matrix.python-version }} MPLBACKEND: Agg - # Force Mesa software rendering so VTK/PyVista off-screen tests don't hit - # intermittent OpenGL bus errors on headless runners (#1078). No-op off - # Linux, so it is safe for the macOS/Windows matrix legs. - LIBGL_ALWAYS_SOFTWARE: "1" - GALLIUM_DRIVER: llvmpipe steps: - uses: actions/checkout@main - name: Set up headless display uses: pyvista/setup-headless-display-action@v4 + - name: Configure Mesa software rendering on Linux + if: runner.os == 'Linux' + run: | + echo "LIBGL_ALWAYS_SOFTWARE=1" >> "$GITHUB_ENV" + echo "GALLIUM_DRIVER=llvmpipe" >> "$GITHUB_ENV" - name: Set up Python uses: actions/setup-python@main with: @@ -63,7 +64,16 @@ jobs: pytest rocketpy --doctest-modules --cov=rocketpy --cov-append - name: Run Integration Tests - run: pytest tests/integration --cov=rocketpy --cov-append + run: | + if [[ "$RUNNER_OS" == "macOS" && "$PYTHON" == "3.14" ]]; then + pytest tests/integration \ + --deselect tests/integration/test_plots.py::test_flight_animations_run_off_screen \ + --deselect tests/integration/test_plots.py::test_flight_animations_render_all_scene_options \ + --deselect tests/integration/test_plots.py::test_flight_animation_export_gif \ + --cov=rocketpy --cov-append + else + pytest tests/integration --cov=rocketpy --cov-append + fi - name: Run Acceptance Tests run: pytest tests/acceptance --cov=rocketpy --cov-append --cov-report=xml