Skip to content

Commit 91420e4

Browse files
CI: Run Qt AT-SPI2 bridge tests on All_Debug runner, not ASan runners
For running the Qt AT-SPI2 bridge tests under CI: 1. We need to actually launch a Qt-UI Ladybird process, and assert on the output from the Qt AT-SPI2 bridge. 2. Qt's AT-SPI2 bridge only activates with a real platform plugin (offscreen doesn’t qualify). 3. On a headless Linux runner in our CI, the only viable Qt platform plugin is xcb. 4. Qt's xcb plugin pulls libxkbcommon-x11 in as a transitive runtime dependency. But, under ASan, the QXcbConnection startup path triggers a buffer overflow in libxkbcommon-x11. Therefore, we skip these tests under ASan — and for CI, we run them on the All_Debug runner instead.
1 parent 471e94c commit 91420e4

2 files changed

Lines changed: 20 additions & 0 deletions

File tree

.github/workflows/lagom-template.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,15 @@ jobs:
217217
env:
218218
TESTS_ONLY: 1
219219

220+
# The AT-SPI2 tests can't be run successfully under a Sanitizer build. ASan-instrumented Qt-on-XCB hits a buffer
221+
# overflow in libxkbcommon-x11. So, run them under the Debug build instead.
222+
- name: Test - LibWeb AT-SPI2 bridge (All_Debug)
223+
if: ${{ inputs.os_name == 'Linux' && inputs.build_preset == 'All_Debug' }}
224+
working-directory: ${{ github.workspace }}
225+
run: ctest --output-on-failure --test-dir Build -R LibWebAccessibilityBridge --timeout 1800
226+
env:
227+
TESTS_ONLY: 1
228+
220229
- name: Upload LibWeb Test Artifacts
221230
if: ${{ always() && inputs.build_preset != 'Fuzzers' && inputs.build_preset != 'All_Debug' }}
222231
uses: actions/upload-artifact@v7

Tests/LibWeb/AccessibilityBridge/CMakeLists.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,17 @@ if (NOT LADYBIRD_GUI_FRAMEWORK STREQUAL "Qt")
1111
return()
1212
endif()
1313

14+
if (ENABLE_ADDRESS_SANITIZER)
15+
# For running these tests under CI:
16+
# 1. We need to actually launch a Qt-UI Ladybird process, and assert on the output from the Qt AT-SPI2 bridge.
17+
# 2. Qt's AT-SPI2 bridge only activates with a real platform plugin (offscreen doesn’t qualify).
18+
# 3. On a headless Linux runner in our CI, the only viable Qt platform plugin is xcb.
19+
# 4. Qt's xcb plugin pulls libxkbcommon-x11 in as a transitive runtime dependency.
20+
# But, under ASan, the QXcbConnection startup path triggers a buffer overflow in libxkbcommon-x11. Therefore, we
21+
# skip these tests under ASan — and for CI, we run them on the All_Debug runner instead.
22+
return()
23+
endif()
24+
1425
find_package(Python3 REQUIRED)
1526

1627
# run_tests.sh reads LADYBIRD_BINARY to locate the Ladybird executable. Point it at the ladybird target — so tests don't

0 commit comments

Comments
 (0)