(Open to feedback)
Proposal for: Create cypress tests for Wikipedia-preview
Profile Information
Name: Karthik Shetty
IRC nickname on Freenode: karthikshetty03
Web Profile: https://github.com/karthikshetty03
Resume: https://tinyurl.com/zxfrszs7
Location: Maharashtra, India
Typical working hours: 9:00am - 5:00pm ((UTC+05:30)
Synopsis
- The Wikimedia Foundation’s Inuka team was formed in July 2019 as part of the Product department, whose mission is to deliver compelling experiences to Wikipedia readers in emerging markets, driving increased adoption and retention of Wikipedia in areas where internet use is rapidly growing.
- The Inuka-Team is building a plugin for partners to show its contextual information on 3rd party sites.
- Description of the plugin’s functionality: The texts highlighted on a page when hovered shows a popup card as a preview of the related Wikipedia article, displaying some information about the topic.
- The user can further on the “Continue Reading” button for detailed information and will be redirected to the page on Wikipedia.
- There can be multiple scenarios, such as the highlighted text hovered, but n. The card is displayed, or the card’s content is not rendered due to server error. These cases must be considered, and proper functionality checks should be done beforehand for a seamless user experience.
- This project aims to write robust cypress tests for the plugin so that these given-when-then scenarios can be looked upon before the website goes live. The plugin will be extensively tested for all possible input and output, corner cases and dependencies.
- Sections of code will be isolated and tested for correctness (unit testing). Then they will be integrated as a whole and tested (integration testing), which will ensure the quality assurance of the plugin by doing a final evaluation (acceptance testing).
- This project can save a lot of time for the plugin developers as they will not have to sit and refactor the codebase again and again on discovering bugs at a later stage.
- The project will make the plugin more reliable and easy to use by ensuring that it works consistently on different browsers and device types.
- This project can help detect bugs in the plugin and improve its implementation via new insights gained by testing, which focuses more on the all-around aspects such as maintainability, durability, performance, and architecture of the plugin.
- Testing code teaches how to write good code because we have to fix all of the bad code, which helps us learn different ways to solve problems. The number of ways one can break code is immeasurable, and that's what makes this project so interesting!
Possible Mentor(s)
- Vidhi Mody (@Vidhi-Mody)
- Gabriel Pita (@Jpita)
- Soham Parekh (@Soham)
Have you contacted your mentors already?
- Yes, I have contacted the mentors on Zulip for help on getting started with the project.
- They were accommodating, and this is what I like about the open-source community.
Deliverables
Week | Duration | Tasks |
Till May 17 | * Work on the feedback received on micro tasks and get accustomed to Phabricator and Gerrit. * Look out to fix bugs and issues to get familiar with the codebase, and the coding practices. * I have my end semester exams from 1st May to17th May 21 and will be focusing on that for this duration. | |
May 17 | Celebrations | |
May 17 to June 7 | * Community bonding period: Spend time learning more about Wikimedia Foundation’s community by discussing with mentors and refining the project proposal, finalising deadlines, setting milestones, and getting familiar with the codebase by fixing bugs and issues. | |
Week 1 | June 7 to June 13 | Requirement Analysis * Dig deeper into software testing using Cypress and discuss with mentors to understand requirements. * Identify types of tests to be performed additional to that mentioned in the storybook, Test environment requirements and setup. * Discuss all possible use cases to be tested, features and functions that are the main focus of the project, * Prepare Requirement Traceability Matrix to validate all requirements via test cases such that no functionality is unchecked during Software testing. * Key processes to follow for defects resolution |
Week 2 | June 14 to June 20 | Test Design Phase * Creating given-when-then scenarios for the collection of test cases that are necessary to validate the system against its original requirements. * Draw a rough sketch of the flow of testing the plugin and ask for feedback on the same from the mentors. |
Week 3 | June 21 to June 27 | Test Development Phase (Unit Testing) * Start with testing each unit/component in the plugin, which is the popup functionality. * Unit testing thus verifies the accuracy of each unit. * Document these tests. |
Week 4 | June 28 to July 4 | Test Development Phase (Integration Testing) * Start with testing multiple popup cards in parallel to check the robustness of the plugin. * This is particularly beneficial because it determines how efficiently the units and systems are working together. * Document these tests. |
Week 5 | July 5 to July 11 | Test Development Phase (Regression Testing) * Briefly analyse all the tests written till now and check for bugs or issues with them. * Check if any additional requirements to be tested and write tests for the same, and document it. |
July 12 to July 16 | Phase 1 evaluation | |
Week 6 | July 17 to July 23 | Test Evaluation Phase (Acceptance Testing) * During this final phase, the end-user will test the system to confirm that it meets their business needs. * Write additional tests for validation and document them. |
Week 7 | July 24 to July 30 | * Code optimisations * Code reusability * Code cleanup |
Week 8 | July 31 to August 6 | Deployment on CircleCI and Cross Browser Testing * Set up CircleCI and write the config file. * Integrate CircleCI with the tests to automate testing. * Fix bugs, if any. |
Week 9 | August 7 to August 13 | Test Cycle Closure * Evaluate cycle completion criteria based on Time, Test coverage, Critical Business Objectives, Quality. |
Week 10 | August 14 to August 20 | Documentation * Document and Prepare Test closure report. |
August 21 to August 23 | Final Code submission |
Participation
- I will communicate the progress and manage bugs by commenting on subtasks to the project created on Phabricator and ask for any help if needed.
- Also available on other platforms like Zulip, Slack, Discord, IRC.
- Any important and urgent instructions can be sent through email.
- I plan to create a separate branch on git and work on it by uploading code to the forked repo almost daily. Make pull requests and request reviews, notify the mentors as and when a milestone is achieved to get relevant feedback on my work.
- I will be documenting all my work by creating a series of blogs and update them regularly as per the timeline mentioned above.
About Me
Your education
I am currently in my third year pursuing a degree in B.E. Computer Science at Birla Institute of Technology and Science, Pilani - Hyderabad Campus. I will be graduating in May 2022.
How did you hear about this program?
In my college, seniors who have been contributing to open-source and have been part of GSOC had conducted talks and shared their experiences of contributing to open source. This program is a wonderful initiative of promoting open-source contributions, which motivated me to research more about this program and participate. This would be a great way to get exposure to writing production-level code and interacting with the open-source community.
Will you have any other time commitments, such as school work, another job, planned vacation, etc., during the duration of the program?
I have my college end semester examinations from 1st May 2021, to17th May 2021. Then we will be having summer vacations in which I have no other commitments or planned holidays and will dedicate most of my time to this project.
We advise all candidates eligible for Google Summer of Code and Outreachy to apply for both programs. Are you planning to apply to both programs and, if so, with what organisation (s)?
I am only applying for Google Summer of Code with Wikimedia Foundation.
What does making this project happen to mean to you?
- We often google and search on the internet for things we are not aware of, and the first site that comes up as a suggestion most of the times is the Wikipedia page. Wikipedia is one of the most accessed websites globally, including by scientists, which suggests that it also has the potential to shape science.
- Thus, this foundation’s impact is enormous. This is an excellent way to impact people’s lives where this project is one such initiative, and contributing my part through this project will mean a small service to humanity from my side.
- Apart from this, I am eager to learn and grow with this community by participating in the GSOC program and completing it.
Past Experience
BPHC Unite (Student Utility Portal)
- This project was done as part of the Software Engineering course. I was working with other four people on developing this software, which is a platform that facilitates users going to the same destination to form cab size groups.
- I learned about the agile method’s practical applications for software development called the Scrum framework and the basics of MERN Stack, and the usage of NO-SQL databases.
- The project was developed in three sprints: writing the work system snapshots, maintaining a report of the product backlog, drawing use cases, class and activity diagrams, and creating a mind map for user personas and writing. Acceptance criteria and unit test scripts for testing the application.
- The course had a topic of software testing where we were taught various kinds of testing and its applications, but through this project, I got hands-on experience of testing a software application.
- Project Report: https://tinyurl.com/adc76pdp
- Website: https://bphcunite.herokuapp.com/
Summer Internship at Heraizen Technologies Pvt. Ltd., Bangalore
- My task was to develop User Interface Screens for a college management software, an automation tool for universities’ accreditation process.
- Accreditation is a quality assurance process under which educational institutions’ services and operations are evaluated and verified by an external body to determine whether applicable and recognised standards are met.
- These standards are decided upon various criteria. I had to display the data in the form of graphs and pie charts, where the course objectives and outcomes were the metrics being mapped to the various criteria of the Blooms taxonomy.
- I learnt to write production-level code with proper documentation and collaborate with other team members on git.
Describe any open source projects you have contributed to as a user and contributor
- Updated lit-element and granite-lit-Bulma dependencies: There was a bug in this project due to which there were problems in updating the version of a dependency. I fixed this by debugging the code and changing import statements.
- fix(deps): update dependency Bulma to v0.9.1: The automatic update of dependency failed due to some breaking changes that required minor modifications in our code to fix.
- Made collections info panel compact for mobile/smaller views: Phoenix is a TypeScript-based event display framework using the popular three.js library for 3D. It focuses on being experiment agnostic by design, with standard tools (such as custom menus, controls, propagators). The tables displaying values of different experimental environment metrics had to be made responsive and compact for smaller screen types. I worked on this issue where I learnt a lot from the mentor who reviewed my PR and gave extensive feedback.
- Completed Microtasks:
- Cypress Tests for Wikipedia-preview (both desktop and mobile views)
- Set up CircleCI and cross-browser testing (on chrome and firefox)
Any Other Info
- I started by going through Cypress’s documentation and came across a starter project for which I followed the tutorial and wrote integration tests. I learned many things from it and realised how necessary testing is in the software development life cycle.
Link to the project: Cypress Testing for Todo App
- While researching about testing and Cypress, I came across many technical blogs where they gave more importance to writing reusable and short tests for testing high-end and critical functionalities that I think can be incorporated into this project for writing quality tests.
- After completing this project, I would also love to contribute to other Wikimedia Foundation projects and help the open-source community grow.