Files
easystream-main/.github/workflows/test.yml
SamiAhmed7777 0b7e2d0a5b feat: Add comprehensive documentation suite and reorganize project structure
- Created complete documentation in docs/ directory
- Added PROJECT_OVERVIEW.md with feature highlights and getting started guide
- Added ARCHITECTURE.md with system design and technical details
- Added SECURITY.md with comprehensive security implementation guide
- Added DEVELOPMENT.md with development workflows and best practices
- Added DEPLOYMENT.md with production deployment instructions
- Added API.md with complete REST API documentation
- Added CONTRIBUTING.md with contribution guidelines
- Added CHANGELOG.md with version history and migration notes
- Reorganized all documentation files into docs/ directory for better organization
- Updated README.md with proper documentation links and quick navigation
- Enhanced project structure with professional documentation standards
2025-10-21 00:39:45 -07:00

209 lines
5.7 KiB
YAML

name: EasyStream Test Suite
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]
jobs:
test:
runs-on: ubuntu-latest
services:
mariadb:
image: mariadb:10.6
env:
MYSQL_ROOT_PASSWORD: test
MYSQL_DATABASE: easystream_test
MYSQL_USER: test
MYSQL_PASSWORD: test
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
redis:
image: redis:6
ports:
- 6379:6379
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
extensions: mbstring, xml, ctype, iconv, intl, pdo_mysql, redis, imagick, gd
coverage: xdebug
- name: Validate composer.json and composer.lock
run: composer validate --strict
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v3
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install dependencies
run: composer install --prefer-dist --no-progress --no-suggest
- name: Create test directories
run: |
mkdir -p tests/temp
mkdir -p tests/fixtures
mkdir -p tests/coverage
mkdir -p tests/results
mkdir -p f_data/logs/test
mkdir -p f_data/uploads/test
mkdir -p f_data/cache/test
chmod -R 777 f_data
- name: Wait for MariaDB
run: |
while ! mysqladmin ping -h"127.0.0.1" -P3306 -utest -ptest --silent; do
sleep 1
done
- name: Setup test database
run: |
mysql -h127.0.0.1 -P3306 -utest -ptest easystream_test < __install/easystream.sql
mysql -h127.0.0.1 -P3306 -utest -ptest easystream_test < tests/fixtures/test_data.sql
- name: Run PHPUnit tests
env:
DB_HOST: 127.0.0.1
DB_NAME: easystream_test
DB_USER: test
DB_PASS: test
REDIS_HOST: 127.0.0.1
REDIS_PORT: 6379
TESTING: true
run: composer run-script test-ci
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
with:
file: ./tests/coverage/clover.xml
flags: unittests
name: codecov-umbrella
fail_ci_if_error: false
- name: Archive test results
uses: actions/upload-artifact@v3
if: always()
with:
name: test-results
path: |
tests/results/
tests/coverage/
- name: Run security tests
env:
DB_HOST: 127.0.0.1
DB_NAME: easystream_test
DB_USER: test
DB_PASS: test
REDIS_HOST: 127.0.0.1
TESTING: true
run: composer run-script test-security
- name: Run performance tests
env:
DB_HOST: 127.0.0.1
DB_NAME: easystream_test
DB_USER: test
DB_PASS: test
REDIS_HOST: 127.0.0.1
TESTING: true
run: composer run-script test-performance
code-quality:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
extensions: mbstring, xml, ctype, iconv, intl
- name: Install dependencies
run: composer install --prefer-dist --no-progress --no-suggest
- name: Check PHP syntax
run: find . -name "*.php" -not -path "./vendor/*" -not -path "./f_core/f_classes/class_adodb/*" -not -path "./f_core/f_classes/class_smarty/*" | xargs -I {} php -l {}
- name: Run code style checks (if configured)
run: |
if [ -f "phpcs.xml" ]; then
./vendor/bin/phpcs
else
echo "No code style configuration found, skipping..."
fi
continue-on-error: true
integration-test:
runs-on: ubuntu-latest
services:
mariadb:
image: mariadb:10.6
env:
MYSQL_ROOT_PASSWORD: test
MYSQL_DATABASE: easystream_test
MYSQL_USER: test
MYSQL_PASSWORD: test
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
redis:
image: redis:6
ports:
- 6379:6379
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
extensions: mbstring, xml, ctype, iconv, intl, pdo_mysql, redis, imagick, gd
- name: Install dependencies
run: composer install --prefer-dist --no-progress --no-suggest
- name: Setup test environment
run: |
mkdir -p tests/temp tests/fixtures tests/coverage tests/results
mkdir -p f_data/logs/test f_data/uploads/test f_data/cache/test
chmod -R 777 f_data
- name: Setup test database
run: |
mysql -h127.0.0.1 -P3306 -utest -ptest easystream_test < __install/easystream.sql
mysql -h127.0.0.1 -P3306 -utest -ptest easystream_test < tests/fixtures/test_data.sql
- name: Run integration tests
env:
DB_HOST: 127.0.0.1
DB_NAME: easystream_test
DB_USER: test
DB_PASS: test
REDIS_HOST: 127.0.0.1
TESTING: true
run: composer run-script test-integration