20.05.2022 - 12.06.2022
This started with an introductory video call between me and my mentors, Edward Moyse and Fawad Ali in which we got to know each other and the work we do. It was really good to know about their experience in open-source software development and I straight away knew that this summer would be quite exciting and even a better learning experience for me.
Community Bonding, in general, is all about reading the technologies that you are going to use in your project, figuring out any issues that may occur beforehand, setting up the development environment, dividing and finalizing the project milestones into deliverables, and making sure you and the mentor(s) agree on it.
Most of my time hence was spent doing the aforementioned things. I read about TypeScript, Angular, Jasmine, and Jest in detail - since these are the major ones that we would use throughout the project. I also read about the conventions that we use while implementing automated testing in projects and the Testing Pyramid.
13.06.2022 - 18.07.2022
We decided to use Jest in the unit tests for the phoenix-event-display library as it provides a lot of benefits viz a viz configuration, APIs, speed of execution and mocking over Jasmine and Karma which were creating troubles sometimes.
In the start, we faced a problem as jest was not able to compile the .jsm
files inside threejs/examples
. With the help of Fawad, I was able to bypass this issue and then I went on to write the tests for helpers
and lib
. It is during this time that on a PR I realized a very important thing that is often misunderstood by beginners.
We write unit tests not solely to increase the code coverage but to test the behaviors of each of the modules (units) properly. Code coverage is achieved as a by-product and 100% code coverage is not always a guarantee that the concerned unit is tested correctly.
Another problem was created later when I was writing tests for loaders
and managers
by the WebGLRenderer
dependency as it didn’t exist in NodeJS and we used it heavily inside the library. So, we needed to mock it and we added a helper function to create objects of WebGLRenderer
in our tests. This is a well-known issue that we need a browser to create a WebGLContext
and the jest environment jsdom, in our case does not have that, it just simulates one.
Also, I have to mention that the code reviews done by Fawad were actually superb. It led to a lot of improvements and I learned so many new things which would not have been the case otherwise. So, kudos to that.
19.07.2022 - 03.08.2022
Currently, I am doing the migration of the unit tests inside phoenix-ng package from Jasmine and Karma setup to use Jest as well. This will eventually help us to use a single test runner for all our unit tests and it will also be easily maintainable by the developers. I hope that using Jest, we can find solutions to a lot of problems that we faced earlier with unit tests in Phoenix.
So, this is a short report of all the work that has been done in this project till the midterm evaluation. If you want to read in detail about the same, you can visit my repo on GitHub.
Thanks a lot for reading and please feel free to connect over GitHub. Have a great week ahead! ^_^