Files
claude-desktop-debian/docs/testing/matrix.md
Aaddrick 3506c14918 test(harness): add Linux compatibility test harness (#579)
Build out a Playwright-based regression-detection harness covering
the compat-matrix surfaces (KDE-W, KDE-X, GNOME, Sway, i3, Niri,
packaging formats). Adds:

- Planning + decision docs under docs/testing/ — README, matrix,
  runbook, automation, cases/ (11 case files), quick-entry-closeout
- Playwright scaffolding (config, tsconfig)
- 78 spec runners under tools/test-harness/src/runners/ — T## case-
  doc runners and S## distribution/smoke runners
- Substrate primitives in tools/test-harness/src/lib/: AX-tree
  loader (snapshotAx + waitForAxNode + axTreeToSnapshot), focus-
  shifter, eipc-registry, niri-native bridge, drag-drop bridge,
  electron-mocks, claudeai page-objects, inspector client

S03 (DEB Depends declared) and S04 (RPM Requires declared) ship
marked test.fail() — they're regression detectors for the case-doc
gap (deb.sh emits no Depends:, rpm.sh sets AutoReqProv: no), and
the expected-failure shape lets them report green on every host
until upstream packaging starts declaring runtime deps.

127 files, no runtime changes; harness is opt-in via
'cd tools/test-harness && npx playwright test'.

Co-authored-by: Claude <claude@anthropic.com>
2026-05-04 23:17:37 -04:00

14 KiB
Raw Blame History

Test Status Matrix

Last updated: 2026-04-30 · Tested against: claude-desktop 1.4758.0 (project varies per row)

This is the live dashboard. Update this file (and only this file) when status changes. For the test specs themselves, see cases/. For orientation, see README.md.

Status legend: pass · fail · 🔧 mitigated · ? untested · - N/A. Cells include linked issue/PR numbers when relevant.

Cross-environment matrix (T-series)

Test KDE-W KDE-X GNOME Ubu Sway i3 Niri Hypr-O Hypr-N
T01 ? ? ? ? ? ? ?
T02 ? ? ? ? ? ? ? ? ?
T03 ? ? ? ? ? ? ? ?
T04 ? ? ? ? ? ? ?
T05 ? ? ? ? ? ? ? ?
T06 #404 🔧 #406 ? ? ? ?
T07 ? ? ? ? ? ? ? #538
T08 ? ? ? ? ? ? ? ?
T09 ? ? ? ? ? ? ? ?
T10 ? ? ? ? ? ? ? ? ?
T11 ? ? ? ? ? ? ? ? ?
T12 ? ? ? ? ? ? ? ? ?
T13 ? ? ?
T14 ? ? ? ? ? ? ? ? ?
T15 ? ? ? ? ? ? ? ? ?
T16 ? ? ? ? ? ? ? ? ?
T17 ? ? ? ? ? ? ? ? ?
T18 ? ? ? ? ? ? ? ? ?
T19 ? ? ? ? ? ? ? ? ?
T20 ? ? ? ? ? ? ? ? ?
T21 ? ? ? ? ? ? ? ? ?
T22 ? ? ? ? ? ? ? ? ?
T23 ? ? ? ? ? ? ? ? ?
T24 ? ? ? ? ? ? ? ? ?
T25 ? ? ? ? ? ? ? ? ?
T26 ? ? ? ? ? ? ? ? ?
T27 ? ? ? ? ? ? ? ? ?
T28 ? ? ? ? ? ? ? ? ?
T29 ? ? ? ? ? ? ? ? ?
T30 ? ? ? ? ? ? ? ? ?
T31 ? ? ? ? ? ? ? ? ?
T32 ? ? ? ? ? ? ? ? ?
T33 ? ? ? ? ? ? ? ? ?
T34 ? ? ? ? ? ? ? ? ?
T35 ? ? ? ? ? ? ? ? ?
T36 ? ? ? ? ? ? ? ? ?
T37 ? ? ? ? ? ? ? ? ?
T38 ? ? ? ? ? ? ? ? ?
T39 ? ? ? ? ? ? ? ? ?

Environment-specific status

Ubuntu / DEB

ID Test Status Notes
S01 AppImage launches without manual libfuse2t64 install Workaround documented; not yet filed
S02 XDG_CURRENT_DESKTOP=ubuntu:GNOME doesn't break DE detection ?
S03 DEB install via APT pulls all required runtime deps ?

Fedora / RPM

ID Test Status Notes
S04 RPM install via DNF pulls all required runtime deps ?
S05 Doctor recognises dnf-installed package (no AppImage false-flag) Affects KDE-W, KDE-X, GNOME, Sway, i3, Niri (T13)

Wayland-native (wlroots)

Applies to: Sway, Niri, Hypr-O, Hypr-N (any session running native Wayland rather than XWayland).

ID Test Status Notes
S06 URL handler doesn't segfault on native Wayland ✗ on Sway Captured; not yet filed
S07 CLAUDE_USE_WAYLAND=1 opt-in path works ? #228, #232

KDE

Applies to: KDE-W, KDE-X.

ID Test Status Notes
S08 Tray icon doesn't duplicate after nativeTheme update 🔧 tray-rebuild-race.md
S09 Quick window patch runs only on KDE PR #406
S10 Quick Entry popup is transparent ? #370, #223

GNOME

Applies to: GNOME, Ubu (Ubuntu's GNOME), and any other mutter session.

ID Test Status Notes
S11 Quick Entry shortcut fires from any focus ✗ on GNOME, 🔧 on Ubu #404, PR #406
S12 --enable-features=GlobalShortcutsPortal wired up ? #404

Omarchy

ID Test Status Notes
S13 Hybrid topbar shim survives Omarchy's Ozone-Wayland env exports PR #538

Niri

ID Test Status Notes
S14 Global shortcuts via XDG portal work on Niri Captured; not yet filed

AppImage

ID Test Status Notes
S15 AppImage extraction (--appimage-extract) works as fallback ?
S16 AppImage mount cleans up on app exit ?

Linux launcher / .desktop env handling

ID Test Status Notes
S17 App launched from .desktop inherits shell PATH ?
S18 Local environment editor persists across reboot ?
S19 CLAUDE_CONFIG_DIR redirects scheduled-task storage ?

Idle-sleep / suspend

ID Test Status Notes
S20 "Keep computer awake" inhibits idle suspend ?
S21 Lid-close still suspends per OS policy ?

Computer Use (Linux: out-of-scope per upstream)

ID Test Status Notes
S22 Computer-use toggle is absent or visibly disabled ?
S23 Dispatch sessions don't soft-lock on never-approvable prompt ?

Dispatch

ID Test Status Notes
S24 Dispatch-spawned Code session appears with badge + notification ?
S25 Mobile pairing survives Linux session restart ?

Auto-update vs. system package manager

ID Test Status Notes
S26 Auto-update is disabled when installed via apt / dnf ?

Plugin / worktree storage

ID Test Status Notes
S27 Plugins install per-user, not into system paths ?
S28 Worktree creation surfaces clear error on read-only mounts ?

Known failures rollup

Tests currently somewhere — investigation priority order:

Test Failing on Root cause
T05 / S06 Sway URL handler subprocess SIGSEGV on native Wayland — Failed to connect to Wayland display
T06 / S11 GNOME mutter doesn't honour XWayland-side key grab
T06 / S14 Niri BindShortcuts returns error code 5
T07 / S13 Hypr-O Hybrid topbar shim partial render under Omarchy's Ozone-Wayland env exports
T13 / S05 every Fedora row Doctor only checks dpkg, false-flags every dnf install as AppImage
S01 Ubuntu 24.04 AppImage requires libfuse2t64; not auto-pulled

Notes on the current state

  • Most cells are ? because every captured VM in the recent test session ran the released build (dnf install / apt install / current AppImage), which predates PR #538. Topbar verification (T07) on the VM rows specifically requires a branch build deployed before any cell can flip from ?.
  • KDE-W status reflects @aaddrick's daily-driver host (Nobara KDE Plasma Wayland) where multiple features have been in continuous use.
  • Hypr-N status reflects @typedrat's report on PR #538 ("Working great on NixOS with Hyprland").
  • Hypr-O status reflects @lukedev45's broken-case report on PR #538 (partial render, root cause unconfirmed but Omarchy-env-specific — see S13).
  • T13 is on every Fedora row because the dpkg false-flag is a deterministic property of the doctor script, not a per-environment failure mode. It will flip to everywhere once the doctor learns to detect rpm/dnf installs.
  • T15T39 are derived from upstream Claude Code Desktop docs (code.claude.com/docs/en/desktop*) — features whose Linux behavior is officially undocumented (the docs explicitly state "Linux is not supported" for the Code tab). All cells start as ? because the upstream Code-tab feature surface has not been systematically exercised on the patched Linux build.