I remember when I first started learning to program, everyone told me "you have to contribute to open source projects!" But whenever I perused through Github or Gitlab, the projects all seemed to be so over my head. I know what it's like to want to contribute, but not having any idea where to start. So, I made my current personal project open source and did my best to make it as beginner friendly as possible. Checkout LuluTest
LuluTest is a web testing framework written in Python. The current goal of the project is to be able to write robust browser automation tests with the optimal amount of expressiveness and brevity in the lines of code. In less fancy talk, the browser tests should be short to write, but not so short that you cannot figure out what they're testing.
I've done my best to document the steps required for contribution as clearly and concisely as possible; same with setting up the project locally. There is a
CONTRIBUTING.md file that spells out the steps needed to get started. Finally, there are hopefully enough examples that you can get started even if you haven't done browser automation testing before.
In the issues section, there are requests for added functionality. The requests are hopefully spelled out clearly. The most important one is for creating tests for other websites where we use the framework we are developing to test other people's websites. The point of this is to show us where we are missing functionality.
In order to figure out what the limitations of the current implementation are, we should write new browser tests for all kinds of websites. For this issue, you should:
- Find a web page and think of how you would test it
- Write the test for it in
- As you write the test, see if there is something missing from LuluTest preventing you from writing that test
- Either add that feature yourself, or submit an issue requesting it to be added
The point of writing tests for other websites is to see what's missing from LuluTest. Find something to test and try to write a test script for it. Once you get to a point where you realize LuluTest is missing the appropriate feature to test the page, add it!
- https://www.saucedemo.com - Go to site, place 3 items in cart, go to cart, remove one item, checkout (easy)
- http://the-internet.herokuapp.com/floating_menu test that menu stays where it is (medium)
- http://the-internet.herokuapp.com/download test file download (medium)
- http://the-internet.herokuapp.com/dynamic_controls test removing the checkbox (hard)
- https://demoqa.com/autocomplete/ test autocomplete feature (hard)
- https://demoqa.com/selectmenu/ test drop downs
- https://demoqa.com/accordion/ accordion test. Test that non selected data appears/disappears (medium)
- https://www.saucedemo.com refresh test. Make a cart, refresh the page and make sure the cart is still the same (easy-medium)
This is my personal project, it's true. But for all of Hacktoberfest, I want to help you in exchange for helping me. I will:
- Create an acknowledgements section in the project README at the end of the month personally thanking each contributor (unless you don't want to be mentioned)
- I will respond to every pull request within 24 hours (I can't be any faster than that, I have work and school :/ )
- I will work with you on things that don't seem right (in other words, I won't outright reject pull requests without telling you what you can fix in order to get your PR approved)
The last thing makes it user friendly, at least I hope, is that it teaches something important. Developing testing software forces us to think about testing, which is important in software development. Also, getting used to git, making pull requests, branching, and making good commit messages are all valuable things for programmers to know. Also, I really really want you to write tests with your pull requests, so you might develop some TDD chops along the way.
I hope this didn't strike a nerve with anyone, plugging my own project and everything. Let me know if you have any questions, you can reach me on GitHub (erik-whiting) or Twitter (@erikwhiting88 ) if you have any questions. I look forward to working with you!