My OpenMRS Fellowship Journey: Anjula Samarasinghe

Hello everyone! :vulcan_salute: My name is Anjula, and I’m a physical science undergraduate who has a passion for open source. Open-source software has always played an essential role in my life, as it is where I first started learning. Over two years ago, I discovered OpenMRS and knew that I wanted to be a part of it. Last year, I was thrilled to be selected for Google Summer of Code and successfully completed the rebuilding of the cohort builder.

I am excited to announce that I have been selected as a QA Engineering Fellow for the OpenMRS Fellowship program! I can’t wait to start my fellowship journey and contribute towards the development of OpenMRS while further enhancing my skills under the guidance of my mentor, @jayasanka. Our primary focus is on improving the overall product quality and implementing solutions to maintain the product quality while improving the developer experience.

Over the past few weeks, I have had several calls with my mentor to discuss my fellowship plan and goals. I also joined the informative orientation session to learn more about the program. Additionally, I proposed a project idea for GSoC 2023, which involves extending E2E Automated Tests for the OpenMRS 3.0 RefApp. You can find more details about this project here.

For the first month of my fellowship, my primary focus is to identify the test cases for patient management, understand how to write an effective E2E test with playwright, and write E2E tests with playwright to cover the patient management.

I also wrote my first article as well,

I would like to express my sincere gratitude to OpenMRS for giving me this amazing opportunity. I am thrilled to be working with all of you and look forward to contributing to the growth and development of this community.

12 Likes

To start writing end-to-end (e2e) tests for the 3.0 RefApp , it is essential to identify the test cases to be tested. To achieve this, a divide-and-conquer approach is being used to identify workflow test cases. As a first step, the test cases for patient management were identified with the guidance of the mentor @jayasanka. Relevant ticket and documentation were prepared for this purpose.

After the test cases were identified, several issues were created to address the identified bugs. https://issues.openmrs.org/browse/O3-1840 https://issues.openmrs.org/browse/O3-1841

During this process, a small bug was found in the translation interpolation issue in the empty text illustration, which was promptly fixed. https://issues.openmrs.org/browse/O3-1872

Following this, I started writing the e2e test for appointments, during this another bug was discovered and reported. This bug currently blocks the e2e test from being completed. https://issues.openmrs.org/browse/O3-1870

In light of this, the focus shifted to writing the e2e test for active visits, and this task is currently in progress. The main objective for the upcoming weeks is to complete the main test coverage for patient management.

6 Likes

During the past week, I made progress on several fronts. Firstly, I managed to write my first E2E test with playwright. Since it differs significantly from cypress it took some time to get the hang of it, @jayasanka provided valuable guidance to help me understand the concepts involved.

Regarding the appointments table issue, @dkibet is still working on it, which is currently blocking me from moving forward with the appointments E2E test.

In addition, I identified an opportunity to improve the patient registration and edit E2E tests, which I captured in a ticket. A new contributor has been assigned to the task. Additionally, I discovered a bug in the registration form that displayed incorrect labels for input fields. I submitted a pull request to fix it.

Last week, I encountered an issue with the patient registration and patient edit tests, which were failing on Firefox. I began investigating this and discovered that Firefox was not allowing service workers to run over HTTP. To address this, I created a thread to discuss possible solutions and opened a ticket to track progress on resolving the issue.

In the upcoming week, the QA team is planning to provide updates on our progress thus far and our plans for the year at the Mini Community Meeting. I look forward to sharing our accomplishments and upcoming goals.

3 Likes

In my previous article, I mentioned that we were preparing for the Mini Community Meeting. Our team decided to take a different approach to our squad showcase, focusing on answering three key questions from our implementors:

  1. What happens if someone merges something that breaks a feature we were depending on?
  2. How do we know that a new release of O3 won’t break things?
  3. Will O3 ever be stable?

I addressed the first question, while @jayasanka and @piumal1999 tackled the rest. The QA squad showcase was well-received, and it was great to have the opportunity to present at the meeting.

During a discussion with @jayasanka, we decided to discontinue cross-browser testing due to statistics showing that most O3 users are on Chrome, and our inability to enable service workers over HTTP for Firefox. Additionally, I removed the action job timeout for e2e tests.

Unfortunately, the appointments table bug remains unresolved, even with the pending PR. I asked @dennis to look into it so we can move forward.

This week, I attempted to extend the active visits test to include patient lab results. However, generating lab results proved challenging. @ibacher suggested using demo data on the server, but we may encounter issues with concurrent testing. Using a docker image is a possible solution, but requires further discussion.

https://issues.openmrs.org/browse/O3-1978

Moving forward, I plan to continue discussing the use of demo data and will also be reviewing GSoC proposals as a mentor this year.

2 Likes

Having a good documentation is essential for any project, whether it’s technical or non-technical. It saves time for developers, as they don’t have to figure out things themselves, and helps to ensure that everyone is on the same page.

Recently, the team began working on writing End-to-End (E2E) tests with a new strategy. To ensure that the E2E test approach was well-documented, I took responsibility for documenting the approach, while @piumal1999 covered unit tests. The resulting wiki page covers everything from setting up to writing tests, with a request for contributors to add any missing content. You can find the documentation at the following link: E2E Tests - Documentation - OpenMRS Wiki

On April 4th, we reached the student proposal deadline for GSoC 2023. Last week me and @piumal1999 began evaluating proposals for two projects: Extending E2E Automated Tests for the OpenMRS 3.0 RefApp and Enhancing Component Test Coverage and Quality for OpenMRS3. We were happy with the proposals, noting an increase in the number of proposals and improvements in the proposal quality. Thanks to awareness sessions that were organized, there was a significant increase in the number of proposals. The evaluation process was made easier thanks to the marking scheme.

This week, I started evaluating the E2E test coverage based on what the we have accomplished so far. Although we were almost done with patient management, some blockers prevented us from moving forward. So, we decided to move to other repositories instead. I started working on the form builder, which is a critical component of OpenMRS 3.0. An epic was created to cover the test cases that were identified, which included test configuration and Github action integration.

https://issues.openmrs.org/browse/O3-2040

We asked fellow contributors from OpenMRS 3.0 to contribute to this effort as the main goal is to implement a test-driven development environment. In the following weeks I’m planning to cover the form builder.

3 Likes

Well done @anjisvj

1 Like

Last week I took the initiative to create an epic that would cover the end-to-end (E2E) test coverage for the form builder. To ensure that all issues were appropriately handled, I assigned them to my fellow contributors. This week, I had the opportunity to review several pull requests (PRs) related to E2E tests, unit tests, and integration tests.

With the GSoC proposal review completed, we held a call with our mentors to discuss the selected candidates. This was a productive conversation, and we made great strides towards identifying the best candidates for the program.

As I continued to work on the form builder project, I began writing an E2E test to cover the custom schema form build feature. However, I encountered an issue while trying to run the test. The browser kept loading repeatedly, and this problem prevented me from moving forward with my work. To resolve the issue, I created a separate thread to discuss the matter with my colleagues, as it was impacting other aspects of the project.

In addition to my work on the form builder, I also spent time researching the fellowship capstone projects to gain a better understanding of their objectives and scope.

https://wiki.openmrs.org/display/RES/Fellowship+Capstone+Projects

In the coming weeks, I plan to focus on completing the E2E coverage for the form builder project and look forward to participating in the GSoC community bonding activities.

2 Likes

Nice work @anjisvj !

1 Like

Thanks to the invaluable assistance of @dennis, we were able to successfully identify and resolve the persistent issue with the page reloading . It turned out that the trace option in Playwright was generating test traces that triggered repeated rebuilding of the project by webpack, causing an endless loop. Following several productive discussions, we decided to disable this feature, since it was not essential to our needs. I submitted a separate PR to implement this change.

Once we had resolved the form builder test coverage blocker, I turned my attention to crafting a test to cover the custom schema form creation feature. You can find the relevant PR below. From there, I moved on to writing a test for the dummy schema form creation feature, followed by a PR that covered the edit form feature. In order to achieve full form builder test coverage, two more features remain to be addressed: the interactive builder and the form publish/unpublish.

During my work on the form builder, I also discovered a bug that prevented the saving of encounter types. I created an issue to address this problem.

https://issues.openmrs.org/browse/O3-2094

In other news, following the announcement of the selected GSoC candidates, @piumal1999 and I held initial calls with our mentees to discuss project goals and expectations. I am excited to embark on this journey with my fellow contributors and am eager to see what we can accomplish together.

In the upcoming weeks I will be focusing on the fellowship capstone project.

1 Like

Last week, I had a call with @kdaud to discuss the changes we experienced after migrating from Cypress to Playwright. During the conversation, I provided a brief overview of Playwright’s structure and its integration with GitHub Actions.

The test coverage for the form builder is almost complete. We successfully merged the PR for the E2E test of the edit form after resolving the issues we encountered. I’m delighted to see that @hadijah315 and @dennis are also contributing by writing E2E tests. One of our goals is to encourage everyone to write tests, and it’s gratifying to witness the positive outcomes of our efforts.

For a while now, the e2e tests for RefApp 2.x have been running on the Firefox browser in GitHub Actions. To gain insights into their respective build plans, we needed to make them run on the Chrome browser as well. The approach was straightforward, involving updating the Chrome driver and modifying the workflows to accommodate Chrome. However, it didn’t work out of the box, and I encountered some issues with the Chrome driver versions. Fortunately, I was able to overcome these challenges and successfully make it work.

This week, I had a progress meeting with @jennifer, @erica, and @jayasanka as part of the fellowship. We discussed the goals I have achieved so far and outlined plans for the upcoming months. It’s hard to believe that I’m already halfway through my fellowship journey. It has been an incredible experience thus far, and I anticipate that the upcoming months will bring even more challenges.

Moving forward, my primary focus will be on the capstone project. I’m planning to write a proposal for Ethiohri, aiming to implement test-driven development practices. I’m excited to collaborate with Ethiohri and gain insights into their implementation processes.

1 Like

During the previous weeks, my primary focus was on the fellowship capstone project. I dedicated my efforts to writing a proposal that aims to streamline test automation processes for Ethiohri. Currently, Ethiohri’s development process lacks automated testing, resulting in time-consuming manual testing, an increased risk of human error, and challenges in maintaining consistent code quality. The objective of the project is to integrate automated testing into their development process and establish a robust testing framework.

The project goals and objectives encompass several key aspects. Firstly, I plan to develop a comprehensive automated testing strategy, which includes implementing unit, integration, and end-to-end tests. Additionally, I aim to establish a continuous integration and delivery (CI/CD) pipeline. The project activities and timeline cover various stages, starting from the initial assessment and scope definition to infrastructure setup, test strategy development, test implementation, and refining the testing process.

The expected deliverables from this project include an automated testing strategy document, setup of a test automation framework, unit tests, integration tests, end-to-end tests, a fully functional CI/CD pipeline, comprehensive documentation, monitoring and measurement metrics, as well as recommendations for improvement.

Overall, the objective of this project is to enhance the quality, efficiency, and reliability of Ethiohri’s software development process through the implementation of automated testing.

You can find the complete proposal here:

Once the proposal was completed, I proceeded to work on an end-to-end (E2E) test for the form builder, specifically focusing on testing form publications. For reference, I have included the relevant pull request (PR) below:

To enhance the robustness of the form builder tests, I created additional tickets, which are as follows:

https://issues.openmrs.org/browse/O3-2185 https://issues.openmrs.org/browse/O3-2200

During the past week, one of the tests was consistently failing, and after investigating the issue, I discovered that it was caused by webpack. The test was searching for a success notification, but the page was being reloaded due to webpack monitoring the playwright test results directory. Although @dennis has updated the webpack configuration to ignore that directory, the issue still persists.

Another challenge I encountered is related to the E2E tests set up for the patient chart in the GSoC project. The GitHub actions are failing randomly at different stages. I will be investigating this issue further to identify the root cause and resolve it.

This week, I had the opportunity to present the capstone project proposal to @dagimm from Ethiohri. We had a fruitful discussion regarding the project scope and goals, aligning our understanding and expectations.

In the upcoming weeks, my primary focus will continue to be on the capstone project. I am thrilled to collaborate with Ethiohri and work towards achieving our project objectives.

1 Like

After my initial conversation with Ethiohri, I dove into the code base to assess our goals and milestones. To keep everyone informed, I created a comprehensive milestone document outlining our timeline. You can access it here.

In addition, I prepared a spreadsheet detailing all the components and their corresponding test coverage statuses.

I reached out to the Ethiohri team for assistance in identifying the most critical features, but unfortunately, I haven’t received a response yet. I’ll continue following up with them.

On a positive note, I’ve been actively reviewing pull requests and conducting mentoring calls with our GSoC contributors. I’m happy to report that both aspects are progressing smoothly. It’s important to keep in mind that we have less than a month left until the midterm evaluation.

Recently as I was unwell and I’m currently in the recovery phase. However, I’m determined to get back on track as soon as possible. In the upcoming weeks, my focus will be on writing unit and integration tests for Ethiohri, ensuring the stability and reliability of the project.

Here’s a medium article I wrote based on my fellowship journey.

2 Likes

Thanks @anjisvj for the great review and tips in writing tests, I learn’t a lot from your reviews.

1 Like

It has been nearly two weeks since I began my capstone project. As planned, my initial focus was on writing unit and integration tests using Jest and React Testing Library. Before diving into the testing, I had to update the Jest configuration since the existing one was not functioning properly.

Once the configuration was sorted out, I proceeded to write tests for various components such as lazy cell, error state, and empty state. After completing the tests, I submitted my first pull request, which was subsequently merged. Concurrently, I reached out to the team, requesting a Docker image of the backend to update the test on push job in our GitHub workflow, which is currently disabled.

Note: The E2E tests are failing in the above PR due to the dev server failure

Since obtaining Jira access, I established a project named “Ethiohri Quality Assurance” to keep track of issues and project progress. This will help us stay organized and know what tasks need to be completed.

Time has flown by swiftly, and we have now reached the mid-term evaluation for GSoC. The contributors have created progress videos, and as a mentor, I am genuinely proud of their accomplishments. I have also submitted the evaluations on the GSoC dashboard.

However, progress has been temporarily halted due to the recent O3 migration, which has caused the Ethiohri dev server to go offline. Currently, I am unable to proceed with the tests because I need to mock certain values. Fortunately, the Ethiohri team is actively working on resolving this issue.

Looking ahead, my plan for the upcoming weeks is to focus on writing more unit tests and aim to achieve a test coverage of at least 50% before delving into the E2E (End-to-End) tests.

For the past few weeks, the ethiohri server has been down primarily due to a recent migration. The team is actively working to resolve the issue in collaboration with the UCSF team. However, I’m currently facing a roadblock in writing tests as a result of this situation. So far, I have managed to write tests for only three components, and I am unable to proceed with testing other components since I need to mock the values and verify their functionality to proceed. Unfortunately, I have not yet found a solution to this challenge.

cc: @jayasanka @dagimm @jennifer @erica

While I was eagerly waiting for the migration issues to be fixed in ethiohri, I decided to work on adding some awesome E2E test coverage for the cohort builder. It was quite exciting! First, I carefully went through all the features and created an epic, and then I crafted a list of issues to tackle in order to add the test coverage.

https://issues.openmrs.org/browse/O3-2268

After that, I got to work on setting up the initial tests and sent a PR. It felt great when it got merged and I could see my progress taking shape. But then, when I started working on the search by demographics E2E test, I ran into a little hiccup. Even though I wrote the test with all my dedication, it didn’t pass on github actions. Oh no!

I tried my best to figure out what went wrong, but it’s been a bit tricky. I couldn’t reproduce the error either on the local server or the dev server. I even played around with the settings like turning off the video tracing option and increasing the timeout, but the issue persists. It’s not just the search test, the patient registration is giving me a similar headache. I suspect it might be related to the resources or the webpack. I’m not giving up though, I’ll keep digging and spending more time until I find a solution.

On the bright side, my QA fellowship is heading towards its last month. Although my capstone project has faced some roadblocks, I’m staying positive and determined to overcome them. Fortunately, @jayasanka came to the rescue with a backup project suggestion - OpenMRS benchmarking. I’ve already informed @dennis about it, and I’m eager to explore the tools available and see how they match our requirements.

Also, I’m thrilled about OMRS23 happening next week! I’ll be doing a 5-minute lightning talk about my amazing journey during the fellowship. It’s going to be an exciting opportunity, and I’m already gearing up to prepare for it in the upcoming days.

Overall, I’m grateful for all the learning experiences and support I’ve received so far, and I’m excited to see how things unfold in the coming weeks. Here’s to a successful finish to my fellowship and new adventures ahead! :star2::blush:

2 Likes

Thanks for the update @anjisvj !

1 Like

I had an amazing experience presenting my openMRS fellowship journey at the OMRS23 conference! I had the chance to share the incredible journey I’ve been on over the past few months in just 5 minutes (although it felt too short, haha).

You can find the slides here for my presentation,

My QA Fellowship Journey_ Anjula Samarasinghe.pdf (2.1 MB)

On the technical side, I’ve been tackling a webpack issue that’s been a bit of a puzzle. The page refresh problem was finally narrowed down to the playwright report getting updated while tests are running, and webpack keeping an eye on that file. I’ve been working hard to figure out how to make webpack ignore it, but it’s been a bit tricky. Shoutout to the fantastic folks like @dennis and @ibacher who’ve been helping me out. You can find the ongoing discussion about it in this PR.

Amid all this, I’m excited to share that I’ve been writing unit and integration tests for kenyaEMR, covering the kenyaEMR ESM. It’s great to see how these testing approaches can benefit our implementers. I’m even planning to kick off some E2E tests to help them get started smoothly.

In addition, I’ve been steadily expanding E2E test coverage for the cohort builder. I’m about 60% done and I’m determined to keep up the momentum in the upcoming weeks.

As I enter the final month of this fellowship journey, I’m reminded that it’s not an end but the beginning of another exciting adventure. This journey is far from over; it’s just the start of something truly epic! :rocket:

1 Like

Over the recent weeks, I’ve dedicated my efforts to further enhancing the cohort builder by integrating essential end-to-end (E2E) tests. I’m pleased to share the list of pertinent pull requests (PRs) that I’ve submitted during this period.

Additionally, I successfully established the E2E testing environment for the Kenya EMR, effectively preparing it for thorough E2E testing.

It’s worth mentioning that due to recent modifications in the form builder, the E2E tests encountered failures. I took proactive measures to address these issues and rectify the failing tests, ensuring the overall stability of the system.

In the upcoming week, my focus will shift towards concluding the Google Summer of Code (GSoC) project. Currently, I’m diligently working on compiling my final evaluations and crafting a comprehensive reflection that encapsulates the entirety of my journey and contributions.

1 Like

Hello everyone! :vulcan_salute: I am thrilled to share my journey as a QA Engineering Fellow during my time with OpenMRS. As someone deeply passionate about open-source software, my journey into this fellowship has been nothing short of remarkable.

Over the past 7 months, I’ve had the privilege of working on various projects aimed at elevating the overall product quality of OpenMRS and enhancing the developer experience within the community.

Accomplishments

  • Implemented comprehensive E2E tests for openMRS
  • Test integrations with Github actions
  • Added E2E test coverage for form builder
  • Added E2E test coverage for cohort builder
  • Updated 2.x E2E tests to run on chrome
  • Mentoring GSoC projects
  • Collaborated with implementors
  • Organized Epics and leading them
  • Presented in the OpenMRS mini-community meeting
  • Delivered a lighting talk at OMRS23 conference
  • Documented E2E testing in openMRS wiki

Contributions

7 repositories - 33 Pull Requests, 30+ issues

  1. Patient Management - 4 PR’s
  2. Form Builder - 10 PR’s
  3. Cohort Builder - 9 PR’s
  4. ESM Core - 1 PR
  5. QA Framework - 3 PR’s
  6. Ethiohri ESM - 3 PR’s
  7. KenyaEMR ESM - 2 PR’s
  8. RATEST - 1 PR

What’s Next

  • Continue E2E test coverage
  • Implement load and performance testing
  • Improve the test coverage for the backend

Final thoughts

This fellowship has been an incredible journey of growth, collaboration, and learning. I am immensely grateful to the OpenMRS community for this opportunity, especially to my mentor, @jayasanka, and the fellowship program administration, for their unwavering support and guidance throughout this program.

Thank you all for being a part of this remarkable journey!

Here’s my final reflections video:

2 Likes