Skip to content

Merge pull request #4302 from ExpressionEngine/bug/7.x/validation-emo… #1469

Merge pull request #4302 from ExpressionEngine/bug/7.x/validation-emo…

Merge pull request #4302 from ExpressionEngine/bug/7.x/validation-emo… #1469

Workflow file for this run

name: Tests (full)
on:
push:
branches:
- '*.dev'
- 'release/**'
- '!release/**-alpha'
jobs:
cancel-running-tests:
runs-on: ubuntu-latest
timeout-minutes: 3
steps:
- name: Cancel running tests
uses: fkirc/skip-duplicate-actions@master
with:
cancel_others: true
build-for-testing:
needs: cancel-running-tests
name: Build EE for testing
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Cache repository info
uses: actions/cache@v4
with:
path: .git
key: cache-ee-git-${{ github.sha }}
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
extensions: dom, curl, sqlite, libxml, mbstring, zip, pcntl, pdo, mysql, bcmath, soap, intl, gd, exif, iconv, imagick
coverage: none
ini-values: error_log=/home/runner/php_errors.log, memory_limit=128M
- name: Checkout RedactorX
uses: actions/checkout@v4
with:
repository: ExpressionEngine/RedactorX
token: ${{ secrets.ORG_ACCESS_TOKEN }}
path: __redactorx
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: '10'
- name: Install build tool dependencies
working-directory: build-tools
run: npm install
- name: Get version
id: build_json
working-directory: build-tools
run: |
content=`node -pe 'JSON.parse(process.argv[1]).tag' "$(cat build.json)"`
echo "BUILD_VERSION=$content" >> $GITHUB_OUTPUT
- name: Run build process
working-directory: build-tools
env:
RELEASE_PRIVATE_KEY: ${{ secrets.RELEASE_PRIVATE_KEY }}
RELEASE_KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }}
APP_REPO_PATH: ${{ github.workspace }}
REDACTORX_REPO_PATH: ${{ github.workspace }}/__redactorx
run: gulp build-app --local --nogit --head --skip-lint --skip-pro --version=${{ steps.build_json.outputs.BUILD_VERSION }}
- name: Rename build directory
working-directory: build-tools/builds
run: |
mv ExpressionEngine${{ steps.build_json.outputs.BUILD_VERSION }} ExpressionEngine
- name: Cache built EE version
uses: actions/cache@v4
with:
path: build-tools/builds/ExpressionEngine
key: cache-ee-build-${{ github.sha }}
enableCrossOsArchive: true
- name: Directory Listing on Failure
if: failure()
run: |
ls -latr build-tools/builds
ls -latr build-tools/builds/ExpressionEngine
cypress:
needs: build-for-testing
runs-on: ${{ matrix.os }}
timeout-minutes: 45
strategy:
fail-fast: false
matrix:
php: [7.4, 8.0]
os: [ubuntu-20.04]
containers: [0, 1, 2, 3, 4 , 5]
include:
- php: 8.1
os: ubuntu-latest
containers: 0
- php: 8.1
os: ubuntu-latest
containers: 1
- php: 8.1
os: ubuntu-latest
containers: 2
- php: 8.1
os: ubuntu-latest
containers: 3
- php: 8.1
os: ubuntu-latest
containers: 4
- php: 8.1
os: ubuntu-latest
containers: 5
- php: 8.2
os: ubuntu-latest
containers: 0
- php: 8.2
os: ubuntu-latest
containers: 1
- php: 8.2
os: ubuntu-latest
containers: 2
- php: 8.2
os: ubuntu-latest
containers: 3
- php: 8.2
os: ubuntu-latest
containers: 4
- php: 8.2
os: ubuntu-latest
containers: 5
- php: 8.3
os: ubuntu-latest
containers: 0
- php: 8.3
os: ubuntu-latest
containers: 1
- php: 8.3
os: ubuntu-latest
containers: 2
- php: 8.3
os: ubuntu-latest
containers: 3
- php: 8.3
os: ubuntu-latest
containers: 4
- php: 8.3
os: ubuntu-latest
containers: 5
name: Cypress Tests, PHP${{ matrix.php }} - ${{ matrix.os }} ${{ matrix.containers }}
steps:
- name: Use cached EE build
uses: actions/cache@v4
with:
path: build-tools/builds/ExpressionEngine
key: cache-ee-build-${{ github.sha }}
fail-on-cache-miss: true
enableCrossOsArchive: true
- name: Move files to webroot
run: |
cp -R build-tools/builds/ExpressionEngine/* ./
- name: Restore cached git history
uses: actions/cache@v4
with:
path: .git
key: cache-ee-git-${{ github.sha }}
- name: Copy config.php
run: |
rm -f system/user/config/config.php
cp -f tests/cypress/support/config/config.php system/user/config/config.php
- name: Copy .env.php
run: |
rm -f .env.php
cp -f tests/cypress/support/config/.env.php .env.php
- name: Copy avatar file
run: |
cp -f tests/cypress/support/file-sync/images/8bit_kevin.png images/avatars/8bit_kevin.png
- name: Remove installer
run: |
mv system/ee/installer system/ee/_installer
- name: Add logs folder
run: |
mkdir system/user/logs
- name: Setup Permissions
run: |
sudo chmod 666 system/user/config/config.php
sudo chmod 777 system/user/config
sudo chmod -R 777 system/user/cache
sudo chmod -R 777 system/user/templates
sudo chmod -R 777 system/user/language
sudo chmod -R 777 system/user/logs
sudo chmod -R 777 tests/cypress/support/tmp
sudo chmod -R 777 tests/cypress/support/file-sync/uploads
sudo chmod -R 777 images
sudo chmod -R 777 themes/user
sudo chmod -R 777 tests/cypress/cypress/screenshots
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: dom, curl, sqlite, libxml, mbstring, zip, pcntl, pdo, mysql, bcmath, soap, intl, gd, exif, iconv, imagick
coverage: none
ini-values: error_log=/home/runner/php_errors.log, memory_limit=128M
- name: Configure MySQL
run: |
sudo systemctl start mysql
mysql -u root -proot -e 'CREATE DATABASE `ee-test`;'
mysql -u root -proot -e 'SET GLOBAL sql_mode="ONLY_FULL_GROUP_BY,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION";'
- name: Install Testing PHP dependencies
working-directory: tests/cypress
run: composer install
- name: Start PHP Server
run: php tests/serve.php &
- name: Start SMTP Server
run: |
npm install -g maildev
maildev &
# - name: Get Cypress Specs
# run: |
# echo "::set-output name=SPECS::$(node tests/cypress-split.js 4 ${{ matrix.containers }})"
# id: specs
- name: Install Chrome
uses: browser-actions/setup-chrome@latest
with:
chrome-version: latest
- name: Run Cypress Tests
if: matrix.php != '5.6'
uses: cypress-io/github-action@v6
with:
# spec: ${{ steps.specs.outputs.SPECS }}
browser: chrome
working-directory: tests/cypress
record: true
parallel: true
group: PHP${{ matrix.php }}
env:
CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }}
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Run Cypress Tests (PHP 5.6)
if: matrix.php == '5.6'
uses: cypress-io/github-action@v6
with:
browser: chrome
working-directory: tests/cypress
config: specPattern=cypress/integration/!(updater|pro)/**.ee6.js
record: true
parallel: true
group: PHP${{ matrix.php }}
env:
CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }}
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Run Cypress Tests (Electron)
uses: cypress-io/github-action@v6
if: matrix.php == '8.1'
with:
browser: electron
working-directory: tests/cypress
config-file: electron.cypress.config.js
env:
CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }}
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }}
- name: Archive screenshots
uses: actions/upload-artifact@v4
if: failure()
with:
name: cypress-tests-PHP${{ matrix.php }}-${{ matrix.containers }}
path: tests/cypress/cypress/screenshots/
- name: Archive server errors
uses: actions/upload-artifact@v4
if: failure()
with:
name: error.PHP${{ matrix.php }}-${{ matrix.containers }}.log
path: /home/runner/php_errors.log
- name: Archive JS errors
uses: actions/upload-artifact@v4
if: failure()
with:
name: js-error.PHP${{ matrix.php }}-${{ matrix.containers }}.log
path: tests/cypress/cypress/downloads/js.log.txt
- name: Archive EE error logs
uses: actions/upload-artifact@v4
with:
name: ee-error-logs.PHP${{ matrix.php }}-${{ matrix.containers }}
path: system/user/logs/