| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 | <?phpnamespace Codeception\Extension;use Codeception\Event\FailEvent;use Codeception\Events;use Codeception\Extension;use Codeception\Subscriber\Console;/** * DotReporter provides less verbose output for test execution. * Like PHPUnit printer it prints dots "." for successful testes and "F" for failures. * *  * * ```bash *  .......... *  .......... *  .......... *  .......... *  .......... *  .......... *  .......... *  .......... * * Time: 2.07 seconds, Memory: 20.00MB * * OK (80 tests, 124 assertions) * ``` * * * Enable this reporter with `--ext option` * * ``` * codecept run --ext DotReporter * ``` * * Failures and Errors are printed by a standard Codeception reporter. * Use this extension as an example for building custom reporters. */class DotReporter extends Extension{    /**     * @var Console     */    protected $standardReporter;    protected $errors = [];    protected $failures = [];    protected $width = 10;    protected $currentPos = 0;    public function _initialize()    {        $this->options['silent'] = false; // turn on printing for this extension        $this->_reconfigure(['settings' => ['silent' => true]]); // turn off printing for everything else        $this->standardReporter = new Console($this->options);        $this->width = $this->standardReporter->detectWidth();    }    // we are listening for events    public static $events = [        Events::SUITE_BEFORE => 'beforeSuite',        Events::TEST_SUCCESS => 'success',        Events::TEST_FAIL    => 'fail',        Events::TEST_ERROR   => 'error',        Events::TEST_SKIPPED => 'skipped',        Events::TEST_FAIL_PRINT => 'printFailed'    ];    public function beforeSuite()    {        $this->writeln("");    }    public function success()    {        $this->printChar('.');    }    public function fail(FailEvent $e)    {        $this->printChar("<error>F</error>");    }    public function error(FailEvent $e)    {        $this->printChar('<error>E</error>');    }    public function skipped()    {        $this->printChar('S');    }        protected function printChar($char)    {        if ($this->currentPos >= $this->width) {            $this->writeln('');            $this->currentPos = 0;        }        $this->write($char);        $this->currentPos++;    }    public function printFailed(FailEvent $event)    {        $this->standardReporter->printFail($event);    }}
 |