Skip to content

Commit

Permalink
Add openmrs e2e tests to test both LIME demo
Browse files Browse the repository at this point in the history
  • Loading branch information
jnsereko committed May 17, 2024
1 parent 55b0af1 commit 3b78ca8
Show file tree
Hide file tree
Showing 4 changed files with 173 additions and 7 deletions.
158 changes: 158 additions & 0 deletions .github/workflows/run-e2e-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
name: Run E2E Tests on Release PRs

on:
pull_request:
branches: [main]
push:
branches: [main]

jobs:
build:
runs-on: ubuntu-latest
outputs:
patient_management_ref: ${{steps.refs.outputs.patient_management}}
patient_chart_ref: ${{steps.refs.outputs.patient_chart}}
esm_core_ref: ${{steps.refs.outputs.esm_core}}

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Build and Run Containers
run: docker-compose -f distro/e2e_test_support_files/docker-compose-build.yml up -d

- name: Wait for the backend to start
run: while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://localhost/openmrs/login.htm)" != "200" ]]; do sleep 10; done

- name: Commit and export Containers
run: sh distro/e2e_test_support_files/commit_and_export_images.sh

- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: e2e_release_env_images
path: e2e_release_env_images.tar.gz
retention-days: 1

run-patient-management-e2e-tests:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4

- name: Create Temporary Directory to Download Docker Images
id: tempdir
run: echo "tmpdir=$(mktemp -d)" >> "$GITHUB_OUTPUT"

- name: Download Docker Images
uses: actions/download-artifact@v3
with:
name: e2e_release_env_images
path: ${{ steps.tempdir.outputs.tmpdir }}

- name: Load Docker Images
run: |
gzip -d ${{ steps.tempdir.outputs.tmpdir }}/e2e_release_env_images.tar.gz
docker load --input ${{ steps.tempdir.outputs.tmpdir }}/e2e_release_env_images.tar
docker image ls -a
- name: Spin up an OpenMRS Instance
run: docker-compose up -d
working-directory: distro/e2e_test_support_files

- name: Checkout to the Repo's Tag
uses: actions/checkout@v4
with:
repository: openmrs/openmrs-esm-patient-management
ref: ${{ needs.build.outputs.patient_management_ref }}
path: e2e_repo

- name: Copy test environment variables
run: cp example.env .env
working-directory: e2e_repo

- name: Install dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: yarn install --immutable
working-directory: e2e_repo

- name: Install Playwright Browsers
run: npx playwright install chromium --with-deps
working-directory: e2e_repo

- name: Wait for the OpenMRS instance to start
run: while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://localhost:8080/openmrs/login.htm)" != "200" ]]; do sleep 10; done

- name: Run E2E tests
run: yarn playwright test
working-directory: e2e_repo

- name: Upload Report
uses: actions/upload-artifact@v3
if: always()
with:
name: report-patient-management
path: e2e_repo/playwright-report/
retention-days: 30

run-patient-chart-e2e-tests:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4

- name: Create Temporary Directory to Download Docker Images
id: tempdir
run: echo "tmpdir=$(mktemp -d)" >> "$GITHUB_OUTPUT"

- name: Download Docker Images
uses: actions/download-artifact@v3
with:
name: e2e_release_env_images
path: ${{ steps.tempdir.outputs.tmpdir }}

- name: Load Docker Images
run: |
gzip -d ${{ steps.tempdir.outputs.tmpdir }}/e2e_release_env_images.tar.gz
docker load --input ${{ steps.tempdir.outputs.tmpdir }}/e2e_release_env_images.tar
docker image ls -a
- name: Spin up an OpenMRS Instance
run: docker-compose up -d
working-directory: distro/e2e_test_support_files

- name: Checkout to the Repo's Tag
uses: actions/checkout@v4
with:
repository: openmrs/openmrs-esm-patient-chart
ref: ${{ needs.build.outputs.patient_chart_ref }}
path: e2e_repo

- name: Copy test environment variables
run: cp example.env .env
working-directory: e2e_repo

- name: Install dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: yarn install --immutable
working-directory: e2e_repo

- name: Install Playwright Browsers
run: npx playwright install chromium --with-deps
working-directory: e2e_repo

- name: Wait for the OpenMRS instance to start
run: while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://localhost:8080/openmrs/login.htm)" != "200" ]]; do sleep 10; done

- name: Run E2E tests
run: yarn playwright test
working-directory: e2e_repo

- name: Upload Report
uses: actions/upload-artifact@v3
if: always()
with:
name: report-patient-chart
path: e2e_repo/playwright-report/
retention-days: 30
3 changes: 2 additions & 1 deletion distro/e2e_test_support_files/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,5 @@ component. It then downloads Docker images from a previous "build" job, loads th

The workflow checks out a specific tagged version of the component's repository, the tag is imported from the previous "
build" job. This is necessary because the goal is to perform end-to-end tests on the codebase that corresponds to a
particular release version, rather than the code at the head of the repository.
particular release version, rather than the code at the head of the repository. In case of using pre-releases, it checkouts
to the main branch as we don't create tags for pre-releases.
6 changes: 3 additions & 3 deletions distro/e2e_test_support_files/docker-compose-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ version: "3.7"
services:
gateway:
build:
context: ../gateway
context: ../../gateway
container_name: gateway
restart: "unless-stopped"
depends_on:
Expand All @@ -14,7 +14,7 @@ services:

frontend:
build:
context: ../frontend
context: ../../frontend
container_name: frontend
restart: "unless-stopped"
environment:
Expand All @@ -30,7 +30,7 @@ services:

backend:
build:
context: ../
context: ../../
container_name: backend
depends_on:
- db
Expand Down
13 changes: 10 additions & 3 deletions distro/e2e_test_support_files/extract_tag_numbers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,16 @@ get_repository_tag() {
local file="$1"
local repo_name="$2"
local app="$3"
local value
value=$(awk -F'"' -v app="$app" '$0 ~ app {print $4}' "$file")
echo "$repo_name=$value"

local version=$(awk -F'"' -v app="$app" '$0 ~ app {print $4}' "$file")
local ref="refs/tags/v$version"

# Check if the version number contains "pre" and modify the ref to main branch
if [[ $version == *"pre"* ]]; then
ref="main"
fi

echo "$repo_name=$ref"
}

file_path="frontend/spa-build-config.json"
Expand Down

0 comments on commit 3b78ca8

Please sign in to comment.