Skip to content

feat(ui): add loading skeletons and empty states to data-fetching views #105

feat(ui): add loading skeletons and empty states to data-fetching views

feat(ui): add loading skeletons and empty states to data-fetching views #105

Workflow file for this run

name: Rust CI
on:
push:
pull_request:
jobs:
# Core checks run on Linux (fastest)
# Using ubuntu-24.04 for PipeWire 0.3.77+ compatibility with libspa 0.8.0
rust-checks:
runs-on: ubuntu-24.04
steps:
- name: Free disk space
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/lib/android
sudo rm -rf /opt/ghc
sudo rm -rf /opt/hostedtoolcache/CodeQL
sudo docker image prune --all --force || true
df -h
- uses: actions/checkout@v4
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
curl \
wget \
file \
libssl-dev \
pkg-config \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
libsoup-3.0-dev \
libxdo-dev \
libpipewire-0.3-dev \
libasound2-dev \
libdbus-1-dev
sudo apt-get install -y libwebkit2gtk-4.1-dev libjavascriptcoregtk-4.1-dev \
|| sudo apt-get install -y libwebkit2gtk-4.0-dev libjavascriptcoregtk-4.0-dev
- name: Install Rust
uses: dtolnay/rust-toolchain@1.88.0
with:
components: rustfmt, clippy
- name: Rust fmt
run: cargo fmt --all -- --check
- name: Rust clippy
run: cargo clippy --all-features -- -D clippy::panic -D clippy::unwrap_used -D clippy::expect_used
- name: Rust tests
run: cargo test --all-features
- name: MCP nav/auth parity check
run: ./scripts/tests/mcp_nav_auth.sh
- name: MCP messaging parity check
run: ./scripts/tests/mcp_messaging.sh
- name: MCP advanced surfaces parity check (M3)
run: ./scripts/tests/mcp_parity.sh
continue-on-error: true # New test, don't block on initial run
- name: Upload MCP parity artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: mcp-parity-artifacts
path: parity-artifacts/
if-no-files-found: ignore
retention-days: 7
- name: Upload MCP messaging artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: mcp-messaging-artifacts
path: messaging-parity-artifacts/
if-no-files-found: ignore
retention-days: 7
- name: Upload M3 parity artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: mcp-m3-parity-artifacts
path: m3-parity-artifacts/
if-no-files-found: ignore
retention-days: 7
# WebDriver tests run on multiple platforms
webdriver-tests:
needs: rust-checks
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-24.04
name: Linux
- os: macos-latest
name: macOS
runs-on: ${{ matrix.os }}
name: WebDriver (${{ matrix.name }})
steps:
- name: Free disk space (Linux)
if: matrix.os == 'ubuntu-24.04'
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/lib/android
sudo rm -rf /opt/ghc
sudo rm -rf /opt/hostedtoolcache/CodeQL
sudo docker image prune --all --force || true
df -h
- uses: actions/checkout@v4
- name: Install system dependencies (Linux)
if: matrix.os == 'ubuntu-24.04'
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
curl \
wget \
file \
libssl-dev \
pkg-config \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
libsoup-3.0-dev \
webkit2gtk-driver \
libxdo-dev \
libpipewire-0.3-dev \
libasound2-dev \
libdbus-1-dev
sudo apt-get install -y libwebkit2gtk-4.1-dev libjavascriptcoregtk-4.1-dev \
|| sudo apt-get install -y libwebkit2gtk-4.0-dev libjavascriptcoregtk-4.0-dev
- name: Enable SafariDriver (macOS)
if: matrix.os == 'macos-latest'
run: |
sudo safaridriver --enable
# Verify safaridriver is working
safaridriver --version || true
- name: Install Rust
uses: dtolnay/rust-toolchain@1.88.0
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 18
- name: Install dx CLI
run: ./scripts/install_dx.sh
- name: Dioxus desktop check
working-directory: communitas-dioxus
run: dx check --platform desktop
- name: Install tauri-driver
run: cargo install tauri-driver --locked
- name: Tauri nav/auth smoke test
run: ./scripts/tests/m1_nav_auth.tauri.sh
env:
# macOS uses Safari WebDriver via tauri-driver
WEBKIT_BROWSER: ${{ matrix.os == 'macos-latest' && 'Safari' || 'webkit' }}
- name: WebDriver messaging smoke tests
if: matrix.os == 'ubuntu-24.04'
run: |
cd tests/webdriverio
npm ci
npm test -- --spec specs/messaging.smoke.js
continue-on-error: true
- name: WebDriver accessibility tests
if: matrix.os == 'ubuntu-24.04'
run: |
cd tests/webdriverio
npm test -- --spec specs/accessibility.messaging.js
continue-on-error: true
- name: Upload WebDriver test artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: webdriver-artifacts-${{ matrix.name }}
path: |
tests/webdriverio/logs/
tests/webdriverio/screenshots/
if-no-files-found: ignore
retention-days: 7