/allure-php-commons2

Allure integrations for PHP test frameworks: Commons Module

Primary LanguagePHPApache License 2.0Apache-2.0

Allure PHP Commons

Version Build Type Coverage Psalm Level License

This repository contains PHP API for Allure framework. The main idea is to reuse this API when creating adapters for different test frameworks.

Getting started

In order to use this API you simply need to add the following to composer.json:

{
    "require": {
        "php": "^8",
        "allure-framework/allure-php-commons": "^2"
    }
}

Custom attributes

You can easily implement custom attributes and use them with your test framework. In most cases you would like to implement Qameta\Allure\Attribute\AttributeSetInterface that allows to set several attributes at once:

<?php

use Qameta\Allure\Attribute\AttributeSetInterface;
use Qameta\Allure\Attribute\DisplayName;
use Qameta\Allure\Attribute\Tag;

#[Attribute(Attribute::TARGET_CLASS | Attribute::TARGET_METHOD)]
class MyAttribute implements AttributeSetInterface
{
    private array $tags;

    public function __construct(
        private string $displayName,
        string ...$tags,
    ) {
        $this->tags = $tags;
    }
    
    public function getAttributes() : array
    {
        return [
            new DisplayName($this->displayName),
            ...array_map(
                fn (string $tag): Tag => new Tag($tag),
                $this->tags,
            ),
        ];
    }
}

// Example of usage
#[MyAttribute('Test name', 'tag 1', 'tag 2')]
class MyTestClass
{
}

You can also implement particular attribute interfaces instead of using one of the standard implementations:

Other usage examples

See allure-phpunit and allure-codeception projects.