Published using Google Docs
Improve end-to-end testing in the Mobile app
Updated automatically every 5 minutes

Improve End-to-End Testing in the Mobile App

GSoC 2017 Project Proposal for Moodle

Personal Details

Student Name : Diwakar Moturu

Email Id : diwakar03121997@gmail.com

GitHub : magician03 []

Moodle Tracker : magician03 []

WebPage : magician03.github.io []

Skype : diwakar03121997 

Timezone : ASIA/KOLKATA | GMT+05:30 I INDIA

Project Description

The project aims to enable the Moodle Mobile App with fully automated End-to-End testing capabilities with SauceLabs and Travis CI using latest upgraded versions of Node, Protractor, Gulp, Appium, Selenium with latest Moodle Mobile App v3.3.0 [~15/5/2017].

Integrating SauceLabs and TravisCI enables a completely automated build on Travis along with End-to-End testing on SauceLabs’ Browsers, Mobile/Tablet Android Emulators, Mobile/Tablet iOS Simulators [and Real Devices exclusively for premium users]. Incase of any failure in Travis build, debugging can be easily done as SauceLabs provides the actual video and screenshot logs of all the tests for 30 days [only metadata & screenshots after that] and TravisCI restores the build log for lifetime of a repository.

        Project Goals

Work done to date

I have set the Moodle Mobile Development environment and End-to-End testing environment on my local system and have completed the following tasks :

        Proof of work

        GitHub Branch name - e2e []

        Git Diff Url with moodlehq/moodlemobile2:master - []

        Travis Build Log [with SauceLabs Testing] -  Successful and Passed []

        SauceLabs Logs** [ 5 Tests | 1 TestSuite ]

        

[ ** - SauceLabs video and runtime logs are available for only 30 days. Only MetaData and runtime screenshots will be restored after that. All the above tests were run on 19-March-2017 ]

Minimum Requirements

Moodle Mobile Tracker Issues

        I am regular contributor[] of Moodle Mobile since late Dec 2016. Some of the significant issues I have resolved [with guidance from Juan Leyva, Daniel Palou, Pau Ferrer] :

Some of these have been integrated in v3.2.1 and rest are likely to be integrated in v3.3.0. Apart from these, I have also commented my suggestions, earlier, on this project in MOBILE-1864[]. This experience made me familiar with Development work flow, coding styles and other best practices followed by Moodle Mobile Team. Along with this and my ‘Work done to date’ [] , I am confident that I can successfully complete this project.

Custom App [with additional page in sidemenu]

[ Phonegap build is successful. Apk generated. Unfortunately, not installing on device. This is a common issue faced by many as mentioned in this[] forum thread. The sidemenu changes have been successfully applied and can be tested in browser. I have also tried to fix the learn-moodle branch of phonegap-build repo. More info about it here[] ]

Project Timeline

Community Bonding Period [May 5 - May 29]

[ Note : I’ll be having my End-Semester exams during 1st week of this period. I’ll be working for maximum of 1 Hr during the 1st week. To compensate this loss, I’ll be working on weekends and extra time during the rest of community bonding period. I will also start the coding work a week prior to proposed timeline as my summer break starts way earlier than May 30 and the extra time towards the end could serve as buffer ]

Part A, Phase - 1 [May 30 - June 12]

Part B, Phase - 1 [June 13 - June 25]

Phase - 1 Evaluations & Buffer time [June 26 - June 30]

Part A, Phase - 2 [July 1 - July 12]

Part B, Phase - 2 [July 12 - July 23]

Phase - 2 Evaluations & Buffer time [July 24 - July 28]

[ Note : During this period, my college re-opens and I need 2-3 days of time for travel, course registrations and other formalities. To compensate any loss, I’ll be working on weekends and extra time in Phase-2&3 ]

Part A, Phase - 3 [July 29 - August 9]

Part B, Phase - 3 [August 10 - August 20]

Final Code Submission & Student Evaluations [August 21 - August 29]

The above mentioned timeline is flexible and is subject to changes according to mentor suggestions and other factors during the community bonding period. I will be dedicating 40-50 hours per week during the development period and stay in touch with mentor regularly. GSoC, Moodle are my only commitments during the timeline. I will also start a GSoC journal blog and will be updating the work done, things learnt regularly after every Part/Phase.

Post GSoC period

After the completion of GSoC Development period & Evaluations, I’ll contribute towards smooth integration of the project into moodlehq/moodlemobile2:master codebase, update the code consistently with latest features and regular maintenance checks.

Open-Source Development Experience

Projects/Work Experience [Software Development related]

Projects

Work

Academics

I am currently sophomore pursuing Bachelors of Technology [B.Tech] course in Information Technology at Indian Institute of Information Technology-Allahabad [IIIT-A ]. Software Development courses I have completed or currently undertaking here :

  • Theory of Programming
  • Computer Organisation & Architecture
  • Object Oriented Programming
  • Design & Analysis of Algorithms
  • Databases Management Systems
  • Theory of Computers and Hardware
  • Data Structures
  • Operating Systems
  • Principles of Programming Languages

Why Moodle ?

I am a big time Open-Source enthusiast and use Open-Source softwares wherever and whenever possible because of the awesome community collaborations and love to contribute to Open-Source world.

        Moodle being one of the earliest adopters[2002] of Open-Sources and first & best in the field of Education and Learning Management Systems, attracted me to the core of my heart. With its vast user base of 100 Million+, global appeal, rapidly growing Mobile ecosystem, welcoming Developer community I hope I would evolve as a person connecting with people all around globe and my software development skills under collaborative environments would grow multiple folds.

        Moodle’s design patterns, coding styles and other best practices taught me a lot since my first involvement here. Moodle, at the core, works for global Education, Training and its effective Management, for which I love to collaborate and contribute and I feel this is the best time and opportunity for it.

References

[1] TestSuites to debug (only 29 in total). Each TestSuite contains 4-6 tests.

  • files.spec.js
  • notes.spec.js
  • calendar.spec.js
  • contacts.spec.js
  • participants.spec.js
  • notification.spec.js
  • coursecompletion.spec.js
  • teacher_participation.spec.js
  • label.spec.js
  • login.spec.js
  • survey.spec.js
  • grades.spec.js
  • courses.spec.js
  • teacher_new_staff_induction_course.spec.js
  • mod_book.spec.js
  • mod_chat.spec.js
  • resource.spec.js
  • mod_wiki.spec.js
  • settings.spec.js
  • quiz.spec.js
  • mod_forum.spec.js
  • mod_assign.spec.js
  • mod_choice.spec.js
  • mod_folder.spec.js
  • mod_glossary.spec.js
  • teacher_course.spec.js
  • teacher_grades.spec.js
  • course_contents.spec.js
  • course_filtering.spec.js

[2] Features/Modules for which new TestSuites/Tests needs to be added

[ Note 1: This list is not yet completed. This will be further updated after the release of Moodle Mobile v3.3.0 on ~15/5/2017 during community bonding period. ]

[ Note 2: Course specific tests for newly added features, modules, improvements will be done on newly added course “Digital Literacy” which is built exclusively to test latest Moodle Mobile versions ]

  • Lesson Module
  • FeedBack Module
  • DataBase Module
  • User Profile Badges
  • Message preferences
  • Notification preferences
  • Message functionality
  • Logout functionality
  • Privacy Policy Info
  • My Files Uploads
  • Search Messages & Contacts
  • Context Menu for all Modules
  • Signup functionality
  • Profile Picture Update
  • My Grades functionality
  • Glossary improvements
  • Forum improvements
  • Calendar improvements
  • Wiki improvements
  • Message & Notification Counters
  • Submission improvements
  • Various other improvements

[3] Unit tests present in the codebase are currently outdated and might be misleading for beginners. ( I myself stumbled upon them for a week ). Later, Mobile Team Lead, Juan Leyva  has confirmed that Unit tests won’t be added in MOBILE-1952[]. So, existing Unit tests can be safely removed along Karma and other related dependencies.