API test coverage with Codeception

I’ve never been able to get code coverage to work for my API. I’ve seen quite a few people have problems. Is there actually a way to have API test coverage included in your overall test coverage.

Here is my api.suite.yml




class_name: ApiTester

modules:

    enabled:

      - REST:

          depends: PhpBrowser

          part: Json

      - Yii2:

          part: [orm, fixtures]

          configFile: 'config/web.php'

    config:

        PhpBrowser:

            url: http://reporting.local/api/ 

            curl:

                CURLOPT_TIMEOUT: 300



Overall codeception.yml




coverage:

    c3_url: http://reporting.local/c3.php

    enabled: true

    #remote: true

    include:

        - models/*

        - controllers/*

        ...



All these tests pass when I run without --coverage flags.

I’d read many issues on github on how to get them to work and there doesnt seem to be a robust solution.

If I run with coverage flags I start getting errors for some calls.

[GuzzleHttp\Exception\RequestException] cURL error 56: Recv failure: Connection was reset (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

Some still pass though, but coverage is always 0%.

I’ve seen some people say the REST mnodule is the problem, I’ve removed that before, but then I get all kinds of errors about missing functions.

Has anyone managed to get this coverage working when doing REST API tests?