name: Behat tests 🐞 on: [push, pull_request] jobs: build: name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }} runs-on: ubuntu-20.04 strategy: fail-fast: false matrix: operating-system: [ubuntu-latest] php-versions: ['8.0'] 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 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 .github/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, date.timezone=Europe/Paris - 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.json') }} restore-keys: ${{ runner.os }}-composer- - name: Install dependencies with composer run: composer install --no-progress - 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 2.4.2 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 PHP settings run: | 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 sed -i "s/MAILER_DSN=sendmail:\/\/default/MAILER_DSN=null:\/\/null/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/skill.feature -vv ../../vendor/behat/behat/bin/behat features/socialGroup.feature -vvv ../../vendor/behat/behat/bin/behat features/systemAnnouncements.feature -vvv ../../vendor/behat/behat/bin/behat features/ticket.feature -vvv ../../vendor/behat/behat/bin/behat features/toolAgenda.feature -vvv ../../vendor/behat/behat/bin/behat features/toolAnnouncement.feature -vvv ../../vendor/behat/behat/bin/behat features/toolAttendance.feature -vvv ../../vendor/behat/behat/bin/behat features/toolDocument.feature -vvv # ../../vendor/behat/behat/bin/behat features/toolExercise.feature -vvv ../../vendor/behat/behat/bin/behat features/toolForum.feature -vvv ../../vendor/behat/behat/bin/behat features/toolGroup.feature -vvv ../../vendor/behat/behat/bin/behat features/toolLink.feature -vvv ../../vendor/behat/behat/bin/behat features/toolLp.feature -vvv ../../vendor/behat/behat/bin/behat features/toolThematic.feature -vvv ../../vendor/behat/behat/bin/behat features/toolWork.feature -vvv - name: The job has failed if: ${{ failure() }} run: | cat selenium.log