Page MenuHomePhabricator

GSOC '21 Proposal: Write Cypress tests for wikipedia-preview
Closed, DeclinedPublic

Description

(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)

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
  • 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.

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.

Event Timeline

Hey @karthikshetty03

Thanks for showing your interest to participate in Google Summer of Code with Wikimedia Foundation! Please make sure to upload a copy of your proposal on Google's program site as well in whatever format it's expected of you, include in it this public proposal of Phabricator before the deadline i.e April 13th. Good luck :)

GSoC application deadline has passed. If you have submitted a proposal on the GSoC program website, please visit https://phabricator.wikimedia.org/project/view/5104/ and then drag your own proposal from the "Backlog" to the "Proposals Submitted" column on the Phabricator workboard. You can continue making changes to this ticket on Phabricator and have discussions with mentors and community members about the project. But, remember that the decision will not be based on the work you did after but during and before the application period. Note: If you have not contacted your mentor(s) before the deadline and have not contributed a code patch before the application deadline, you are unfortunately not eligible. Thank you!

@karthikshetty03 ​We are sorry to say that we could not allocate a slot for you this time. Please do not consider the rejection to be an assessment of your proposal. We received over 100 quality applications, and we could only accept 10 students. We were not able to give all applicants a slot that would have deserved one, and these were some very tough decisions to make. Please know that you are still a valued member of our community and we by no means want to exclude you. Many students who we did not accept in 2020 have become Wikimedia maintainers, contractors and even GSoC students and mentors this year!

Your ideas and contributions to our projects are still welcome! As a next step, you could consider finishing up any pending pull requests or inform us that someone has to take them over. Here is the recommended place for you to get started as a newcomer: https://www.mediawiki.org/wiki/New_Developers.

If you would still be eligible for GSoC next year, we look forward to your participation