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
What is it?
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.
erik-whiting / LuluTest
LuluTest is a Python framework for creating automated browser tests.
What makes it beginner friendly?
Documentation
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 SETUP.md
and 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.
Discrete and Open-Ended Issues
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.
Create more tests for other websites #15
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
test_other_pages.py
- 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
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!
Some suggestions:
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/javascript_alerts test each alert type; one test for each (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 downshttps://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)
I will do my best to help you
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)
Learn Good stuff
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.
Thanks!
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!
Top comments (7)
This is great. Best of luck to all the beginners out there!
Very interesting. Looking at contributing π
Thanks for your contribution Kinyanjui, it was very helpful. Not only did you flex some of the system's muscles around some element features that I hadn't yet tested, your test script showed me that I need to cut down on the amount of lines needed to write a complete test.
Thank you again so much!
You're welcome! Your project is really interesting and I'll be contributing some more π
Yes, I actually thought about the number of lines while writing the test. I'm interested to see how you'll refactor that.
I also faced a few hurdles in setting up my local environment. I'll open up an issue to suggest improvements to the setup docs.
See you on the other side π¨π½βπ»π
I'm seeing only 5 issues, and none of them are documentation-related. Is there anything in your docs you'd like help with?
Howdy. There are only 5 issues, but "Create more tests for other websites" is open ended, in that in encompasses an indefinite amount of items.
If you'd like to help with something documentation related specifically, check out "Add explaining functionality to Step class" as it's a request for a specific class to self document itself.
That one is code related though, if you want only to write something, you're welcome to offer edits to the README, Contribution guide, or Set-Up guide.
I'm not a professional technical writer, so if you see an area that could use some documentation, go ahead and send a PR, I'm open to anything. You're not limited to the issues in the repository :)
Thanks for commenting!
Sounds great! I have already forked it and am about to clone it. Thanks!