Зачем автоматизировать тестирование?
Ручное выполнение тестов требует много времени и ресурсов команды разработчиков. Автоматизированные процессы позволяют быстрее выявлять ошибки и снижают вероятность пропуска критических багов.
Настройка QA-пайплайна в GitHub Actions
Линтинг кода
Линтер проверяет код на соответствие стандартам качества и стилям написания. Это помогает избежать мелких ошибок еще на этапе разработки.
Пример конфигурации:
name: Linting
on:
push:
branches: [main]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: npm install
- name: Run linter
run: npm run lint
Unit-тестирование
Unit-тесты проверяют отдельные компоненты приложения. Они помогают убедиться, что изменения не нарушают работу существующих функций.
Пример конфигурации:
name: Unit Tests
on:
push:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
End-to-end тестирование
End-to-end тесты имитируют действия пользователя и проверяют взаимодействие всех компонентов системы. Для их выполнения можно использовать инструменты вроде Playwright или Cypress.
Пример конфигурации:
name: E2E Testing
on:
push:
branches: [main]
jobs:
e2e-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: npm install
- name: Start server
run: npm start & sleep 10 # wait for the server to start
- name: Run E2E tests
run: npm run e2e
Кэширование зависимостей
Кэширование позволяет ускорить процесс сборки проекта за счет повторного использования ранее установленных пакетов.
Пример настройки кэша:
steps:
- uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
Уведомления о сбоях
Настроив уведомления, вы сможете оперативно реагировать на падения тестов и исправлять проблемы раньше.
Пример отправки уведомлений в Slack:
steps:
- name: Send notification on failure
if: ${{ failure() }}
run: |
curl --location --request POST 'https://hooks.slack.com/services/YOUR_SLACK_WEBHOOK' \
--header 'Content-Type: application/json' \
--data-raw '{"text": "Tests failed! Check build logs."}'
Таким образом, настройка автоматизированного QA-пайплайна в GitHub Actions позволит значительно повысить качество вашего продукта и сократить время на ручное тестирование.