<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Louise</title>
    <description>The latest articles on DEV Community by Louise (@lou_bku).</description>
    <link>https://dev.to/lou_bku</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1960702%2F5a83bd67-06ed-4081-a1d6-df4064c84908.jpg</url>
      <title>DEV Community: Louise</title>
      <link>https://dev.to/lou_bku</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lou_bku"/>
    <language>en</language>
    <item>
      <title>Don’t forget the emails: Testing post-signup user interactions</title>
      <dc:creator>Louise</dc:creator>
      <pubDate>Wed, 09 Apr 2025 11:07:56 +0000</pubDate>
      <link>https://dev.to/lou_bku/dont-forget-the-emails-testing-post-signup-user-interactions-1o75</link>
      <guid>https://dev.to/lou_bku/dont-forget-the-emails-testing-post-signup-user-interactions-1o75</guid>
      <description>&lt;p&gt;When we think about testing websites and apps, most of us focus on the core UI — buttons, forms, modals, API responses. But what about the part of the user journey that happens outside your product?&lt;/p&gt;

&lt;p&gt;I’m talking about emails — and not just marketing blasts, but the critical transactional messages users rely on: password resets, verification codes, welcome emails, and more. As a digital marketing manager, I’ve seen first-hand how overlooked this layer of communication can be — and how important it is to get it right.&lt;/p&gt;

&lt;p&gt;Here’s why email testing should be a non-negotiable part of your QA strategy — and how devs and marketers can collaborate to make it happen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why post-signup emails matter more than you think&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine this scenario:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;A user signs up.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The UI shows “Check your inbox to confirm your email.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The user never receives anything.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They try again. Still nothing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They give up.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This isn’t a bug in your codebase. The frontend looks fine. But from a user’s point of view, your app is broken.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Transactional emails are part of the user experience.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When they fail — or show incorrect information, formatting issues, or broken links — users lose trust fast. Worse still, these emails often get the least attention in testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common pitfalls in email-based user flows&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here are some all-too-common email issues that sneak into production:&lt;/p&gt;

&lt;p&gt;🧪 No testing in staging: Email delivery might only be wired up in production, meaning devs can’t test flows properly pre-launch.&lt;/p&gt;

&lt;p&gt;🪝 Webhooks misfiring: Trigger logic that should send an email isn’t firing correctly, especially after auth or third-party API updates.&lt;/p&gt;

&lt;p&gt;🔗 Broken or expired links: Magic links, password resets, or confirmation links that 404 or don’t redirect properly.&lt;/p&gt;

&lt;p&gt;🔤 Incorrect dynamic content: Emails showing the wrong user name, product name, or even language due to poor template logic.&lt;/p&gt;

&lt;p&gt;🧠 No clarity in the message: The copy doesn’t explain what the user should do next — e.g., “click to verify” without explaining why.&lt;/p&gt;

&lt;p&gt;These things aren’t just annoying — they directly affect conversion, retention, and customer support volume.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tools that make email testing easier&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If your team is skipping email testing because “it’s hard,” the good news is: it doesn’t have to be.&lt;/p&gt;

&lt;p&gt;Here are a few tools that help developers and QA teams automate and validate email interactions:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mailosaur.com/email-testing" rel="noopener noreferrer"&gt;Mailosaur&lt;/a&gt; – Great for automated testing. Works with frameworks like Playwright, Selenium, and Cypress. You can check that an email was received, inspect its contents, and even click links or extract OTP codes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to include in your email test suite&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When testing post-signup communication, here’s a solid checklist to get you started:&lt;/p&gt;

&lt;p&gt;✅ Email is triggered and received&lt;br&gt;
✅ Subject line and sender are correct&lt;br&gt;
✅ Personalization (name, product info) renders properly&lt;br&gt;
✅ CTA or link goes to the right destination&lt;br&gt;
✅ Content is clear and mobile-friendly&lt;br&gt;
✅ Edge cases (missing data, invalid tokens) handled gracefully&lt;br&gt;
✅ Multi-language versions work (if applicable)&lt;/p&gt;

&lt;p&gt;Also test negative paths — e.g., what happens if a user tries to use a link twice, or if the token expires?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final thoughts: Collaboration is key&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Too often, email testing is treated like someone else’s job — devs handle the logic, marketing writes the copy, and nobody tests the full experience.&lt;/p&gt;

&lt;p&gt;But if the goal is user success, both sides need to collaborate. Set up a shared test plan for email flows. Get copy into staging early. Use tools that let you QA emails like any other part of your product.&lt;/p&gt;

&lt;p&gt;Because if users can’t get past the inbox, they’ll never reach the rest of your carefully built app.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Why testing is the backbone of great customer experience</title>
      <dc:creator>Louise</dc:creator>
      <pubDate>Wed, 26 Mar 2025 11:06:41 +0000</pubDate>
      <link>https://dev.to/lou_bku/why-testing-is-the-backbone-of-great-customer-experience-23bh</link>
      <guid>https://dev.to/lou_bku/why-testing-is-the-backbone-of-great-customer-experience-23bh</guid>
      <description>&lt;p&gt;&lt;strong&gt;One bug can break a brand&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Customer trust is fragile. One broken feature, one failed transaction, or one email that never arrives can be the difference between a loyal customer and a lost one. In an era where users expect seamless digital experiences, software failures don’t just annoy, they drive customers straight to competitors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The cost of QA failures: Big brands, bigger blunders&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;History is littered with companies that underestimated the power of testing. Remember when &lt;strong&gt;Amazon&lt;/strong&gt; lost an estimated &lt;strong&gt;$100 million&lt;/strong&gt; in sales because a glitch prevented users from adding items to their cart? Or when a software bug at &lt;strong&gt;Knight Capital&lt;/strong&gt; cost them &lt;strong&gt;$440 million&lt;/strong&gt; in 45 minutes? These weren’t just tech issues; they were business catastrophes.&lt;/p&gt;

&lt;p&gt;Closer to home, think about the last time an app crashed mid-checkout, a website failed to load, or an email confirmation never arrived. Did you give the brand another chance, or did you move on? Most users won’t complain, they’ll just leave.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automation: The safety net for customer experiences&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Manual testing is slow, error-prone, and can’t keep up with today’s rapid development cycles. This is where test automation steps in. Automated testing ensures that every release is battle-tested and emails land where they should, login flows don’t break, and checkout processes run like clockwork.&lt;/p&gt;

&lt;p&gt;Regression tests? Handled. Multi-device compatibility? Checked. Critical workflows? Verified before customers even get a chance to see them fail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;QA is not optional, it’s survival&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Great customer experience isn’t just about flashy design or catchy marketing. It’s about reliability. It’s about confidence. If your software isn’t tested properly, your customers are testing it for you and they won’t hesitate to walk away when it fails.&lt;/p&gt;

&lt;p&gt;Invest in QA, automate aggressively, and put customer experience first. Because in today’s market, the best-tested product wins.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Testing Account Verification with Cypress</title>
      <dc:creator>Louise</dc:creator>
      <pubDate>Wed, 12 Mar 2025 10:07:22 +0000</pubDate>
      <link>https://dev.to/lou_bku/testing-account-verification-with-cypress-4ccf</link>
      <guid>https://dev.to/lou_bku/testing-account-verification-with-cypress-4ccf</guid>
      <description>&lt;p&gt;&lt;strong&gt;Who should perform account verification testing?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mailosaur.com/cypress" rel="noopener noreferrer"&gt;Account verification&lt;/a&gt; is used primarily to confirm that the information defining the account is accurate and represents a real person, company, or other organization. It’s an important step for combating fraud, especially with accounts that deal with any financial transactions. It’s also a helpful tool for removing bot and spam accounts, which can otherwise waste resources and introduce security vulnerabilities.&lt;/p&gt;

&lt;p&gt;In many account verification systems, the process is something like this: a user inputs their information into a form, the system creates an unverified account based on that form, and then the account is verified - often with an automated email or SMS sent to the email address or number the user provided on sign-up. Once the user has confirmed the email or phone is real by typing in the code, the account is changed to a verified one.&lt;/p&gt;

&lt;p&gt;Unverified accounts often have limited permissions and functionality until they are verified. They can also be automatically checked for indications the account is fraudulent if the user does not verify the account, and even automatically deleted if they fail additional checks.&lt;/p&gt;

&lt;p&gt;Some verification systems are more complex than checking an email or phone address. Depending on the level of security required, account verification can also involve checking if bank account details are matched to an existing account, if ID documents match photos and addresses, and more. The complexity of the system will determine the amount and depth of testing required.&lt;/p&gt;

&lt;p&gt;As a basic rule, account verification testing should be performed by anyone using a system to verify accounts. The accuracy and functionality of the system are crucial – if the system does not correctly verify accounts, your users might not be able to access your services. Even worse, if the system incorrectly verifies fraudulent accounts, it can compromise the security of your organization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Should you use Cypress for testing account verification?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are several software tools out there to help you set up account testing, and &lt;a href="https://www.cypress.io" rel="noopener noreferrer"&gt;Cypress&lt;/a&gt; is a popular option. It’s a flexible testing platform that runs directly in your browser to mimic user interactions as closely as possible, and it can be integrated easily with other tools to come up with a customized solution for your testing requirements.&lt;/p&gt;

&lt;p&gt;A common example of this would be integrating &lt;a href="https://www.cypress.io" rel="noopener noreferrer"&gt;Mailosaur’s&lt;/a&gt; software tools for generating real, accessible email addresses and phone numbers ready to use for testing. This is particularly helpful for account verification systems that confirm emails and phones input by users. It makes it possible to automate every step of the verification process directly in Cypress’s interface, including checking verification messages and inputting security codes.&lt;/p&gt;

&lt;p&gt;Whether or not Cypress is the right tool for you will depend on your organization’s needs, capabilities, and resources. It may help to try a few different tools for quick and simple tests to see which are best suited.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to test account verification systems with Cypress&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Setting up a test with Cypress involves three main steps: &lt;a href="https://mailosaur.com/docs/frameworks-and-tools/cypress/email-testing#testing-verification-codes" rel="noopener noreferrer"&gt;creating your test plan, setting up and performing the test, and finally, evaluating the test results.&lt;/a&gt; The next few sections will go over each of these three steps in detail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating a test plan for account verification&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Having a thorough, detailed test plan is one of the best things you can do to set up successful and efficient software testing. While the exact contents of the test plan will depend on your specific situation, some things you may want to include are: • Detailed test outline with each step to be tested • Clearly defined goals • People responsible for testing • Where the test results and other information can be accessed&lt;/p&gt;

&lt;p&gt;Of all of these, the test outline is often the most complex and detailed part of the plan to create. When drafting a test outline, a starting point can be listing all of the ways the user interacts with the account creation/verification process, how the software is expected to respond at each of these points, and what opportunities there are for users to input incorrect or fraudulent information.&lt;/p&gt;

&lt;p&gt;Here is a sample list of possible user interactions and software responses for a simple account verification process that checks if an email and/or phone is functional: • User inputs their info to create an account • User inputs are checked for validity • Account verification email and/or SMS is sent based off user input • User clicks verification link and/or inputs code • Checking if account is successfully verified • User is logged into account or redirected to the right page • Confirmation email/SMS of account verification&lt;/p&gt;

&lt;p&gt;Once you have your test plan ready to go, the next step is to familiarize yourself with Cypress and set up the test, which we’ll go over in the next section.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using Cypress to set up an account verification test&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First, if you don’t already have Cypress set up, you’ll need to install it. There are two options for this: you can either install it as a direct download or using npm. You can find additional help with installation in their documentation section. They also have a section in their documentation on setting up a simple test to familiarize yourself with their software if you haven’t used it before.&lt;/p&gt;

&lt;p&gt;Once Cypress is ready to go, the next step is to begin writing the test using the test plan you created earlier as a reference. Tests in Cypress are structured in three steps: setting up the base state, performing an action, and checking to see if the base state has changed and how. More complex tests can involve combining multiple actions and checks in a single test, but the overall test structure remains the same.&lt;/p&gt;

&lt;p&gt;Here’s an example of the first few steps of verifying an account: 1. Load the page 2. Input user data in the right fields 3. Submit user data 4. Check if account verification email/SMS was sent&lt;/p&gt;

&lt;p&gt;In the example above, loading the page is how the base state is defined. Inputting user data and submitting it are two linked actions meant to change the base state. Checking to see if submitting the data triggered an automated email is how the new state is being measured. Depending on the results of the test, you can either perform more tests further along in the verification process or try to adjust your system to fix the results if something went awry.&lt;/p&gt;

&lt;p&gt;Cypress has fairly robust error messages to help you determine why a test may have failed, and also includes color changes in the code itself to show if a step was successful or not: blue for pending, red for failures, and green for successes.&lt;/p&gt;

&lt;p&gt;It's worth keeping in mind that sometimes when a test fails, it’s because of something in the test code itself, and not necessarily the system you are testing. Checking error messages and Cypress’s documentation can help you determine whether this is the case.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Incorporating additional software tools with Cypress&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cypress has the option to integrate other software tools to make testing easier and increase testing capabilities. A lot of account verification testing systems involve checking user email addresses and sometimes phone numbers as well, and while Cypress does not have a way to generate email addresses or phone numbers for testing, there are tools that can create both of these.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mailosaur.com/docs/frameworks-and-tools/cypress/email-testing#testing-verification-codes" rel="noopener noreferrer"&gt;Mailosaur&lt;/a&gt; develops software tools and more that are specifically focused on supporting and automating end-to-end testing of systems relying on emails and SMS. Our software can be used to simulate real world interactions by incorporating working phone numbers and unlimited email addresses into your testing. This helps with testing any systems that require checking if an email address or phone number is authentic, since you will have access to any of the messages they receive.&lt;/p&gt;

&lt;p&gt;Learn more about &lt;a href="https://mailosaur.com/cypress" rel="noopener noreferrer"&gt;testing user interactions with Cypress here!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mailosaur</category>
      <category>cypress</category>
      <category>testing</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
