Book Image

Enhanced Test Automation with WebdriverIO

By : Paul M. Grossman, Larry C. Goddard
Book Image

Enhanced Test Automation with WebdriverIO

By: Paul M. Grossman, Larry C. Goddard

Overview of this book

This book helps you embark on a comprehensive journey to master the art of WebdriverIO automation, from installation through to advanced framework development. You’ll start by following step-by-step instructions on installing WebdriverIO, configuring Node packages, and creating a simple test. Here you’ll gain an understanding of the mechanics while also learning to add reporting and screen captures to your test results to enhance your test case documentation. In the next set of chapters, you’ll delve into the intricacies of configuring and developing robust method wrappers, a crucial skill for supporting multiple test suites. The book goes beyond the basics, exploring testing techniques tailored for Jenkins as well as LambdaTest cloud environments. As you progress, you’ll gain a deep understanding of both TypeScript and JavaScript languages and acquire versatile coding skills. By the end of this book, you’ll have developed the expertise to construct a sophisticated test automation framework capable of executing an entire suite of tests using WebdriverIO in either TypeScript or JavaScript, as well as excel in your test automation endeavors and deliver reliable, efficient testing solutions.
Table of Contents (20 chapters)
16
Epilogue
Appendix: The Ultimate Guide to TypeScript Error Messages, Causes, and Solutions

Expanding the click method wrapper

Let’s extend the clickAdv() method to make it more robust and less likely to fail. First, we will add a pageSync() function to the helper class. This function is an alternative way to determine when the page build has settled. After each click, we will perform the following actions:

  1. Count the number of visible /span elements on the page.
  2. Wait 1/4 of a second.
  3. Repeat until either of the following occur:
    • The count of /span elements is stable 3 times
    • The timeout is reached
  4. Report service-level-agreement metrics on how long it took to complete.
  5. Add the option to customize the length of the wait time.

The page sync method will dynamically wait for the page to build. It is optimized to spend a minimum of 0.75 seconds detecting when the page is completed. This reduces the chance of throwing an error if our element does not exist as the page is building. But it also gives us the flexibility to wait longer, up to 30 seconds...