Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DEX-943] Send phpunit tests to Report Portal #154

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,15 @@ jobs:
string=': void'
grep -r -l "$string" tests/ | xargs sed -i "s/$string//g"

- name: Set ReportPortal configuration
# ReportPortal agent only works for PHP 7.1, 7.2, 7.3 and 7.4
if: (github.ref_name == 'main' || github.ref_name == 'develop') && vars.REPORT_PORTAL_ENABLED == 'true' && contains(fromJson('["7.1", "7.2", "7.3", "7.4"]'), matrix.php)
run: ./tests/reportportal/reportportal_conf.sh
env:
REPORT_PORTAL_API_KEY: ${{ secrets.REPORT_PORTAL_API_KEY }}
REPORT_PORTAL_ENDPOINT: ${{ vars.REPORT_PORTAL_ENDPOINT }}
PHP_VERSION: ${{ matrix.php }}

- name: PHPUnit
run: |
case ${{ matrix.php }} in
Expand Down
37 changes: 37 additions & 0 deletions tests/reportportal/ReportPortalHTTPService.php.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
312c312
< $result = self::$client->post('v1/' . self::$projectName . '/launch', array(
---
> $result = self::$client->post('v2/' . self::$projectName . '/launch', array(
337c337
< $result = self::$client->put('v1/' . self::$projectName . '/launch/' . self::$launchID . '/finish', array(
---
> $result = self::$client->put('v2/' . self::$projectName . '/launch/' . self::$launchID . '/finish', array(
358c358
< $result = self::$client->put('v1/' . self::$projectName . '/launch/' . self::$launchID . '/stop', array(
---
> $result = self::$client->put('v2/' . self::$projectName . '/launch/' . self::$launchID . '/stop', array(
383c383
< $result = self::$client->post('v1/' . self::$projectName . '/item', array(
---
> $result = self::$client->post('v2/' . self::$projectName . '/item', array(
425c425
< $result = self::$client->post('v1/' . self::$projectName . '/log', array(
---
> $result = self::$client->post('v2/' . self::$projectName . '/log', array(
478c478
< 'v1/' . self::$projectName . '/log',
---
> 'v2/' . self::$projectName . '/log',
500c500
< $result = self::$client->put('v1/' . self::$projectName . '/item/' . $itemID, array(
---
> $result = self::$client->put('v2/' . self::$projectName . '/item/' . $itemID, array(
507c507,508
< 'status' => $status
---
> 'status' => $status,
> 'launchUuid' => self::$launchID
544c545
< $result = self::$client->post('v1/' . self::$projectName . '/item/' . $parentItemID, array(
---
> $result = self::$client->post('v2/' . self::$projectName . '/item/' . $parentItemID, array(
33 changes: 33 additions & 0 deletions tests/reportportal/reportportal_conf.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/usr/bin/env bash

# exit if REPORT_PORTAL_API_KEY or REPORT_PORTAL_ENDPOINT is not set
if [ -z "$REPORT_PORTAL_API_KEY" ] || [ -z "$REPORT_PORTAL_ENDPOINT" ]; then
echo "Please set REPORT_PORTAL_API_KEY and REPORT_PORTAL_ENDPOINT environment variables"
exit 1
fi

# Remove /api/v1 or api/v2 from REPORT_PORTAL_ENDPOINT (reportportal/agent-php-PHPUnit requires only host)
export REPORT_PORTAL_HOST=${REPORT_PORTAL_ENDPOINT/\/api\/v[12]/}

# Add secrets values in tests/reportportal_phpunit_conf_template.xml
# Following environment variables are used:
# REPORT_PORTAL_API_KEY
# REPORT_PORTAL_HOST
# PHP_VERSION
envsubst < tests/reportportal/reportportal_phpunit_conf_template.xml > tests/reportportal/reportportal_phpunit_conf.xml

# Add conf for ReportPortal extension in phpunit.ci.xml
# Inserts content of file tests/reportportal_phpunit_conf.xml before </phpunit> end tag in phpunit.ci.xml
sed -i $'/<\/phpunit>/{e cat tests/reportportal/reportportal_phpunit_conf.xml\n}' phpunit.ci.xml

# Add ReportPortal extension to composer.json
# reportportal/phpunit has no stable version, so we set minimum stability to dev only when running tests
composer config minimum-stability dev
# This is not supported by all versions of PHP, so we need to install it separately
composer require --dev reportportal/phpunit

# Patch reportportal/basic to make it compatible with api/v2
# Patch content:
# * Replace api/v1 (hardcoded in reportportal/basic) by api/v2
# * Add launchUuid to finishItem method (otherwise all tests will be marked as "interrupted")
patch vendor/reportportal/basic/src/service/ReportPortalHTTPService.php tests/reportportal/ReportPortalHTTPService.php.patch
12 changes: 12 additions & 0 deletions tests/reportportal/reportportal_phpunit_conf_template.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<listeners>
<listener class="agentPHPUnit" file="vendor/reportportal/phpunit/src/agentPHPUnit.php">
<arguments>
<string>${REPORT_PORTAL_API_KEY}</string>
<string>${REPORT_PORTAL_HOST}</string>
<string>integrations</string>
<string>.000+00:00</string>
<string>alma-php-client PHPUnit tests</string>
<string>PHP version: ${PHP_VERSION}</string>
</arguments>
</listener>
</listeners>