Automated regression suite for all tournament formats — Americano, Mexicano, Mini Tournament, and King of the Court — running on every deployment that touches tournament code.
Test tournament algorithms (matchup generation, partner rotation, leaderboard math) by calling service methods and Supabase edge functions directly. No UI needed. Runs in ~30 seconds.
Test critical user flows (event creation, score entry, permissions, share links) by driving the Flutter app with Maestro YAML flows on a real device or simulator.
GitHub Actions with paths: filters — API tests fire on any PR touching tournament services; UI flows fire after a successful deployment via Maestro Cloud webhook.
| Layer | Tool | Where tests live | Trigger |
|---|---|---|---|
| Backend API | Vitest | padel-backend/src/__tests__/tournament/ |
GitHub Actions on PR — paths: src/services/*Tournament* |
| Edge Functions | Vitest + Deno compat | padel-backend/supabase/functions/__tests__/ |
GitHub Actions on PR — paths: supabase/functions/event-tournament* |
| Mobile UI | Maestro YAML | mobile-app-padel/maestro/flows/ |
Maestro Cloud webhook after deployment |
| CI Orchestration | GitHub Actions | .github/workflows/tournament-tests.yml |
On push to any branch |
lib/screens/events/ or event-tournament-v3set-event-requirements edge function/set-event-requirements with range 2.0–4.0 → response confirms requirements setjoin-event-waitlist + manage-event-participantsAmericanoTournamentService.ts → generateRound(players, courts)TournamentManagementService.ts → canProgressRound(tournamentId)canProgressRound() returns falsecanProgressRound() returns trueAmericanoTournamentService.ts → rotation algorithmTournamentManagementService.ts → leaderboard aggregationTeamAmericanoTournamentService.ts → round generationTeamAmericanoTournamentService.ts → leaderboard aggregationTournamentManagementService.ts → Mexicano round 1 generationTournamentManagementService.ts → Mexicano next-round algorithmTeamAmericanoTournamentService.ts → Mexicano Team next-roundTournamentManagementService.ts → round robin generationTournamentManagementService.ts → knockout bracket generationAmericanoTournamentService.ts → validation / bye logicmanage-event-participantsTournamentManagementService.ts → validation before startTournamentManagementService.ts → KoC rotation# .github/workflows/tournament-tests.yml name: Tournament Tests on: push: paths: # Backend services - 'src/services/AmericanoTournamentService.ts' - 'src/services/AmericanoTournamentServiceV2.ts' - 'src/services/TeamAmericanoTournamentService.ts' - 'src/services/TournamentManagementService.ts' # Edge functions - 'supabase/functions/event-tournament/**' - 'supabase/functions/event-tournament-v2/**' - 'supabase/functions/event-tournament-v3/**' - 'supabase/functions/manage-event-participants/**' - 'supabase/functions/event-join-request/**' - 'supabase/functions/join-event-waitlist/**' # Test files themselves - 'src/__tests__/tournament/**' jobs: api-tests: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm install && npx vitest run src/__tests__/tournament/
maestro/flows/ suite. Results post back to the PR as a GitHub check.
padel-backend and write the 14 API test cases. Wire GitHub Actions with path filters. ~30s feedback loop on every PR.padel-backend/package.json.github/workflows/tournament-tests.yml with path filterscurl -Ls "https://get.maestro.mobile.dev" | bash)mobile-app-padel/maestro/flows/ directory structure