Cypress Ambassador Spotlight: Mohammad Monfared

June 22, 2023

By Ronald Williams

What motivates you to be a Cypress Ambassador?

As a Cypress Ambassador, I am motivated by my passion for software testing and the positive impact that Cypress has on the development community. Cypress has revolutionized the way we approach end-to-end testing, making it more accessible, efficient, and enjoyable. Being an ambassador allows me to share my knowledge, experiences, and enthusiasm for Cypress with others, helping them unlock the potential of this powerful testing framework. I am driven by the opportunity to contribute to the growth of Cypress, engage with the community, and empower fellow product and test developers to build high-quality, reliable web applications.

How do you currently help others that are either using Cypress or interested in using Cypress?

1. Community Support: I participate in many social groups, communities and online forums such as the Cypress discord or Stack Overflow to provide guidance and solutions to guys who encounter challenges while using Cypress. I make an effort to answer questions, troubleshoot issues, and share best practices to ensure a smooth Cypress testing experience for others. In addition, I spend at least an hour or two every day responding to messages and questions I receive on LinkedIn, Telegram, and via email.

2. Content Creation: I regularly create educational content like video tutorials (at least one per week) and blog posts focused on Cypress. Not just for the public, but also for the current company I'm working for. These resources aim to simplify complex concepts, demonstrate practical use cases, and provide step-by-step guidance for leveraging Cypress effectively. By sharing my knowledge and experiences, I help newcomers understand Cypress and experienced users enhance their skills.

3. Speaking Engagements: I participate as a speaker at conferences, webinars, and local meetups specially for the company, where I deliver presentations or workshops on Cypress. By sharing insights, tips, and real-world examples, I aim to inspire and educate audiences about the capabilities and advantages of Cypress in modern web development workflows.

4. Collaboration and Mentoring: I engage in collaborative projects with other Cypress enthusiasts, contributing to open-source initiatives and collaborating on testing frameworks and plugins. I also offer mentorship and guidance to developers who are new to Cypress, helping them navigate through challenges, providing code reviews, and sharing best practices.

5. Social Media and Online Presence: I maintain an active presence on social media platforms (specially on LinkedIn with ~10K followers), sharing Cypress-related updates, tips, and resources. By engaging with the community through social platforms I foster discussions, address queries, and promote the adoption of Cypress among test developers. 6. Github: You will find lots of the examples and recipes about Cypress in my Github focusing on day-to-day automation needs.

Especially framework templates which are ready to use templates. Overall, my goal is to assist and empower others in their journey with Cypress, whether it's by providing direct support, creating educational content, delivering talks, collaborating on projects, or engaging through social media channels.

What is your favorite Cypress feature?

Choosing a favorite Cypress feature is not an easy task, as Cypress offers a plethora of powerful and user-friendly capabilities. However, if I had to pick one, I would say that my favorite Cypress features are cy.session() and time-travel debugging (+pause/debug/inspect application's dom).

I always struggled with any automation framework to keep the user logged in (handling localStorage) or switch between multiple sessions (like two logged in users). Then when I tried cy.session() for the first time I was surprised and excited that they made it much easier than other frameworks.

Additionally, Cypress's time-travel debugging feature is remarkable. It allows developers to pause the test execution at any point, step through the code, and inspect the application's state at that particular moment. This interactive debugging experience makes it easier to identify and troubleshoot issues by providing clear visibility into the application's behavior during test execution. It has proven to be invaluable in diagnosing problems, understanding the test flow, and gaining insights into complex test scenarios.

The combination of time-travel with pause/play or debug and inspecting elements and console during the tests, makes Cypress a joy to work with, as it enhances the development experience and enables efficient test creation and debugging. These features greatly contribute to the overall developer productivity and confidence in the quality of web applications being tested.

What is your favorite "Cypress Best Practice" and why?

One of my favorite Cypress best practices is to write atomic and independent tests. Atomic tests refer to tests that focus on a single, specific functionality or feature of the application. Independent tests, on the other hand, are not dependent on the state or outcome of other tests.

There are several reasons why I consider this best practice to be crucial, Modularity and Maintainability: Writing atomic tests allows for better code organization and maintainability. Each test focuses on a particular aspect of the application, making it easier to understand, update, and troubleshoot. When tests are modular and independent, it becomes simpler to add, modify, or remove them without impacting other tests.

Test Isolation: Independent tests ensure that each test runs in isolation and does not rely on the state left behind by previous tests. This improves the reliability and predictability of the tests, as they are not influenced by external factors. Test failures can be easily pinpointed to the specific functionality being tested, making it easier to identify and fix issues.

Scalability and Parallel Execution: When tests are atomic and independent, they can be executed in parallel, leading to significant time savings. Parallel execution maximizes the utilization of computing resources and speeds up the overall test suite execution. It allows for faster feedback cycles and helps maintain a responsive testing pipeline.

Debugging and Troubleshooting: Atomic tests make it easier to debug and troubleshoot failures. With smaller, focused tests, it is simpler to identify the specific step or functionality causing the issue. Debugging becomes more efficient, as developers can isolate and analyze the problem within a smaller context.

Test Readability and Documentation: Atomic and independent tests are more readable and act as self-documenting entities. Each test clearly describes and verifies a specific behavior, making it easier for developers and stakeholders to understand the intended functionality. This improves the overall clarity and maintainability of the test suite. By following the best practice of writing atomic and independent tests, we can achieve a more modular, scalable, and reliable test suite. It promotes better code organization, improves debugging capabilities, and facilitates faster and more efficient test execution.

Outside of work, what are your favorite things to do (hobbies, passions, etc.)?

Here are a few of my favorite things to do, reading. I love immersing myself in books across various genres, including industry knowledge and self-improvement.

Also, I follow blog posts and always have a long reading list in chrome which I read in my free time during the day. Outdoor Activities: I enjoy going for leisurely walks with my family, or simply sitting in a peaceful park. It's a great way to disconnect from technology, appreciate the beauty of the surroundings, and clear my mind.

Writing/Content creation: Yes, for someone who tries to share his knowledge, writing a blog post or recording a video is a hobby! Especially for me!

Music: Listening to music and discovering new artists and genres is a favorite pastime of mine. Whether it's playing my favorite songs or exploring new playlists, music has a way of uplifting my mood and providing a soundtrack to different moments in life.

What is one professional milestone you are proud of? (an accomplishment, celebration, recognition, etc.)

One professional milestone that fills me with immense pride is the creation and successful growth of my YouTube channel, where I have the opportunity to share my knowledge and expertise with a wide audience. This achievement represents a significant step in my career journey and showcases my dedication to educating and empowering others.

Starting a YouTube channel allowed me to combine my passion for teaching with my expertise in a particular field. It provided a platform for me to share valuable insights, tutorials, and practical advice with aspiring learners and professionals seeking to expand their knowledge. Creating educational videos has allowed me to refine my communication skills, improve my ability to simplify complex concepts, and engage with a diverse community of learners.

I am proud to be a teacher, mentor, and influencer in my field, and I am dedicated to making a difference by sharing my knowledge and experiences with others. By the way, I will always be a learner!

For new users -  what is the best way to "get started" with Cypress?

I believe cypress documentation and learning materials is the best way to start. But they can start with my tutorials as well.

What is your favorite quote or saying?

"Success is a journey, not a destination."

About the Ambassador Program.

The Cypress Ambassador program supports the top Cypress advocates around the world. Through this program, Ambassadors are offered speaking opportunities, a personalized hub, and visibility within our extensive network.To learn more about these wonderful ambassadors visit our Official Ambassador webpage.

The Cypress Community Team has been working on the official Cypress Ambassador program to include a variety of new experiences, support resources, benefits, contribution areas, and much more. One of our main priorities is to highlight our current Ambassadors and the amazing work they are doing. They truly embody the community spirit through their advocacy to help empower others. We will be having more opportunities to connect with our Ambassadors this year. Make sure to stay updated on upcoming events and opportunities.