Skip to content

Fix server-side script files being downloaded instead of navigated #154

Fix server-side script files being downloaded instead of navigated

Fix server-side script files being downloaded instead of navigated #154

name: Quality & Testing
on:
push:
branches: [main, dev]
pull_request:
branches: [main, dev]
workflow_dispatch:
env:
NODE_VERSION: "22"
PNPM_VERSION: "10.15.0"
permissions:
actions: write
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
auto-format:
name: Auto-fix Formatting
runs-on: ubuntu-latest
if: github.event_name == 'push'
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Development Environment
uses: ./.github/actions/setup-env
with:
mode: node
- name: Auto-fix Prettier formatting
run: npx prettier --write . --ignore-unknown
- name: Auto-fix Rust formatting
run: cargo fmt --all --manifest-path src-tauri/Cargo.toml
- name: Commit formatting fixes
run: |
git config --local user.email "[email protected]"
git config --local user.name "GitHub Action"
git add .
if ! git diff --staged --quiet; then
git commit -m "Auto-fix formatting issues"
git push
else
echo "No formatting changes to commit"
fi
rust-quality:
name: Rust Code Quality
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
fail-fast: false
defaults:
run:
shell: bash
working-directory: src-tauri
steps:
- uses: actions/checkout@v4
- name: Setup Rust Environment
uses: ./.github/actions/setup-env
with:
mode: build
- name: Install Rust components
shell: bash
run: rustup component add rustfmt clippy
- uses: rui314/setup-mold@v1
if: matrix.os == 'ubuntu-latest'
- name: Install cargo-hack
run: cargo install cargo-hack --force
- name: Check Rust formatting
run: cargo fmt --all -- --color=always --check
- name: Run Clippy lints
run: cargo hack --feature-powerset --exclude-features cli-build --no-dev-deps clippy # cspell:disable-line
cli-tests:
name: CLI Tests (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Build Environment
uses: ./.github/actions/setup-env
with:
mode: build
- name: Build CLI
run: pnpm run cli:build
- name: Run CLI Test Suite
run: pnpm test
env:
CI: true
NODE_ENV: test
- name: Test CLI Integration
shell: bash
run: |
echo "Testing CLI integration with weekly.tw93.fun..."
if [[ "$RUNNER_OS" == "Windows" ]]; then
timeout 120s node dist/cli.js https://weekly.tw93.fun --name "CITestWeekly" --debug || true
else
timeout 30s node dist/cli.js https://weekly.tw93.fun --name "CITestWeekly" --debug || true
fi
echo "Integration test completed (expected to timeout)"
release-build-test:
name: Release Build Test (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Build Environment
uses: ./.github/actions/setup-env
with:
mode: build
- name: Build CLI
run: pnpm run cli:build
- name: Run Release Build Test
run: ./tests/release.js
timeout-minutes: 30
env:
CI: true
NODE_ENV: test
- name: List generated files
shell: bash
run: |
echo "Generated files in project root:"
if [[ "$RUNNER_OS" == "Windows" ]]; then
ls -la *.{dmg,app,msi,deb,AppImage} 2>/dev/null || echo "No direct output files found"
else
find . -maxdepth 1 \( -name "*.dmg" -o -name "*.app" -o -name "*.msi" -o -name "*.deb" -o -name "*.AppImage" \) || echo "No direct output files found"
fi
echo ""
echo "Generated files in target directories:"
if [[ "$RUNNER_OS" == "Windows" ]]; then
find src-tauri/target -type f \( -name "*.dmg" -o -name "*.app" -o -name "*.msi" -o -name "*.deb" -o -name "*.AppImage" \) 2>/dev/null || echo "No target output files found"
else
find src-tauri/target -name "*.dmg" -o -name "*.app" -o -name "*.msi" -o -name "*.deb" -o -name "*.AppImage" 2>/dev/null || echo "No target output files found"
fi
summary:
name: Quality Summary
runs-on: ubuntu-latest
needs: [auto-format, rust-quality, cli-tests, release-build-test]
if: always()
steps:
- name: Generate Summary
run: |
{
echo "# Quality & Testing Summary"
echo ""
echo "| Check | Status |"
echo "|-------|--------|"
echo "| Auto Formatting | ${{ needs.auto-format.result == 'success' && 'PASSED' || 'FAILED' }} |"
echo "| Rust Quality | ${{ needs.rust-quality.result == 'success' && 'PASSED' || 'FAILED' }} |"
echo "| CLI Tests | ${{ needs.cli-tests.result == 'success' && 'PASSED' || 'FAILED' }} |"
echo "| Release Build | ${{ needs.release-build-test.result == 'success' && 'PASSED' || 'FAILED' }} |"
} >> $GITHUB_STEP_SUMMARY