leanphp/behat-code-coverage

Generate Code Coverage reports for Behat tests


Keywords
BDD, Behat, build, test, code, generation, tests, report, coverage, reports, generate, code-coverage, scenario, clover, behat-extension, coverage-extension, coverage-generation, coverage-report, php, php7, phpdbg, testing-tools, xdebug
License
BSD-2-Clause

Documentation

behat-code-coverage

License Latest Stable Version Total Downloads Travis AppVeyor Pre Release

behat-code-coverage is a Behat extension that generates Code Coverage reports for Behat tests.

Generating Code Coverage reports allows you to to analyze which parts of your codebase are tested and how well. However, Code Coverage alone should NOT be used as a single metric defining how good your tests are.

Note! This is a maintained fork of vipsoft/code-coverage-extension, including codebase for vipsoft/code-coverage-common package with compatible version numbers for stable releases.

Requirements

Change Log

Please see CHANGELOG.md for information on recent changes.

Install

Install this package as a development dependency in your project:

$ composer require --dev leanphp/behat-code-coverage

Enable extension by editing behat.yml of your project:

default:
  extensions:
    LeanPHP\Behat\CodeCoverage\Extension:
      drivers:
        - local
      filter:
        whitelist:
          include:
            directories:
              'src': ~
      report:
        format:   html
        options:
          target: build/behat-coverage

This will sufficient to enable Code Coverage generation in html format in build/behat-coverage directory. This extension supports various Configuration options. For a fully annotated example configuration file check Configuration section.

Usage

If you execute bin/behat command, you will see code coverage generated in target (i.e. build/behat-coverage) directory (in html format):

$ bin/behat

Running with phpdbg

This extension now supports phpdbg, which results in faster execution when using more recent versions of PHP. Run phpspec via phpdbg:

$ phpdbg -qrr bin/behat run

Configuration

You can see fully annotated behat.yml example file below, which can be used as a starting point to further customize the defaults of the extension. The configuration file below has all of the [Configuration Options](#Configuration Options).

# behat.yml
# ...
default:
  extensions:
    LeanPHP\Behat\CodeCoverage\Extension:
      # http auth (optional)
      auth:        ~
      # select which driver to use when gatherig coverage data
      drivers:
        - local     # local Xdebug driver
      # filter options
      filter:
        forceCoversAnnotation:                false
        mapTestClassNameToCoveredClassName:   false
        whitelist:
          addUncoveredFilesFromWhitelist:     true
          processUncoveredFilesFromWhitelist: false
          include:
            directories:
              'src': ~
              'tests':
                suffix: '.php'
#           files:
#             - script1.php
#             - script2.php
#         exclude:
#           directories:
#             'vendor': ~
#             'path/to/dir':
#               'suffix': '.php'
#               'prefix': 'Test'
#           files:
#             - tests/bootstrap.php
      # report configuration
      report:
        # report format (html, clover, php, text)
        format:    html
        # report options
        options:
          target: build/behat-coverage/html

Configuration Options

  • auth - HTTP authentication options (optional).
  • create (method / path) - override options for create method:
    • method - specify a method (default: POST)
    • path - specify path (default: /)
  • read (method / path) - override options (method and path) for read method.
    • method - specify a method (default: GET)
    • path - specify path (default: /)
  • delete (method / path) - override options (method and path) for delete method.
    • method - specify a method (default: DELETE)
    • path - specify path (default: /)
  • drivers - a list of drivers for gathering code coverage data:
    • local - local Xdebug driver (default).
    • remote - remote Xdebug driver (disabled by default).
  • filter - various filter options:
    • forceCoversAnnotation - (default: false)
    • mapTestClassNameToCoveredClassName - (default: false)
    • whiltelist - whitelist specific options:
      • addUncoveredFilesFromWhiltelist - (default: true)
      • processUncoveredFilesFromWhitelist - (default: false)
      • include - a list of files or directories to include in whitelist:
        • directories - key containing whitelisted directories to include.
          • suffix - suffix for files to be included (default: '.php')
          • prefix - prefix of files to be included (default: '') (optional)
        • files - a list containing whitelisted files to include.
      • exclude - a list of files or directories to exclude from whitelist:
        • directories - key containing whitelisted directories to exclude.
          • suffix - suffix for files to be included (default: '.php')
          • prefix - prefix of files to be included (default: '') (optional)
        • files - key containing whitelisted files to exclude.
  • report - reporter options:
    • format - specify report format (html, clover, php, text)
    • options - format options:
      • target - target/output directory

Authors

Copyright (c) 2017 ek9 dev@ek9.co (https://ek9.co).

Copyright (c) 2013-2016 Anthon Pang, Konstantin Kudryashov everzet and various contributors for portions of code from vipsoft/code-coverage-extension and vipsoft/code-coverage-common projects.

License

Licensed under BSD-2-Clause License.