Download the PHP package cruciblephp/crucible without Composer

On this page you can find all versions of the php package cruciblephp/crucible. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package crucible

Crucible PHP

An independent, XML-free test framework for PHP 8.3+ — drop-in compatible with PHPUnit suites, engineered like the best runners of other ecosystems.

And when it finishes — where the time went, in columns, with the verdict last:

On a real Pest 5 suite, faster than Pest itself — same 1,926 tests, same machine, alternated runs; method and raw times in benchmarks/manifest.json:

And 1.1.0 against 1.0.1 on spatie/laravel-data, a Pest suite on Orchestra Testbench, where discovery and each test class's setup cost 1.0.1 the most:

Already have a phpunit.xml? ./vendor/bin/crucible migrate-config converts it, and tells you about anything it could not translate rather than dropping it silently.


Requirements

PHP 8.3 or newer, and nothing else. No runtime dependencies — the extensions below ship with a stock PHP build.

PHP >= 8.3
Extensions ext-dom, ext-mbstring, ext-simplexml
Composer dependencies none
Optional ext-xdebug or ext-pcov for coverage · Node for the browser tier

The floor is deliberate: a suite on 8.3 should not have to move the whole project to a newer PHP to change test runner.


Start here

The whole manual, in the terminal: ↑/↓ to scroll, / to search, number keys to follow a link, ⌫ to go back, q to quit. Piped or in CI it prints the same text plainly.

Everything below is a summary. The manual is the real document.


Three dialects, one run

Every sample is from examples/, and those files are run by the test suite — an example that stopped working turns the suite red.


PHPStan, built in

Crucible ships its own PHPStan extension. With phpstan/extension-installer there is nothing to wire; without it, crucible phpstan-init writes the one include line. It covers what phpstan-phpunit and pest-plugin-phpstan give a migrated suite — assertions narrow, expect() is generic, $this is typed in Pest closures — held line by line against both. And it goes further:

Dataset rows that the test cannot take are reported before anything runs, assertType() calls in *.types.php files are tests in the run, and Gen::of('<type>') draws property-test data from a type string.


Documentation

crucible manual All of it, in the terminal
MANUAL.md The same document, on the web
HELP.md Every command-line option
examples/ Executable examples, run by the suite
RELEASE.md What shipped, traced to its decision record
DESIGN.md Why each thing is the way it is
ORACLES.md The real installs some tests run against, and how to rebuild them

The idea

Spec, not source. Crucible is a clean-room implementation. PHPUnit defines the behavioral spec — assertions, attributes, CLI options, defaults, exit codes — established from public documentation and black-box observation of the binary, never read as source. No code, templates, doc comments, or message text are copied from any project.

Compatibility is executable, not claimed. 19 fixture suites run against both the real phpunit binary and crucible, asserting identical outcomes, sequences, counts, issue tallies and exit codes. Every machine-readable report — Clover, Cobertura, Crap4J, JUnit, TeamCity, coverage XML — is compared against the incumbent's own writer too, by structure and by the numbers inside it.

If it can be done better, do it better. A versioned NDJSON event stream as the single output substrate, supervisor/worker execution where that stream is the IPC, duration-aware and defects-first scheduling, VMVM-style state isolation, Ekstazi-style impact selection.

DESIGN.md has the reasoning, decision by decision.


The code is MIT. The name "Crucible" and the Crucible logo are trademarks of Luciano Federico Pereira and are not covered by that licence — see LICENSE. Fork the software freely; do not ship it under this name or mark.

© 2026 Luciano Federico Pereira · cruciblephp.com


All versions of crucible with dependencies

PHP Build Version
Package Version
Requires php Version >=8.3
ext-dom Version *
ext-mbstring Version *
ext-simplexml Version *
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package cruciblephp/crucible contains the following files

Loading the files please wait ...