Покрытие кода — важная метрика для измерения качества ваших тестов программного обеспечения. Он предоставляет способ количественной оценки того, какая часть вашего кода тестируется, и помогает вам определить области вашего кода, которые могут быть недостаточно охвачены вашими тестами.
Когда вы используете Jest с GitHub Actions, вы можете автоматизировать процесс запуска тестов и получения отчетов о покрытии, упрощая отслеживание покрытия кода с течением времени. Это может помочь вам убедиться, что ваш код хорошо протестирован, снизить риск внесения ошибок в ваш код и упростить поддержку вашего кода в будущем.
Кроме того, наличие отчетов о покрытии кода в вашем репозитории GitHub может помочь вам сообщать о качестве ваших тестов другим заинтересованным сторонам, таким как члены команды или клиенты. Это может повысить доверие к вашему коду и поможет укрепить уверенность в процессе разработки.
Теперь мы будем использовать следующий инструмент: Действие отчета о освещении Jest
Это инструмент, который поможет вам отслеживать охват вашего проекта. Формирует отчетный комментарий по каждому PR. Кроме того, выделяет файлы с уменьшенным охватом и новые файлы
Как мы можем настроить наш проект?
- Создайте новый скрипт для запуска всех модульных тестов и создания отчета о покрытии.
ПРИМЕЧАНИЕ. Этот скрипт создает новый файл с расширением JSON, поэтому для правильной работы нашего действия GitHub этот файл уже должен быть добавлен в проект при выполнении нашего PR. Так как если не выдается ошибка что файл не найден.
//package.json { "name": "my project", "version": "1.0.0", "scripts": { "coverage": "jest --json --coverage --outputFile=report.json" } //... }
2. Отредактируйте отчеты о покрытии из файла `jest.config.js` или файла сценария jest.
//jest.config.js module.exports = { collectCoverage: true, collectCoverageFrom: ["**/*.{js,vue}", "!**/node_modules/**"], coverageReporters: [ "text", "text-summary"] }
3. Создайте новый файл рабочего процесса в своем проекте. Файлы рабочего процесса хранятся в каталоге .github/workflows
вашего репозитория и определяют шаги, которые будет выполнять исполнитель GitHub Actions. Чтобы создать новый файл рабочего процесса, вы можете создать новый файл .yml
в каталоге .github/workflows
.
4. Добавьте новый шаг в файл рабочего процесса GitHub Actions. (e.g, coverage.yml)
5. Теперь нам нужно настроить, в какой среде наших веток мы хотим запускать наше действие GitHub.
#coverage.yml name: 'coverage' on: pull_request: branches: - main - develop
6. Включите разрешения на запуск нашего действия GitHub.
#coverage.yml jobs: coverage: permissions: checks: write pull-requests: write contents: write
7. Пришло время настроить окончательные этапы отчета.
runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: cache: 'yarn' - uses: ArtiomTr/[email protected] id: coverage with: annotations: none package-manager: yarn test-script: yarn coverage icons: emoji
В конце концов, у вас будет полная конфигурация, подобная следующей:
#coverage.yml name: 'coverage' on: pull_request: branches: - main - develop jobs: coverage: permissions: checks: write pull-requests: write contents: write runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: cache: 'yarn' - uses: ArtiomTr/[email protected] id: coverage with: annotations: none package-manager: yarn test-script: yarn coverage icons: emoji
Я делюсь окончательным результатом после того, как вы выполните свое действие GitHub, которое мы можем наблюдать в виде нашего отчета о процентах, количестве тестов и количестве наборов тестов, которые были выполнены в этот момент.
Также упомяните, что отчет выполняется снова, если в PR делается новая фиксация.
Таким образом, охват модульных тестов Jest с помощью GitHub Actions важен, потому что он помогает вам:
- Убедитесь, что ваш код хорошо протестирован.
- Уменьшите риск внесения ошибок в ваш код.
- Легко отслеживать качество ваших тестов с течением времени.
- Сообщите о качестве своих тестов другим.
- Повысьте уверенность в своем процессе разработки.
Спасибо за чтение! читаем скоро. 🙌🏽🙌🏽