PHPackages                             staffim/parallelrunner - 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. staffim/parallelrunner

ActiveLibrary[Testing &amp; Quality](/categories/testing)

staffim/parallelrunner
======================

Prallel runner extension for Behat

011PHP

Since Dec 10Pushed 12y ago2 watchersCompare

[ Source](https://github.com/staffim/ParallelRunner)[ Packagist](https://packagist.org/packages/staffim/parallelrunner)[ RSS](/packages/staffim-parallelrunner/feed)WikiDiscussions master Synced 3w ago

READMEChangelogDependenciesVersions (1)Used By (0)

Behat Parallel Runner
=====================

[](#behat-parallel-runner)

Installation
------------

[](#installation)

This extension requires:

- Behat 2.4+

### Through Composer

[](#through-composer)

1. Set dependencies in your **composer.json**:

```
{
    "require": {
        ...
        "shvetsgroup/parallelrunner": "dev-master"
    }
}
```

2. Install/update your vendors:

```
$ curl http://getcomposer.org/installer | php
$ php composer.phar install
```

Configuration
-------------

[](#configuration)

As a bare minimum requirement, activate extension in your **behat.yml**:

```
default:
  extensions:
    shvetsgroup\ParallelRunner\Extension: ~
```

### Separate environments for test processes

[](#separate-environments-for-test-processes)

In certain cases, it's useful to run testing processes in separate environments (e.g. if test results of one test could break other test's data). For this purpose, you should define behat profiles in your configuration file and pass their names to "profile" parameter of the extension like this:

```
default:
  extensions:
    shvetsgroup\ParallelRunner\Extension:
      profiles:
        - environment1
        - environment2
...

environment1:
  some_data: ...

environment2:
  some_data: ...
```

Now, let's say you've run the test with 4 parallel processes. The first process will be launched with "environment1" profile, second with "environment2", and the rest with the default profile (or profile, which was passed in --config option).

### Running tests in parallel by default

[](#running-tests-in-parallel-by-default)

If you want all of your tests to run in parallel, just specify default number of parallel processes in your configuration file. Note: this number can be overridden by --parallel option.

```
default:
  extensions:
    shvetsgroup\ParallelRunner\Extension:
      process_count: 4
```

Usage
-----

[](#usage)

Use "--parallel" or "-l" parameter to specify number of concurrent test processes. For example:

```
$ bin/behat -l 4
```

Troubleshooting
---------------

[](#troubleshooting)

1. If you're using Selenium, make sure it's launched in Hub mode to get all the benefits of parallelism ([http://selenium-grid.seleniumhq.org/run\_the\_demo.html](http://selenium-grid.seleniumhq.org/run_the_demo.html)).
2. This extension does not work with features which have closures as definitions (you'll get "Serialization of 'Closure' is not allowed" errors most likely).

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 61.5% of commits — single point of failure

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.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/347306?v=4)[Vyacheslav Salakhutdinov](/maintainers/megazoll)[@megazoll](https://github.com/megazoll)

---

Top Contributors

[![neochief](https://avatars.githubusercontent.com/u/121889?v=4)](https://github.com/neochief "neochief (16 commits)")[![anton-siardziuk](https://avatars.githubusercontent.com/u/301661?v=4)](https://github.com/anton-siardziuk "anton-siardziuk (4 commits)")[![m0ppers](https://avatars.githubusercontent.com/u/819421?v=4)](https://github.com/m0ppers "m0ppers (2 commits)")[![ClementGautier](https://avatars.githubusercontent.com/u/660091?v=4)](https://github.com/ClementGautier "ClementGautier (1 commits)")[![marekkalnik](https://avatars.githubusercontent.com/u/548629?v=4)](https://github.com/marekkalnik "marekkalnik (1 commits)")[![megazoll](https://avatars.githubusercontent.com/u/347306?v=4)](https://github.com/megazoll "megazoll (1 commits)")[![ciarand](https://avatars.githubusercontent.com/u/2149341?v=4)](https://github.com/ciarand "ciarand (1 commits)")

### Embed Badge

![Health badge](/badges/staffim-parallelrunner/health.svg)

```
[![Health](https://phpackages.com/badges/staffim-parallelrunner/health.svg)](https://phpackages.com/packages/staffim-parallelrunner)
```

###  Alternatives

[dms/phpunit-arraysubset-asserts

This package provides ArraySubset and related asserts once deprecated in PHPUnit 8

14429.2M352](/packages/dms-phpunit-arraysubset-asserts)[phpbenchmark/phpbenchmark

Easy to use benchmark toolkit for your PHP-application. This library contains classes for comparing algorithms as well as benchmarking application responses

8011.5k2](/packages/phpbenchmark-phpbenchmark)

PHPackages © 2026

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