DEV Community

Cover image for An (almost) Shameless Plug for my Beginner Friendly Project for #Hacktoberfest
Erik
Erik

Posted on

An (almost) Shameless Plug for my Beginner Friendly Project for #Hacktoberfest

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.

GitHub logo 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:

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)

Collapse
 
ben profile image
Ben Halpern

This is great. Best of luck to all the beginners out there!

Collapse
 
wangonya profile image
Kelvin Wangonya

Very interesting. Looking at contributing 😊

Collapse
 
erikwhiting88 profile image
Erik

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!

Collapse
 
wangonya profile image
Kelvin Wangonya

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 πŸ‘¨πŸ½β€πŸ’»πŸ˜„

Collapse
 
carolinakinetic profile image
CarolinaKinetic

I'm seeing only 5 issues, and none of them are documentation-related. Is there anything in your docs you'd like help with?

Collapse
 
erikwhiting88 profile image
Erik

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!

Collapse
 
carolinakinetic profile image
CarolinaKinetic

Sounds great! I have already forked it and am about to clone it. Thanks!