Skip to content

Getting Started

Prism is a comprehensive testing CLI for PHP 8.5+ that provides a beautiful, feature-rich interface for running validation test suites with Termwind-powered output.

Terminal window
composer require cline/prism

Prism executes validation tests defined in JSON test files and provides detailed reporting of results.

Create a prism.php file in your project root:

<?php
use Cline\Prism\Contracts\PrismTestInterface;
return [
new class implements PrismTestInterface {
public function getName(): string
{
return 'my-validator';
}
public function getTestDirectory(): string
{
return __DIR__ . '/tests/validation';
}
public function shouldIncludeFile(string $filePath): bool
{
return true; // Include all JSON files
}
public function decodeJson(string $json): mixed
{
return json_decode($json, true, 512, JSON_THROW_ON_ERROR);
}
public function validate(mixed $data, mixed $schema = null): object
{
// Your validation logic here
$isValid = /* your validation */;
return new class($isValid) {
public function __construct(private bool $isValid) {}
public function isValid(): bool { return $this->isValid; }
};
}
},
];

Create JSON test files in your test directory:

[
{
"description": "String validation tests",
"schema": {
"type": "string"
},
"tests": [
{
"description": "valid string",
"data": "hello",
"valid": true,
"tags": ["string", "basic"]
},
{
"description": "invalid type",
"data": 123,
"valid": false,
"tags": ["string", "type-error"]
}
]
}
]
Terminal window
vendor/bin/prism test

Beautiful, color-coded output with Termwind:

Terminal window
vendor/bin/prism test

Plain text output suitable for continuous integration:

Terminal window
vendor/bin/prism test --ci

Show detailed information with syntax-highlighted JSON diff:

Terminal window
vendor/bin/prism test --failures

See each test as it runs with real-time progress:

Terminal window
vendor/bin/prism test --verbose
# or shorthand
vendor/bin/prism test -v

Displays:

  • ✓/✗ icon for pass/fail
  • Test group and description
  • Execution time per test
  • Error messages in red

Display the Prism version:

Terminal window
vendor/bin/prism --version

Check the examples/ directory in the Prism repository for complete working examples:

  • basic/ - JSON schema validation with type checking, required fields, and format validation
  • filtering/ - Tag-based filtering and test organization (coming soon)
  • custom-assertions/ - Domain-specific validation rules (coming soon)
  • comparison/ - Multi-validator comparison (coming soon)

Each example includes:

  • Complete prism.php configuration
  • Test cases with expected results
  • README with usage instructions
Terminal window
vendor/bin/prism test --filter "string.*"
Terminal window
vendor/bin/prism test --draft draft-7
Terminal window
vendor/bin/prism test --parallel 4

Automatically re-run tests when files change:

Terminal window
vendor/bin/prism test --watch