Skip to content

MOBILE-3947: Coverage reports #8

MOBILE-3947: Coverage reports

MOBILE-3947: Coverage reports #8

Workflow file for this run

name: Coverage
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
path: app
- uses: actions/setup-node@v3
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: npx ionic build --configuration=testing -- --source-map=true
env:
NODE_ENV: testing
NODE_OPTIONS: --max-old-space-size=16384
MOODLE_APP_COVERAGE: true
- name: Build Behat plugin
working-directory: app
run: ./scripts/build-behat-plugin.js ../plugin
- uses: actions/cache/save@v3
with:
key: build-${{ github.sha }}
path: |
app/www/**/*
app/node_modules/**/*
plugin/**/*
jest:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v3
with:
path: app
- uses: actions/setup-node@v3
with:
node-version-file: 'app/.nvmrc'
- uses: actions/cache/restore@v3
with:
key: build-${{ github.sha }}
path: |
app/www/**/*
app/node_modules/**/*
plugin/**/*
- name: Run Jest tests
working-directory: app
run: |
NODE_ENV=testing npx gulp
npx jest --coverage --coverageReporters=json
mkdir ../coverage-jsons
mv coverage/coverage-final.json ../coverage-jsons/jest.json
- uses: actions/upload-artifact@v3
with:
name: coverage-jsons
path: coverage-jsons
behat:
runs-on: ubuntu-latest
needs: build
continue-on-error: true
strategy:
matrix:
tags: [
'@app_others',
'@block_timeline',
'@competency',
'@core_auth',
'@core_calendar',
'@core_comments',
'@core_course',
'@core_grades',
'@core_message',
'@core_reminders',
'@core_reportbuilder',
'@core_search',
'@core_settings',
'@core_user',
'@mod_assign',
'@mod_bigbluebuttonbn',
'@mod_book',
'@mod_chat',
'@mod_choice',
'@mod_data',
'@mod_feedback',
'@mod_forum',
'@mod_glossary',
'@mod_lesson',
'@mod_quiz',
'@mod_scorm',
'@mod_survey',
'@mod_workshop',
]
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@v3
with:
path: app
- uses: actions/setup-node@v3
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@v3
with:
key: build-${{ github.sha }}
path: |
app/www/**/*
app/node_modules/**/*
plugin/**/*
- name: Launch Docker images
working-directory: app
run: |
docker run -d --rm -p 8001:80 --name moodleapp -v ./www:/usr/share/nginx/html -v ./nginx.conf:/etc/nginx/conf.d/default.conf 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 dev-main
echo $(cd ci/bin; pwd) >> $GITHUB_PATH
echo $(cd ci/vendor/bin; pwd) >> $GITHUB_PATH
sudo locale-gen en_AU.UTF-8
echo "NVM_DIR=$HOME/.nvm" >> $GITHUB_ENV
- name: Install Behat Snapshots plugin
run: moodle-plugin-ci add-plugin NoelDeMartin/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: MOODLE_403_STABLE
MOODLE_BEHAT_IONIC_WWWROOT: http://localhost:8001
MOODLE_BEHAT_DEFAULT_BROWSER: chrome
- name: Update config
run: |
moodle-plugin-ci add-config "\$CFG->behat_extraallowedsettings = ['forced_plugin_settings'];"
moodle-plugin-ci add-config "\$CFG->forced_plugin_settings = ['local_moodleappbehat' => ['coverage_path' => '$GITHUB_WORKSPACE/moodle/coverage/']];"
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&&~@performance&&$BEHAT_TAGS"
env:
BEHAT_TAGS: ${{ matrix.tags }}
- name: Merge Coverage jsons
working-directory: app
run: |
mkdir ../coverage-jsons
mkdir -p ../moodle/coverage/
echo "{}" > ../moodle/coverage/base.json
npx nyc merge ../moodle/coverage/ ../coverage-jsons/$BEHAT_TAGS.json
env:
BEHAT_TAGS: ${{ matrix.tags }}
- uses: actions/upload-artifact@v3
with:
name: coverage-jsons
path: coverage-jsons
report:
runs-on: ubuntu-latest
needs: [jest, behat]
steps:
- uses: actions/checkout@v3
with:
path: app
- uses: actions/setup-node@v3
with:
node-version-file: 'app/.nvmrc'
- uses: actions/cache/restore@v3
with:
key: build-${{ github.sha }}
path: |
app/www/**/*
app/node_modules/**/*
- uses: actions/download-artifact@v3
with:
name: coverage-jsons
path: coverage-jsons
- name: Generate final report
working-directory: app
run: |
npx nyc merge ../coverage-jsons/ .nyc_output/out.json
npx nyc report --reporter=html-spa
cp .nyc_output/out.json coverage/coverage-final.json
- name: Upload Coverage report
uses: actions/upload-artifact@v3
with:
name: coverage-html
path: app/coverage/*