name: Integration Tests on: push: branches: [ main, feature/integration-testing ] pull_request: branches: [ main ] jobs: e2e-tests: runs-on: ubuntu-latest services: # Backend service for testing backend: image: ubuntu-latest ports: - 3000:3000 steps: - uses: actions/checkout@v3 - name: Set up Rust uses: actions-rs/toolchain@v1 with: toolchain: stable override: true components: rustfmt, clippy - name: Set up Node.js uses: actions/setup-node@v3 with: node-version: '18' cache: 'npm' cache-dependency-path: frontend/e2e/package-lock.json - name: Install Trunk uses: jetli/trunk-action@v0.4.0 with: version: 'latest' - name: Install wasm32 target run: rustup target add wasm32-unknown-unknown - name: Build backend run: | cd backend cargo build --release - name: Build frontend run: | trunk build --release - name: Install E2E test dependencies run: | cd frontend/e2e npm ci npx playwright install chromium firefox # Install system dependencies for Ubuntu runner sudo apt-get update && sudo apt-get install -y \ libnss3 libatk-bridge2.0-0 libdrm2 libgtk-3-0 \ libgbm1 libasound2 - name: Start backend server run: | cd backend cargo run --release & # Wait for server to start sleep 10 curl -f http://localhost:3000/health || exit 1 env: CI: true - name: Start frontend server run: | trunk serve --release --address 0.0.0.0 & # Wait for frontend to start sleep 10 curl -f http://localhost:8080 || exit 1 env: CI: true - name: Run E2E tests run: | cd frontend/e2e npx playwright test --project=chromium --project=firefox env: CI: true TEST_CALDAV_SERVER: https://baikal.rcjohnstone.com/dav.php/ TEST_CALDAV_USERNAME: test TEST_CALDAV_PASSWORD: I0W?7`|Cs6tA`s - name: Upload test results uses: actions/upload-artifact@v3 if: always() with: name: playwright-report path: frontend/e2e/playwright-report/ retention-days: 30 unit-tests: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Rust uses: actions-rs/toolchain@v1 with: toolchain: stable override: true components: rustfmt, clippy - name: Install wasm32 target run: rustup target add wasm32-unknown-unknown - name: Install wasm-pack run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - name: Run frontend unit tests run: | cd frontend wasm-pack test --headless --chrome --firefox - name: Run backend unit tests run: | cd backend cargo test - name: Run calendar-models tests run: | cd calendar-models cargo test --features wasm