Skip to content

Fix errors encountered in feature testing. (#19100) #28

Fix errors encountered in feature testing. (#19100)

Fix errors encountered in feature testing. (#19100) #28

name: End-to-End, Lighthouse CI performance and Acceptance tests
on:
merge_group:
types: [checks_requested]
push:
branches:
- develop
- release-*
pull_request:
branches:
- develop
- release-*
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-22.04]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.8.15'
architecture: 'x64'
cache: 'pip'
cache-dependency-path: |
requirements.in
requirements.txt
requirements_dev.in
requirements_dev.txt
- uses: ./.github/actions/merge
- name: Cache node modules and third_party/static
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
path: |
/home/runner/work/oppia/yarn_cache
/home/runner/work/oppia/oppia/third_party/static
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('yarn.lock', 'dependencies.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- uses: ./.github/actions/install-oppia-dependencies
- name: Install chrome
run: python -m scripts.install_chrome_for_ci
- name: Install ffmpeg
run: sudo apt install ffmpeg
- name: Build Webpack
run: python -m scripts.build --prod_env
- name: Zip build files
# We avoid using ../ or absolute paths because unzip treats these as
# security issues and will refuse to follow them.
run: |
zip -rqy build_files.zip oppia/third_party oppia_tools oppia/build oppia/webpack_bundles oppia/proto_files oppia/app.yaml oppia/assets/hashes.json oppia/proto_files oppia/extensions/classifiers/proto/* oppia/backend_prod_files oppia/dist
working-directory: /home/runner/work/oppia
- name: Upload build files artifact
uses: actions/upload-artifact@v3
with:
name: build_files
path: /home/runner/work/oppia/build_files.zip
retention-days: 1
e2e_test:
needs: build
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-22.04]
suite:
- accessibility
- additionalEditorFeatures
- additionalEditorFeaturesModals
- additionalPlayerFeatures
- adminPage
- blogDashboard
- blog
- checkpointFeatures
- classroomPage
- classroomPageFileUploadFeatures
- collections
- contributorDashboard
- contributorAdminDashboard
- coreEditorAndPlayerFeatures
- creatorDashboard
- embedding
- explorationFeedbackTab
- explorationImprovementsTab
- explorationHistoryTab
- explorationStatisticsTab
- explorationTranslationTab
- extensions
- featureGating
- feedbackUpdates
- fileUploadExtensions
- fileUploadFeatures
- learner
- learnerDashboard
- library
- navigation
- playVoiceovers
- preferences
- profileFeatures
- profileMenu
- publication
- skillEditor
- subscriptions
- topicsAndSkillsDashboard
- topicAndStoryEditor
- topicAndStoryEditorFileUploadFeatures
- topicAndStoryViewer
- users
- wipeout
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.8.15'
architecture: 'x64'
cache: 'pip'
cache-dependency-path: |
requirements.in
requirements.txt
requirements_dev.in
requirements_dev.txt
- uses: ./.github/actions/merge
- name: Cache node modules
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
path: /home/runner/work/oppia/yarn_cache
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('yarn.lock') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Attempt to download build files artifact
id: download_artifact_1
uses: actions/download-artifact@v3
continue-on-error: true
with:
name: build_files
path: /home/runner/work/oppia/
- name: Unzip build files
if: steps.download_artifact_1.outcome != 'failure'
run: |
ls -la
unzip build_files.zip
rm build_files.zip
echo "Files in ./:"
ls -la .
echo "Files in oppia_tools:"
ls -la oppia_tools
echo "Files in oppia:"
ls -la oppia
echo "Files in build:"
ls -la oppia/build
echo "Files in third_party:"
ls -la oppia/third_party
working-directory: /home/runner/work/oppia
shell: bash
- uses: ./.github/actions/install-oppia-dependencies
- name: Install chrome
run: python -m scripts.install_chrome_for_ci
- name: Install ffmpeg
run: sudo apt install ffmpeg
- name: (Artifact re-build) Cache third_party/static
if: steps.download_artifact_1.outcome == 'failure'
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
path: /home/runner/work/oppia/oppia/third_party/static
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('dependencies.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: (Artifact re-build) Build Webpack
if: steps.download_artifact_1.outcome == 'failure'
run: python -m scripts.build --prod_env
- name: Run E2E Test ${{ matrix.suite }}
run: xvfb-run -a --server-args="-screen 0, 1285x1000x24" python -m scripts.run_e2e_tests --skip-install --skip-build --suite=${{ matrix.suite }} --prod_env
env:
VIDEO_RECORDING_IS_ENABLED: 0
- name: Uploading webdriverio-video as Artifacts
if: ${{ failure() }}
uses: actions/upload-artifact@v3
with:
name: webdriverio-video
path: /home/runner/work/oppia/webdriverio-video
- name: Uploading webdriverio screenshots as Artifacts
if: ${{ failure() }}
uses: actions/upload-artifact@v3
with:
name: webdriverio-screenshots
path: /home/runner/work/oppia/webdriverio-screenshots
- name: Uploading webpack bundles as an artifact
if: ${{ failure() }}
uses: actions/upload-artifact@v3
with:
name: webpack-bundles
path: /home/runner/work/oppia/oppia/build
- name: Report failure if failed on oppia/oppia develop branch
if: ${{ failure() && github.event_name == 'push' && github.repository == 'oppia/oppia' && github.ref == 'refs/heads/develop'}}
uses: ./.github/actions/send-webhook-notification
with:
message: "An E2E test failed on the upstream develop branch."
webhook-url: ${{ secrets.BUILD_FAILURE_ROOM_WEBHOOK_URL }}
lighthouse:
needs: build
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-22.04]
shard: [1, 2]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.8.15'
architecture: 'x64'
- uses: ./.github/actions/merge
- name: Cache node modules
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
path: /home/runner/work/oppia/yarn_cache
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('yarn.lock') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Attempt to download build files artifact
id: download_artifact_1
uses: actions/download-artifact@v3
continue-on-error: true
with:
name: build_files
path: /home/runner/work/oppia/
- name: Unzip build files
if: steps.download_artifact_1.outcome != 'failure'
run: |
ls -la
unzip build_files.zip
rm build_files.zip
echo "Files in ./:"
ls -la .
echo "Files in oppia_tools:"
ls -la oppia_tools
echo "Files in oppia:"
ls -la oppia
echo "Files in build:"
ls -la oppia/build
echo "Files in third_party:"
ls -la oppia/third_party
working-directory: /home/runner/work/oppia
shell: bash
- name: (Artifact re-build) Cache third_party/static
if: steps.download_artifact_1.outcome == 'failure'
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
path: /home/runner/work/oppia/oppia/third_party/static
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('dependencies.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: (Artifact re-build) Build Webpack
if: steps.download_artifact_1.outcome == 'failure'
run: python -m scripts.build --prod_env
- uses: ./.github/actions/install-oppia-dependencies
- name: Install chrome
if: startsWith(github.head_ref, 'update-changelog-for-release') == false
run: python -m scripts.install_chrome_for_ci
- name: Run Lighthouse performance checks shard
if: startsWith(github.head_ref, 'update-changelog-for-release') == false
run: python -m scripts.run_lighthouse_tests --mode performance --shard ${{ matrix.shard }} --skip_build --record_screen
- name: Uploading puppeteer video as Artifacts
if: ${{ failure() }}
uses: actions/upload-artifact@v3
with:
name: lhci-puppeteer-video
path: /home/runner/work/oppia/lhci-puppeteer-video/video.mp4
- name: Report failure if failed on oppia/oppia develop branch
if: ${{ failure() && github.event_name == 'push' && github.repository == 'oppia/oppia' && github.ref == 'refs/heads/develop'}}
uses: ./.github/actions/send-webhook-notification
with:
message: "A Lighthouse test failed on the upstream develop branch."
webhook-url: ${{ secrets.BUILD_FAILURE_ROOM_WEBHOOK_URL }}
acceptance_test:
needs: build
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-22.04]
suite:
- blog-admin-tests/assign-roles-to-users-and-change-tag-properties.spec.js
- blog-editor-tests/check-blog-editor-unable-to-publish-duplicate-blog-post.spec.js
- translation-admin-tests/add-translation-rights.spec.js
- translation-admin-tests/remove-translation-rights.spec.js
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v3
with:
python-version: '3.8.15'
architecture: 'x64'
cache: 'pip'
cache-dependency-path: |
requirements.in
requirements.txt
requirements_dev.in
requirements_dev.txt
- uses: ./.github/actions/merge
- name: Cache node modules
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
path: /home/runner/work/oppia/yarn_cache
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('yarn.lock') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Attempt to download build files artifact
id: download_artifact_1
uses: actions/download-artifact@v3
continue-on-error: true
with:
name: build_files
path: /home/runner/work/oppia/
- name: Unzip build files
if: steps.download_artifact_1.outcome != 'failure'
run: |
ls -la
unzip build_files.zip
rm build_files.zip
echo "Files in ./:"
ls -la .
echo "Files in oppia_tools:"
ls -la oppia_tools
echo "Files in oppia:"
ls -la oppia
echo "Files in build:"
ls -la oppia/build
echo "Files in third_party:"
ls -la oppia/third_party
working-directory: /home/runner/work/oppia
shell: bash
- uses: ./.github/actions/install-oppia-dependencies
- name: (Artifact re-build) Cache third_party/static
if: steps.download_artifact_1.outcome == 'failure'
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
path: /home/runner/work/oppia/oppia/third_party/static
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('dependencies.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: (Artifact re-build) Build Webpack
if: steps.download_artifact_1.outcome == 'failure'
run: python -m scripts.build --prod_env
- name: Run Acceptance Test ${{ matrix.suite }}
run: xvfb-run -a --server-args="-screen 0, 1285x1000x24" python -m scripts.run_acceptance_tests --skip-build --suite=${{ matrix.suite }} --prod_env
- name: Uploading webpack bundles as an artifact
if: ${{ failure() }}
uses: actions/upload-artifact@v3
with:
name: webpack-bundles
path: /home/runner/work/oppia/oppia/build
- name: Report failure if failed on oppia/oppia develop branch
if: ${{
failure() &&
github.event_name == 'push' &&
github.repository == 'oppia/oppia' &&
github.ref == 'refs/heads/develop'
}}
uses: ./.github/actions/send-webhook-notification
with:
message: "An acceptance test failed on the upstream develop branch."
webhook-url: ${{ secrets.BUILD_FAILURE_ROOM_WEBHOOK_URL }}