Skip to content

Dev/build npm action #109

Dev/build npm action

Dev/build npm action #109

Workflow file for this run

name: E2E test for EC-CUBE
on:
push:
branches:
- '*'
tags:
- '*'
paths:
- '**'
- '!*.md'
pull_request:
paths:
- '**'
- '!*.md'
jobs:
codeception:
name: Codeception
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
php: [ 8.3 ]
db: [ pgsql ]
group: [ 'admin01', 'admin02', 'admin03', 'front', 'restrict-fileupload', 'installer' ]
include:
- db: pgsql
database_url: postgres://postgres:[email protected]:5432/eccube_db
database_server_version: 14
- group: 'admin01'
app_env: 'codeception'
- group: 'admin02'
app_env: 'codeception'
- group: 'admin03'
app_env: 'codeception'
- group: 'front'
app_env: 'codeception'
- group: 'restrict-fileupload'
app_env: 'codeception'
- group: 'installer'
app_env: 'install'
services:
postgres:
image: postgres:14
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
ports:
- 5432:5432
# needed because the postgres container does not provide a healthcheck
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
mailcatcher:
image: schickling/mailcatcher
ports:
- 1080:1080
- 1025:1025
steps:
- name: Checkout
uses: actions/checkout@master
- name: Setup PHP
uses: nanasess/setup-php@master
with:
php-version: ${{ matrix.php }}
- name: Initialize Composer
uses: ./.github/actions/composer
- name: Build Sass and JavaScript
run: |
npm ci
npm run build
- name: Setup to EC-CUBE
env:
APP_ENV: ${{ matrix.app_env }}
DATABASE_URL: ${{ matrix.database_url }}
DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }}
run: |
echo "APP_ENV=${APP_ENV}" > .env
echo "TRUSTED_HOSTS=127.0.0.1,localhost" >> .env
bin/console doctrine:database:create --env=dev
bin/console doctrine:schema:create --env=dev
bin/console eccube:fixtures:load --env=dev
- name: setup-chromedriver
uses: nanasess/setup-chromedriver@master
- name: Install fonts
run: sudo apt install fonts-ipafont fonts-ipaexfont
- name: Run chromedriver
run: |
export DISPLAY=:99
chromedriver --url-base=/wd/hub &
echo ">>> Started chrome-driver"
sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 &
echo ">>> Started xvfb"
- name: Run package-api
run: |
if [[ ! -d ${PWD}/repos ]]; then mkdir -p ${PWD}/repos ; fi
docker run -d --rm -v ${PWD}/repos:/repos -e MOCK_REPO_DIR=/repos -p 8080:8080 eccube/mock-package-api:composer2
for d in $(ls codeception/_data/plugins | grep 1.0.0)
do
(cd codeception/_data/plugins/$d; tar zcf ../../../../repos/${d}.tgz *)
done
- name: Start PHP Development Server
if: ${{ matrix.group != 'restrict-fileupload' }}
env:
APP_ENV: 'codeception'
DATABASE_URL: ${{ matrix.database_url }}
DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }}
MAILER_DSN: 'smtp://127.0.0.1:1025'
ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080'
run: php -S 127.0.0.1:8000 codeception/router.php &
- name: Start PHP Development Server
if: ${{ matrix.group == 'restrict-fileupload' }}
env:
APP_ENV: 'codeception'
DATABASE_URL: ${{ matrix.database_url }}
DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }}
MAILER_DSN: 'smtp://127.0.0.1:1025'
ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080'
ECCUBE_RESTRICT_FILE_UPLOAD: '1'
run: php -S 127.0.0.1:8000 codeception/router.php &
- name: Codeception
if: ${{ matrix.group != 'restrict-fileupload' }}
env:
APP_ENV: ${{ matrix.app_env }}
DATABASE_URL: ${{ matrix.database_url }}
DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }}
MAILER_DSN: 'smtp://127.0.0.1:1025'
ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080'
GROUP: ${{ matrix.group }}
SYMFONY_DEPRECATIONS_HELPER: weak
run: |
sed -i "s|%GITHUB_WORKSPACE%|${GITHUB_WORKSPACE}|g" codeception/_envs/github_action.yml
vendor/bin/codecept -vvv run acceptance --env chrome,github_action -g ${GROUP} --skip-group restrict-file-upload --html report.html
- name: Codeception with Restrict file upload
if: ${{ matrix.group == 'restrict-fileupload' }}
env:
APP_ENV: ${{ matrix.app_env }}
DATABASE_URL: ${{ matrix.database_url }}
DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }}
MAILER_DSN: 'smtp://127.0.0.1:1025'
ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080'
GROUP: ${{ matrix.group }}
SYMFONY_DEPRECATIONS_HELPER: weak
ECCUBE_RESTRICT_FILE_UPLOAD: '1'
run: |
sed -i "s|%GITHUB_WORKSPACE%|${GITHUB_WORKSPACE}|g" codeception/_envs/github_action.yml
vendor/bin/codecept -vvv run acceptance --env chrome,github_action -g ${GROUP} --html report.html
- name: Get ScreenShots
run: |
echo 'google-chrome --headless --no-sandbox --disable-gpu --screenshot=$1 --virtual-time-budget=10000 $2' > take_screenshot.sh
chmod +x take_screenshot.sh
docker run --rm --network="host" -v $(pwd):/screenshots selenium/standalone-chrome bash -c "/screenshots/take_screenshot.sh /screenshot/front_top.png http://127.0.0.1:8080"
docker run --rm --network="host" -v $(pwd):/screenshots selenium/standalone-chrome bash -c "/screenshots/take_screenshot.sh /screenshot/admin_top.png http://127.0.0.1:8080/admin"
- name: Upload evidence
if: failure()
uses: actions/upload-artifact@v4
with:
name: codeception-${{ matrix.group }}-evidence
path: codeception/_output/
- name: Upload ScreenShots
uses: actions/upload-artifact@v4
with:
name: screenshots
path: |
front_top.png
admin_top.png
- name: Upload logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: codeception-${{ matrix.group }}-logs
path: var/log/