QA Academy Logo
← Bloqa Qayıt
🇦🇿 AZ🇬🇧 EN
CI/CD & DevOps 28 İyul 2026 12 dəq oxuma

CI/CD Boru Kəmərində Avtomatlaşdırılmış Testlər: GitHub Actions İlə Praktiki Qurulum

Müasir proqram təminatı komandalarında gün ərzində onlarla yeni kod dəyişikliyi (commit) əsas depoya daxil edilir. Hər bir dəyişikliyin mövcud funksionallığı sındırmadığını (reqressiya) təmin etməyin yeganə yolu testləri avtomatik olaraq CI/CD boru kəmərində icra etməkdir.

1. Continuous Testing Konsepsiyası və DevOps-da Rolu

Continuous Testing (Davamlı Test) proqram təminatının çatdırılma boru kəməri boyunca fasiləsiz olaraq avtomatlaşdırılmış sınaqların icra edilməsidir. Əsas məqsəd erkən mərhələdə rəy (feedback) əldə etmək və xətalı kodun Production-a çatmasının qarşısını almaqdır.

Ənənəvi yanaşmada testlər yalnız sprintin sonunda manual icra edilirdi. DevOps və Agile mühitində isə hər bir Pull Request açıldıqda avtomatik olaraq Unit, Integration və E2E testlər işə düşür.

2. Hazır GitHub Actions Workflow Konfiqurasiyası (.github/workflows/e2e.yml)

name: E2E Automated Regression Suite

on:
  push:
    branches: [ main, develop ]
  pull_request:
    branches: [ main ]
  schedule:
    - cron: '0 2 * * *' # Hər gecə saat 02:00-da avtomatik gecə reqressiyası

jobs:
  e2e-tests:
    timeout-minutes: 45
    runs-on: ubuntu-latest
    
    strategy:
      fail-fast: false
      matrix:
        browser: [chromium, firefox, webkit]

    steps:
    - name: Checkout Code
      uses: actions/checkout@v4

    - name: Setup Node.js Environment
      uses: actions/setup-node@v4
      with:
        node-version: 20
        cache: 'npm'

    - name: Install Dependencies
      run: npm ci

    - name: Install Playwright Browsers with OS Dependencies
      run: npx playwright install --with-deps ${{ matrix.browser }}

    - name: Execute E2E Tests on ${{ matrix.browser }}
      run: npx playwright test --project=${{ matrix.browser }}
      env:
        CI: true
        BASE_URL: https://staging.qaacademy.az

    - name: Publish Test Results Artifact
      if: always()
      uses: actions/upload-artifact@v4
      with:
        name: test-report-${{ matrix.browser }}
        path: playwright-report/
        retention-days: 14

3. Branch Protection: Xətalı Kodu Necə Bloklamalı?

GitHub Settings → Branches bölməsində Branch Protection Rule yaradaraq:

  • Require status checks to pass before merging seçimini aktivləşdirin.
  • Yuxarıdakı e2e-tests job-unu məcburi qeyd edin.
  • Əgər hər hansı bir test uğursuz olarsa (FAIL), GitHub "Merge" düyməsini qırmızı edərək kodu bloklayacaq.

Tez-tez Verilən Suallar (FAQ)

Testlər uğursuz olduqda (fail) Telegram və ya Slack-ə bildiriş göndərmək olarmı?

Bəli, workflow-a `appleboy/telegram-action` və ya `slackapi/slack-github-action` əlavə edərək test nəticələrini komanda çatına anında göndərə bilərsiniz.

Sabir Tahirli

Sabir Tahirli

Chapter Lead & QA Automation Mütəxəssisi

Sabir Tahirli — Continuous Testing boru kəmərlərinin arxitekturası üzrə ekspertdir. GitHub Actions, avtomatlaşdırılmış reqressiya sınaqları və test hesabatlarının generasiyasını idarə edir.