Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/.github/workflows/behat.yml

210 lines
9.6 KiB

name: Behat tests 🐞
on: [push, pull_request]
jobs:
build:
name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }}
runs-on: ubuntu-18.04
strategy:
fail-fast: false
matrix:
operating-system: [ubuntu-latest]
php-versions: ['7.4', '8.0']
# services:
# mysql:
# image: mysql:5.7
# env:
# MYSQL_ALLOW_EMPTY_PASSWORD: false
# MYSQL_ROOT_PASSWORD: chamilo
# MYSQL_DATABASE: chamilo
# ports:
# - 3306/tcp
# options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup apache
run: |
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install nodejs nodejs-dev node-gyp libssl1.0-dev npm apache2 php${{ matrix.php-versions }} php${{ matrix.php-versions }}-common php${{ matrix.php-versions }}-cli libapache2-mod-php${{ matrix.php-versions }}
sudo a2enmod rewrite actions
sudo cp -f tests/travis/gh-apache /etc/apache2/sites-available/000-default.conf
sudo chmod 777 -R $HOME
cat /etc/apache2/sites-available/000-default.conf
sudo service apache2 restart
sudo systemctl restart apache2
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, xml, ctype, iconv, intl, pdo, pdo_mysql, dom, gd, json, soap, zip, bcmath
ini-values: post_max_size=256M, max_execution_time=600, memory_limit=4096M
- name: Get composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache composer dependencies
uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
# Use composer.json for key, if composer.lock is not committed.
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Install dependencies with composer
run: composer install --prefer-dist --no-progress --optimize-autoloader
- name: Install assets
run: php bin/console assets:install
- name: Generate fos_js_routes.json
run: php bin/console fos:js-routing:dump --format=json --target=public/js/fos_js_routes.json
- name: Install Yarn
run: |
sudo npm install -g yarn
yarn set version berry
yarn --version
- name: Get yarn cache directory
id: yarn-cache
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
- name: Cache yarn dependencies
uses: actions/cache@v2
with:
path: ${{ steps.yarn-cache.outputs.dir }}
# Use composer.json for key, if composer.lock is not committed.
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: ${{ runner.os }}-yarn-
- name: Install JS dependencies
run: |
yarn install
- name: Yarn run encore
run: |
yarn run encore production
- name: Start chrome
run: |
sudo apt-get install google-chrome-stable
google-chrome --version
google-chrome-stable --version
google-chrome-stable --headless --disable-gpu --remote-debugging-port=9222 http://localhost &
whereis google-chrome-stable
# https://github.com/marketplace/actions/setup-chromedriver
- name: Start chromedriver
uses: nanasess/setup-chromedriver@master
with:
# Optional: do not specify to match Chrome's version
chromedriver-version: '88.0.4324.96'
- run: |
export DISPLAY=:99
chromedriver --url-base=/wd/hub &
sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & # optional
# wget https://chromedriver.storage.googleapis.com/88.0.4324.96/chromedriver_linux64.zip --quiet && unzip chromedriver_linux64.zip
# sudo mv chromedriver /usr/bin
# sudo chmod +x /usr/bin/chromedriver
# chromedriver --version
# - run: |
# export DISPLAY=:99
# chromedriver --url-base=/wd/hub &
# sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & # optional
# chromedriver --version
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Get Selenium
run: |
wget http://selenium-release.storage.googleapis.com/3.141/selenium-server-standalone-3.141.59.jar --quiet
- name: Run Selenium
run: |
java -version
export DISPLAY=:99.0
sudo xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 &
java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar selenium-server-standalone-3.141.59.jar -log selenium.log > /dev/null &
- name: Start mysql service
run: |
sudo /etc/init.d/mysql start
sudo systemctl restart apache2
- name: Check settings
run: |
php vendor/bin/requirements-checker
php -ini
php -v
php -m
- name: Check chamilo
run: |
sudo chmod 777 -R ${{ github.workspace }}
curl http://localhost/main/install/index.php
- name: Install chamilo
run: |
cd tests/behat
../../vendor/behat/behat/bin/behat features/actionInstall.feature -vvv
cd ..
cd ..
sed -i "s/APP_ENV='dev'/APP_ENV='prod'/g" .env.local
sed -i "s/APP_DEBUG='1'/APP_DEBUG='0'/g" .env.local
sudo php bin/console cache:clear
sudo chmod -R 777 var public
- name: Behat tests
run: |
cd ${{ github.workspace }}/tests/behat
../../vendor/behat/behat/bin/behat features/actionUserLogin.feature -vvv
../../vendor/behat/behat/bin/behat features/adminFillUsers.feature -vvv
../../vendor/behat/behat/bin/behat features/adminSettings.feature -vv
../../vendor/behat/behat/bin/behat features/career.feature -vvv
../../vendor/behat/behat/bin/behat features/class.feature -vvv
#../../vendor/behat/behat/bin/behat features/companyReports.feature -vvv
../../vendor/behat/behat/bin/behat features/course.feature -vvv
../../vendor/behat/behat/bin/behat features/course_user_registration.feature -vv
../../vendor/behat/behat/bin/behat features/courseCategory.feature -vvv
../../vendor/behat/behat/bin/behat features/createUser.feature -vvv
../../vendor/behat/behat/bin/behat features/createUserViaCSV.feature -vv
../../vendor/behat/behat/bin/behat features/extraFieldUser.feature -vv
../../vendor/behat/behat/bin/behat features/profile.feature -vv
../../vendor/behat/behat/bin/behat features/promotion.feature -vv
# ../../vendor/behat/behat/bin/behat features/registration.feature -vv
../../vendor/behat/behat/bin/behat features/sessionAccess.feature -vv
../../vendor/behat/behat/bin/behat features/sessionManagement.feature -vv
../../vendor/behat/behat/bin/behat features/socialGroup.feature -vv
../../vendor/behat/behat/bin/behat features/systemAnnouncements.feature -vv
../../vendor/behat/behat/bin/behat features/ticket.feature -vv
../../vendor/behat/behat/bin/behat features/toolAgenda.feature -vv
../../vendor/behat/behat/bin/behat features/toolAnnouncement.feature -vv
../../vendor/behat/behat/bin/behat features/toolDocument.feature -vv
# ../../vendor/behat/behat/bin/behat features/toolExercise.feature -v
../../vendor/behat/behat/bin/behat features/toolForum.feature -vv
../../vendor/behat/behat/bin/behat features/toolGroup.feature -vv
../../vendor/behat/behat/bin/behat features/toolLink.feature -vv
../../vendor/behat/behat/bin/behat features/toolLp.feature -vvv
../../vendor/behat/behat/bin/behat features/toolWork.feature -vvv
- name: The job has failed
if: ${{ failure() }}
run: |
cat selenium.log