Files
Waybar/test/smoke/run.sh
T
Alex eb10a511f0 ci(smoke): sanitizer build + module/interaction/a11y/layout coverage
Turn the smoke test into a real runtime safety net. Waybar is now built with
AddressSanitizer and exercised end to end in a headless compositor:

- Tier 0: run everything under ASan; fail on ASan reports and Gtk/GLib
  criticals in the log (lib.sh assert_clean)
- Tier 1: per-module render matrix (modules.sh) — each headless-safe module
  rendered in isolation
- Tier 2: pointer interaction (interact.sh) — inject clicks via sway, assert
  on-click side effect and format-alt toggle; AT-SPI assertions (a11y.sh/.py)
  check module labels semantically instead of by pixels
- Tier 3: layout matrix (positions.sh) — top/bottom/left + HiDPI scale 2;
  second compositor run under labwc

Shared helpers extracted to lib.sh. Adds a workflow_dispatch `bless` input to
regenerate the golden reference in one click. Trigger push only on master to
avoid duplicate PR runs. AT-SPI and labwc steps are continue-on-error.
2026-07-05 10:25:49 +02:00

23 lines
635 B
Bash
Executable File

#!/usr/bin/env bash
# Launch Waybar inside a headless compositor and verify it starts, stays alive,
# logs no sanitizer/critical error, and (optionally) renders a screenshot.
#
# Usage: run.sh <config> [style] [screenshot.png]
set -euo pipefail
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=lib.sh
source "$DIR/lib.sh"
CONFIG="$1"; STYLE="${2:-}"; SHOT="${3:-}"
smoke::setup
smoke::start_compositor
trap smoke::stop EXIT
smoke::launch_waybar "$CONFIG" "$STYLE"
echo "::group::waybar log"; smoke::log; echo "::endgroup::"
smoke::assert_alive
smoke::assert_clean
[ -n "$SHOT" ] && smoke::screenshot "$SHOT"