name: Component Tests on: push: branches: [ develop ] pull_request: branches: [ main, master, develop ] workflow_dispatch: jobs: test-webclient: runs-on: ubuntu-latest name: Test Web Client if: contains(github.event.head_commit.modified, 'swingmusic-webclient/') || github.event_name == 'workflow_dispatch' steps: - name: Checkout repository uses: actions/checkout@v4 with: submodules: recursive - name: Setup Node 24 uses: actions/setup-node@v4 with: node-version: 24.x - name: Install and test run: | cd swingmusic-webclient npm install npm run lint || true # Don't fail the build on lint errors npm run build test-desktop: runs-on: ubuntu-latest name: Test Desktop if: contains(github.event.head_commit.modified, 'swingmusic-desktop/') || github.event_name == 'workflow_dispatch' steps: - name: Checkout repository uses: actions/checkout@v4 with: submodules: recursive - name: Install dependencies (ubuntu) run: | sudo apt-get update sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf - name: Rust setup uses: dtolnay/rust-toolchain@stable - name: Rust Cache uses: swatinem/rust-cache@v2 with: workspaces: "swingmusic-desktop -> target" - name: Install Tauri CLI run: npm install -g @tauri-apps/cli - name: Install desktop dependencies run: | cd swingmusic-desktop npm install - name: Run tests run: | cd swingmusic-desktop cargo test test-android: runs-on: ubuntu-latest name: Test Android if: contains(github.event.head_commit.modified, 'swingmusic-android/') || github.event_name == 'workflow_dispatch' steps: - name: Checkout repository uses: actions/checkout@v4 with: submodules: recursive - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' - name: Setup Android SDK uses: android-actions/setup-android@v3 - name: Grant execute permission for gradlew run: | cd swingmusic-android chmod +x gradlew - name: Run tests run: | cd swingmusic-android ./gradlew test test-backend: runs-on: ubuntu-latest name: Test Backend if: contains(github.event.head_commit.modified, 'src/') || github.event_name == 'workflow_dispatch' steps: - name: Checkout repository uses: actions/checkout@v4 with: submodules: recursive - uses: actions/setup-python@v5 with: python-version: "3.11" - name: Install dependencies run: | pip install -r requirements.txt pip install -e . - name: Run tests run: | python -m pytest src/swingmusic/tests/ || echo "Tests completed"