Skip to content

Merge remote-tracking branch 'origin/master' #379

Merge remote-tracking branch 'origin/master'

Merge remote-tracking branch 'origin/master' #379

name: e2e-test-chrome
on:
push:
branches:
- "*"
pull_request:
branches: [ master ]
jobs:
run:
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
operating-system: [ 'ubuntu-latest' ]
# operating-system: [ubuntu-latest, macos-latest, windows-latest]
php-versions: [ '7.4', '8.0', '8.1', '8.2', '8.3' ]
name: End-to-End Test for Chrome on ${{ matrix.operating-system }} with PHP ${{ matrix.php-versions }}
services:
mysql: # https://qiita.com/sayama0402/items/e863ffb597ce87bf2e2f
image: mysql:8.0
ports:
- 3306:3306
env:
MYSQL_ROOT_PASSWORD: EeLeBui7%Eesa4oto
options: --health-cmd "mysqladmin ping -h localhost" --health-interval 20s --health-timeout 10s --health-retries 10
postgres:
image: postgres:16
ports:
- 5432:5432
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: EeLeBui7%Eesa4oto
POSTGRES_DB: test_db
# volumes:
# - /home/runner/work/INTER-Mediator/INTER-Mediator/dist-docs/sample_schema_pgsql.sql:/docker-entrypoint-initdb.d/sample_schema_pgsql.sql
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
steps:
- uses: actions/checkout@v4
- name: Install PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
extensions: intl #optional
ini-values: "post_max_size=256M" #optional
- name: Print Env Varialbles
run: printenv
- name: PHP Module Checking
run: php -m
- name: Get Composer Cache Directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Update dependencies
run: composer update
- name: Install dependencies
run: composer install --prefer-dist --no-progress
- name: Setup MySQL
run: |
mysql -h 127.0.0.1 --port 3306 -u root --password=EeLeBui7%Eesa4oto < ./dist-docs/sample_schema_mysql.sql
mysql -h 127.0.0.1 --port 3306 -u root --password=EeLeBui7%Eesa4oto -e "CREATE USER IF NOT EXISTS 'web'@'%' IDENTIFIED BY 'password';"
mysql -h 127.0.0.1 --port 3306 -u root --password=EeLeBui7%Eesa4oto -e "GRANT SELECT, INSERT, DELETE, UPDATE ON TABLE test_db.* TO 'web'@'%';"
mysql -h 127.0.0.1 --port 3306 -u root --password=EeLeBui7%Eesa4oto -e "GRANT SHOW VIEW ON TABLE test_db.* TO 'web'@'%';"
- name: Setup PostgreSQL
run: psql --quiet postgresql://postgres:EeLeBui7%25Eesa4oto@127.0.0.1:5432/test_db < ./dist-docs/sample_schema_pgsql.sql
# - name: Check MySQL
# run: mysql -h 127.0.0.1 --port 3306 -u web --password=password -e "select * from person;" test_db
- name: Setup SQLite
run: |
touch sample.sq3
sqlite3 sample.sq3 < ./dist-docs/sample_schema_sqlite.sql
chmod 777 sample.sq3
# chown www-data sample.sq3
- name: Modify params.php file
run: |
echo "" >> params.php
echo "\$defaultTimezone = 'UTC';" >> params.php
echo "\$followingTimezones = true;" >> params.php
echo "" >> params.php
# E2E test with WebdriverIO
- name: Setup Headless Chrome
uses: browser-actions/setup-chromium@latest
with:
chrome-version: 126
install-chromedriver: true
#chrome-version: latest
- name: Setup WebdriverIO
run: cd spec/run; npm install
- name: Boot the web server with php server mode
run: |
GHPORTNUM=`expr 9000 + \`echo -n ${{ matrix.php-versions }} | sed -e "s/\.//g"\``
mv "spec/run/wdio-chrome.conf.js" "spec/run/wdio-chrome.conf.js.bak"
cat "spec/run/wdio-chrome.conf.js.bak" | sed -e "s/9000/`echo -n ${GHPORTNUM}`/" > "spec/run/wdio-chrome.conf.js"
php -S "localhost:${GHPORTNUM}" &
- name: Starting End-to-End Tests with Google Chrome
run: cd spec/run;npx wdio wdio-chrome.conf.js
# - name: Modify params.php file for clinet-sync
# run: |
# GHPORTNUM=`expr 33451 + \`echo -n ${{ matrix.php-versions }} | sed -e "s/\.//g"\``
# echo "" >> params.php
# echo "$notUseServiceServer = false;" >> params.php
# echo "$activateClientService = true; " >> params.php
# echo "$serviceServerProtocol = \"ws\";" >> params.php
# echo "$serviceServerHost = \"localhost\";" >> params.php
# echo "$serviceServerPort = \"${GHPORTNUM}\";" >> params.php
# echo "$serviceServerConnect = \"http://localhost\";" >> params.php
# echo "$bootWithInstalledNode = false;" >> params.php
# echo "$preventSSAutoBoot = false;" >> params.php
# echo "$backSeconds = 3600 * 24 * 2;" >> params.php
# echo "$foreverLog = '/tmp/nodemon.log';" >> params.php
# echo "" >> params.php
#
# - name: Starting End-to-End Tests about Clinet Synchronization with Google Chrome
# run: cd spec/run;npx wdio wdio-sync-chrome.conf.js