{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/BllfmgtEgYXRkk9rqBkw/nV8pUR1Dfs7FcKplnUi4/xUFEuGbVZ-40.js"],
  "sourcesContent": ["import{jsx as e,jsxs as t}from\"react/jsx-runtime\";import{ComponentPresetsConsumer as n,Link as r}from\"framer\";import{motion as i}from\"framer-motion\";import*as a from\"react\";import s from\"https://framerusercontent.com/modules/pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js\";export const richText=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"h4\",{children:\"ROI of Smarter Testing\"}),/*#__PURE__*/e(\"p\",{children:\"Investing in intelligent automation testing isn\u2019t just a leap into the future\u2014it\u2019s a strategic move that offers substantial returns. Let\u2019s break down why this investment is worth every penny.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Empowering Your Team\"})}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Saving Manual Testing Resources:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Efficiency Gains:\"}),\" By automating repetitive and routine tasks, you free up your testers to focus on more complex and creative aspects of testing. This boosts productivity and job satisfaction.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Skill Utilization:\"}),\" Automation allows your team to use their skills more effectively, solving challenging problems instead of getting bogged down by mundane tasks.\"]})})]})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Configuration and Master Data:\"})}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Streamlined Setup:\"}),\" Intelligent automation tools like Qodex simplify the process of setting configurations and creating master data, making it easier for manual testers to set up and start testing quickly.\"]})})})]})]}),/*#__PURE__*/e(\"h4\",{children:/*#__PURE__*/e(\"strong\",{children:\"Delivering Quality Software\"})}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Establishing Best Practices:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Consistent Standards:\"}),\" Intelligent automation enforces consistent testing standards across your projects, ensuring high quality and reliability.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Continuous Improvement:\"}),\" With automated feedback loops, your testing processes continuously improve, leading to better software over time.\"]})})]})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Supporting Digital Transformation:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Modern Solutions:\"}),\" Intelligent automation supports your digital transformation initiatives by integrating seamlessly into modern development workflows and technologies.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Scalable Testing:\"}),\" As your projects grow, intelligent automation scales effortlessly, maintaining high testing standards without additional overhead.\"]})})]})]})]}),/*#__PURE__*/e(\"h4\",{children:/*#__PURE__*/e(\"strong\",{children:\"Strategic Integration into SDLC\"})}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Proactive Testing:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Early Bug Detection:\"}),\" Integrating intelligent automation into the Software Development Life Cycle (SDLC) helps detect and fix bugs early, reducing the cost and effort of post-release fixes.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Continuous Integration:\"}),\" Automated tests run continuously as part of your\",/*#__PURE__*/e(r,{href:\"https://qodex.ai/blog/cicd-trends\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\" CI/CD\"})}),\" pipelines, ensuring that every code change is tested and validated before it reaches production.\"]})})]})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Business Growth:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Competitive Advantage:\"}),\" Delivering high-quality software faster gives you a competitive edge, helping your business grow and succeed in the market.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Customer Satisfaction:\"}),\" Reliable software leads to higher customer satisfaction, repeat business, and positive word-of-mouth.\"]})})]})]})]}),/*#__PURE__*/e(\"h4\",{children:/*#__PURE__*/e(\"strong\",{children:\"Cost-Benefit Equation\"})}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Initial Investment vs. Long-Term Savings:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Upfront Costs:\"}),\" While the initial investment in intelligent automation tools and setup might seem high, the long-term savings in time, effort, and resources make it a cost-effective choice.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Reduced Maintenance:\"}),\" Automated maintenance of test scripts and data reduces ongoing costs, freeing up resources for other critical tasks.\"]})})]})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Careful Tool Selection:\"})}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Maximizing ROI:\"}),\" Choosing the right tools, like Qodex, ensures you get the maximum return on your investment. Qodex\u2019s advanced AI capabilities streamline your testing process, making it both efficient and effective.\"]})})})]})]}),/*#__PURE__*/e(\"p\",{children:\"Investing in Qodex amplifies these benefits, providing an intelligent automation solution that\u2019s both powerful and user-friendly. With Qodex, you get:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Comprehensive Coverage:\"}),\" Ensure thorough testing with Qodex\u2019s exhaustive test suites.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Real-Time Insights:\"}),\" Gain valuable insights with real-time analytics and feedback.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Seamless Integration:\"}),\" Easily integrate Qodex into your existing workflows for a smooth transition.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"Ready to revolutionize your testing strategy?\",/*#__PURE__*/e(r,{href:\"https://www.app.qodex.ai/\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\" Explore Qodex today!\"})})]}),/*#__PURE__*/e(\"p\",{children:\"The future of software testing is intelligent, efficient, and automated. As you consider your next steps, remember that investing in intelligent automation testing not only enhances your testing capabilities but also drives business growth.\\xa0\"})]});export const richText1=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Transitioning to intelligent test automation is a game-changer for modern software development. By leveraging AI and machine learning, you can enhance efficiency, reduce costs, and improve the quality of your software.\"}),/*#__PURE__*/e(\"p\",{children:\"From assembling a dedicated team and selecting the right tools to implementing best practices and integrating intelligent automation into your SDLC, each step brings you closer to achieving superior testing outcomes.\"}),/*#__PURE__*/e(\"p\",{children:\"Qodex stands out as a powerful ally in this journey, offering comprehensive test coverage, real-time insights, and seamless integration with your existing workflows. By investing in Qodex, you're not just adopting a tool\u2014you're embracing a smarter, more efficient approach to testing.\"}),/*#__PURE__*/t(\"p\",{children:[\"Ready to elevate your testing strategy and achieve unparalleled results?\",/*#__PURE__*/e(r,{href:\"https://www.app.qodex.ai/\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\" Explore Qodex today!\"})})]}),/*#__PURE__*/e(\"p\",{children:\"By implementing these strategies and leveraging advanced tools like Qodex, you can ensure that your software is not only robust and reliable but also delivered faster and more cost-effectively. Embrace the future of intelligent test automation and set your team up for success. \"})]});export const richText2=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Automated unit testing is a critical practice in modern software development. By automating the testing of individual units of source code, developers can ensure each part of the application works correctly before integrating it into the larger system. This approach not only enhances code quality but also supports agile and DevOps practices by providing quick feedback on code changes.\"}),/*#__PURE__*/e(\"p\",{children:\"Automated unit testing differs significantly from manual unit testing.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Manual testing involves writing and executing test cases by hand, which can be time-consuming and prone to human error.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"In contrast, automated unit testing uses tools and scripts to execute tests automatically, making the process more efficient, reliable, and scalable.\"}),/*#__PURE__*/e(\"h4\",{children:\"Key benefits of automated unit testing include:\"}),/*#__PURE__*/e(\"img\",{alt:\"Automated Web UI Testing Importance\",className:\"framer-image\",height:\"540\",src:\"https://framerusercontent.com/images/6yL7br20PikPc2YfqhBAvNwZk8k.jpg\",srcSet:\"https://framerusercontent.com/images/6yL7br20PikPc2YfqhBAvNwZk8k.jpg?scale-down-to=512 512w,https://framerusercontent.com/images/6yL7br20PikPc2YfqhBAvNwZk8k.jpg?scale-down-to=1024 1024w,https://framerusercontent.com/images/6yL7br20PikPc2YfqhBAvNwZk8k.jpg 1920w\",style:{aspectRatio:\"1920 / 1080\"},width:\"960\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Efficiency\"}),\": Automated tests run faster and can be executed frequently, saving valuable development time.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Reliability\"}),\": Automated tests eliminate the risk of human error, ensuring consistent and accurate results.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Scalability\"}),\": Automated testing frameworks can handle large codebases and complex projects, making them suitable for modern software development.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Incorporating automated unit testing into your continuous integration and deployment (CI/CD) pipelines further enhances its benefits.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"By integrating testing into the CI/CD workflow, you can catch defects early, reduce the cost of fixing bugs, and maintain a high standard of code quality throughout the development lifecycle.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"This integration is crucial for maintaining the rapid development and deployment cycles typical of agile and DevOps environments.\"}),/*#__PURE__*/e(\"h3\",{children:\"Why Automated Unit Testing Is Essential?\"}),/*#__PURE__*/e(\"p\",{children:\"Automated unit testing is not just a nice-to-have but an essential part of any robust software development process. Here\u2019s why:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Early Detection of Defects\"}),\": Automated unit tests catch bugs early in the development cycle, reducing the time and cost associated with fixing them later. This early detection is vital for maintaining high code quality.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Support for Agile and DevOps Practices\"}),\": Automated testing provides quick feedback on code changes, allowing developers to iterate rapidly and continuously improve the software. This capability is crucial for agile and DevOps teams that rely on fast-paced, iterative development cycles.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Reduction of Manual Testing Efforts\"}),\": Automated tests minimize the need for extensive manual testing, freeing up QA resources to focus on more complex testing tasks. This reduction in manual efforts also decreases the likelihood of human error.\"]})})]})]});export const richText3=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Selecting the right unit testing framework is crucial for the success of your automated testing strategy.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"The right framework can streamline the testing process, enhance test coverage, and ensure seamless integration with your development workflow.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Here are some key considerations to help you make an informed decision:\"}),/*#__PURE__*/e(\"h3\",{children:\"Factors to Consider When Selecting a Framework\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"13px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Language Support\"})}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Ensure the framework supports the programming language used in your project. Compatibility with your tech stack is fundamental. For example, JUnit is commonly used for Java, NUnit for .NET, PyTest for Python, and Jasmine for JavaScript.\"})})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Features\"})}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Look for features that match your testing needs. This might include support for parameterized tests, mock objects, and integration with CI/CD pipelines. Tools like Selenium and Cypress are known for their extensive feature sets.\"})})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Community and Support\"})}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"A strong community and active development can be beneficial. Access to a broad range of tutorials, forums, and plugins can help solve problems quickly. Frameworks like Selenium and PyTest have extensive community support.\"})})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Integration Capabilities\"})}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"The framework should integrate seamlessly with your existing tools, such as build systems, CI/CD pipelines, and IDEs. Tools like Playwright and TestComplete offer excellent integration capabilities.\"})})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Ease of Use\"})}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Consider the learning curve and usability of the framework. A tool that's easy to set up and use can save significant time and effort. For instance, tools like Katalon Studio are known for their user-friendly interfaces.\"})})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Mocking Frameworks\"})}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Introduction to Mocking Frameworks\"}),\": Mocking frameworks like Moq (for .NET) and Rhino Mocks (for .NET) are crucial for isolating the code under test. These tools allow you to create mock objects, which simulate the behavior of real objects, making it easier to test units in isolation.\"]})})})]})]}),/*#__PURE__*/e(\"p\",{children:\"By carefully selecting a unit testing framework that aligns with your project requirements and leveraging the right tools and practices, you can significantly enhance your automated unit testing strategy.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"This ensures high-quality code, reduces defects, and supports a smooth, efficient development process.\"})]});export const richText4=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Implementing automated unit testing is essential for ensuring your codebase remains robust, maintainable, and bug-free. Here\u2019s a streamlined approach to get you started:\"}),/*#__PURE__*/e(\"h3\",{children:\"Setting Up the Test Environment\"}),/*#__PURE__*/e(\"p\",{children:\"First things first, integrate unit testing into your development workflow.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Choose a unit testing framework compatible with your programming language and set up your environment accordingly. Tools like JUnit for Java, NUnit for .NET, PyTest for Python, and Jasmine for JavaScript are excellent choices.\"}),/*#__PURE__*/e(\"p\",{children:\"\\xa0Ensure your CI/CD pipeline supports the chosen framework for seamless integration.\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Install Necessary Tools\"}),\": Set up your development environment by installing the required unit testing framework and any dependencies.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Configure the Framework\"}),\": Adjust the configuration settings to match your project\u2019s needs, such as specifying directories for test files and setting up test runners.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Writing Effective Unit Tests\"}),/*#__PURE__*/e(\"p\",{children:\"Writing high-quality unit tests is critical. Here\u2019s how to do it:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Test Isolation\"}),\": Each unit test should be independent. Use mocking frameworks to isolate the code under test, ensuring that tests do not rely on external systems or data. For .NET, consider using Moq or Rhino Mocks.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Naming Conventions\"}),\": Use clear and descriptive names for your test methods to make it easy to understand what each test is verifying.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Test Coverage\"}),\": Aim for comprehensive test coverage. Ensure that your tests cover all critical code paths, including edge cases.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Utilizing Test Data and Mocks\"}),/*#__PURE__*/e(\"p\",{children:\"Real-world scenarios often require more than just basic inputs. Simulate realistic conditions using test data and mocks.\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Test Data\"}),\": Create sets of data that represent various scenarios your code will encounter. This helps in validating the behavior under different conditions.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Mocking\"}),\": Use mock objects to simulate the behavior of complex dependencies. This ensures that your tests are focused on the unit of code being tested, not on external systems.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Continuous Integration and Automation\"}),/*#__PURE__*/e(\"img\",{alt:\"Continuous Integration and Automation\",className:\"framer-image\",height:\"540\",src:\"https://framerusercontent.com/images/9O44g8cjhLb2xnuLchPCLJNg4.jpg\",srcSet:\"https://framerusercontent.com/images/9O44g8cjhLb2xnuLchPCLJNg4.jpg?scale-down-to=512 512w,https://framerusercontent.com/images/9O44g8cjhLb2xnuLchPCLJNg4.jpg?scale-down-to=1024 1024w,https://framerusercontent.com/images/9O44g8cjhLb2xnuLchPCLJNg4.jpg 1920w\",style:{aspectRatio:\"1920 / 1080\"},width:\"960\"}),/*#__PURE__*/e(\"p\",{children:\"Automate your unit tests to run as part of your CI/CD pipeline. This ensures that tests are executed regularly, providing immediate feedback on code changes.\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Integrate with CI Tools\"}),\": Set up your CI tool (like Jenkins, GitLab CI, or GitHub Actions) to run unit tests automatically on each code push or pull request.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Automated Execution\"}),\": Schedule tests to run at regular intervals, such as nightly builds, to catch issues early.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Continuous Learning and Adaptation\"}),/*#__PURE__*/e(\"p\",{children:\"Automated unit testing is not a set-it-and-forget-it process. Regularly review and update your tests to adapt to new requirements and changes in the codebase.\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Review and Refactor\"}),\": Periodically review your unit tests to ensure they are still relevant and effective. Refactor tests as needed to maintain clarity and accuracy.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Stay Updated\"}),\": Keep abreast of new testing techniques, tools, and best practices to continuously improve your testing strategy.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"By implementing these steps, you can ensure that your automated unit testing process is efficient, effective, and aligned with your development goals.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"This approach not only helps in maintaining high code quality but also supports agile and DevOps practices, leading to faster and more reliable software delivery.\"})]});export const richText5=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Implementing automated unit testing is just the beginning. To truly reap the benefits, it's essential to follow best practices that ensure your tests are effective, maintainable, and provide valuable feedback.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Here\u2019s a guide to help you get the most out of your automated unit testing efforts:\"}),/*#__PURE__*/e(\"h3\",{children:\"Adopt Test-Driven Development (TDD)\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Test First, Code Later\"}),\": Start by writing the tests before you write the actual code. This approach ensures that you think about the functionality and edge cases upfront.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Incremental Development\"}),\": Write a test, make it pass by writing just enough code, and then refactor. This cycle helps in building robust and clean code.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Ensure Tests Are Independent and Repeatable\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Isolation\"}),\": Each test should be independent of others to avoid cascading failures. Use mocking frameworks to isolate the unit under test.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Consistent Environment\"}),\": Ensure that the test environment is consistent and replicable. Use containerization tools like Docker to standardize the test setup.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Keep Tests Fast and Focused\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Speed Matters\"}),\": Unit tests should be fast. Slow tests can hinder development flow and discourage frequent testing. Aim for quick execution to enable continuous testing.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Focused Testing\"}),\": Each test should focus on a single functionality or behavior. This makes it easier to diagnose issues when a test fails.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Utilize Continuous Integration and Automation\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Automated Execution\"}),\": Integrate your unit tests into the CI/CD pipeline. This ensures that tests are run automatically on each code change, providing immediate feedback.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Regular Testing\"}),\": Schedule regular test runs, such as nightly builds, to catch issues early and ensure that the codebase remains stable.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Keep Tests Maintainable\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Clear Naming Conventions\"}),\": Use descriptive names for your tests to make it clear what functionality they cover. This helps in understanding the purpose of each test at a glance.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Refactor Regularly\"}),\": Just like production code, test code should be refactored to keep it clean and maintainable. Remove redundant tests and update existing ones to reflect changes in the codebase.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Focus on Early Feedback\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Quick Feedback Loops\"}),\": The sooner you catch a defect, the easier and cheaper it is to fix. Automated unit tests should provide fast feedback on code changes.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Actionable Results\"}),\": Ensure that test results are easy to understand and act upon. Detailed error messages and logs can help developers quickly identify and fix issues.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Embrace Test Automation Beyond Unit Tests\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Comprehensive Testing\"}),\": While unit tests are crucial, they are just one part of the testing strategy. Integrate other forms of automated testing, such as integration tests, functional tests, and UI tests, for comprehensive coverage.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Leverage AI and ML\"}),\": Modern tools like Qodex.ai can enhance your testing strategy with AI-driven insights and automated test maintenance, ensuring continuous test coverage and minimizing manual intervention.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"By following these best practices, you can ensure that your automated unit testing is effective, efficient, and provides maximum value.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"This approach not only improves the quality of your software but also supports agile development practices, leading to faster delivery of high-quality products.\"})]});export const richText6=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Automated unit testing is a cornerstone of modern software development, offering significant benefits such as early defect detection, enhanced code quality, and support for agile and DevOps practices.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"By selecting the right testing framework, implementing best practices, and integrating testing into your CI/CD pipelines, you can ensure a robust and efficient testing process.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"This not only improves the reliability of your software but also accelerates development cycles, ultimately leading to better products and satisfied customers.\"}),/*#__PURE__*/e(\"p\",{children:\"Incorporating automated unit testing into your workflow might require an initial investment in terms of time and resources, but the long-term benefits far outweigh these costs.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"By maintaining a disciplined approach to testing and staying updated with the latest tools and practices, your team can continuously deliver high-quality software with confidence.\"}),/*#__PURE__*/t(\"p\",{children:[\"For more advanced solutions in automated testing, explore\",/*#__PURE__*/e(r,{href:\"https://www.app.qodex.ai/\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\" Qodex.ai\"})}),\" to see how AI-powered testing can transform your development process.\"]})]});export const richText7=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Manual testing, while essential in certain contexts, often falls short when it comes to the speed and accuracy required for large-scale or frequent testing. Automated UI testing with Selenium offers a solution by allowing repetitive tests to be executed quickly and consistently, reducing human error and freeing up valuable time for more complex testing tasks.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/t(\"strong\",{children:[\"Selenium: The Go-To Tool for UI Testing\",/*#__PURE__*/e(\"br\",{})]}),\"Selenium is renowned for its versatility and effectiveness in automating web browsers. Whether you\u2019re testing a simple login form or a complex web application, Selenium provides the tools you need to simulate user interactions, validate functionalities, and catch bugs before they reach production. Its compatibility with multiple programming languages and browsers makes it an ideal choice for developers and testers alike.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/t(\"strong\",{children:[\"What to Expect\",/*#__PURE__*/e(\"br\",{})]}),\"In this guide, we\u2019ll walk you through the essentials of automating UI testing with Selenium, from setting up your environment to writing efficient test scripts. We\u2019ll also dive into best practices that will help you maximize the effectiveness of your tests, ensuring that your web applications are delivered with the quality and reliability your users expect.\"]})]});export const richText8=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"img\",{alt:\"Setting Up Selenium for UI Testing\",className:\"framer-image\",height:\"450\",src:\"https://framerusercontent.com/images/e6IOXuvZ08v1gaHmACrKZPSA.png\",srcSet:\"https://framerusercontent.com/images/e6IOXuvZ08v1gaHmACrKZPSA.png?scale-down-to=512 512w,https://framerusercontent.com/images/e6IOXuvZ08v1gaHmACrKZPSA.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/e6IOXuvZ08v1gaHmACrKZPSA.png 1600w\",style:{aspectRatio:\"1600 / 900\"},width:\"800\"}),/*#__PURE__*/e(\"p\",{children:\"Getting started with Selenium is straightforward, but ensuring a smooth setup requires careful attention to detail. This section will guide you through the essential steps to set up Selenium UI testing, ensuring you\u2019re ready to write and execute your first test scripts with confidence.\"}),/*#__PURE__*/e(\"h3\",{children:\"Step 1: Install the Necessary Dependencies\"}),/*#__PURE__*/e(\"p\",{children:\"Before you can begin automating your UI tests, you\u2019ll need to install the required dependencies. Selenium relies on a few key components to function effectively:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Selenium WebDriver:\"}),\" The core component that interacts with web browsers to execute your test scripts.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Programming Language Support:\"}),\" Install the appropriate libraries for the programming language you plan to use (e.g., Python\u2019s selenium package, Java\u2019s selenium-java library).\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Browser Drivers:\"}),\" Selenium WebDriver requires browser-specific drivers to interact with different web browsers (e.g., ChromeDriver for Chrome, GeckoDriver for Firefox).\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Step 2: Set Up Your Integrated Development Environment (IDE)\"}),/*#__PURE__*/e(\"p\",{children:\"Choose an IDE that suits your development style\u2014popular choices include Eclipse, IntelliJ IDEA, and Visual Studio Code. Once your IDE is set up, you\u2019ll need to configure it for Selenium development:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Install Necessary Plugins:\"}),\" For example, Eclipse users can install the \u201CTestNG\u201D plugin for test management, while IntelliJ IDEA users can leverage built-in features.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Configure Project Dependencies:\"}),\" Add Selenium WebDriver and any other required libraries to your project\u2019s dependencies, ensuring your test scripts have everything they need to run smoothly.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Step 3: Download the Appropriate WebDriver for Your Browser\"}),/*#__PURE__*/e(\"p\",{children:\"Each browser requires a specific WebDriver to communicate with Selenium. Here\u2019s how to get started:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"ChromeDriver for Chrome:\"}),\" Visit the official ChromeDriver site and download the version that matches your Chrome browser.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"GeckoDriver for Firefox:\"}),\" Download GeckoDriver from the\",/*#__PURE__*/e(r,{href:\"https://github.com/mozilla/geckodriver/releases\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\" Mozilla GeckoDriver page\"})}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"WebDriver for Edge or Safari:\"}),\" Microsoft Edge WebDriver and SafariDriver can be obtained from their respective official sites.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Step 4: Configure Environment Variables for WebDriver\"}),/*#__PURE__*/e(\"p\",{children:\"To ensure that your WebDriver is accessible globally, you\u2019ll need to set up environment variables:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Windows Users:\"}),\" Add the WebDriver\u2019s directory path to the system\u2019s PATH variable.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Mac/Linux Users:\"}),\" Edit your .bash_profile or .bashrc file to include the WebDriver path, then reload the terminal.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"This step ensures that your Selenium scripts can locate the WebDriver without needing to specify the full path every time.\"}),/*#__PURE__*/e(\"h3\",{children:\"Step 5: Add Selenium WebDriver to Your Project Dependencies\"}),/*#__PURE__*/e(\"p\",{children:\"Finally, integrate Selenium WebDriver into your project. Depending on your language, this might involve:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Python:\"}),\" Install the Selenium package using pip: pip install selenium.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Java:\"}),\" Add the Selenium WebDriver library to your project via Maven or Gradle.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"C#:\"}),\" Use NuGet Package Manager to add Selenium WebDriver to your Visual Studio project.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"With everything set up, you\u2019re now ready to start writing test scripts and automating your UI testing with Selenium. This foundational setup is crucial for ensuring that your tests run smoothly and effectively, helping you catch issues early in the development cycle.\"})]});export const richText9=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"With Selenium set up and ready to go, the next step is to write test scripts that will automate the testing of your web application\u2019s user interface.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Step 1: Identify Test Cases to Automate\"}),/*#__PURE__*/e(\"p\",{children:\"Before diving into script writing, it\u2019s crucial to identify which test cases are best suited for automation. Focus on repetitive, time-consuming tasks that are prone to human error, such as:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Form Submissions:\"}),\" Testing forms with various input data.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Navigation Flows:\"}),\" Ensuring that multi-step processes like checkouts or registrations function correctly.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Cross-Browser Compatibility:\"}),\" Verifying that your UI behaves consistently across different browsers.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Prioritizing these cases will give you the best return on investment for your automation efforts.\"}),/*#__PURE__*/e(\"h3\",{children:\"Step 2: Create a New Test Class and Set Up the Test Structure\"}),/*#__PURE__*/e(\"p\",{children:\"Once you\u2019ve identified the test cases to automate, it\u2019s time to create a new test class in your chosen programming language. Here\u2019s how to get started:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Structure Your Test Class:\"}),\"\\xa0Start by creating a well-organized test class that includes setup and teardown methods. These methods initialize the browser before each test and close it afterward, ensuring a clean environment for every test run.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"public class MyUITests {\\xa0 \\xa0 \\n  WebDriver driver;\\xa0 \\xa0 \\n @Before\\xa0 \\xa0 \\n  public void setUp() {\\n  driver = new ChromeDriver();\\xa0 \\xa0 \\xa0 \\xa0 \\n  driver.manage().window().maximize();\\xa0 \\xa0 \\n}\\xa0 \\xa0 \\n@After\\xa0 \\xa0 \\npublic void tearDown() {\\xa0 \\xa0 \\xa0 \\xa0 \\n  driver.quit();\\xa0 \\xa0 \\n}}\",language:\"JSX\"})})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Organize Test Methods:\"}),\" Each test method should focus on a single scenario, such as verifying that a button works or that a page loads correctly. This modular approach makes your tests easier to maintain and debug.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Step 3: Use Selenium WebDriver to Simulate User Actions\"}),/*#__PURE__*/e(\"p\",{children:\"Now that your test structure is in place, you can begin scripting user interactions. Selenium WebDriver allows you to simulate a wide range of actions, such as clicking buttons, entering text, and navigating between pages.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Simulate Clicks and Input:\"}),\" Use WebDriver\u2019s findElement method to locate UI elements and interact with them. For example, to click a button and enter text in a form field:\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Navigate Between Pages:\"}),\" Automate multi-step processes by navigating through the application\u2019s workflow, ensuring each step functions as expected.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Step 4: Implement Test Steps and Assertions\"}),/*#__PURE__*/e(\"p\",{children:\"Assertions are the backbone of your test scripts, verifying that the application behaves as expected. Use assertions to check key conditions, such as whether a page loaded successfully or if a specific element is visible on the page.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Use Assertions for Verification:\"}),\"\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"Assertions help you catch issues early, ensuring that your application\u2019s UI functions correctly under different conditions.\"}),/*#__PURE__*/e(\"h3\",{children:\"Step 5: Execute Test Scripts from IDE or Build Tools\"}),/*#__PURE__*/e(\"p\",{children:\"Once your scripts are ready, it\u2019s time to run them. Selenium tests can be executed directly from your IDE or integrated into build tools like Maven, Gradle, or Jenkins for continuous testing.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Run Tests in IDE:\"}),\" Most IDEs allow you to run test scripts with a single click, providing immediate feedback on your test results.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Integrate with CI/CD:\"}),\" For larger projects, integrating Selenium tests with your CI/CD pipeline ensures that UI tests are run automatically with every code change, catching issues early in the development process.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"By following these steps, you can create robust Selenium test scripts that automate essential UI testing tasks.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Writing efficient, reliable test scripts not only saves time but also significantly improves the quality of your web application by catching bugs before they reach production.\"})]});export const richText10=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"One of the most crucial aspects of writing effective Selenium test scripts is accurately locating UI elements on the web page.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Whether you're testing a simple login form or a complex multi-page application, being able to pinpoint and interact with the right elements is essential for automation success.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Understanding Locator Strategies \"}),/*#__PURE__*/e(\"p\",{children:\"Selenium provides several methods, known as locators, to identify elements on a web page. Choosing the right locator is critical for making your tests robust and reliable. Here\u2019s a breakdown of the most commonly used locators:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"ID:\\xa0\\nThe ID locator is one of the most reliable ways to identify an element because IDs are unique within a page.\\nName:\\xa0\\nThe Name locator is another straightforward method, though not as unique as ID.\\nClassName:\\xa0\\nUse ClassName when elements share common styles or behavior.\\nTagName:\\xa0\\nThe TagName locator is useful for finding elements based on their HTML tag.\\nLink Text and Partial Link Text:\\xa0\\nThese locators are perfect for identifying links based on their text content.\\nCSS Selector:\\xa0\\nThe CSS Selector locator is incredibly powerful and flexible, allowing you to pinpoint elements based on CSS rules.\\nXPath:\\xa0\\nThe XPath locator is the most versatile, allowing you to navigate the entire DOM structure. However, it can be slower and more complex to maintain.\\nUsing findElement and findElements Methods\\nSelenium provides two primary methods for locating elements:\\nfindElement: This method locates a single element. If the element isn\u2019t found, it throws an exception, so it\u2019s best used when you\u2019re sure the element is present.\",language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Best Practices for Locating Elements\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Choose the Most Reliable Locator:\"}),\" Whenever possible, use ID or Name locators as they tend to be the most stable. Avoid using XPath for complex or dynamic elements unless absolutely necessary, as it can make your tests brittle.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Avoid Hard-Coded Values:\"}),\" Instead of hardcoding element locators in your scripts, consider storing them in a centralized location or using Page Object Models. This approach improves maintainability and makes it easier to update locators if the UI changes.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Handle Dynamic Elements:\"}),\" If your application generates dynamic IDs or classes, consider using relative locators like CSS Selector or XPath with wildcard characters to account for variations.\"]})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Example Code for Locating Elements\"})}),/*#__PURE__*/e(\"p\",{children:\"To illustrate how these locators work in practice, here\u2019s a simple example of locating and interacting with a few UI elements:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/TbhpORLndv1iOkZzyo83/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:'public void testLoginFunctionality() {\\xa0 \\xa0 driver.get(\"http://example.com/login\");\\xa0 \\xa0 // Locate elements using different strategies\\xa0 \\xa0 WebElement username = driver.findElement(By.id(\"username\"));\\xa0 \\xa0 WebElement password = driver.findElement(By.name(\"password\"));\\xa0 \\xa0 WebElement loginButton = driver.findElement(By.cssSelector(\"button[type=\\'submit\\']\"));\\xa0 \\xa0 // Interact with elements\\xa0 \\xa0 username.sendKeys(\"testUser\");\\xa0 \\xa0 password.sendKeys(\"testPass\");\\xa0 \\xa0 loginButton.click();}',language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:\"By mastering these locator strategies, you\u2019ll be able to write more precise and reliable Selenium tests. Accurate element location is the foundation of effective UI automation, and by following these best practices, you can ensure that your tests are both robust and maintainable, ultimately leading to higher-quality software delivery.\"})]});export const richText11=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"When it comes to automating \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/blog/basic-steps-for-ui-performance-testing\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"UI testing\"})}),\" with Selenium, following best practices is key to creating tests that are not only effective but also maintainable and scalable.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"Below, we\u2019ll explore some essential best practices to ensure your Selenium tests are reliable and efficient, and we\u2019ll also discuss how Qodex can complement Selenium in a comprehensive testing strategy.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"1. Choose Appropriate Locator Strategies\"})}),/*#__PURE__*/e(\"p\",{children:\"Selecting the right locator strategy is the foundation of any successful Selenium test. As covered in the previous section, using locators like ID, Name, and CSS Selector is crucial for creating robust tests. Ensure that your locators are as specific as possible to minimize the risk of your tests breaking due to UI changes.\"}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Tip:\"}),\" Regularly review and update your locators to reflect any changes in the application\u2019s UI to keep your tests up to date.\"]})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"2. Avoid Using Thread.Sleep(); Use Implicit and Explicit Waits\"})}),/*#__PURE__*/e(\"p\",{children:\"Using Thread.Sleep() to pause test execution is a common mistake that can lead to unreliable tests. Instead, leverage Selenium\u2019s built-in waiting mechanisms:\"}),/*#__PURE__*/e(\"p\",{children:\"Implicit Waits: Apply a global wait time across all elements in the script, which helps manage slower elements without affecting overall test speed.\"}),/*#__PURE__*/e(\"p\",{children:\"Explicit Waits: Apply to specific elements when they require longer times to load or become clickable. This method ensures that your test only waits as long as necessary.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"3. Use Page Objects to Organize Elements and Actions\"})}),/*#__PURE__*/e(\"p\",{children:\"The Page Object Model (POM) is a design pattern that promotes maintainable and scalable test code. By separating the logic of your tests from the UI elements they interact with, POM makes it easier to manage and update your tests as the application evolves.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"4. Capture Screenshots or Videos for Failed Tests\"})}),/*#__PURE__*/e(\"p\",{children:\"Capturing screenshots or videos during test failures is a powerful way to debug issues quickly. Selenium provides easy methods to take screenshots whenever a test fails, allowing you to visually inspect what went wrong.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"5. Integrate Selenium with CI/CD Pipelines for Continuous Testing\"})}),/*#__PURE__*/e(\"p\",{children:\"Integrating Selenium tests into your CI/CD pipeline is essential for ensuring continuous testing and quality assurance throughout the development lifecycle. By automating the execution of your Selenium tests with each build, you can catch issues early and maintain a high standard of quality.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Complementing Selenium with Qodex: A Complete Testing Strategy\"})}),/*#__PURE__*/e(\"p\",{children:\"While Selenium excels in automating UI tests, ensuring the backend of your application is equally well-tested is crucial for delivering a robust product. This is where Qodex comes in. Qodex automates backend testing and seamlessly integrates with CI/CD pipelines, providing a full-stack testing solution that complements Selenium\u2019s front-end capabilities.\"}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Qodex Integration:\"}),\" With Qodex, you can automate backend tests that run parallel to your Selenium UI tests. This approach ensures that both the front-end and back-end are thoroughly tested in every deployment cycle, reducing the risk of undetected bugs and improving overall software quality.\"]})})}),/*#__PURE__*/t(\"p\",{children:[\"By integrating \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Qodex\"})}),\" with your CI/CD pipeline, you can streamline your entire testing process\u2014ensuring that your application is tested comprehensively, from the UI down to the backend.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"This full-stack approach leads to faster, more reliable releases, and ultimately, a better user experience.\"}),/*#__PURE__*/e(\"h2\",{children:\"Running Selenium Tests\"}),/*#__PURE__*/e(\"p\",{children:\"Once your Selenium test scripts are ready, it\u2019s time to execute them across various environments to ensure your application performs reliably under different conditions.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"Running tests efficiently and analyzing the results are crucial steps in maintaining high \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/blog/qa-vs-qc-battle-for-software-excellence\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"software quality\"})}),\".\\xa0\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"1. Running Tests from IDE, Command Line, Jenkins, or BlazeMeter\"})}),/*#__PURE__*/e(\"p\",{children:\"Selenium tests can be executed in multiple environments depending on your project needs:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"IDE (Integrated Development Environment):\"}),\" Running tests directly from your IDE (like Eclipse or IntelliJ IDEA) is convenient for quick validations during development. It allows you to see immediate results and debug any issues on the spot.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Command Line: For more control and automation, running tests from the command line is a powerful option. It\u2019s especially useful when integrating with other tools or running tests on remote servers.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Jenkins:\"}),\" Jenkins is a popular CI/CD tool that automates the execution of Selenium tests with every code change. By integrating Selenium with Jenkins, you can ensure continuous testing as part of your build pipeline.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"BlazeMeter:\"}),\" For performance testing and running Selenium scripts in the cloud, BlazeMeter is a great option. It allows you to scale your tests across multiple environments, ensuring that your application performs well under varying loads.\"]})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"2. Use TestNG or Similar Frameworks for Better Test Management\"})}),/*#__PURE__*/e(\"p\",{children:\"TestNG is a powerful testing framework that enhances Selenium\u2019s capabilities by offering advanced test configurations, parallel execution, and detailed reporting. By using TestNG, you can manage your tests more effectively:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Annotations:\"}),\" TestNG\u2019s annotations (@Test, @BeforeMethod, @AfterMethod, etc.) make your tests more readable and easier to manage.\"]}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Flexible Configurations:\"}),\" Easily configure test dependencies, prioritize tests, and handle data-driven testing with ease.\"]})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"3. Generate Test Reports and Analyze Results\"})}),/*#__PURE__*/t(\"p\",{children:[\"Generating \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/blog/test-report-best-practices\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"detailed test reports\"})}),\" is crucial for understanding the outcomes of your Selenium tests. These reports help you identify trends, spot failures, and ensure your application meets the desired quality standards.\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"TestNG Reports:\"}),\" TestNG automatically generates HTML reports that provide a summary of test executions, including passed, failed, and skipped tests.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Jenkins Integration:\"}),\" When running tests in Jenkins, you can use plugins like Allure or Jenkins JUnit to generate comprehensive test reports that integrate seamlessly into your CI/CD pipeline.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Result Analysis:\"}),\" Regularly review these reports to identify patterns, such as frequently failing tests, and address any underlying issues. This practice ensures that your tests remain reliable and your application stays robust.\"]})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"4. Run Tests Across Different Browsers and Platforms\"})}),/*#__PURE__*/e(\"p\",{children:\"To ensure your web application works flawlessly for all users, it\u2019s important to run Selenium tests across multiple browsers and platforms. Selenium WebDriver supports cross-browser testing, allowing you to validate your application on Chrome, Firefox, Edge, Safari, and more.\"}),/*#__PURE__*/e(\"p\",{children:\"Browser Compatibility: Write tests that target different browsers to catch browser-specific issues early.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Platform Variability:\"}),\" Consider testing on different operating systems and devices to ensure consistent performance, regardless of the user\u2019s environment.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Qodex: A Full-Stack Testing Approach\"})}),/*#__PURE__*/e(\"p\",{children:\"While Selenium handles the UI testing effectively, ensuring that the backend is equally robust is essential for delivering a high-quality application. This is where Qodex shines. By integrating Qodex with your CI/CD pipeline, you can run automated backend tests in parallel with Selenium\u2019s UI tests, offering a comprehensive full-stack testing solution.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Seamless CI/CD Integration:\"}),\" Qodex integrates smoothly with tools like Jenkins, enabling continuous backend testing alongside your UI tests. This ensures that both the front-end and back-end are thoroughly tested before any deployment.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Enhanced Test Coverage:\"}),\" With Qodex, you can automate complex backend testing scenarios, ensuring that data processing, API responses, and database interactions are functioning correctly while Selenium validates the user interface.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Comprehensive Reporting:\"}),\" Just like Selenium\u2019s reporting capabilities, Qodex provides detailed analytics and insights into backend testing results, allowing you to address any issues before they impact your users.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"By leveraging both Selenium and Qodex in your testing strategy, you can achieve a well-rounded and robust quality assurance process, ensuring that your application is ready for deployment with confidence.\"})]});export const richText12=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Automating UI testing with Selenium is essential for ensuring your web applications are not only functional but also user-friendly across various platforms. By following best practices like choosing the right locator strategies, integrating tests into CI/CD pipelines, and running tests across different environments, you can significantly enhance the reliability and efficiency of your testing process.\"}),/*#__PURE__*/e(\"p\",{children:\"However, true quality assurance goes beyond just the front end. By integrating Qodex into your testing strategy, you can automate backend testing alongside Selenium\u2019s UI tests, providing a full-stack solution that ensures both the user interface and the underlying systems work seamlessly together.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"With \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Qodex\"})}),\"\u2019s robust CI/CD integration, detailed reporting, and powerful automation capabilities, you can confidently deliver high-quality software that meets the demands of today\u2019s users.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]});export const richText13=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Regression testing plays a critical role in ensuring that new changes\u2014whether they are bug fixes, enhancements, or new features\u2014do not introduce unforeseen issues or break existing functionality. By consistently running regression tests, you can safeguard your software against regressions, ensuring that your product remains reliable and robust with every release.\"}),/*#__PURE__*/e(\"h3\",{children:\"Building an Effective Regression Test Suite \"}),/*#__PURE__*/e(\"p\",{children:\"Creating a comprehensive regression test suite is more than just assembling a collection of test cases. It\u2019s about strategically selecting and organizing these tests to ensure they provide maximum coverage while remaining efficient and manageable.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"An effective regression test suite should be designed to detect issues early, facilitate quick feedback, and integrate seamlessly into your development pipeline, especially in environments where continuous integration and delivery (CI/CD) are key.\"}),/*#__PURE__*/e(\"h3\",{children:\"Goals of an Effective Regression Test Suite\"}),/*#__PURE__*/e(\"p\",{children:\"An effective regression test suite has several key goals:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Consistency\"}),\": Ensuring that new code changes do not disrupt existing functionality.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Efficiency\"}),\": Balancing the breadth of test coverage with the speed of execution.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Scalability\"}),\": Allowing the test suite to grow alongside the application, adapting to new features and complexities.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Automation\"}),\": Reducing manual effort by leveraging automated testing tools that can handle repetitive tasks and provide immediate feedback.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Defining Purpose and Scope\"}),/*#__PURE__*/e(\"p\",{children:\"Before diving into building a regression test suite, it's essential to define its purpose clearly.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Are you focusing on critical functionalities that must always remain intact?\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Or are you aiming for comprehensive coverage that touches every aspect of the application?\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Understanding the primary goals will help in shaping the scope and structure of your suite, ensuring that it aligns with your overall testing strategy.\"}),/*#__PURE__*/e(\"h3\",{children:\"Scope Considerations: Smaller vs. General-Purpose Suites\"}),/*#__PURE__*/e(\"p\",{children:\"The scope of your regression test suite can vary depending on your project\u2019s needs. A smaller, targeted suite might focus on mission-critical areas of your application, running fewer tests but doing so more frequently.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"This approach is ideal for environments where quick feedback is essential, such as in continuous deployment pipelines.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"On the other hand, a general-purpose suite might aim for broader coverage, encompassing a wide range of functionalities to catch as many potential issues as possible, albeit at the cost of longer execution times.\"}),/*#__PURE__*/e(\"p\",{children:\"Finding the right balance between scope and depth is crucial. This balance ensures that your regression testing is both effective and efficient, providing the necessary coverage without becoming a bottleneck in your development process.\"})]});export const richText14=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"h3\",{children:\"Manual Testing vs. Automation Testing\"}),/*#__PURE__*/e(\"p\",{children:\"When building a regression test suite, one of the first decisions to make is choosing between manual testing and automation testing\u2014or more likely, finding the right balance between the two.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Manual testing involves a tester manually executing test cases without the use of automation tools. This approach is beneficial for exploratory testing, where human intuition and creativity are required to uncover unexpected issues. However, manual testing can be time-consuming, error-prone, and difficult to scale, especially when repetitive tasks are involved.\"}),/*#__PURE__*/e(\"p\",{children:\"Automation testing, on the other hand, leverages tools to execute test cases automatically. This approach excels in regression testing scenarios, where the same set of tests needs to be run repeatedly every time a change is made to the codebase. Automated tests can be run faster and more frequently than manual tests, providing quick feedback and freeing up testers to focus on more complex, exploratory testing tasks.\"}),/*#__PURE__*/e(\"h3\",{children:\"Benefits of Shifting from Manual to Automated Testing\"}),/*#__PURE__*/e(\"img\",{alt:\"Benefits of Shifting from Manual to Automated Testing\",className:\"framer-image\",height:\"450\",src:\"https://framerusercontent.com/images/ZeclZ6b9GqtvjNXEc1OFLD3s.png\",srcSet:\"https://framerusercontent.com/images/ZeclZ6b9GqtvjNXEc1OFLD3s.png?scale-down-to=512 512w,https://framerusercontent.com/images/ZeclZ6b9GqtvjNXEc1OFLD3s.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/ZeclZ6b9GqtvjNXEc1OFLD3s.png 1600w\",style:{aspectRatio:\"1600 / 900\"},width:\"800\"}),/*#__PURE__*/e(\"p\",{children:\"Shifting from manual to automated testing offers several key benefits that can significantly enhance the efficiency and effectiveness of your regression test suite:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Speed and Efficiency\"}),\": Automated tests can execute much faster than manual tests, allowing for more tests to be run in a shorter amount of time. This speed is particularly important in agile and DevOps environments, where continuous integration and delivery are standard practices.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Consistency and Accuracy\"}),\": Automated tests are consistent\u2014they run the same way every time without the variability that human testers might introduce. This consistency ensures that test results are reliable and that any issues found are due to changes in the code, not variations in test execution.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Scalability\"}),\": As your application grows, so too will your regression test suite. Automation makes it easier to scale your testing efforts, as new tests can be added to the suite without a significant increase in the time or resources required to execute them.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Cost-Effectiveness\"}),\": While there is an initial investment in setting up automated tests, the long-term savings are substantial. Automated tests can be run repeatedly without additional cost, reducing the need for extensive manual testing and allowing teams to focus their efforts elsewhere.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"How Qodex Streamlines the Automation Process?\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(r,{href:\"https://www.app.qodex.ai/\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Qodex \"})}),\"is designed to streamline the automation of regression testing, making the shift from manual to automated testing not only feasible but also highly effective. With Qodex, you can automate the most repetitive and time-consuming aspects of regression testing, ensuring that your suite is always up-to-date and that tests are executed quickly and accurately.\"]}),/*#__PURE__*/e(\"p\",{children:\"Qodex reduces manual effort by providing robust automation tools that integrate seamlessly with your existing development workflows. Whether you\u2019re using CI/CD pipelines or managing complex test environments, Qodex offers the flexibility and power needed to enhance your testing strategy.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"By automating your regression tests with Qodex, you can increase the overall efficiency of your test suite, allowing your team to focus on higher-level tasks and ultimately delivering higher-quality software.\"})]});export const richText15=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"In the world of regression testing, organization is key. Proper categorization and tagging of test cases not only streamline the testing process but also ensure that you can quickly identify and address any issues that arise.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s dive into why this is important and how to do it effectively.\"}),/*#__PURE__*/e(\"h3\",{children:\"Importance of Categorizing Tests\"}),/*#__PURE__*/e(\"img\",{alt:\"Importance of Categorizing Tests\",className:\"framer-image\",height:\"450\",src:\"https://framerusercontent.com/images/86DsKrgzz5BFzoHJnuqsEa0GmA.jpg\",srcSet:\"https://framerusercontent.com/images/86DsKrgzz5BFzoHJnuqsEa0GmA.jpg?scale-down-to=512 512w,https://framerusercontent.com/images/86DsKrgzz5BFzoHJnuqsEa0GmA.jpg?scale-down-to=1024 1024w,https://framerusercontent.com/images/86DsKrgzz5BFzoHJnuqsEa0GmA.jpg 1600w\",style:{aspectRatio:\"1600 / 900\"},width:\"800\"}),/*#__PURE__*/e(\"p\",{children:\"When dealing with a large regression suite, it\u2019s easy to get lost in a sea of test cases. Categorizing your tests helps you manage them more effectively by grouping related tests together. This organization allows you to:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Enhance Focus:\"}),\" Grouping tests by functionality or feature ensures that you can target specific areas of your application for detailed examination.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Improve Efficiency:\"}),\" Categorized tests allow you to run specific groups of tests based on the changes made, rather than running the entire suite every time.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Simplify Maintenance:\"}),\" When tests are organized by category, it's easier to update or remove outdated tests, ensuring your suite remains relevant and effective.\"]})})]}),/*#__PURE__*/e(\"p\",{children:'For example, you might categorize tests into groups like \"Login Functionality,\" \"Payment Processing,\" or \"User Profile Management.\" This way, when a change is made to the payment gateway, you can quickly run all tests related to payment processing without wading through unrelated cases.'}),/*#__PURE__*/e(\"h3\",{children:\"Effective Tagging Strategies for Better Organization and Filtering\"}),/*#__PURE__*/e(\"p\",{children:\"Tagging is a powerful strategy that works hand-in-hand with categorization. Tags allow you to add metadata to your test cases, enabling more granular control over test execution.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Here\u2019s how you can leverage tagging effectively:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Prioritization Tags:\"}),\" Use tags like high-priority, medium-priority, and low-priority to prioritize tests. This helps in focusing on critical areas first, especially when time is limited.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Environment-Specific Tags:\"}),\" If certain tests are only relevant in specific environments (e.g., staging, production), tagging them accordingly allows you to filter and run only the tests that matter in each environment.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Feature-Specific Tags:\"}),\" Tag tests based on the feature they are testing. For instance, use tags like login, checkout, or user-profile to quickly find and execute tests relevant to specific parts of your application.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Automated vs. Manual Tags:\"}),\" Distinguish between tests that are automated (automated) and those that require manual intervention (manual). This clarity helps in planning and resource allocation.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Example Tagging Structure:\"}),/*#__PURE__*/t(\"p\",{children:[\"- `@login @high-priority @staging`\",/*#__PURE__*/e(\"br\",{}),\"- `@checkout @medium-priority @production`\",/*#__PURE__*/e(\"br\",{}),\"- `@user-profile @low-priority @manual`\"]}),/*#__PURE__*/e(\"p\",{children:\"These tags make it easy to filter and run tests based on your current focus or needs, ensuring that your testing efforts are both targeted and efficient.\"})]});export const richText16=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"In any regression test suite, not all tests carry the same weight. Some are critical to the core functionality of your application, while others might only be necessary for less frequent scenarios.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Prioritizing tests effectively ensures that your team focuses on what matters most, catching issues early and maintaining a high standard of software quality.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s explore how to identify high-priority tests and the role automation tools like Qodex play in this process.\"}),/*#__PURE__*/e(\"h3\",{children:\"Identifying Critical and High-Priority Tests\"}),/*#__PURE__*/e(\"img\",{alt:\"Identifying Critical and High-Priority Tests\",className:\"framer-image\",height:\"450\",src:\"https://framerusercontent.com/images/Yid7yqQvLtjhX16XJELOxVgbQ.jpg\",srcSet:\"https://framerusercontent.com/images/Yid7yqQvLtjhX16XJELOxVgbQ.jpg?scale-down-to=512 512w,https://framerusercontent.com/images/Yid7yqQvLtjhX16XJELOxVgbQ.jpg?scale-down-to=1024 1024w,https://framerusercontent.com/images/Yid7yqQvLtjhX16XJELOxVgbQ.jpg 1600w\",style:{aspectRatio:\"1600 / 900\"},width:\"800\"}),/*#__PURE__*/e(\"p\",{children:\"The first step in prioritizing your tests is identifying which ones are the most critical. These are the tests that, if they fail, would have the most significant impact on your application\u2019s functionality or user experience.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Here\u2019s how you can go about this:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Business-Critical Features:\"}),\" Focus on tests that cover the most important features of your application, such as user authentication, payment processing, or data security. These areas are vital to your product\u2019s success and user satisfaction.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"High-Risk Areas:\"}),\" Identify parts of your application that are prone to frequent changes or have a history of issues. Tests in these areas should be prioritized to catch potential problems early.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"User Impact:\"}),\" Consider the impact on the end-user. Tests that ensure the core user journey is smooth and error-free should be at the top of your priority list.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Regulatory Compliance:\"}),\" If your application is subject to regulatory requirements, prioritize tests that ensure compliance, as failure here could lead to legal issues.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"By categorizing tests based on these factors, you can ensure that your team is focusing on the areas that are most likely to affect your application's stability and performance.\"}),/*#__PURE__*/e(\"h3\",{children:\"Using Automation Tools for Early Issue Detection\"}),/*#__PURE__*/e(\"p\",{children:\"Once you\u2019ve identified your critical tests, the next step is to leverage automation to execute them efficiently and consistently. Automation tools, especially those powered by AI, can significantly enhance your ability to detect issues early in the development cycle.\"}),/*#__PURE__*/e(\"h4\",{children:/*#__PURE__*/e(\"strong\",{children:\"How Qodex Enhances Test Prioritization:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"AI-Driven Prioritization:\"}),\" Qodex uses advanced AI algorithms to analyze your application and test suite, automatically identifying and prioritizing the most critical tests. This intelligent prioritization ensures that the most important tests are always executed first, allowing your team to catch and address issues before they escalate.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Continuous Monitoring:\"}),\" Qodex continuously monitors your application\u2019s performance and the results of previous test runs. It adjusts test priorities based on new data, ensuring that your test suite evolves alongside your application.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Early Issue Detection:\"}),\" With Qodex, high-priority tests are run early and often, integrating seamlessly into your CI/CD pipeline. This approach helps detect issues as soon as they arise, reducing the risk of defects making it into production.\"]})})]}),/*#__PURE__*/t(\"h4\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Example Scenario:\"}),\"\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"Imagine your team is working on an e-commerce application. Qodex would prioritize tests related to the checkout process, as any issues here could directly impact revenue. By automating these critical tests, Qodex helps ensure that any problems are identified and resolved quickly, maintaining the integrity of your application.\"}),/*#__PURE__*/e(\"p\",{children:\"In the next section, we\u2019ll discuss how to create and maintain an effective smoke test suite and the benefits of automating these tests.\"})]});export const richText17=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Smoke testing is an essential practice in software testing that acts as the first line of defense against critical failures. It quickly assesses whether the most vital functions of your application are working correctly, serving as a gatekeeper for more in-depth testing.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Creating a \u2018Smoke Test Suite\u2019 with Crucial Tests\"}),/*#__PURE__*/e(\"p\",{children:\"A smoke test suite consists of a set of tests that cover the most crucial functionalities of your application.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"These tests are designed to run quickly and provide a high-level assurance that the core features are functioning as expected. Here's how you can approach creating a smoke test suite:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Identify Core Functionalities:\"}),\" Start by identifying the features that are absolutely essential for your application to operate. These could include user login, basic navigation, database connectivity, and critical business workflows.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Keep it Minimal:\"}),\" A smoke test suite should be lean, focusing only on the most important functionalities. The goal is to get a quick thumbs-up or thumbs-down on the overall health of the application, so avoid adding too many tests that could slow down this process.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Ensure Independence:\"}),\" Each test in the suite should be independent, meaning the outcome of one test should not affect the others. This independence ensures that the suite is resilient and reliable, even if some parts of the application are down.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Regular Updates:\"}),\" As your application evolves, regularly review and update your smoke test suite to ensure it remains relevant. Add new tests for newly introduced core features and remove tests for deprecated functionalities.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"By creating a well-defined smoke test suite, you ensure that your application\u2019s most crucial functionalities are always checked first, reducing the risk of critical issues going unnoticed.\"}),/*#__PURE__*/e(\"h3\",{children:\"Automating and Frequently Executing Smoke Tests\"}),/*#__PURE__*/e(\"p\",{children:\"Manual execution of smoke tests can be time-consuming and prone to human error. Automation is the key to making smoke tests both effective and efficient. Here\u2019s how you can implement automation to enhance your smoke testing process:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Integrate with CI/CD Pipelines:\"}),\" Automate your smoke tests by integrating them into your Continuous Integration/Continuous Deployment (CI/CD) pipeline. This integration ensures that smoke tests are executed automatically with every build or deployment, providing immediate feedback on the application\u2019s stability.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Frequent Execution:\"}),\" Automating smoke tests allows you to run them frequently\u2014daily, hourly, or even with every code change. This frequency helps catch issues as soon as they arise, preventing them from snowballing into larger problems.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Rapid Feedback:\"}),\" Since smoke tests are designed to be quick, automation ensures that you get rapid feedback on the health of your application. This speed allows your team to address any issues immediately, minimizing downtime and maintaining productivity.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Detailed Reporting:\"}),\" Automated smoke tests can be configured to generate detailed reports that highlight any failures, allowing your team to quickly identify and address issues. These reports can also provide historical data, helping you track the stability of your application over time.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"In the next section we\u2019ll see how to incorporate manual testing effectively into your strategy.\"})]});export const richText18=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"While automation is a powerful tool in the realm of software testing, manual testing still plays a crucial role, especially when it comes to edge cases and complex end-to-end scenarios. Striking the right balance between manual and automated testing can significantly enhance the effectiveness of your regression test suite.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Including Manual Tests for Edge Cases and End-to-End Scenarios\"}),/*#__PURE__*/e(\"p\",{children:\"Automated tests are excellent for repetitive tasks and verifying that code changes don\u2019t break existing functionalities. However, there are certain situations where manual testing is indispensable:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Edge Cases:\"}),\" Edge cases often involve unexpected user behaviors or rare conditions that may not be easily captured through automation. Manual testing allows testers to think creatively and identify potential issues that automated tests might miss. For example, testing how an application handles unusual inputs or unexpected user flows often requires the nuance and intuition that only a human tester can provide.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"End-to-End Scenarios:\"}),\" Complex workflows that span across multiple systems or require detailed, sequential steps are better suited for manual testing. These scenarios often involve user interactions, visual elements, and integrations that can be difficult to simulate through automated scripts. Manual testing in these cases ensures that the entire user journey\u2014from start to finish\u2014is smooth, functional, and free of bugs.\"]})})]}),/*#__PURE__*/t(\"h4\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Example Scenario:\"}),\"\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"Consider a retail application where customers can browse products, add items to their cart, and complete purchases. While automated tests can cover basic functionality, manual testing is essential for verifying edge cases, such as applying multiple discount codes or simulating a transaction during a network outage. Additionally, an end-to-end test that simulates the entire customer journey from login to checkout would benefit from a manual approach to ensure every step works seamlessly.\"}),/*#__PURE__*/e(\"h3\",{children:\"Balancing Manual and Automated Regression Tests\"}),/*#__PURE__*/e(\"p\",{children:\"Balancing manual and automated testing is key to building a comprehensive and efficient regression test suite. Here\u2019s how you can achieve this balance:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Prioritize Automation for Repetitive Tests:\"}),\" Use automation for tests that are repetitive, time-consuming, and prone to human error. These typically include regression tests for stable features that require frequent verification. Automation ensures consistency and speed, allowing your team to focus on more complex tasks.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Reserve Manual Testing for High-Risk Areas:\"}),\" Focus manual testing efforts on areas of the application that are prone to issues, involve significant business logic, or require a high degree of human judgment. This approach ensures that critical areas are thoroughly vetted while maximizing the efficiency of your testing resources.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Integrate Manual Testing into CI/CD Pipelines:\"}),\" While automation is more commonly integrated into CI/CD pipelines, manual tests can also be included in the form of scheduled exploratory sessions or as part of a testing stage for significant releases. This integration ensures that manual testing is not an afterthought but a key component of your testing strategy.\"]})})]})]});export const richText19=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Regular review and optimization are crucial to ensuring that your test suite remains relevant, efficient, and capable of catching issues before they reach production. Here\u2019s how to keep your test suite in top shape.\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",children:[/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Regularly Reviewing and Updating Test Cases\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"As your application evolves, so should your test cases. Regularly reviewing your test suite helps ensure that all aspects of your application are adequately tested and that your tests align with current project goals.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Adapt to Changes:\"}),\" New features, changes in existing functionalities, and bug fixes can all impact the relevance of your test cases. A regular review allows you to update or replace test cases that no longer align with the current state of your application, ensuring that your test suite continues to provide value.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Leverage Analytics:\"}),\" With tools like Qodex, you can gain valuable insights into the performance and coverage of your tests. Qodex provides detailed reports and analytics that help you identify which tests are performing well and which might need adjustments. This data-driven approach ensures that your test suite is always optimized for the best results.\"]})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Example Scenario:\"}),\" Imagine your team has recently added a new payment gateway to your e-commerce platform. Regular review of your regression suite would involve updating test cases to cover the new payment method, ensuring that all transaction scenarios are tested, and verifying that existing payment options are still functioning correctly.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",children:[/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Removing Obsolete Tests and Adding New Ones\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"As your application grows and changes, certain test cases may become obsolete. Keeping these outdated tests in your suite not only wastes resources but can also lead to confusion and inefficiency.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Prune Obsolete Tests:\"}),\" Regularly identify and remove tests that no longer serve a purpose. This could include tests for deprecated features, redundant scenarios, or cases that have become irrelevant due to changes in business logic. Removing these tests keeps your suite lean and focused.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Incorporate New Tests:\"}),\" As new features are developed, it\u2019s crucial to add corresponding test cases to your regression suite. This ensures that your test coverage expands in line with your application\u2019s functionality, reducing the risk of undetected issues.\"]})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Example Scenario:\"}),\" Your application recently underwent a UI overhaul, rendering several older interface-related tests obsolete. By removing these tests and adding new ones that align with the updated design, you ensure that your regression suite remains relevant and effective.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",children:[/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Optimizing for Maximum Coverage with Minimal Test Cases\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Efficiency is key when managing a large regression suite. The goal is to achieve maximum coverage with the fewest possible test cases, ensuring that you can catch potential issues without overburdening your testing resources.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Focus on Critical Paths:\"}),\" Identify and prioritize test cases that cover the most critical and frequently used parts of your application. By focusing on these areas, you can ensure that the most important functionality is always thoroughly tested.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Use AI-Driven Insights:\"}),\" Qodex\u2019s AI-driven capabilities can help optimize your test suite by identifying redundant tests and suggesting areas for improvement. This allows you to refine your suite for maximum effectiveness, ensuring comprehensive coverage while minimizing the number of tests required.\"]})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Example Scenario:\"}),\" In a complex application with multiple modules, Qodex can help identify overlapping test cases across different modules. By consolidating these into a single, more efficient test, you can reduce redundancy and streamline your testing process.\"]})]})]}),/*#__PURE__*/e(\"p\",{children:\"By updating test cases, removing obsolete ones, and optimizing for maximum coverage, you can ensure that your suite remains a powerful tool in your software quality arsenal.\"})]});export const richText20=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Building an effective regression test suite is essential for maintaining software quality and ensuring that your application remains stable as it evolves. By carefully designing your test suite, prioritizing high-risk areas, balancing automation with manual testing, and continuously refining your approach, you can create a robust safety net that catches issues before they reach your users. \"}),/*#__PURE__*/t(\"p\",{children:[\"Tools like \",/*#__PURE__*/e(r,{href:\"https://www.app.qodex.ai/\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Qodex\"})}),\" can greatly enhance your regression testing efforts by automating repetitive tasks, integrating seamlessly with CI/CD pipelines, and providing valuable insights that help you optimize your test suite over time. With a well-constructed regression test suite, you can confidently deliver high-quality software that meets your users' expectations.\"]})]});export const richText21=/*#__PURE__*/e(a.Fragment,{children:/*#__PURE__*/t(\"p\",{children:['\"Every great product starts with a clear strategy.\" In software testing, understanding the differences between a ',/*#__PURE__*/e(\"strong\",{children:\"Test Plan\"}),\" and a \",/*#__PURE__*/e(\"strong\",{children:\"Test Case\"}),\" is key to achieving that success.\\xa0 These two components may sound alike, but each has a specific role in ensuring your software is tested thoroughly and efficiently. Let\u2019s break down what sets them apart and why you need both to achieve a top-notch software release.\"]})});export const richText22=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"A test plan is a crucial document in \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/blog/types-of-software-testing-engineering\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"software testing\"})}),\" that outlines everything you need to know about the testing process. It describes the scope of the tests, the approach you\u2019ll take, the resources required, and the schedule for all testing activities.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"Essentially, it\u2019s the blueprint that guides your testing efforts, ensuring everyone on the team knows what to expect and how to proceed.\"}),/*#__PURE__*/e(\"p\",{children:\"\\xa0It serves as a clear communication tool, capturing all the essential details of the testing process and sharing them with stakeholders. This transparency helps align expectations, allocate resources effectively, and avoid any surprises down the road.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"By laying everything out in a structured format, a test plan ensures that your testing activities are organized, focused, and aligned with the project\u2019s goals.\"})]});export const richText23=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"The scope specifies what the team will test and what they won't. It sets the boundaries for your testing efforts, ensuring everyone is on the same page about what\u2019s included in the test and what is out of scope. This clarity helps avoid unnecessary work and keeps the testing process focused.\"}),/*#__PURE__*/e(\"h3\",{children:\"Test Approach (Functional and Non-Functional Testing)\"}),/*#__PURE__*/t(\"p\",{children:[\"The test approach details how the team will conduct testing, covering both functional and non-functional aspects. Functional testing focuses on how each feature works as expected, while non-functional testing checks performance, security, and usability. A well-defined approach helps guide the team on how to tackle \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/blog/qa-tester-test-types\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"different testing types.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"(Check out the future of software QA tools: \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/blog/ai-testing-software-qa-tools\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"AI Testing: The Future of Software QA Tools - Qodex.ai\"})}),\")\"]}),/*#__PURE__*/e(\"h3\",{children:\"Test Entry and Exit Criteria\"}),/*#__PURE__*/e(\"p\",{children:\"Entry and exit criteria set the conditions required to start and finish testing. Entry criteria include the availability of test environments or the completion of specific development tasks.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Exit criteria confirm that the team has executed all tests and resolved all critical defects. They ensure the team completes testing at the right time and meets all required conditions.\"}),/*#__PURE__*/e(\"h3\",{children:\"Risks and Mitigation Plans\"}),/*#__PURE__*/e(\"p\",{children:\"Identifying potential risks early in the testing process is essential. This section of the test plan highlights possible challenges, such as resource constraints or tight deadlines, and outlines strategies to mitigate these risks. Having a plan in place ensures that the team can respond quickly if issues arise, minimizing their impact on the project.\"}),/*#__PURE__*/e(\"h3\",{children:\"Defect Management\"}),/*#__PURE__*/e(\"p\",{children:\"Defect management outlines how issues discovered during testing will be tracked, reported, and resolved. This entails outlining the procedure for recording bugs, allocating them to the appropriate team members, and guaranteeing that they are fixed prior to the software's release. Clear defect management procedures help maintain the quality of the product.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Test Environment\"}),/*#__PURE__*/t(\"p\",{children:[\"The \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/blog/how-to-build-a-good-test-infrastructure\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"test environment\"})}),\" describes the required setup, including hardware, software, and network configurations, to ensure accurate test execution.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Test Schedule\"}),/*#__PURE__*/e(\"p\",{children:\"The test schedule provides a timeline for all testing activities, from the start of testing to the final sign-off. It includes key milestones, deadlines, and any dependencies between tasks. A well-planned schedule keeps the team on track and ensures they complete testing within the project's overall timeline.\"}),/*#__PURE__*/e(\"h3\",{children:\"Test Deliverables\"}),/*#__PURE__*/e(\"p\",{children:\"Test deliverables include the documents and artifacts produced during testing, ensuring the completion of all necessary documentation.\"}),/*#__PURE__*/e(\"h3\",{children:\"Reports\"}),/*#__PURE__*/e(\"p\",{children:\"Reports provide ongoing updates on the status of testing activities. This can include daily or weekly progress reports, defect summaries, and final test reports. Regular reporting keeps stakeholders informed and helps them make data-driven decisions\"}),/*#__PURE__*/e(\"h3\",{children:\"Stakeholders Contacts\"}),/*#__PURE__*/e(\"p\",{children:\"This section lists key stakeholders and their contact information, ensuring effective communication throughout the testing process.\"}),/*#__PURE__*/e(\"h3\",{children:\"Roles and Responsibilities\"}),/*#__PURE__*/e(\"p\",{children:\"Clearly defined roles and responsibilities ensure everyone on the testing team knows their tasks and who to coordinate with.\"}),/*#__PURE__*/e(\"h3\",{children:\"Sign-off\"}),/*#__PURE__*/e(\"p\",{children:\"The sign-off section confirms that all stakeholders agree the testing process is complete and the software is ready for release.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"(Continue reading: \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/blog/what-is-web-application-testing\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"https://qodex.ai/blog/what-is-web-application-testing\"})}),\")\"]})]});export const richText24=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"img\",{alt:\"Steps to Create a Test Plan\",className:\"framer-image\",height:\"450\",src:\"https://framerusercontent.com/images/xk0GhDWgtvAdSdhoEMF1F19KYQ.png\",srcSet:\"https://framerusercontent.com/images/xk0GhDWgtvAdSdhoEMF1F19KYQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/xk0GhDWgtvAdSdhoEMF1F19KYQ.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/xk0GhDWgtvAdSdhoEMF1F19KYQ.png 1600w\",style:{aspectRatio:\"1600 / 900\"},width:\"800\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Step 1:\"}),\" Begin by thoroughly understanding the software you\u2019ll be testing. Dive into the product\u2019s features, user expectations, and potential pain points.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Step 2:\"}),\" Next, design a \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/blog/test-automation-strategy-basic-steps\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"test strategy\"})}),\" that outlines how you\u2019ll approach testing. Define clear objectives for what you want to achieve, whether it\u2019s ensuring functionality, improving performance, or identifying security vulnerabilities. A solid strategy guides the entire testing process.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Step 3:\"}),\" Specify the criteria that will guide your testing efforts. Define the conditions required to start testing (entry criteria) and those that indicate testing is complete (exit criteria).\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Step 4:\"}),\" Set up the environment where testing will occur. It includes configuring the necessary hardware, software, and network settings to closely mimic the production environment.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Step 5:\"}),\" Create a testing schedule that includes important due dates, dependencies, and milestones. This guarantees that testing is finished within the project's timeframe and keeps the team focused.\\xa0\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Step 6:\\xa0 \"}),\"List the specific deliverables your testing process will produce. These might include test cases, test scripts, defect reports, and final test results.\"]})]});export const richText25=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Take the time to thoroughly understand the project\u2019s requirements before diving into the \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/blog/test-plan-document-creation\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"test plan\"})}),\". The better you understand what needs to be tested, the more effective your test plan will be.\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(14, 16, 26)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Clearly define your testing objectives and the criteria for starting and finishing tests.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(14, 16, 26)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Assemble a test environment that is almost identical to the production environment, and be aware of any hazards that might affect testing.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(14, 16, 26)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Plan your resources, create a detailed schedule, and estimate the time required for each phase of testing.\"})})]})]});export const richText26=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"A test case is a detailed set of instructions that outlines specific preconditions, inputs, actions, expected results, and post-conditions to validate a particular aspect of a system or application.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"It\u2019s a step-by-step guide that testers follow to ensure that every function of the software performs as intended. By defining these parameters, a test case provides a clear path to check whether the software behaves correctly under various scenarios.\"}),/*#__PURE__*/e(\"h3\",{children:\"Purpose\"}),/*#__PURE__*/e(\"p\",{children:\"The primary purpose of a test case is to evaluate the performance and compliance of the software. It helps identify bugs, inconsistencies, or deviations from the expected behavior. Test cases systematically test each aspect of the application to ensure all features work as intended. They help catch and address any issues before the software is released to users.\"}),/*#__PURE__*/t(\"p\",{children:[\"(Get insights: \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/blog/need-and-approach-for-automated-unit-testing\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"https://qodex.ai/blog/need-and-approach-for-automated-unit-testing\"})}),\")\"]})]});export const richText27=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"img\",{alt:\"Components of a Test Case\",className:\"framer-image\",height:\"450\",src:\"https://framerusercontent.com/images/T574zidhBKtSiBuPElkLj19iFuY.png\",srcSet:\"https://framerusercontent.com/images/T574zidhBKtSiBuPElkLj19iFuY.png?scale-down-to=512 512w,https://framerusercontent.com/images/T574zidhBKtSiBuPElkLj19iFuY.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/T574zidhBKtSiBuPElkLj19iFuY.png 1600w\",style:{aspectRatio:\"1600 / 900\"},width:\"800\"}),/*#__PURE__*/e(\"h3\",{children:\"Prerequisites\"}),/*#__PURE__*/e(\"p\",{children:\"Prerequisites list the conditions or setup required before you can execute the test. This could include specific data, user permissions, or system configurations. Ensuring these are in place helps avoid disruptions during testing.\"}),/*#__PURE__*/e(\"h3\",{children:\"Test ID\"}),/*#__PURE__*/e(\"p\",{children:\"Every test case is given a unique identity known as the Test ID. It helps organize and track test cases efficiently, making it easier to reference and manage them throughout the testing process.\"}),/*#__PURE__*/e(\"h3\",{children:\"Test Name\"}),/*#__PURE__*/e(\"p\",{children:\"The Test Name provides a brief description of what the test case is designed to verify. It gives a quick overview of the test\u2019s purpose, making it easier to understand at a glance.\"}),/*#__PURE__*/e(\"h3\",{children:\"Test Steps\"}),/*#__PURE__*/e(\"p\",{children:\"Test Steps outline the specific actions you need to take to execute the test. These steps are written in a clear and logical sequence, guiding the tester through the process to ensure consistency and accuracy.\"}),/*#__PURE__*/e(\"h3\",{children:\"Test Data\"}),/*#__PURE__*/e(\"p\",{children:\"Test Data includes the inputs required for the test, such as user credentials, form entries, or any other data necessary to perform the steps. Having the correct data is crucial for replicating real-world scenarios and validating the software\u2019s functionality.\"}),/*#__PURE__*/t(\"p\",{children:[\"(Read to learn more: \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/blog/software-testing-strategies-and-techniques-guide\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Software Testing Strategies and Techniques Guide - Qodex.ai\"})}),\")\"]}),/*#__PURE__*/e(\"h3\",{children:\"Test Environment\"}),/*#__PURE__*/e(\"p\",{children:\"The Test Environment specifies the hardware, software, and network setup for executing the test. The setup closely mirrors the production environment, ensuring reliable results.\"}),/*#__PURE__*/e(\"h3\",{children:\"Expected Results\"}),/*#__PURE__*/e(\"p\",{children:\"Expected Results define what the outcome should be after executing the test steps. This acts as the standard by which the actual outcomes are measured to figure out whether the test passes or fails.\"}),/*#__PURE__*/e(\"h3\",{children:\"Actual Results\"}),/*#__PURE__*/e(\"p\",{children:\"Actual results document what actually happened when the test was executed. Comparing these with the expected results helps identify discrepancies and potential bugs in the system.\"}),/*#__PURE__*/e(\"h3\",{children:\"Test Status\"}),/*#__PURE__*/e(\"p\",{children:\"Test Status indicates whether the test passed, failed, or was blocked. It provides an immediate snapshot of the test\u2019s outcome, helping testers quickly assess the software\u2019s current state.\"}),/*#__PURE__*/e(\"h3\",{children:\"References from Other Tests\"}),/*#__PURE__*/e(\"p\",{children:\"References from other tests link to related test cases or documentation. This helps testers see connections between different tests, understand dependencies, and ensure comprehensive coverage of the software\u2019s functionality.\"})]});export const richText28=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"img\",{alt:\"Steps to Create a Test Case\",className:\"framer-image\",height:\"450\",src:\"https://framerusercontent.com/images/vo9naM25q8MKYd4EZGo9FqCmkLo.png\",srcSet:\"https://framerusercontent.com/images/vo9naM25q8MKYd4EZGo9FqCmkLo.png?scale-down-to=512 512w,https://framerusercontent.com/images/vo9naM25q8MKYd4EZGo9FqCmkLo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/vo9naM25q8MKYd4EZGo9FqCmkLo.png 1600w\",style:{aspectRatio:\"1600 / 900\"},width:\"800\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Step 1: \"}),\"Start by crafting a clear and concise description of the test case. This should outline what the test will cover and its objective. A well-written description sets the stage for the rest of the test case and helps anyone reviewing it understand its purpose quickly.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Step 2:\"}),\" Identify and include the necessary test data to use during the test. It might include user inputs, configurations, or other data required to execute the test steps. Having the right data is crucial for accurate testing.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Step 3:\"}),\" Detail the specific steps needed to perform the test. These steps should be easy to follow and logically ordered, guiding the tester through the process from start to finish. Clear instructions ensure consistency and reduce the chance of errors.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Step 4: \"}),\"After executing the test, compare the actual results with the expected outcomes. Record any discrepancies and determine whether the test passed or failed. Documenting the results accurately is essential for tracking progress and identifying issues.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Step 5:\\xa0 \"}),\"Define the preconditions required before starting the test and the post-conditions to verify after completing the test. These steps confirm that the test runs in the correct context and that all necessary follow-up actions occur.\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Best Practices to Create Quality Test Cases\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(14, 16, 26)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Keep the test case description straightforward and easy to understand. Avoid jargon and ensure that the purpose of the test is immediately clear to anyone who reads it.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(14, 16, 26)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Design your test cases to be reusable across different scenarios and projects. Assign unique IDs to each test case to avoid confusion and make it easy to reference and track them.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(14, 16, 26)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Be precise in outlining the requirements for the test and what the expected outcomes should be. Clear expectations help ensure that the test case effectively evaluates the intended functionality.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(14, 16, 26)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Regularly review test cases with peers and stakeholders to ensure accuracy and completeness. Collaborative reviews help catch potential issues early and improve the overall quality of your test cases.\"})})]})]});export const richText29=/*#__PURE__*/e(a.Fragment,{children:/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"640\",src:\"https://framerusercontent.com/images/5uaAwbT8mXv852tsmbQMlr2cYE.png\",srcSet:\"https://framerusercontent.com/images/5uaAwbT8mXv852tsmbQMlr2cYE.png?scale-down-to=512 512w,https://framerusercontent.com/images/5uaAwbT8mXv852tsmbQMlr2cYE.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/5uaAwbT8mXv852tsmbQMlr2cYE.png 1580w\",style:{aspectRatio:\"1580 / 1280\"},width:\"790\"})});export const richText30=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Understanding the differences between a test plan and a test case is crucial for effective software testing.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"While a test plan provides the strategic roadmap for the entire testing process, a test case focuses on the specific scenarios that validate your software\u2019s functionality. Both are essential tools in delivering a high-quality product.\"}),/*#__PURE__*/t(\"p\",{children:[\"If you're looking to streamline your testing process and ensure accuracy, consider using \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:/*#__PURE__*/e(\"strong\",{children:\"Qodex.ai\"})})}),\". With its advanced features and user-friendly interface, Qodex.ai makes creating and managing test plans and test cases more efficient than ever.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Take your testing to the next level\u2014visit \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:/*#__PURE__*/e(\"strong\",{children:\"Qodex.ai\"})})}),\" today and see how it can transform your workflow.\\xa0\\xa0  \"]}),/*#__PURE__*/t(\"p\",{children:[\"Unlock the Future of APIs in 2024 \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/blog/unlocking-the-future-build-better-apis-with-2024-s-doc-best-practices\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"https://qodex.ai/blog/unlocking-the-future-build-better-apis-with-2024-s-doc-best-practices\"})}),\"\\xa0\"]})]});export const richText31=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Sanity testing and regression testing are two important pillars of software quality assurance. While these techniques may appear similar on the surface, they serve distinct purposes and offer unique insights into the quality and stability of software applications.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Understanding the subtle variations and mutually beneficial relationships between sanity testing and regression testing is critical to the success of any software project.\"}),/*#__PURE__*/t(\"p\",{children:[\"Join us as we dive into the heart of these \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/blog/intelligent-test-automation-strategies\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"testing strategies\"})}),\", uncover their key distinctions, and explore how they work together to deliver exceptional software experiences.\"]})]});export const richText32=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"img\",{alt:\"Sanity Testing\",className:\"framer-image\",height:\"450\",src:\"https://framerusercontent.com/images/ZOe5a8Cq0XgWRnv1dabYGRQX30U.png\",srcSet:\"https://framerusercontent.com/images/ZOe5a8Cq0XgWRnv1dabYGRQX30U.png?scale-down-to=512 512w,https://framerusercontent.com/images/ZOe5a8Cq0XgWRnv1dabYGRQX30U.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/ZOe5a8Cq0XgWRnv1dabYGRQX30U.png 1600w\",style:{aspectRatio:\"1600 / 900\"},width:\"800\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Sanity testing is a focused form of testing conducted to verify that specific functions or bug fixes in software are working correctly after a code change. Its primary purpose is to ensure that the introduced changes have not disrupted any related areas, allowing the development process to proceed without delay. Sanity testing acts as a checkpoint to confirm that recent code changes are stable enough for more in-depth testing phases.\"}),/*#__PURE__*/e(\"h3\",{children:\"When is Sanity Testing Performed?\"}),/*#__PURE__*/t(\"p\",{children:[\"Sanity testing is typically performed after receiving a new build with minor changes, such as bug fixes or new functionality. It\u2019s a quick, targeted test that comes before more extensive testing processes like \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/blog/building-an-effective-regression-test-suite\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"regression testing\"})}),\". By conducting sanity tests early, you can catch any major issues before they cascade into more significant problems during later testing stages.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Importance of Sanity Testing\"}),/*#__PURE__*/e(\"p\",{children:\"The importance of sanity testing lies in its ability to quickly identify critical issues, ensuring that the development process remains on track. It prevents wasted effort on more comprehensive testing by catching obvious errors early.\"}),/*#__PURE__*/e(\"p\",{children:\"Sanity testing serves as a safeguard, ensuring that the software remains functional and stable after each update. It enables teams to spend their resources on more extensive testing only after the product passes the initial review.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Characteristics\"}),/*#__PURE__*/e(\"p\",{children:\"Sanity testing is typically narrow in scope, focusing only on specific areas impacted by recent changes. It\u2019s quick to execute and doesn\u2019t require extensive documentation or planning.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"The key characteristic of sanity testing is its efficiency; it provides fast feedback on whether recent changes have been successfully implemented without introducing new issues.\"}),/*#__PURE__*/e(\"p\",{children:\"Testers conduct sanity testing as an unscripted process, relying on their expertise to assess the software\u2019s stability rather than following predefined test cases.\"}),/*#__PURE__*/e(\"h3\",{children:\"Advantages\"}),/*#__PURE__*/e(\"p\",{children:\"Sanity testing offers several advantages, particularly in agile development environments where time is of the essence. It saves time by quickly validating critical fixes, allowing developers to move forward without unnecessary delays.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"By catching major issues early, sanity testing also reduces the risk of extensive rework later in the process. Additionally, it increases confidence in the software's stability, ensuring that only solid builds progress to more comprehensive testing phases.\"})]});export const richText33=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Regression testing assures that recent code modifications do not have an unfavorable effect on the software's existing functioning. Its primary purpose is to confirm that new updates, bug fixes, or enhancements haven\u2019t introduced new issues into the system. By retesting existing features, regression testing helps maintain the integrity of the software after modifications.\"}),/*#__PURE__*/e(\"h3\",{children:\"When is it performed?\"}),/*#__PURE__*/e(\"p\",{children:\"Regression testing is typically performed whenever there\u2019s a code change, whether it\u2019s a bug fix, a new feature, or a performance improvement.\"}),/*#__PURE__*/e(\"p\",{children:\"\\xa0It\u2019s essential after any modification to the software, no matter how minor, to ensure that the changes haven\u2019t unintentionally broken any existing functionality.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"This testing is usually conducted before major releases and after any significant updates to ensure that the software remains stable and reliable.\"}),/*#__PURE__*/e(\"h3\",{children:\"Importance of Regression Testing\"}),/*#__PURE__*/e(\"p\",{children:\"Regression testing is crucial because it helps to sustain software quality over time.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Regression testing helps catch these issues early, preventing bugs from reaching the end users.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"It also ensures that new code integrates smoothly with the existing system, reducing the risk of costly fixes and rework down the line.\"}),/*#__PURE__*/e(\"h3\",{children:\"Characteristics\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Regression testing is comprehensive, covering both new and existing functionalities. It often involves a combination of automated and manual testing, depending on the scope and complexity of the software.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"The key characteristic of regression testing is its repetitive nature; it\u2019s performed frequently to ensure that no new issues arise with successive updates.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Advantages\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Regression testing offers several advantages, including increased confidence in software stability. By continuously verifying that existing features work as intended after changes, teams can release updates with greater assurance.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"It also reduces the likelihood of introducing new bugs, saving time and resources that would otherwise be spent on fixing issues post-release.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Additionally, automated regression testing can speed up the process, allowing for more frequent testing cycles without sacrificing quality.\"})]});export const richText34=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"img\",{alt:\"Sanity Testing vs Regression Testing\",className:\"framer-image\",height:\"450\",src:\"https://framerusercontent.com/images/y5j5tZbFe6yDe97vVuDonwfdxk.png\",srcSet:\"https://framerusercontent.com/images/y5j5tZbFe6yDe97vVuDonwfdxk.png?scale-down-to=512 512w,https://framerusercontent.com/images/y5j5tZbFe6yDe97vVuDonwfdxk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/y5j5tZbFe6yDe97vVuDonwfdxk.png 1600w\",style:{aspectRatio:\"1600 / 900\"},width:\"800\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"725\",src:\"https://framerusercontent.com/images/mGTqbPnsL7Ncs4IOoe87HZoxUn4.png\",srcSet:\"https://framerusercontent.com/images/mGTqbPnsL7Ncs4IOoe87HZoxUn4.png?scale-down-to=512 512w,https://framerusercontent.com/images/mGTqbPnsL7Ncs4IOoe87HZoxUn4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/mGTqbPnsL7Ncs4IOoe87HZoxUn4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/mGTqbPnsL7Ncs4IOoe87HZoxUn4.png 2712w\",style:{aspectRatio:\"2712 / 1450\"},width:\"1356\"})]});export const richText35=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"h3\",{children:\"Sequential Execution\"}),/*#__PURE__*/e(\"p\",{children:\"Sanity testing and regression testing often follow a sequential execution pattern. After developers implement a fix or a minor update, sanity testing is performed first. This initial test ensures that the specific change hasn\u2019t caused any immediate, critical issues.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Once the sanity check confirms stability, regression testing follows to ensure that the change hasn\u2019t affected any existing functionalities across the broader system. This sequence helps catch both localized and system-wide issues efficiently.\"}),/*#__PURE__*/e(\"h3\",{children:\"Complementary Nature\"}),/*#__PURE__*/e(\"p\",{children:\"Sanity testing and regression testing are inherently complementary. Sanity testing provides a quick check on the immediate impact of changes, focusing on newly modified areas.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"If sanity testing passes, the team then conducts regression testing to take a deeper dive into the software, checking for any unintended consequences introduced elsewhere.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Together, they provide a comprehensive approach to quality assurance, balancing speed with thoroughness.\"}),/*#__PURE__*/e(\"h3\",{children:\"Role in Agile Development\"}),/*#__PURE__*/t(\"p\",{children:[\"In \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/blog/agile-testing-methodology-importance-best-practices-and-challenges\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"agile development\"})}),\", both sanity and regression testing play crucial roles in maintaining software quality amidst rapid iterations.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"Sanity testing is ideal for the quick, incremental changes typical of agile sprints, allowing teams to verify updates without delaying progress.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Regression testing ensures that these frequent changes don\u2019t degrade the overall stability of the software.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Their combined use helps agile teams deliver robust software consistently, even in fast-paced development environments.\"})]});export const richText36=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Both sanity and regression testing are essential for maintaining software quality. Sanity testing addresses immediate issues efficiently, while regression testing ensures overall stability. Together, they provide a balanced approach, keeping your software reliable over time.\"}),/*#__PURE__*/e(\"p\",{children:\"Choosing the appropriate testing method depends on the nature of the changes, but utilizing both ensures comprehensive coverage and high-quality outcomes.\"}),/*#__PURE__*/t(\"p\",{children:[\"To take your testing process to the next level, consider integrating advanced \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/blog/top-automation-testing-tools\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"automation tools\"})}),\" like\",/*#__PURE__*/e(r,{href:\"https://qodex.ai/\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/t(i.a,{children:[\" \",/*#__PURE__*/e(\"strong\",{children:\"Qodex.ai\"})]})}),\". With Qodex.ai, you can streamline both sanity and regression testing, reducing the time and effort required while increasing the accuracy and coverage of your tests.\\xa0\"]}),/*#__PURE__*/t(\"p\",{children:[\"Qodex.ai\u2019s powerful automation features are designed to handle the complexity of modern \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/blog/types-of-software-testing-engineering\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"software testing\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"Curious to see how \",/*#__PURE__*/e(r,{href:\"https://qodex.ai/\",motionChild:!0,nodeId:\"xUFEuGbVZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Qodex.ai\"})}),\" can transform your testing strategy? Visit our website to explore our features and see why leading software teams trust us to deliver reliable, efficient testing solutions.\\xa0 \"]})]});export const richText37=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"The role of a QA Lead has never been more crucial, when software development cycles are getting shorter and expectations are constantly rising.\"}),/*#__PURE__*/e(\"p\",{children:\"As someone who bridges the gap between development teams and product quality, you\u2019re not just overseeing the testing process\u2014you\u2019re ensuring that every piece of software delivered is up to the mark, reliable, and ready for the real world.\"}),/*#__PURE__*/e(\"p\",{children:\"As a QA Lead, your responsibilities extend far beyond managing a team of testers. You\u2019re the one creating test plans, setting schedules, and making sure that every aspect of the software is tested thoroughly. Your role is to catch potential issues before they become problems, ensuring that the final product not only meets the functional requirements but also exceeds user expectations.\"}),/*#__PURE__*/e(\"p\",{children:\"But why is this role so significant? It\u2019s because quality isn\u2019t just an add-on; it\u2019s a core part of the product. In an environment where one unnoticed bug can lead to significant downtime or user dissatisfaction, your job is to maintain that high bar for quality. You\u2019re the gatekeeper, the last line of defense before the software reaches the end user.\"}),/*#__PURE__*/e(\"p\",{children:\"In this guide, we\u2019ll break down what your responsibilities entail, the skills you need, and the strategies that can help you excel in this critical role. Whether you\u2019re already in the position or aspiring to step up, understanding the full scope of a QA Lead\u2019s responsibilities will ensure you\u2019re prepared to meet the challenges head-on.\"})]});\nexport const __FramerMetadata__ = {\"exports\":{\"richText7\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText34\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText2\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText18\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText4\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText27\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText5\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText9\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText25\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText29\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText36\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText33\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText23\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText17\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText28\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText19\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText35\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText21\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText10\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText37\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText20\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText3\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText13\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText22\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText32\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText30\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText1\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText26\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText16\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText6\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText14\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText11\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText15\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText12\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText31\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText24\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText8\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "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",
  "names": ["richText", "u", "x", "p", "Link", "motion", "richText1", "richText2", "richText3", "richText4", "richText5", "richText6", "richText7", "richText8", "richText9", "ComponentPresetsConsumer", "t", "CodeBlock_default", "richText10", "richText11", "richText12", "richText13", "richText14", "richText15", "richText16", "richText17", "richText18", "richText19", "richText20", "richText21", "richText22", "richText23", "richText24", "richText25", "richText26", "richText27", "richText28", "richText29", "richText30", "richText31", "richText32", "richText33", "richText34", "richText35", "richText36", "richText37", "__FramerMetadata__"]
}
