Skip to content

Enable Common EVA Automated Integration and End2End Tests #143

Enable Common EVA Automated Integration and End2End Tests

Enable Common EVA Automated Integration and End2End Tests #143

Workflow file for this run

name: 'EVA Codeception Tests'
on: [ pull_request ]
jobs:
test:
strategy:
matrix:
suite: [ end2end ]
runs-on: ubuntu-latest
steps:
# ------------------------------------------------------------------------------
# Checkout the repo
# ------------------------------------------------------------------------------
- name: Checkout the repository
uses: actions/checkout@v4
with:
fetch-depth: 1000
token: ${{ secrets.GH_BOT_TOKEN }}
submodules: recursive
# ------------------------------------------------------------------------------
# Check if any PHP files have changed
# ------------------------------------------------------------------------------
- name: Check changed files
id: skip
run: |
num_php_files=$(git diff ${{ github.event.pull_request.base.sha }} HEAD --name-only | grep -P "\.php" | wc -l)
if [[ -z "$num_php_files" ]]; then
echo "value=1" >> $GITHUB_OUTPUT
echo "## No PHP Files changed, PHP tests automatically pass." >> $GITHUB_STEP_SUMMARY
elif [[ "$num_php_files" == "0" || "$num_php_files" == "" ]]; then
echo "value=1" >> $GITHUB_OUTPUT
echo "## No PHP Files changed, PHP tests automatically pass." >> $GITHUB_STEP_SUMMARY
else
echo "value=0" >> $GITHUB_OUTPUT
echo "## Found PHP file changes, running PHP tests." >> $GITHUB_STEP_SUMMARY
fi
# ------------------------------------------------------------------------------
# Checkout slic
# ------------------------------------------------------------------------------
- name: Checkout slic
uses: actions/checkout@v4
if: steps.skip.outputs.value != 1
with:
repository: stellarwp/slic
ref: main
path: slic
fetch-depth: 1
# ------------------------------------------------------------------------------
# Prepare our composer cache directory
# ------------------------------------------------------------------------------
- name: Get Composer Cache Directory
id: get-composer-cache-dir
if: steps.skip.outputs.value != 1
run: |
echo "::set-output name=dir::$(composer config cache-files-dir)"
- uses: actions/cache@v2
id: composer-cache
if: steps.skip.outputs.value != 1
with:
path: ${{ steps.get-composer-cache-dir.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-
# ------------------------------------------------------------------------------
# Initialize slic
# ------------------------------------------------------------------------------
- name: Move slic directory up
if: steps.skip.outputs.value != 1
run: |
mv slic ./../slic
- name: Set up slic env vars
if: steps.skip.outputs.value != 1
run: |
echo "SLIC_COMPOSER_VERSION=2" >> $GITHUB_ENV
echo "SLIC_BIN=${GITHUB_WORKSPACE}/../slic/slic" >> $GITHUB_ENV
echo "SLIC_WP_DIR=${GITHUB_WORKSPACE}/../slic/_wordpress" >> $GITHUB_ENV
- name: Set run context for slic
if: steps.skip.outputs.value != 1
run: echo "SLIC=1" >> $GITHUB_ENV && echo "CI=1" >> $GITHUB_ENV
- name: Start ssh-agent
if: steps.skip.outputs.value != 1
run: |
mkdir -p "${HOME}/.ssh";
ssh-agent -a /tmp/ssh_agent.sock;
- name: Export SSH_AUTH_SOCK env var
if: steps.skip.outputs.value != 1
run: echo "SSH_AUTH_SOCK=/tmp/ssh_agent.sock" >> $GITHUB_ENV
- name: Set up slic for CI
if: steps.skip.outputs.value != 1
run: |
cd ${GITHUB_WORKSPACE}/..
${SLIC_BIN} here
${SLIC_BIN} interactive off
${SLIC_BIN} build-prompt off
${SLIC_BIN} build-subdir off
${SLIC_BIN} xdebug off
${SLIC_BIN} composer-cache set /home/runner/.cache/composer
${SLIC_BIN} debug on
${SLIC_BIN} info
${SLIC_BIN} config
# ------------------------------------------------------------------------------
# Fetch branches for dependent repos
# ------------------------------------------------------------------------------
- name: Fetch head branch from TEC
uses: octokit/[email protected]
if: steps.skip.outputs.value != 1
id: fetch-tec-head-branch
with:
route: GET /repos/{owner}/{repo}/branches/${{ github.head_ref }}
owner: the-events-calendar
repo: the-events-calendar
env:
GITHUB_TOKEN: ${{ secrets.GH_BOT_TOKEN }}
continue-on-error: true
- name: Fetch base branch from TEC
uses: octokit/[email protected]
id: fetch-tec-base-branch
if: steps.skip.outputs.value != 1 && steps.fetch-tec-head-branch.outcome != 'success'
with:
route: GET /repos/{owner}/{repo}/branches/${{ github.base_ref }}
owner: the-events-calendar
repo: the-events-calendar
env:
GITHUB_TOKEN: ${{ secrets.GH_BOT_TOKEN }}
continue-on-error: true
- name: Fetch head branch from ET
uses: octokit/[email protected]
id: fetch-et-head-branch
if: steps.skip.outputs.value != 1
with:
route: GET /repos/{owner}/{repo}/branches/${{ github.head_ref }}
owner: the-events-calendar
repo: event-tickets
env:
GITHUB_TOKEN: ${{ secrets.GH_BOT_TOKEN }}
continue-on-error: true
- name: Fetch base branch from ET
uses: octokit/[email protected]
id: fetch-et-base-branch
if: steps.skip.outputs.value != 1 && steps.fetch-et-head-branch.outcome != 'success'
with:
route: GET /repos/{owner}/{repo}/branches/${{ github.base_ref }}
owner: the-events-calendar
repo: event-tickets
env:
GITHUB_TOKEN: ${{ secrets.GH_BOT_TOKEN }}
continue-on-error: true
- name: Fetch head branch from ET+
uses: octokit/[email protected]
id: fetch-et-plus-head-branch
if: steps.skip.outputs.value != 1
with:
route: GET /repos/{owner}/{repo}/branches/${{ github.head_ref }}
owner: the-events-calendar
repo: event-tickets-plus
env:
GITHUB_TOKEN: ${{ secrets.GH_BOT_TOKEN }}
continue-on-error: true
- name: Fetch base branch from ET+
uses: octokit/[email protected]
id: fetch-et-plus-base-branch
if: steps.skip.outputs.value != 1 && steps.fetch-et-plus-head-branch.outcome != 'success'
with:
route: GET /repos/{owner}/{repo}/branches/${{ github.base_ref }}
owner: the-events-calendar
repo: event-tickets-plus
env:
GITHUB_TOKEN: ${{ secrets.GH_BOT_TOKEN }}
continue-on-error: true
- name: Fetch head branch from Pro
uses: octokit/[email protected]
id: fetch-pro-head-branch
if: steps.skip.outputs.value != 1
with:
route: GET /repos/{owner}/{repo}/branches/${{ github.head_ref }}
owner: the-events-calendar
repo: events-pro
env:
GITHUB_TOKEN: ${{ secrets.GH_BOT_TOKEN }}
continue-on-error: true
- name: Fetch base branch from Pro
uses: octokit/[email protected]
id: fetch-pro-base-branch
if: steps.skip.outputs.value != 1 && steps.fetch-pro-head-branch.outcome != 'success'
with:
route: GET /repos/{owner}/{repo}/branches/${{ github.base_ref }}
owner: the-events-calendar
repo: events-pro
env:
GITHUB_TOKEN: ${{ secrets.GH_BOT_TOKEN }}
continue-on-error: true
# --------------------------------------------------------------------------
# Set TEC branch
# ------------------------------------------------------------------------------
- name: Set TEC with head branch
if: steps.skip.outputs.value != 1 && steps.fetch-tec-head-branch.outcome == 'success'
run: echo "TEC_BRANCH=${{ github.head_ref }}" >> $GITHUB_ENV
- name: Set TEC with base branch
if: steps.skip.outputs.value != 1 && steps.fetch-tec-head-branch.outcome != 'success' && steps.fetch-tec-base-branch.outcome == 'success'
run: echo "TEC_BRANCH=${{ github.base_ref }}" >> $GITHUB_ENV
- name: Set TEC with master branch
if: steps.skip.outputs.value != 1 && steps.fetch-tec-head-branch.outcome != 'success' && steps.fetch-tec-base-branch.outcome != 'success'
run: echo "TEC_BRANCH=master" >> $GITHUB_ENV
# ------------------------------------------------------------------------------
# Set ET branch
# ------------------------------------------------------------------------------
- name: Set ET with head branch
if: steps.skip.outputs.value != 1 && steps.fetch-et-head-branch.outcome == 'success'
run: echo "ET_BRANCH=${{ github.head_ref }}" >> $GITHUB_ENV
- name: Set ET with base branch
if: steps.skip.outputs.value != 1 && steps.fetch-et-head-branch.outcome != 'success' && steps.fetch-et-base-branch.outcome == 'success'
run: echo "ET_BRANCH=${{ github.base_ref }}" >> $GITHUB_ENV
- name: Set ET with master branch
if: steps.skip.outputs.value != 1 && steps.fetch-et-head-branch.outcome != 'success' && steps.fetch-et-base-branch.outcome != 'success'
run: echo "ET_BRANCH=master" >> $GITHUB_ENV
# ------------------------------------------------------------------------------
# Set ET+ branch
# ------------------------------------------------------------------------------
- name: Set ET+ with head branch
if: steps.skip.outputs.value != 1 && steps.fetch-et-plus-head-branch.outcome == 'success'
run: echo "ET_PLUS_BRANCH=${{ github.head_ref }}" >> $GITHUB_ENV
- name: Set ET+ with base branch
if: steps.skip.outputs.value != 1 && steps.fetch-et-plus-head-branch.outcome != 'success' && steps.fetch-et-plus-base-branch.outcome == 'success'
run: echo "ET_PLUS_BRANCH=${{ github.base_ref }}" >> $GITHUB_ENV
- name: Set ET+ with master branch
if: steps.skip.outputs.value != 1 && steps.fetch-et-plus-head-branch.outcome != 'success' && steps.fetch-et-plus-base-branch.outcome != 'success'
run: echo "ET_PLUS_BRANCH=master" >> $GITHUB_ENV
# --------------------------------------------------------------------------
# Set Pro branch
# --------------------------------------------------------------------------
- name: Set Pro with head branch
if: steps.skip.outputs.value != 1 && steps.fetch-pro-head-branch.outcome == 'success'
run: echo "PRO_BRANCH=${{ github.head_ref }}" >> $GITHUB_ENV
- name: Set Pro with base branch
if: steps.skip.outputs.value != 1 && steps.fetch-pro-head-branch.outcome != 'success' && steps.fetch-pro-base-branch.outcome == 'success'
run: echo "PRO_BRANCH=${{ github.base_ref }}" >> $GITHUB_ENV
- name: Set Pro with master branch
if: steps.skip.outputs.value != 1 && steps.fetch-pro-head-branch.outcome != 'success' && steps.fetch-pro-base-branch.outcome != 'success'
run: echo "PRO_BRANCH=master" >> $GITHUB_ENV
# --------------------------------------------------------------------------
# Clone and init TEC
# ------------------------------------------------------------------------------
- name: Clone TEC
uses: actions/checkout@v4
if: steps.skip.outputs.value != 1
with:
fetch-depth: 1
repository: the-events-calendar/the-events-calendar
ref: ${{ env.TEC_BRANCH }}
token: ${{ secrets.GH_BOT_TOKEN }}
path: the-events-calendar
submodules: recursive
- name: Init TEC
if: steps.skip.outputs.value != 1
run: |
mv ${GITHUB_WORKSPACE}/the-events-calendar ${GITHUB_WORKSPACE}/../the-events-calendar
docker network prune -f
${SLIC_BIN} use the-events-calendar
${SLIC_BIN} composer install --no-dev
# ------------------------------------------------------------------------------
# Clone and init ET
# ------------------------------------------------------------------------------
- name: Clone ET
uses: actions/checkout@v4
if: steps.skip.outputs.value != 1
with:
fetch-depth: 1
repository: the-events-calendar/event-tickets
ref: ${{ env.ET_BRANCH }}
token: ${{ secrets.GH_BOT_TOKEN }}
path: event-tickets
submodules: recursive
- name: Init ET
if: steps.skip.outputs.value != 1
run: |
mv ${GITHUB_WORKSPACE}/event-tickets ${GITHUB_WORKSPACE}/../event-tickets
docker network prune -f
${SLIC_BIN} use event-tickets
${SLIC_BIN} composer install --no-dev
- name: Set up Common
if: steps.skip.outputs.value != 1
run: |
docker network prune -f
${SLIC_BIN} use event-tickets/common
${SLIC_BIN} composer install --no-dev
# ------------------------------------------------------------------------------
# Clone and init ET+
# ------------------------------------------------------------------------------
- name: Clone ET+
uses: actions/checkout@v4
if: steps.skip.outputs.value != 1
with:
fetch-depth: 1
repository: the-events-calendar/event-tickets-plus
ref: ${{ env.ET_PLUS_BRANCH }}
token: ${{ secrets.GH_BOT_TOKEN }}
path: event-tickets-plus
submodules: recursive
- name: Init ET
if: steps.skip.outputs.value != 1
run: |
mv ${GITHUB_WORKSPACE}/event-tickets-plus ${GITHUB_WORKSPACE}/../event-tickets-plus
docker network prune -f
${SLIC_BIN} use event-tickets-plus
${SLIC_BIN} composer install --no-dev
# --------------------------------------------------------------------------
# Clone and init Pro
# --------------------------------------------------------------------------
- name: Clone Pro
uses: actions/checkout@v2
if: steps.skip.outputs.value != 1
with:
fetch-depth: 1
repository: the-events-calendar/events-pro
ref: ${{ env.PRO_BRANCH }}
token: ${{ secrets.GH_BOT_TOKEN }}
path: events-pro
submodules: recursive
- name: Init ET
if: steps.skip.outputs.value != 1
run: |
mv ${GITHUB_WORKSPACE}/events-pro ${GITHUB_WORKSPACE}/../events-pro
docker network prune -f
${SLIC_BIN} use events-pro
${SLIC_BIN} composer install --no-dev
# --------------------------------------------------------------------------
# Install and activate WooCommerce
# ------------------------------------------------------------------------------
- name: Install WooCommerce
if: steps.skip.outputs.value != 1
run: ${SLIC_BIN} site-cli plugin install woocommerce --version='8.2.2'
# ------------------------------------------------------------------------------
# Install and activate Easy Digital Downloads
# ------------------------------------------------------------------------------
- name: Install Easy Digital Downloads
if: steps.skip.outputs.value != 1
run: ${SLIC_BIN} site-cli plugin install easy-digital-downloads
# ------------------------------------------------------------------------------
# Set up Common
# ------------------------------------------------------------------------------
- name: Move Common inside TEC
if: steps.skip.outputs.value != 1
run: |
rm -rf ${GITHUB_WORKSPACE}/../the-events-calendar/common
cp -r ${GITHUB_WORKSPACE} ${GITHUB_WORKSPACE}/../the-events-calendar/common
# ------------------------------------------------------------------------------
# Set up Common and run tests
# ------------------------------------------------------------------------------
- name: Set up Common
if: steps.skip.outputs.value != 1
run: |
${SLIC_BIN} use the-events-calendar/common
${SLIC_BIN} composer install
- name: Init the WordPress container
if: steps.skip.outputs.value != 1
run: |
${SLIC_BIN} up wordpress
${SLIC_BIN} wp core version
${SLIC_BIN} wp core update --force --version=6.4.1
${SLIC_BIN} wp core version
- name: Run suite tests
if: steps.skip.outputs.value != 1
run: ${SLIC_BIN} run ${{ matrix.suite }} --debug
# ------------------------------------------------------------------------------
# Upload artifacts (On failure)
# ------------------------------------------------------------------------------
- name: Upload artifacts
uses: actions/upload-artifact@v4
if: ${{ steps.skip.outputs.value != 1 && failure() }}
with:
name: output ${{ matrix.suite }}
path: ${{ env.GITHUB_WORKSPACE }}/../the-events-calendar/common/tests/_output/
retention-days: 7
# ------------------------------------------------------------------------------
# Display current working directory and contents (On failure)
# ------------------------------------------------------------------------------
- name: Display current working directory and contents
if: ${{ steps.skip.outputs.value != 1 && failure() }}
run: |
echo "Current GITHUB_WORKSPACE directory: ${{ env.GITHUB_WORKSPACE }}"
echo "Current working directory: $(pwd)"
echo "Contents of the current directory:"
ls -la
echo "Listing 'tests/_output/' directories recursively:"
find . -type d -name '_output' -path '*/tests/_output'
echo "Contents of found '_output' directories:"
find . -type d -name '_output' -path '*/tests/_output' -exec ls -la {} \;