Mobile 4618 #2352
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Acceptance tests (Behat) | |
on: | |
workflow_dispatch: | |
inputs: | |
behat_tags: | |
description: 'Behat tags to execute' | |
moodle_branch: | |
description: 'Moodle branch' | |
required: true | |
default: 'main' | |
moodle_repository: | |
description: 'Moodle repository' | |
required: true | |
default: 'https://github.com/moodle/moodle.git' | |
pull_request: | |
branches: [ main, v*.x ] | |
concurrency: | |
group: acceptance-${{ github.ref }} | |
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
outputs: | |
tags: ${{ steps.set-tags.outputs.tags }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
path: app | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: 'app/.nvmrc' | |
- name: Install npm dependencies | |
working-directory: app | |
run: npm ci --no-audit | |
- name: Build app | |
working-directory: app | |
run: npm run build:test | |
- name: Generate SSL certificates | |
working-directory: app | |
run: | | |
mkdir ./ssl | |
openssl req -x509 -nodes \ | |
-days 365 \ | |
-newkey rsa:2048 \ | |
-keyout ./ssl/certificate.key \ | |
-out ./ssl/certificate.crt \ | |
-subj="/O=Moodle" | |
- name: Build Behat plugin | |
working-directory: app | |
run: ./scripts/build-behat-plugin.js ../plugin | |
- name: Prepare Behat tags | |
id: set-tags | |
working-directory: app | |
run: | | |
if [ -z $BEHAT_TAGS ]; then | |
tags_json=`.github/scripts/print_behat_tags_json.sh` | |
echo "tags=$tags_json" >> $GITHUB_OUTPUT; | |
else | |
echo "tags=[\"$BEHAT_TAGS\"]" >> $GITHUB_OUTPUT; | |
fi | |
env: | |
BEHAT_TAGS: ${{ github.event.inputs.behat_tags }} | |
# We need to upload an artifact so that the download-artifact action | |
# in the "complete" job does not fail if no other artifacts were uploaded. | |
- name: Create build logs | |
run: touch logs.txt | |
- name: Upload build logs | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build | |
path: logs.txt | |
- uses: actions/cache/save@v4 | |
with: | |
key: build-${{ github.sha }} | |
path: | | |
app/ssl/**/* | |
app/node_modules/**/* | |
app/www/**/* | |
plugin/**/* | |
behat: | |
runs-on: ubuntu-latest | |
needs: build | |
continue-on-error: true | |
strategy: | |
matrix: | |
tags: ${{ fromJSON(needs.build.outputs.tags) }} | |
services: | |
postgres: | |
image: postgres:13 | |
env: | |
POSTGRES_USER: 'postgres' | |
POSTGRES_HOST_AUTH_METHOD: 'trust' | |
ports: | |
- 5432:5432 | |
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
path: app | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: 'app/.nvmrc' | |
- uses: shivammathur/setup-php@v2 | |
with: | |
php-version: 8.1 | |
ini-values: max_input_vars=5000 | |
coverage: none | |
- uses: actions/cache/restore@v4 | |
with: | |
key: build-${{ github.sha }} | |
path: | | |
app/ssl/**/* | |
app/node_modules/**/* | |
app/www/**/* | |
plugin/**/* | |
- name: Launch Docker images | |
working-directory: app | |
run: | | |
docker run -d --rm \ | |
-p 8001:443 \ | |
--name moodleapp \ | |
-v ./www:/usr/share/nginx/html \ | |
-v ./nginx.conf:/etc/nginx/conf.d/default.conf \ | |
-v ./ssl/certificate.crt:/etc/ssl/certificate.crt \ | |
-v ./ssl/certificate.key:/etc/ssl/certificate.key \ | |
nginx:alpine | |
docker run -d --rm -p 8002:80 --name bigbluebutton moodlehq/bigbluebutton_mock:latest | |
- name: Initialise moodle-plugin-ci | |
run: | | |
composer create-project -n --no-dev --prefer-dist moodlehq/moodle-plugin-ci ci ^4.5 | |
echo $(cd ci/bin; pwd) >> $GITHUB_PATH | |
echo $(cd ci/vendor/bin; pwd) >> $GITHUB_PATH | |
sudo locale-gen en_AU.UTF-8 | |
# Install nvm v0.39.7 as a temporary workaround for issue: | |
# https://github.com/moodlehq/moodle-plugin-ci/issues/309 | |
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash | |
- name: Install Behat Snapshots plugin | |
run: moodle-plugin-ci add-plugin moodlemobile/moodle-local_behatsnapshots | |
- name: Install moodle-plugin-ci | |
run: moodle-plugin-ci install --plugin ./plugin --db-host=127.0.0.1 | |
env: | |
DB: pgsql | |
MOODLE_BRANCH: ${{ github.event.inputs.moodle_branch || 'main' }} | |
MOODLE_REPO: ${{ github.event.inputs.moodle_repository || 'https://github.com/moodle/moodle.git' }} | |
MOODLE_BEHAT_IONIC_WWWROOT: https://localhost:8001 | |
MOODLE_BEHAT_DEFAULT_BROWSER: chrome | |
MOODLE_BEHAT_CHROME_CAPABILITIES: "['extra_capabilities' => ['chromeOptions' => ['args' => ['--ignore-certificate-errors', '--allow-running-insecure-content']]]]" | |
- name: Update config | |
run: moodle-plugin-ci add-config 'define("TEST_MOD_BIGBLUEBUTTONBN_MOCK_SERVER", "http://localhost:8002/hash" . sha1($CFG->wwwroot));' | |
- name: Run Behat tests | |
run: moodle-plugin-ci behat --auto-rerun 3 --profile chrome --tags="@app&&~@local&&$BEHAT_TAGS" | |
env: | |
BEHAT_TAGS: ${{ matrix.tags }} | |
MOODLE_BEHAT_SELENIUM_IMAGE: selenium/standalone-chrome:120.0 | |
- name: Upload Snapshot failures | |
uses: actions/upload-artifact@v4 | |
if: ${{ failure() }} | |
with: | |
name: snapshot_failures-${{ matrix.tags }} | |
path: moodle/local/moodleappbehat/tests/behat/snapshots/failures/* | |
- name: Upload Behat failures | |
uses: actions/upload-artifact@v4 | |
if: ${{ failure() }} | |
with: | |
name: behat_failures-${{ matrix.tags }} | |
path: moodledata/behat_dump/* | |
complete: | |
runs-on: ubuntu-latest | |
needs: [behat] | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
path: artifacts | |
- name: Check failure artifacts | |
run: | | |
rm ./artifacts/build -rf | |
if [ -n "$(ls -A ./artifacts)" ]; then | |
echo "There were some failures in the previous jobs" | |
exit 1 | |
fi |