PHPackages                             pronovix/drupal-qa - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Testing &amp; Quality](/categories/testing)
4. /
5. pronovix/drupal-qa

ActiveComposer-plugin[Testing &amp; Quality](/categories/testing)

pronovix/drupal-qa
==================

QA tools for Drupal.

5.3.0(3mo ago)343.2k↓63.7%3GPL-2.0-or-laterPHPPHP ~8.3.0

Since Aug 26Pushed 2mo ago5 watchersCompare

[ Source](https://github.com/Pronovix/drupal-qa)[ Packagist](https://packagist.org/packages/pronovix/drupal-qa)[ RSS](/packages/pronovix-drupal-qa/feed)WikiDiscussions master Synced 2d ago

READMEChangelogDependencies (34)Versions (307)Used By (0)

Drupal QA
=========

[](#drupal-qa)

Set of modules and libraries and configurations that helps quality assurance in Drupal.

Automated tasks executed when this plugin is installed
------------------------------------------------------

[](#automated-tasks-executed-when-this-plugin-is-installed)

- [phpcs.xml.dist](./config/phpcs.xml.dist) gets symlinked to the Composer project root if it does not exist
- [phpstan.neon.dist](./config/skeletons/phpstan.neon.dist) and [phpstan.baseline.neon](./config/skeletons/phpstan-baseline.neon)gets copied to the Composer project root if they do not exist

Available commands
------------------

[](#available-commands)

### Drupal QA commands

[](#drupal-qa-commands)

- `composer drupalqa:phpcs:config-install` - installs Pronovix's PHP CodeSniffer configuration for Drupal projects (the plugin tries to install it automatically when it gets installed)
- `composer drupalqa:testrunner:download` - installs latest version of Pronovix's TestRunner Go application from [Github](https://github.com/Pronovix/testrunner). (You can avoid API rate limit error if you [configure your Github OAuth access token](https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens).)
- `drupalqa:phpstan:ensure-configs-exist` ensures base configurations for PHPStan (stored in [./config/skeletons/](./config/skeletons)) are available in Composer project root

### 3rd-party commands

[](#3rd-party-commands)

- `composer normalize` - Normalizes the composer.json (provided by `localheinz/composer-normalize`)
- `./vendor/bin/twigcs` - Checks TWIG files for violations on coding standards. (provided by `friendsoftwig/twigcs`)
- `./vendor/bin/phpstan` - PHP static analysis tool. (provided by `phpstan/phpstan`)

Packages included
-----------------

[](#packages-included)

### Code quality

[](#code-quality)

- Composer Normalize:
- PHP CodeSniffer Standards Composer Installer Plugin:
- PHPStan:
- Slevomat Coding Standard:

### Testing

[](#testing)

- Behat Screenshot Extension:
- Behat Drupal Extension:

Plus various other packages (like Drupal Coder, PHPUnit, etc.) required by [webflo/drupal-core-require-dev](https://github.com/webflo/drupal-core-require-dev).

Development notes
-----------------

[](#development-notes)

**ALL** classes, interfaces in this project are internal and not meant to be used by other projects. **No backward-compatibility promise is given for these.**

Running QA checks:

- First fix auto-fixable issues with `composer lint:fix && composer static:fix`
- then run checks`composer lint:check && composer static:check`

###  Health Score

61

—

FairBetter than 98% of packages

Maintenance83

Actively maintained with recent releases

Popularity33

Limited adoption so far

Community18

Small or concentrated contributor base

Maturity93

Battle-tested with a long release history

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~8 days

Total

305

Last Release

96d ago

Major Versions

2.x-dev → 3.2.0-alpha12021-11-16

3.15.0-alpha7 → 4.1.0-alpha22023-09-19

4.12.0-alpha6 → 5.0.0-alpha12025-06-06

4.12.0 → 5.0.0-alpha22025-06-18

4.12.3 → 5.3.0-alpha42026-03-30

PHP version history (10 changes)2.0.0-alpha10PHP ^7.1

2.13.0-alpha2PHP ^7.2.0

3.0.0-alpha3PHP ^7.3.0

3.2.0-alpha1PHP ^7.4.0

3.7.0-alpha1PHP ~7.4.0 || ~8.0.0 || ~8.1.6

3.7.0PHP ~7.4.0 || ~8.1.6

3.11.1PHP ~8.1.6

4.5.0-alpha1PHP ~8.1.6 || ~8.2.0

4.10.0-alpha1PHP ~8.1.6 || ~8.2.0 || ~8.3.0

4.12.0-alpha1PHP ~8.3.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/4b934519ad88d26f2171de1abed39ae7441ac3f3947a3b25e4bc46aa41939ae6?d=identicon)[tamasd](/maintainers/tamasd)

---

Top Contributors

[![mxr576](https://avatars.githubusercontent.com/u/1755573?v=4)](https://github.com/mxr576 "mxr576 (30 commits)")[![morvaim2](https://avatars.githubusercontent.com/u/52444452?v=4)](https://github.com/morvaim2 "morvaim2 (23 commits)")[![gkurucz](https://avatars.githubusercontent.com/u/13573052?v=4)](https://github.com/gkurucz "gkurucz (5 commits)")[![attilafekete](https://avatars.githubusercontent.com/u/384029?v=4)](https://github.com/attilafekete "attilafekete (3 commits)")[![boobaa](https://avatars.githubusercontent.com/u/294106?v=4)](https://github.com/boobaa "boobaa (1 commits)")[![tamasd](https://avatars.githubusercontent.com/u/40811?v=4)](https://github.com/tamasd "tamasd (1 commits)")[![ycecube](https://avatars.githubusercontent.com/u/7201339?v=4)](https://github.com/ycecube "ycecube (1 commits)")

---

Tags

behatcode-qualitycode-styledrupalphpunittestingcomposertestingdevCode styledrupalqacode quality

### Embed Badge

![Health badge](/badges/pronovix-drupal-qa/health.svg)

```
[![Health](https://phpackages.com/badges/pronovix-drupal-qa/health.svg)](https://phpackages.com/packages/pronovix-drupal-qa)
```

###  Alternatives

[wp-cli/wp-cli-tests

WP-CLI testing framework

423.1M142](/packages/wp-cli-wp-cli-tests)[drupal/core-dev

require-dev dependencies from drupal/drupal; use in addition to drupal/core-recommended to run tests from drupal/core.

2022.6M343](/packages/drupal-core-dev)[ec-europa/toolkit

Toolkit packaged for Drupal projects based on Robo.

40252.8k34](/packages/ec-europa-toolkit)[drevops/behat-steps

Collection of steps for Behat

27432.0k4](/packages/drevops-behat-steps)[drupal/drupal-extension

Drupal extension for Behat

22215.7M173](/packages/drupal-drupal-extension)[dealerdirect/phpcodesniffer-composer-installer

PHP\_CodeSniffer Standards Composer Installer Plugin

601175.5M2.4k](/packages/dealerdirect-phpcodesniffer-composer-installer)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
