My OpenMRS Fellowship Journey: Piumal Rathnayake

Hello everyone! I’m Piumal, a Computer Engineering undergraduate passionate about open-source software. I joined OpenMRS back in 2020 and since then, I have been contributing to several projects at OpenMRS. I also participated in Google Summer of Code at OpenMRS in the last two years.

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

My main goals for the first two weeks of the fellowship were to get to know about the fellowship, refine my fellowship plan, and also to start working on the tasks I got assigned for. On February 2nd, I had a call with my mentor, where we discussed the current state of the Quality Assurance side of OpenMRS and upcoming plans for it. Additionally, we discussed about refining my fellowship plan and goals. On February 13th, we had a comprehensive orientation session for the fellowship, which addressed all of my questions and concerns related to the program.

Apart from those, I had been working on several tasks during this period. As the first task, I was assigned to resolve the random failures on contrib-qaframework 2.x E2E Tests. For that, I went through all the 2.x e2e tests and identified the tests which contains bugs. I initiated this thread to give my updates and to continue the discussion on 2.x e2e tests. Also, I was able to fix 2 of the failing tests with the following PRs.

Meanwhile, I was planning to propose a project for this year’s Google Summer of Code (GSoC) related to QA. Specifically, the project idea was about implementing an effective unit and integration test strategy for OpenMRS3. More details about the proposal can be found at Ideas for GSOC 2023 - #10 by piumal1999.
We had some discussions on this in the QA squad call as well. However, based on the feedback received, the suggestions were to do this as a fellowship capstone project instead. Also, it was suggested that we can use this as a GSoC project if we can limit the scope of the project to only improve test coverage, with a test strategy implemented by ourselves.

That’s most of it about the first two weeks. And finally, I would like to thank OpenMRS for giving me this amazing opportunity. I’m thrilled to be working with you all and looking forward to contributing to the community’s growth and development.

6 Likes

Hi everyone, It has been almost one month since I started my OpenMRS Fellowship journey.

During the last two weeks of the month, I was mainly working on the OpenMRS3 Patient Lists E2E tests. My task was to list out the required set of E2E tests and implement them using Playwright. Initially, I went through the patient lists app to gain an understanding of its basic functionality, and updated the 3.0 E2E Testing Plan: Workflow Cases Document with the suggested list of E2E tests. Meanwhile, I went through the esm-patient-lists micro frontend and the openmrs-cohort-module to identify the API endpoints that needed to be used when writing the tests.

However, the patient lists app had a lot of bugs and errors, and that was a blocker to continuing my work on writing the E2E tests. Therefore, I listed out all those issues and created this thread seeking solutions. Additionally, I created this set of JIRA tickets for fixing those bugs and errors. Until these issues are resolved, I was able to get familiar with Playwright and E2E tests by referring to the Playwright documentation.

Regarding RefApp 2.x E2E tests, I identified another failing E2E test and created a JIRA ticket for resolving that. A new contributor worked on the ticket, so I was able to help him by reviewing the pull request. With that, now all the RefApp 2.x E2E tests are fixed.

The other task I worked on was researching on Unit and Integration tests, for designing a good testing strategy for micro frontends. For that, I went through several documentations, blog posts and articles to get an understanding of testing environments, common testing patterns, best practices etc. I hope to come up with a detailed document on my findings in the upcoming week.

4 Likes

It is the second month of my fellowship journey. During the first two weeks of this month, I worked on several types of tests used in OpenMRS QA, and I gained new knowledge on them.

Under 3.x End-to-End tests, I worked on the patient lists E2E test. Previously there were a lot of bugs in the patient-lists microfrontend, and during the first week, most of those bugs were fixed by the microfrontend squad and some new features were also implemented. So I had to update the patient lists test plan on 3.0 E2E Testing Plan: Workflow Cases Document accordingly. Then I opened a pull request for adding the relevant test cases. However, the patient list component has one remaining bug, which needs to be fixed before the pull request can be approved.

I also did some research on Unit & Integration tests and created a document with my findings. While creating the document, I went through all the existing microfrontend modules and learned about their current status on unit and integration tests. Additionally, I read some documentations and blog posts to learn more about these tests to select the best testing strategy for OpenMRS3. I included all those references in the document. According to my findings, one suggestion is to use MSW (Mock Service Worker) to optimize the O3 integration tests and make it easier to write the tests.

Apart from that, I was assigned to look into some failures on OpenMRS Platform tests, and I was able to find the commit that caused the error. Therefore, I informed the developers about the issue, and they resolved it later. With that, all the RefApp 2.x are passing now.

In the upcoming weeks, I will finalize the Unit & Integration test document and check the possibility of adding a GSoC project based on that.

1 Like

The past two weeks have been very productive, and I would like to share some of the activities I have been involved in during that period.

On 15th and 16th March, we had the OpenMRS Virtual Mini Community Meeting, where I presented the Squad Showcase Representing the QA Support Team with @jayasanka and @anjisvj. During the session, we addressed three common questions that OpenMRS implementers and developers have, and I presented about the stability of O3 and how we plan to achieve stability through QA. You can find the recording of the session here.

Over the past two weeks, all the major bugs related to the esm-patient-lists app were fixed, particularly the issue with the delete patient list option. Thanks to @manojll, who resolved it by fixing the openmrs-cohort-module, I was able to finalize the patient-list e2e test and update my pull request.

However, I encountered another problem that blocked merging the patient-list e2e test. In the GitHub action workflows, we have been using the ubuntu-latest image, and in that runner, port 8084 is used by a service called mono by default. As a result, the esm-patient-lists app fails to run on port 8084, which is the port set automatically for the app. I opened a ticket for this issue, and @chiran is currently working on it.

Apart from those, I had the opportunity to learn how to release OpenMRS modules through the bamboo dashboard. I was able to get access to the OpenMRS bamboo dashboard and release the version 3.4.0 of openmrs-cohort-module. Also, I learnt how to add newer version of openmrs modules to the dev3 environment.

In some good news, we were able to add a GSoC Project idea based on the Unit & Integration test strategy we discussed earlier. To learn more, you can refer to the document included in my last post, my comment on GSoC Ideas List, or the project Wiki. I am willing to be the primary mentor for this project, so if anyone is interested, feel free to reach out through Slack or OpenMRS Talk.

I also began reviewing the existing marking rubric used to rate the GSoC contributor application. We need to get it ready before the end of the contributor application period. I went through it and made some improvements and had an informative discussion with other mentors on 2023-03-26T18:30:00Z.

In the upcoming weeks, I hope to fix the issues mentioned earlier, create the wiki page for integration tests, and start working on a new O3 test plan. Regarding GSoC, I aim to finalize the marking rubric and help interested students by reviewing their proposals.

2 Likes