test(smoke): comprehensive AT-SPI, stability, and presence coverage for Dakota GNOME extensions - #808
test(smoke): comprehensive AT-SPI, stability, and presence coverage for Dakota GNOME extensions#808castrojo wants to merge 4 commits into
Conversation
Adds tests/smoke/features/bluefin_new_extensions.feature covering the seven curated GNOME Shell extensions newly enabled by default in Bluefin/Dakota (projectbluefin/common#1087), complementing the presence-only checks in bluefin_extensions.feature: - copyous: AT-SPI clipboard history popover interaction, rapid clipboard-change stress with plain/multiline/Unicode/large payloads, and post-stress GNOME Shell accessibility + bounded-memory assertions - syncthing-toggle: Quick Settings toggle/pill/header label, service start/stop, and start-stop-only gsettings check - Bluetooth-Battery-Meter: panel icon presence, symbolic indicator color setting, and clean behavior with no paired devices - quicksettings-audio-devices-hider/renamer: Quick Settings audio menu opens cleanly for each extension - tiling-assistant: window-snapping keyboard shortcuts, gesture soft-pass (gestures cannot be synthesized in headless CI), and overall Shell responsiveness - tailscale-gnome-qs: Quick Settings item presence and daemon running/stopped/unavailable state handling All new steps build on the existing SSH/Shell.Eval/journalctl helper conventions in steps.py and gnome_extensions_steps.py. Checks that depend on unverifiable third-party extension internals (gsettings schema ids, exact AT-SPI role names) degrade to a printed WARNING and soft pass, while the core stability assertions (GNOME Shell stays accessible, no new gnome-shell journal errors, no coredump) always run and fail hard — preserving the crash-regression value described in the issue even where extension-internal implementation details can't be guessed reliably. Adds tests/unit/test_bluefin_new_extensions_steps.py with unit coverage for the new pure/host-command-construction helpers. Fixes #793 Signed-off-by: mrbobbytables <mrbobbytables@users.noreply.github.com>
…s-color extension
Adds behave coverage for the power-status-color@projectbluefin.io GNOME
Shell extension (projectbluefin/bluefin-bling):
- Extension presence/enablement and journal error/warning hygiene.
- Reaction to /run/reboot-required (yellow 'power-status-reboot' style
class), applied and cleared via the extension's real file monitor.
- Uptime-overdue alert ('power-status-overdue') precedence over the
reboot alert, exercised through the extension's own _checkStatus()
logic with only the uptime probe stubbed (30-day uptime cannot be
reproduced in CI).
- Lifecycle/teardown hygiene: style classes and the live stateObj are
gone after gnome-extensions disable.
Style-class assertions go through org.gnome.Shell.Eval since CSS style
classes on St actors are not exposed via AT-SPI.
Closes #794
Signed-off-by: mrbobbytables <mrbobbytables@users.noreply.github.com>
…ensions
- Cover all 18 GNOME Shell extensions shipped in projectbluefin/dakota:
- Default-enabled extensions: appindicatorsupport, bazaar-integration, blur-my-shell,
BudsLink-Companion, caffeine, custom-command-list, dash-to-dock,
fuzzy-application-search, gradia-integration, gsconnect, tilingshell.
- Curated opt-in / personal & hardware integrations: copyous, power-status-color,
quick-settings-audio-panel, quicksettings-audio-devices-hider,
quicksettings-audio-devices-renamer, syncthing-toggle, tailscale-gnome-qs.
- Validate dconf schema overrides for BudsLink level-indicator-color, custom-command-list
icon/options, tilingshell indicator toggle, and syncthing-toggle start-stop-only.
- Implement reusable 'GNOME extension "{uuid}" is installed' and 'Dconf path "{path}" has value "{expected_value}"' steps.
- Add unit tests for new step helpers.
- Regenerate suite-map coverage snapshot.
Assisted-by: Gemini 3.8 Flash via GitHub Copilot
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
- Dedicated feature suite (tests/smoke/features/copyous_stress.feature) targeting known
Copyous crash and freeze vectors (GDA database corruption, black screen GDM fallback,
large/multiline payload memory exhaustion, null byte/SQL injection, rapid popover toggles).
- Scenarios:
- Rapid 40-event clipboard churn with heterogeneous data and final payload retention.
- Oversized payloads (1MB string, 5000 lines multiline, deep nested JSON) with
strict 200MB memory ceiling assertion and 3-second Shell responsiveness check.
- Rapid popover toggling (10x burst) asserting zero compositor freeze.
- Extension lifecycle rapid disable/re-enable stress verifying clean teardown and GJS recovery.
- Malformed payload injection (embedded null bytes, escape characters, SQL injection).
- Implement robust step definitions in copyous_stress_steps.py with Shell.Eval responsiveness probes,
coredumpctl crash assertions, and journal error verification.
- Add unit coverage for new steps in tests/unit/test_copyous_stress_steps.py.
- Update suite-map coverage snapshot.
Assisted-by: Gemini 3.8 Flash via GitHub Copilot
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
hanthor
left a comment
There was a problem hiding this comment.
Mechanically this is the healthiest of the three overlapping extension PRs
Test-merged onto main and ran the full PR gate set locally:
PR808 | snapshot=FRESH | ruff='All checks passed!' | pytest: 1645 passed
(the one failure I see on every branch is test_kde_faillog reacting to my sandbox running as root; main baseline is 1570 passed with the same result)
It also supersedes #798 and #799 outright — same filenames (bluefin_new_extensions.feature, bluefin_new_extensions_steps.py, power_status_color.feature, power_status_color_steps.py), same issues (#793/#794) — and unlike both of those it merges cleanly onto current main.
One thing to fix before merge: 34 new scenarios, all counted as active, many of which cannot fail
The snapshot delta this PR commits:
-| smoke | 196 | 151 | 0 | 45 |
+| smoke | 230 | 185 | 0 | 45 |All 34 new scenarios land in the active column — the Pending/Future count for smoke is unchanged at 45. But the step implementations lean heavily on printed-warning soft passes:
tests/smoke/features/steps/bluefin_new_extensions_steps.py 18 × WARNING (25 asserts, 562 lines)
tests/smoke/features/steps/copyous_stress_steps.py 2 × WARNING
tests/smoke/features/steps/power_status_color_steps.py 0 × WARNING
Tag audit across the four new feature files shows no @pending, @future or @hardware_blocked anywhere:
18 @dakota_only @extensions
6 @extensions
3 @extensions @atspi @priority-high @stress
2 @extensions @power_status
...
So the suite-map will report 34 additional scenarios of verified coverage, while a substantial share of those steps print WARNING: … and return green regardless of what the image does. That is the failure mode the snapshot exists to make visible.
Request: tag the scenarios whose assertions are soft (the third-party gsettings-schema and AT-SPI-role guesses called out in the sibling PR descriptions) as @pending with the blocking reason, regenerate the snapshot, and keep the hard crash-regression scenarios active. power_status_color_steps.py is a good model — zero soft passes.
Secondary: copyous_stress.feature and dakota_extensions.feature are new here and not in #798/#799. dakota_extensions.feature is 18 @dakota_only presence/dconf scenarios — worth confirming those actually run in a lane today rather than being skipped everywhere.
Generated by Claude Code
Resolves #793 and #794.
Adds full BDD behave test coverage across all 18 GNOME Shell extensions packaged and shipped in
projectbluefin/dakota(elements/bluefin/gnome-shell-extensions.bst):1. Dakota Extension Presence & Dconf Overrides (
tests/smoke/features/dakota_extensions.feature)appindicatorsupport@rgcjonas.gmail.combazaar-integration@kolunmi.github.ioblur-my-shell@aunetxBudsLink-Companion@maniacx.github.com(+level-indicator-color=0)caffeine@patapon.infocustom-command-list@storageb.github.com(+ icon'ublue-logo-symbolic'and options2)dash-to-dock@micxgx.gmail.comfuzzy-application-search@mkhl.codeberg.pagegradia-integration@alexandervanhee.github.iogsconnect@andyholmes.github.iotilingshell@ferrarodomenico.com(+show-indicator=false)copyous@boerdereinar.devpower-status-color@projectbluefin.ioquick-settings-audio-panel@rayzeq.github.ioquicksettings-audio-devices-hider@marcinjahn.comquicksettings-audio-devices-renamer@marcinjahn.comsyncthing-toggle@rehhouari.github.com(+start-stop-only=true)tailscale-gnome-qs@tailscale-qs.github.io2. Newly Enabled Extension Stability & Stress (
tests/smoke/features/bluefin_new_extensions.feature)3. Power Status Color Extension State Transitions (
tests/smoke/features/power_status_color.feature)/run/reboot-required.4. Verification
behave --dry-runpasses for all feature files.ruff check tests/passes with 0 warnings.python3 scripts/validate_docs.pyandgenerate_skill_index.py --checkpass.