managarten/docs/DISCORD_NOTIFICATIONS_SETUP.md
Wuesteon 304897261d test: implement comprehensive automated testing system with daily CI/CD
Implement rock-solid automated testing infrastructure for mana-core-auth
with daily execution, notifications, and comprehensive monitoring.

Test Suite Improvements:
- Fix all 36 failing BetterAuthService tests (missing service mocks)
- Add 21 JwtAuthGuard tests achieving 100% statement coverage
- Create silentError helper to suppress intentional error logs
- Fix Todo backend TaskService test structure
- Add jose mock for JWT testing
- Configure jest collectCoverageFrom for mana-core-auth

GitHub Actions Workflow:
- Daily automated test execution (2 AM UTC + manual trigger)
- Matrix parallelization across 6 backend services
- PostgreSQL and Redis service containers
- Coverage enforcement (80% threshold)
- Multi-channel notifications (Discord, Slack, GitHub Issues)
- Support for success notifications (opt-in)

Test Infrastructure:
- Coverage aggregation across multiple services
- Flaky test detection with 30-run history tracking
- Performance metrics tracking with regression detection
- Test data seeding and cleanup scripts
- Comprehensive test reporting with formatted metrics

Documentation:
- TESTING_GUIDE.md (4000+ words) - Complete testing documentation
- AUTOMATED_TESTING_SYSTEM.md - System architecture and workflows
- DISCORD_NOTIFICATIONS_SETUP.md - Discord webhook setup guide
- TESTING_DEPLOYMENT_CHECKLIST.md - Pre-deployment verification
- TESTING_QUICK_REFERENCE.md - Quick command reference

Final Result:
- 180/180 tests passing (100% pass rate)
- Zero console errors in test output
- Automated daily testing with rich notifications
- Production-ready test infrastructure
2025-12-25 19:12:27 +01:00

5.9 KiB

Discord Notifications Setup

This guide shows you how to set up Discord notifications for daily test results.

Quick Setup (5 minutes)

1. Create Discord Webhook

  1. Open your Discord server
  2. Go to Server SettingsIntegrationsWebhooks
  3. Click New Webhook
  4. Configure:
    • Name: ManaCore CI/CD (or whatever you prefer)
    • Channel: Select the channel for test notifications (e.g., #dev-alerts)
    • Avatar: Optional - upload a custom icon
  5. Click Copy Webhook URL

2. Add Webhook to GitHub Secrets

  1. Go to your GitHub repository
  2. Navigate to SettingsSecrets and variablesActions
  3. Click New repository secret
  4. Add:
    • Name: DISCORD_WEBHOOK_URL
    • Value: Paste the webhook URL from Discord
  5. Click Add secret

3. That's It!

The workflow will now send Discord notifications automatically:

  • Failure notifications: Always sent when tests fail
  • Success notifications: Optional (enable via manual workflow trigger)

What You'll Receive

Failure Notification

When tests fail, you'll get a red embed:

❌ Daily Tests Failed
The daily test suite encountered failures and needs attention.

📅 Date: 2025-12-26
📊 Coverage: 87.5%
🔗 Workflow Run: [View Details](link)

Color: Red (#E74C3C)

Success Notification (Optional)

When tests pass and you enable success notifications:

✅ Daily Tests Passed
All tests completed successfully!

📅 Date: 2025-12-26
📊 Coverage: 95.3%
✅ Tests: 180 passed
🔗 Workflow Run: [View Details](link)

Color: Green (#2ECC71)


Advanced Configuration

Enable Success Notifications

By default, only failures send Discord notifications. To get success notifications:

  1. Go to ActionsDaily Tests workflow
  2. Click Run workflow
  3. Check the box: Send Discord notification on success
  4. Run workflow

Customize Notification Content

Edit .github/workflows/daily-tests.yml and modify the Discord webhook payload:

- name: Send Discord notification
  run: |
    curl -X POST "$DISCORD_WEBHOOK_URL" \
      -H 'Content-Type: application/json' \
      -d '{
        "username": "Your Custom Name",
        "avatar_url": "https://your-custom-avatar.png",
        "embeds": [{
          "title": "Custom Title",
          "description": "Custom description",
          "color": 15158332,
          ...
        }]
      }'

Change Notification Channel

In Discord:

  1. Server SettingsIntegrationsWebhooks
  2. Find ManaCore CI/CD webhook
  3. Change Channel dropdown
  4. Save

The GitHub secret stays the same - no need to update!

Add Multiple Channels

To send to multiple Discord channels:

  1. Create multiple webhooks in Discord (one per channel)
  2. Add multiple secrets to GitHub:
    • DISCORD_WEBHOOK_URL_ALERTS
    • DISCORD_WEBHOOK_URL_TEAM
    • DISCORD_WEBHOOK_URL_DEVOPS
  3. Duplicate the Discord notification step in the workflow for each webhook

Discord Webhook URL Format

The webhook URL should look like:

https://discord.com/api/webhooks/[WEBHOOK_ID]/[WEBHOOK_TOKEN]

Security: Never commit this URL to git! Always use GitHub Secrets.


Troubleshooting

Notifications Not Appearing

  1. Check webhook is active:

    • Discord → Server Settings → Integrations → Webhooks
    • Verify webhook exists and is enabled
  2. Check GitHub secret:

    • GitHub → Settings → Secrets → DISCORD_WEBHOOK_URL
    • Verify secret exists and is spelled correctly
  3. Check workflow logs:

    • GitHub Actions → Daily Tests → Latest run
    • Look for "Send Discord notification" step
    • Check for curl errors

Rate Limiting

Discord webhooks are rate-limited to:

  • 30 requests per minute per webhook
  • 5 requests per 2 seconds burst

Our daily workflow sends 1-2 notifications per day, well within limits.

Testing Your Webhook

Test the webhook without running the full workflow:

# Replace with your actual webhook URL
WEBHOOK_URL="https://discord.com/api/webhooks/YOUR_WEBHOOK_HERE"

curl -X POST "$WEBHOOK_URL" \
  -H 'Content-Type: application/json' \
  -d '{
    "username": "Test Bot",
    "content": "This is a test message from curl!"
  }'

If you see the message in Discord, your webhook works!


Slack + Discord Together

You can use both Slack and Discord notifications simultaneously:

  1. Add both secrets:

    • DISCORD_WEBHOOK_URL
    • SLACK_WEBHOOK_URL
  2. The workflow checks for both and sends to whichever exists


Discord Embed Colors

The workflow uses these colors:

Status Color Hex
Failure Red #E74C3C (15158332)
Success Green #2ECC71 (3066993)

To customize, change the "color" field in the workflow.


Security Best Practices

  1. Do: Store webhook URL in GitHub Secrets
  2. Do: Use a dedicated Discord channel for CI/CD
  3. Do: Restrict webhook permissions if possible
  4. Don't: Commit webhook URLs to git
  5. Don't: Share webhook URLs publicly
  6. Don't: Use webhooks with admin permissions

Example: Full Setup

# 1. Create Discord webhook
Discord → Server Settings → Integrations → Create Webhook
Channel: #dev-alerts
Copy URL: https://discord.com/api/webhooks/123456789/abcdefg

# 2. Add to GitHub
GitHub → Settings → Secrets → New secret
Name: DISCORD_WEBHOOK_URL
Value: https://discord.com/api/webhooks/123456789/abcdefg

# 3. Test (optional)
GitHub Actions → Daily Tests → Run workflow

# 4. Done!
Wait for next daily run (2 AM UTC) or trigger manually

Support

For issues with:


🏗️ ManaCore Monorepo