Internship Project Progress
Published: 2021-01-19 13:19:20

It has been about one and a half months into the internship with [Wikimedia](https://www.wikimedia.org/). I have written a number of blog [posts](https://dev.to/dashboard) about my journey and the project I'm currently working on. Just a little a bit of a refresher about the project I'm working on, it's **Evaluation of Microsoft Playwright as a replacement for the Wikimedia browser automation**. Before I had started working on the project back in December, there were some estimated project goals and deadlines that I had set such as;
- implementation of existing tests across moderately sized repo's in Microsoft Playwright
- Introduce video recording and screenshots of tests
- Benchmark Playwright against Puppeteer (using the previous implementation) and WebdriverIO.

However, when the internship started, I and my mentors came up with more clear and defined project milestones such as;
- Dec 1 to Dec 15- Run Playwright tests in Continous Integration(CI)
- Dec 15 to Feb 01- Implement MediaWiki/core tests in Playwright
- Feb 02 to March 01- Benchmark Playwright against WebdriverIO (and Puppeteer).

From the time the internship commenced, I started by setting up the project such as forking and cloning the MediaWiki/core repository from Github since it was decided that the evaluation of the Playwright would be done on Github instead of Gerrit to minimize some CI related issues. The first milestone(Run Playwright tests in CI) involves a number of tasks such as;
- Setting up CI pipeline
- Configuring Nodejs, Docker, test to run in CI
- Configuring and Setting up Playwright, running MediaWiki-docker in CI, running sample Playwright test in CI, etc.

The above tasks were estimated to take two weeks, however, it took me about a month to accomplish the first milestone, some of the reasons for the delay are;
 - I started working with Travis CI as the CI tool for the project, however, within a week into the implementation, we realized that Travis CI doesn't store artifacts out of the box, it requires additional setup and configurations such as using AWS, Github pages, or any other external services to store artifacts. So, to simplify the workflow and configurations, we decided to use Github actions as the CI pipeline for the project. Configuring and setting up Github actions took me about a week.
 - Configuring and Setting up Playwright, running MediaWiki-docker in CI, running sample Playwright test in CI took me about two weeks, there were issues like running MediaWiki-docker successfully too.

The general setup of the project was more complicated than I had anticipated but with much help from the mentors, whereby we could have several meetings a day and pair programming to resolve issues. I have managed to complete the first milestone even though it has taken me more time than expected.

I'm currently working on the implementation of the second milestone(Implement MediaWiki/core tests in Playwright). This milestone involves writing and implementing different MediaWiki/core test suites in Playwright. There is so far tremendous progress with writing the tests as the overall project goals and expectations become much clearer. I'm working towards ensuring that all the tests are written within a week and start working on the implementation of the third milestone(Benchmark Playwright against WebdriverIO (and Puppeteer)), which should take me about two weeks.

Looking back at how far I have come with working on the project, there are a couple of things I think I would have done differently;
- Do prior research on Continuous integration tools that would suit the need of the project instead of just settling for a tool that I was familiar with(Travis CI).
- Perhaps asked for more help from my mentors during the setup and configurations.

With all the changes and challenges, I have also learned quite a valuable lesson about project estimations, that it's good to set deadlines and milestones, they help in achieving the end goal of the project but they are also expected to change as implementation begins and progresses.