{"id":16800,"date":"2024-09-02T11:54:39","date_gmt":"2024-09-02T11:54:39","guid":{"rendered":"https:\/\/www.mautic.org\/gsoc-2024-project-report-end-end-test-suite-mautic\/"},"modified":"2024-12-18T11:56:32","modified_gmt":"2024-12-18T11:56:32","slug":"gsoc-2024-project-report-end-end-test-suite-mautic","status":"publish","type":"post","link":"https:\/\/mautic.org\/blog\/gsoc-2024-project-report-end-end-test-suite-mautic","title":{"rendered":"GSoC 2024 Project Report: End to End Test Suite for Mautic"},"content":{"rendered":"<h2><strong>Project Overview:<\/strong><\/h2>\n<ul>\n<li>Project Name: <a href=\"https:\/\/summerofcode.withgoogle.com\/programs\/2024\/projects\/XtgSvMJU\" target=\"_blank\" rel=\"noopener\">End-to-End Test Suite for Mautic<\/a><\/li>\n<li>Project Repository: <a href=\"https:\/\/github.com\/mautic\/mautic\" target=\"_blank\" rel=\"noopener\">Mautic GitHub Repository<\/a><\/li>\n<li>Contributor: Priyanshi Gaur<\/li>\n<li>Mentors: John Linhart, Mohit Aghera, Ruth Cheesley<\/li>\n<\/ul>\n<p>Mautic currently has around 60% code coverage with unit and functional tests, but lacks comprehensive end-to-end testing. As a result, we mostly rely on users manually testing bug fixes and new features. This reliance creates challenges in ensuring the reliability and stability of new changes introduced through pull requests (PRs). Dependence on user testing often results in bugs being discovered post-release, impacting user experience and trust in the platform.<\/p>\n<p>This Google Summer of Code (GSoC) project aimed to address these issues by focusing on four main goals:<\/p>\n<ul>\n<li>Develop an End-to-End Test Suite<\/li>\n<li>Integrate the test suite with GitHub Actions for automated testing.\u00a0<\/li>\n<li>Write detailed documentation to support contributors in writing and executing tests effectively.<\/li>\n<li>Educate Marketers on Contribution<\/li>\n<\/ul>\n<h2><strong>Pull Requests and Commits:<\/strong><\/h2>\n<table>\n<tbody>\n<tr>\n<td>\n<p><strong>S.No.<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>Name<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>Type<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>Status<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>1.<\/p>\n<\/td>\n<td>\n<p><a href=\"https:\/\/github.com\/mautic\/mautic\/pull\/13884\" target=\"_blank\" rel=\"noopener\">Setup Codeception and add e2e tests for contacts<\/a><\/p>\n<\/td>\n<td>\n<p>Code<\/p>\n<\/td>\n<td>\n<p>Merged<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>2.<\/p>\n<\/td>\n<td>\n<p><a href=\"https:\/\/github.com\/mautic\/mautic\/pull\/14061\" target=\"_blank\" rel=\"noopener\">Improve e2e test suite<\/a><\/p>\n<\/td>\n<td>\n<p>Code<\/p>\n<\/td>\n<td>\n<p>Merged<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>3.<\/p>\n<\/td>\n<td>\n<p><a href=\"https:\/\/github.com\/mautic\/developer-documentation-new\/pull\/203\" target=\"_blank\" rel=\"noopener\">Add Documentation for End-to-End Test Suite<\/a><\/p>\n<\/td>\n<td>\n<p>Docs<\/p>\n<\/td>\n<td>\n<p>Merged<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>4.<\/p>\n<\/td>\n<td>\n<p><a href=\"https:\/\/github.com\/mautic\/mautic\/pull\/14086\" target=\"_blank\" rel=\"noopener\">GitHub Action Integration for e2e test suite<\/a><\/p>\n<\/td>\n<td>\n<p>CI\/CD<\/p>\n<\/td>\n<td>\n<p>In QA<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>5.<\/p>\n<\/td>\n<td>\n<p><a href=\"https:\/\/github.com\/mautic\/mautic\/pull\/14079\" target=\"_blank\" rel=\"noopener\">Add e2e test suite command<\/a><\/p>\n<\/td>\n<td>\n<p>Code<\/p>\n<\/td>\n<td>\n<p>Merged<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><strong>Documentation:<\/strong><\/h2>\n<p><a href=\"https:\/\/devdocs.mautic.org\/en\/5.x\/testing\/e2e_test_suite.html\">https:\/\/devdocs.mautic.org\/en\/5.x\/testing\/e2e_test_suite.html<\/a><\/p>\n<h2><strong>Blogs:<\/strong><\/h2>\n<table>\n<tbody>\n<tr>\n<td>\n<p><strong>S.No.<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>Name<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>1.<\/p>\n<\/td>\n<td>\n<p><a href=\"https:\/\/community.mautic.org\/assemblies\/gsoc\/f\/61\/posts\/6\">Week 0<\/a><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>2.<\/p>\n<\/td>\n<td>\n<p><a href=\"https:\/\/community.mautic.org\/assemblies\/gsoc\/f\/61\/posts\/12\">Week 1-2<\/a><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>3.<\/p>\n<\/td>\n<td>\n<p><a href=\"https:\/\/community.mautic.org\/assemblies\/gsoc\/f\/61\/posts\/35\">Week 3-4<\/a><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>4.<\/p>\n<\/td>\n<td>\n<p><a href=\"https:\/\/community.mautic.org\/assemblies\/gsoc\/f\/61\/posts\/36\">Week 5-6<\/a><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>5.<\/p>\n<\/td>\n<td>\n<p><a href=\"https:\/\/community.mautic.org\/assemblies\/gsoc\/f\/61\/posts\/42\">Week 7-8<\/a><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>6.<\/p>\n<\/td>\n<td>\n<p><a href=\"https:\/\/community.mautic.org\/assemblies\/gsoc\/f\/61\/posts\/43\">Week 9-10<\/a><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>7.<\/p>\n<\/td>\n<td>\n<p>Week 11-12<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><strong>Proposal vs. Actual Work:<\/strong><\/h2>\n<p>During the community bonding period, we discussed that writing E2E tests for multiple bundles might not be feasible within the project&#8217;s timeframe. Therefore, we focused on completing the tests for the contacts bundle.<\/p>\n<h2><strong>Future Work:<\/strong><\/h2>\n<p>The next steps involve expanding the test suite to cover more bundles and increase code coverage.<\/p>\n<h2><strong>Acknowledgement:<\/strong><\/h2>\n<p>I want to thank my mentors\u2014Mohit Aghera, Ruth Cheesley, and John Linhart\u2014for always being available, giving valuable advice, and reviewing my work. Special thanks to Rahul Shinde for his help as well. My mentors have been incredibly supportive throughout the GSoC period. I\u2019m also grateful to Google for this opportunity. The community has been very welcoming. The last three months have been an amazing learning experience, and I\u2019m grateful for everything I\u2019ve learned. I look forward to continuing my contributions to Mautic.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Read the final project report for the Google Summer of Code project, creating an End to End Test Suite for Mautic.<\/p>\n","protected":false},"author":2,"featured_media":17328,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"publish_to_discourse":"","publish_post_category":"","wpdc_auto_publish_overridden":"","wpdc_topic_tags":"","wpdc_pin_topic":"","wpdc_pin_until":"","discourse_post_id":"","discourse_permalink":"","wpdc_publishing_response":"","wpdc_publishing_error":"","footnotes":""},"categories":[1498],"tags":[939,943,951],"class_list":["post-16800","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-product-news","tag-google","tag-googlesummerofcode","tag-gsoc"],"acf":[],"_links":{"self":[{"href":"https:\/\/mautic.org\/wp-json\/wp\/v2\/posts\/16800","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mautic.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mautic.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mautic.org\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mautic.org\/wp-json\/wp\/v2\/comments?post=16800"}],"version-history":[{"count":1,"href":"https:\/\/mautic.org\/wp-json\/wp\/v2\/posts\/16800\/revisions"}],"predecessor-version":[{"id":17264,"href":"https:\/\/mautic.org\/wp-json\/wp\/v2\/posts\/16800\/revisions\/17264"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mautic.org\/wp-json\/wp\/v2\/media\/17328"}],"wp:attachment":[{"href":"https:\/\/mautic.org\/wp-json\/wp\/v2\/media?parent=16800"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mautic.org\/wp-json\/wp\/v2\/categories?post=16800"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mautic.org\/wp-json\/wp\/v2\/tags?post=16800"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}