Skip to content

Commit

Permalink
Merge branch 'normalize-the-asset-api' into bring-media-assets-into-t…
Browse files Browse the repository at this point in the history
…he-hyde-kernel
  • Loading branch information
caendesilva committed Aug 2, 2024
2 parents e077ac6 + 74eed1f commit 398a5b8
Show file tree
Hide file tree
Showing 5 changed files with 140 additions and 81 deletions.
6 changes: 4 additions & 2 deletions .github/workflows/coverage-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ on:
pull_request:

jobs:

test-coverage:
runs-on: ubuntu-latest
steps:
Expand All @@ -15,6 +14,9 @@ jobs:
extensions: fileinfo
- uses: actions/checkout@v4

- name: Validate composer.json and composer.lock
run: composer validate --strict --no-check-all

- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v4
Expand All @@ -41,4 +43,4 @@ jobs:
- name: Ping statistics server with test results
run: |
curl https://raw.githubusercontent.com/hydephp/develop/6e9d17f31879f4ccda13a3fec4029c9663bccec0/monorepo/scripts/ping-openanalytics-testrunner.php -o ping.php
php ping.php "Monorepo Coverage Tests" ${{ secrets.OPENANALYTICS_TOKEN }} ${{ github.ref_name }}
php ping.php "Monorepo Coverage Tests" ${{ secrets.OPENANALYTICS_TOKEN }} ${{ github.ref_name }}
137 changes: 101 additions & 36 deletions .github/workflows/smoke-tests.yml
Original file line number Diff line number Diff line change
@@ -1,65 +1,130 @@
# This workflow is especially helpful for pull requests to quickly see if the other tests will definitely fail.
# In order to get even quicker feedback, we also ping our Continuous Integration server to get a status check
# as soon as we know the outcome, as the GitHub Actions Pull Request UI takes a little bit to update.

name: 🔥 Smoke Tests
name: 🔥 Parallel Smoke Tests

on:
pull_request:

jobs:

run-smoke-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Validate composer.json and composer.lock
run: composer validate --strict --no-check-all
- name: Checkout code
uses: actions/checkout@v4
with:
path: src

- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v4
with:
path: vendor
path: src/vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install Composer Dependencies
run: composer install --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
run: |
cd src && composer install --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
- name: Run smoke tests
id: smoke-tests
run: vendor/bin/pest --stop-on-failure --log-junit report.xml
- name: Prepare test directories
run: |
setup_directory() {
local suite=$1
mkdir -p "${suite}_tests"
cp -al src/. "${suite}_tests/"
}
# Create hard links for all suites
for suite in unit feature_hyde feature_framework publications realtime_compiler; do
setup_directory $suite
done
# Move the .git directory out of src
mv src/.git .
- name: Ping continuous integration server with test status
if: always() && github.event.repository.full_name == 'hydephp/develop'
- name: Execute Tests in Parallel
run: |
bearerToken="${{ secrets.CI_SERVER_TOKEN }}"
commit="${{ github.event.pull_request.head.sha }}"
url="${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
mkdir -p test_results
mkdir -p test_outputs
# If bearerToken is not set, we we exit early as we are probably running on a fork
if [ -z "$bearerToken" ]; then
echo "Exiting early as bearerToken is not set"
exit 0
fi
# Function to run tests
run_tests() {
local suite=$1
local testsuite=$2
echo "${suite^} tests started"
cd ${suite}_tests
if vendor/bin/pest --colors=always --log-junit="../test_results/${suite}_junit.xml" --testsuite="$testsuite" > "../test_outputs/${suite}.log" 2>&1; then
echo "${suite^} tests completed successfully"
else
echo "${suite^} tests failed"
return 1
fi
}
# Run tests in parallel and capture exit codes
run_tests unit UnitFramework & pid1=$!
run_tests feature_hyde FeatureHyde & pid2=$!
run_tests feature_framework FeatureFramework & pid3=$!
run_tests publications Publications & pid4=$!
run_tests realtime_compiler "Realtime Compiler" & pid5=$!
# Wait for all background jobs to finish and capture exit codes
wait $pid1 || echo "Unit tests failed" >> test_failures
wait $pid2 || echo "Feature Hyde tests failed" >> test_failures
wait $pid3 || echo "Feature Framework tests failed" >> test_failures
wait $pid4 || echo "Publications tests failed" >> test_failures
wait $pid5 || echo "Realtime Compiler tests failed" >> test_failures
if [ ${{ steps.smoke-tests.outcome }} == "failure" ]; then
status=false
else
status=true
# Check if any tests failed
if [ -f test_failures ]; then
echo "The following test suites failed:"
cat test_failures
exit 1
fi
curl -X POST --fail-with-body \
-H "Authorization: Bearer $bearerToken" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"commit":"'"$commit"'", "status":'$status', "url":"'"$url"'"}' \
https://ci.hydephp.com/api/test-run-reports
- name: Display Unit Tests Output
if: always()
run: cat test_outputs/unit.log

- name: Display Feature Hyde Tests Output
if: always()
run: cat test_outputs/feature_hyde.log

- name: Display Feature Framework Tests Output
if: always()
run: cat test_outputs/feature_framework.log

- name: Display Publications Tests Output
if: always()
run: cat test_outputs/publications.log

- name: Display Realtime Compiler Tests Output
if: always()
run: cat test_outputs/realtime_compiler.log

- name: Merge JUnit XML Reports
if: always()
run: |
php -r '
$files = glob("test_results/*_junit.xml");
$totalTests = $totalAssertions = $totalTime = 0;
foreach ($files as $file) {
$xml = simplexml_load_file($file);
$totalTests += (int)$xml->testsuite["tests"];
$totalAssertions += (int)$xml->testsuite["assertions"];
$totalTime += (float)$xml->testsuite["time"];
}
$output = sprintf(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<testsuites>\n <testsuite name=\"%s\" tests=\"%d\" assertions=\"%d\" errors=\"0\" failures=\"0\" skipped=\"0\" time=\"%.6f\">\n </testsuite>\n</testsuites>",
"H:\\monorepo\\phpunit.xml.dist",
$totalTests,
$totalAssertions,
$totalTime
);
file_put_contents("report.xml", $output);
'
- name: Ping statistics server with test results
if: always()
run: |
curl https://raw.githubusercontent.com/hydephp/develop/6e9d17f31879f4ccda13a3fec4029c9663bccec0/monorepo/scripts/ping-openanalytics-testrunner.php -o ping.php
php ping.php "Monorepo Smoke Tests" ${{ secrets.OPENANALYTICS_TOKEN }} ${{ github.ref_name }}
68 changes: 32 additions & 36 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/testing/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
"require": {
"php": "^8.0",
"illuminate/support": "^10.0",
"laravel/dusk": "^7.11.3",
"laravel/dusk": "^8.2.2",
"mockery/mockery": "^1.4.4",
"pestphp/pest": "^v2.1.0",
"ext-dom": "*",
Expand Down
Loading

0 comments on commit 398a5b8

Please sign in to comment.