Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon
Enhanced Test Automation with WebdriverIO
Enhanced Test Automation with WebdriverIO

Enhanced Test Automation with WebdriverIO: Unlock the superpowers of hybrid testing frameworks

Arrow left icon
Profile Icon Paul M. Grossman Profile Icon Larry C. Goddard
Arrow right icon
$45.99
Full star icon Full star icon Full star icon Full star icon Full star icon 5 (7 Ratings)
Paperback Nov 2023 328 pages 1st Edition
eBook
$9.99 $36.99
Paperback
$45.99
Subscription
Free Trial
Renews at $19.99p/m
Arrow left icon
Profile Icon Paul M. Grossman Profile Icon Larry C. Goddard
Arrow right icon
$45.99
Full star icon Full star icon Full star icon Full star icon Full star icon 5 (7 Ratings)
Paperback Nov 2023 328 pages 1st Edition
eBook
$9.99 $36.99
Paperback
$45.99
Subscription
Free Trial
Renews at $19.99p/m
eBook
$9.99 $36.99
Paperback
$45.99
Subscription
Free Trial
Renews at $19.99p/m

What do you get with Print?

Product feature icon Instant access to your digital eBook copy whilst your Print order is Shipped
Product feature icon Paperback book shipped to your preferred address
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
Product feature icon AI Assistant (beta) to help accelerate your learning
OR
Modal Close icon
Payment Processing...
tick Completed

Shipping Address

Billing Address

Shipping Methods
Table of content icon View table of contents Preview book icon Preview Book

Enhanced Test Automation with WebdriverIO

Fortress of Solitude – Configuring WebdriverIO

In this chapter, we will install WebdriverIO and its dependencies. There are two approaches, and we will discuss the advantages of each. It is also important to keep the versions of the dependencies up to date. To help with this, we will use Yarn to keep our package.json and yarn.lock files up to date.

The setup instructions for WDIO can be found in the Getting Started section on the official website (https://webdriver.io/docs/gettingstarted):

Figure 2.1 – Getting Started

Figure 2.1 – Getting Started

Figure 2.2 – Current documentation indicators for version 7.x

Figure 2.2 – Current documentation indicators for version 7.x

In this section, we'll cover the following main topics:

  • WebdriverIO setup
  • Building and installing the project dependencies
  • Making out first commit

Tip

Be sure you are viewing the latest version of WDIO 8.0. Googling questions about WDIO features can lead to support pages of prior versions.

WebdriverIO setup

The WDIO team works hard to make everything easy to install, as described in the documentation. WDIO can be set up in two ways:

  • Custom configuration while answering a series of questions
  • Cloned from an existing project on GitHub

For this project, we will show the questions and the selected answers. The second option, cloning the boilerplate project approach, is described in the following section.

Option 1 – required steps to start installing WebdriverIO 8.0 for TypeScript

Navigate from the TERMINAL window to the \repos\wdio folder. The quickest way to set up a WDIO project quickly from Yarn is to type yarn create wdio, ending with a dot (.):

> yarn create wdio .

The WDIO robot will appear, and a list of configuration questions will be presented:

Figure 2.3 – WDIO initialization from the code TERMINAL window

Figure 2.3 – WDIO initialization from the code TERMINAL window

The initialization will ask how to configure WDIO from scratch. Here is the list of settings for WebDriver 8.0. There are several options, and many will use the default. Each item with a star (*) shows the choice selected at setup:

Note

WebdriverIO is always being updated. These questions themselves should be similar for both Mac and Windows users. However, the order, phrasing, and selection details do change slightly as new features are added.

Figure 2.4 – Settings

Figure 2.4 – Settings

? What type of testing would you like to do? (Use arrow keys)

  • > (*) E2E Testing - of Web or Mobile Applications
  • ( ) Component or Unit Testing - in the browser
  • > https://webdriver.io/docs/component-testing
  • ( ) Desktop Testing - of Electron Applications
  • > https://webdriver.io/docs/desktop-testing/electron
  • ( ) Desktop Testing - of MacOS Applications
  • > https://webdriver.io/docs/desktop-testing/macos

? Where is your automation backend located? (Use arrow keys)

  • > (*) On my local machine (default)
  • ( ) In the cloud using Experitest
  • ( ) In the cloud using Sauce Labs
  • ( ) In the cloud using Browserstack or Testingbot or LambdaTest or a different service
  • ( ) I have my own Selenium cloud

Today, there are many cloud options, including Experitest, Sauce Labs, BrowserStack, Testingbot, and LambdaTest. For this book, we will install the automation backend on our local Mac or Windows machine.

Next is the environment type. For these purposes, we will use Web:

? Which environment would you like to automate? (Use arrow keys)

  • (*) Web - web applications in the browser
  • ( ) Mobile - native, hybrid, and mobile web apps, on Android or iOS

Then, select the browser(s) we will be using. Select the default of Chrome. Note that we can add others later:

? With which browser should we start? (Press <space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)

  • (*) Chrome
  • ( ) Firefox
  • ( ) Safari
  • ( ) Microsoft Edge

Next is the reporting framework type. For this book, we will be using Jasmine. However, much of the code that’s supplied will apply to all listed frameworks:

? Which framework do you want to use? (Use arrow keys)

  • ( ) Mocha (https://mochajs.org/)
  • ( ) Mocha with Serenity/JS (https://serenity-js.org/)
  • (*) Jasmine (https://jasmine.github.io/)
  • ( ) Jasmine with Serenity/JS (https://serenity-js.org/)
  • ( ) Cucumber (https://cucumber.io/)
  • ( ) Cucumber with Serenity/JS (https://serenity-js.org/)

Out of the box, WebdriverIO uses Mocha by default. However, it also supports Jasmine and can be combined with Chai for advanced assertions. Cucumber is an extra layer of abstraction framework that hides the core code. This allows fewer technical resources to create tests from Feature files. Cucumber is outside the scope of this book, but the techniques described can be implemented in a Cucumber WDIO project. Next, we will tell WDIO this is a Typescript project:

? Do you want to use a compiler? (Use arrow keys

  • ( ) Babel (https://babeljs.io/)
  • (*) TypeScript (https://www.typescriptlang.org/)
  • ( ) No!

Question: What is Babel and is it needed?

Babel (https://babeljs.io/) is a JavaScript transpiler. Because JavaScript is implemented differently in different browsers, a transpiler is used to transform our code to an older JavaScript version. Some features are not implemented in certain browsers, such as async/await, depending on what browser version we are testing against. So, a transpiler allows us to have our framework be backward compatible. Although this is a TypeScript project, we do not need the TypeScript transpiler.

Question: How to know what features are available in different browsers and versions?

The caniuse.com website provides descriptive tables of the different ECMAScript features that are supported:

We will be creating our tests in TypeScript, which is a superset of JavaScript. The Typescript transpiler will be used. Now to get a quick startup sample script.

? Do you want WebdriverIO to autogenerate some test files?

(Y/n) Yes

This will automatically set up a sample test to run to ensure WebdriverIO is working. It is also where we will build a framework unit test to check features are working. Oh yes, we are developers, and our automation project has its own unit and integration tests.

The following is the default path for the TypeScript sample test cases and should not be changed:

? Where should be the location of your specs files?

./test/specs/**/*.ts

Tests can be organized into feature sub-folders and smoke tests under the specs folder. Notice that because we selected TypeScript in the prior question, the test extensions (.js) replaced with .ts.

? Do you want to use page objects (https://martinfowler.com/bliki/PageObject.html)?

Yes

This sets up a Page Object Model folder structure for our project.

? Where are your page objects located? ./test/pageobjects/**/*.ts

Now, we want to configure our reporters.

Which reporter do you want to use?

  • (*) spec
  • ( ) dot
  • ( ) junit
  • (*) allure
  • ( ) video
  • ( ) mochawesome
  • ( ) slack

WebdriverIO supports a wide variety of reporters. For this small sample, we will start with the spec and allure reporters. Note that WDIO even supports a Video option. You may notice that Slack is included. In the final chapter of this book, we will be using Jenkins to send update messages to a Slack channel.

? Do you want to add a plugin to your test setup?

  • ( ) wait-for: utilities that provide functionalities to wait for certain conditions till a defined task is complete.
  • > https://www.npmjs.com/package/wdio-wait-for
  • ( ) angular-component-harnesses: support for Angular component test harnesses
  • > https://www.npmjs.com/package/@badisi/wdio-harness
  • ( ) Testing Library: utilities that encourage good testing practices laid down by dom-testing-library.
  • > https://testing-library.com/docs/webdriverio-testing-library/intro

In our framework, we will have an advanced approach for waiting for page synchronization. This option will be left as-is.

If the application under test (AUT) is an Angular project, it is recommended to use the Angular Component Harnesses configuration.

? Do you want to add a service to your test setup?

  • ( ) vscode
  • ( ) eslinter-service
  • ( ) lambdatest
  • ( ) crossbrowsertesting
  • ( ) vscode
  • ( ) docker
  • ( ) slack

Note

34 additional services are integrated into WDIO, including Slack, Cross Browser Testing (Selenium Standalone), and ES-Linter. Covering them all is beyond the scope of this book.

The WebdriverIO Visual Studio Code (VS Code) service allows us to seamlessly test extensions from end to end in the VS Code Desktop ID. By providing a path to your extension, the service does the rest, as follows:

  • 🏗 Installs VS Code (either stable, insiders, or a specified version).
  • ⬇ Download Chromedriver specific to the given VS Code version.
  • 🚀 Enables you to access the VS Code API from your tests.
  • 🖥 Starts VS Code with custom user settings (including support for VS Code on Ubuntu, macOS, and Windows).
  • 🌐 Serves VS Code from a server to be accessed by any browser for testing web extensions.
  • 📔 Bootstraps page objects with locators that match your VS Code version.

The next question asks you to enter the landing page for the application under test. For this, we will use the default provided as the sample tests use this to navigate internally to a website for testing.

? What is the base URL?

http://localhost

This is the base landing page that our tests will launch.

A base landing page ensures we do not repeatedly add code to navigate to the same landing page. Later in this book, we will see how to customize this value. For the moment, we will use the internet sandbox for testing.

The final installation step is to have npm download and install all the packages. While this part can be performed by the installer, we need to make one modification. Choose No for the final question.

? Do you want me to run `npm install` (Y/n)

No

We will be using Yarn rather than npm as our package manager due to its speed. This completes the setup for installing and configuring WebdriverIO from the wizard. Another option is to clone an existing project, which will be covered next. Skip to the Installing and configuring WebdriverIO section if you do not plan to clone from an existing project.

Because we are using Yarn as our package manager instead of npm, we will need to remove the package-lock.json file and run the yarn install command to build the equivalent yarn.lock file.

> yarn install

Option 1 – cloning WebdriverIO from a boilerplate project

An alternate way to set up WDIO is to use a preconfigured WDIO boilerplate project from the WDIO GitHub repo. This means that less troubleshooting might be needed. We can choose from many preconfigured boilerplate projects with all the necessary components.

For this project, we will fork the Jasmine TypeScript Boilerplate project from GitHub:

Figure 2.5 – The Jasmine TypeScript boilerplate project on GitHub

Figure 2.5 – The Jasmine TypeScript boilerplate project on GitHub

Click the jasmine-boilerplate link. This will allow us to create our own version via the Code button:

Figure 2.6 – Copying the project URL from GitHub

Figure 2.6 – Copying the project URL from GitHub

Click Code. Multiple choices for cloning the project will be displayed. Select Open with GitHub Desktop:

Figure 2.7 – Cloning from the source path to the local destination

Figure 2.7 – Cloning from the source path to the local destination

Click Clone; the project will be put in the repos path.

Next, we will change the Local path directory so that it points to where our project lives. We can do this by clicking Choose..., changing the directory to repo\wdio, and clicking Clone:

Figure 2.8 – The project’s Explorer icon in VS Code

Figure 2.8 – The project’s Explorer icon in VS Code

Click the Explorer icon in the top-left corner of VS Code and open the WDIO folder.

Then, click Open Folder, navigate to the repo\wdio folder, and click Open:

Figure 2.9 – Trusting the authors of a project

Figure 2.9 – Trusting the authors of a project

If this dialogue appears, check the Trust the authors of all files in the parent folder ‘repos’ option and click Yes, I trust the authors.

With that, we have covered the clone installation approach. Next, we will install everything.

Building and installing the project dependencies

If you installed WebdriverIO from an existing project, this is where we continue. We need to build the project before we can run our first test. From the Terminal, type the following:

> yarn install

This will bring in all the associated packages to run the project. Sometime in the future, vulnerabilities may occur and we will have to update our packages. We can use Yarn to check which packages are current and which are outdated:

> yarn outdated

The output can be seen in the following screenshot:

Figure 2.10 – Displaying the outdated package

Figure 2.10 – Displaying the outdated package

Incompatibility could occur if we upgrade all packages blindly. Fortunately, there is the yarn upgrade command, which allows the packages to be upgraded individually:

> yarn upgrade-interactive

We will see the following output:

Figure 2.11 – Interactive package list for upgrading

Figure 2.11 – Interactive package list for upgrading

This gives us the most flexibility when we’re keeping our project packages up to date.

Quick tip

If you want to clear the Terminal, use cls in Windows or Ctrl + K or clear on Mac.

After the installation, the yarn.lock file will be updated and the node_modules folder will have all the supporting dependencies downloaded. This contains the expanded list of packages, which has been included to support the packages in package.json. The yarn.lock file will never need to be edited.

At this point, we should point out that the WebdriverIO setup assumes that a novice user may not know what to do to bring in all the supporting packages:

Figure 2.12 – WebdriverIO with TypeScript successfully installed

Figure 2.12 – WebdriverIO with TypeScript successfully installed

Lastly, we can confirm the version of WebdriverIO that is installed with the version flag.

For Windows users:

> npx wdio --version

For Mac users:

> wdio --version

We made it! All the supported features have been added to the package.json file. WDIO even gives us a hint to try out our first test – npm run wdio:

Figure 2.13 – WebdriverIO gives us a hint on how to run the first test

Figure 2.13 – WebdriverIO gives us a hint on how to run the first test

This has set up WebdriverIO and created a sample test that can be executed with the following yarn command:

> yarn wdio

This results in the following output:

Figure 2.14 – Output of yard command

Tests can also be executed by running a command. Let’s take a look at the options for both Windows and Mac:

For Windows users:

> npx wdio run test/wdio.conf.ts

For Mac users:

> wdio run test/wdio.conf.ts

All the test examples can be found in this book’s GitHub repository: https://github.com/PacktPublishing/Enhanced-Test-Automation-with-WebdriverIO.

This runs the sample tests with basic output detail to the Terminal window from the spec Reporter window:

Figure 2.15 – Pass results shown in the spec report from the sample WDIO test

Figure 2.15 – Pass results shown in the spec report from the sample WDIO test

Now that we have set up our project, either by answering the initial configuration questions or cloning an existing project, we are ready to look at the configurations and file settings of our new WDIO automation project:

Figure 2.16 – All project files

Figure 2.16 – All project files

This will display all the files and folders in the project. There are quite a lot of them, so we will cover the important ones here. Open the README.md file first.

For any project, the README file is the best place to start. It gives us critical information about how the project is configured, its features, and, most importantly, how to quick-start a sample test.

Next, open the package.json file.

This is where much of the Node.js configuration occurs:

Figure 2.17 – All devDependancies in the wdio project

Figure 2.17 – All devDependancies in the wdio project

What is the yarn.lock file?

The yarn.lock file contains the full list of required project packages, including ones that support other packages in package.json. It is massive, but don’t worry – you will never have to change it. Yarn Package Manager handles all of this. Whew!

Let’s run Yarn Package Manager with the install command to get everything loaded and up to date:

> yarn install

This can be seen in the following screenshot:

Figure 2.18 – Building the project using Yarn Package Manager

Figure 2.18 – Building the project using Yarn Package Manager

Making our first commit

Now that we have our first test running, it is time to bring it all to our fortress of solitude – by committing it to our local repo and then to the GitHub repository.

Ignoring files in the Git repository

Before we make our first commit to the Git repo, we need to ignore some files. Once we have set up our WDIO project, VS Code might suggest that the node_modules folder should be included in the gitignore file:

Figure 2.19 – VS Code detects that the node_modules folder can be ignored

Figure 2.19 – VS Code detects that the node_modules folder can be ignored

We never want to commit this folder to our Git repo as it gets updated constantly by npm. Having npm create the folder contents on the fly with the most up-to-date versions is better:

Figure 2.20 – GitHub Desktop indicates over 12,000 files to be committed to the new repo

Figure 2.20 – GitHub Desktop indicates over 12,000 files to be committed to the new repo

This is far more files than we need.

To tell Git to ignore this project folder, simply create a .gitignore file in the root of the project and enter the node_modules folder name:

Figure 2.21 – A .gitignore file contains files and folders that should not be committed

Figure 2.21 – A .gitignore file contains files and folders that should not be committed

The same goes for our Allure report and results folders. These files will be rebuilt repeatedly after each test and will not need to be under version control. Once these tests are run from Jenkins, prior runs can be preserved there temporarily or permanently.

By simply adding and saving the .gitignore file, the list of files changes dramatically:

Figure 2.22 – The repo now only stores the files

Figure 2.22 – The repo now only stores the files

Once this .gitignore file is saved, we will see the changes reflected in GitHub Desktop with a manageable size of just eight files.

Tip

Never store passwords in the repo. A password should be provided by a secure data provider service such as Vault or AWS Secrets. If no such option exists, then a password file could be referenced in the folder above the project. Otherwise, storing such a credential file in the project requires adding it to the .gitignore file for security.

One of the first bugs I found in my career was related to passwords. Here, the user had the option to reset their password with a random string of characters. This page would occasionally crash. The reason was that the requirement had the password generated from all 128 ASCII characters. This included BELL, unprintable characters, as well as ones that were difficult to type on the keyboard. The real problem was that this set included angle brackets (< and >). The page would only crash when a new password was generated with one of those two characters, as they were interpreted as opening or closing HTML tags on the page.

There are tools that IT security uses to detect passwords in repos, but they often only check the main or master repos and ignore the later feature branches. This, too, is a security risk. Always clean up old branches, as this can be considered a security operations center (SOC) II compliance violation, even if the passwords have long since expired.

We can now add a summary description and optional details. Simply click Commit to main – all our new files will be committed to our local main branch:

Figure 2.23 – Adding a comment and details to a local commit

Figure 2.23 – Adding a comment and details to a local commit

However, this is just staged on our local Git repo. The final step is to click Push origin, which will push it up to GitHub for our team to pull down:

Figure 2.24 – GitHub Desktop shows that all changes have been committed and suggests pushing any new changes

Figure 2.24 – GitHub Desktop shows that all changes have been committed and suggests pushing any new changes

Congratulations! You have made your first commit to your Git repo. Your team members can now pull your changes to be sure all their tests are running smoothly.

But what if you need to add new functionality that will take a few days to complete?

Branching out

To be a part of an automation team, you may be asked to add new and complex functionality. If this takes a few days, we might consider feature branching. A new branch is created from main. Your changes will be committed to your branch, and changes from main will be brought in periodically:

Figure 2.25 – Adding a new branch in GitHub Desktop from main

Figure 2.25 – Adding a new branch in GitHub Desktop from main

When your changes are complete, a pull request will be made to pull your changes into the main branch, and the feature branch may be deleted.

For this book, the final state of the framework will be in a branch named after this chapter. The main branch will contain the final project.

Summary

In this chapter, we installed WebdriverIO with several options added to a set of configuration questions. We also showed how Yarn can keep dependencies current. Lastly, we showed how to make a commit to the repo from GitHub Desktop.

If you run into issues, check the Appendix at the end of this book. There, you will find a detailed list of common and arcane issues with causes, explanations, and resolutions. It also includes a node command cheatsheet for many of these initial processes.

In the next chapter, we will explore the files and connections in the wdio config file and look at different ways to debug our code.

Left arrow icon Right arrow icon
Download code icon Download Code

Key benefits

  • Improve your coding skills and empower your automation journey
  • Leverage self-healing objects and adaptive frameworks for cutting-edge WebdriverIO automation
  • Overcome script stability challenges and ensure robust, dependable test execution
  • Purchase of the print or Kindle book includes a free PDF eBook

Description

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.

Who is this book for?

Whether you are a novice software development engineer in test (SDET) joining your first WebdriverIO automation project building test cases in TypeScript, or a seasoned lead framework architect experienced in solutioning daily test automation challenges, this book is for you. This book will also help developers and framework architects with basic knowledge of JavaScript or TypeScript who are looking to gain expertise in functional frontend testing. A basic understanding of CSS and XPath will help you get the most out of this book.

What you will learn

  • Discover techniques to efficiently maintain and enhance your Page Object Model, saving time and effort
  • Gain insight into diagnosing and resolving script instability issues to ensure reliable test execution
  • Improve test resilience by building objects that adapt to changing element locators
  • Enhance your testing productivity by learning to write effective test cases with TypeScript
  • Explore strategies for comprehensive result analysis to enable data-driven decision-making
  • Develop frameworks that adapt to evolving user journeys, ensuring long-term test sustainability
Estimated delivery fee Deliver to United States

Economy delivery 10 - 13 business days

Free $6.95

Premium delivery 6 - 9 business days

$21.95
(Includes tracking information)

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Nov 30, 2023
Length: 328 pages
Edition : 1st
Language : English
ISBN-13 : 9781837630189
Category :
Languages :

What do you get with Print?

Product feature icon Instant access to your digital eBook copy whilst your Print order is Shipped
Product feature icon Paperback book shipped to your preferred address
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
Product feature icon AI Assistant (beta) to help accelerate your learning
OR
Modal Close icon
Payment Processing...
tick Completed

Shipping Address

Billing Address

Shipping Methods
Estimated delivery fee Deliver to United States

Economy delivery 10 - 13 business days

Free $6.95

Premium delivery 6 - 9 business days

$21.95
(Includes tracking information)

Product Details

Publication date : Nov 30, 2023
Length: 328 pages
Edition : 1st
Language : English
ISBN-13 : 9781837630189
Category :
Languages :

Packt Subscriptions

See our plans and pricing
Modal Close icon
$19.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
$199.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just $5 each
Feature tick icon Exclusive print discounts
$279.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just $5 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total $ 134.97
Software Testing Strategies
$41.99
Software Test Design
$46.99
Enhanced Test Automation with WebdriverIO
$45.99
Total $ 134.97 Stars icon
Banner background image

Table of Contents

18 Chapters
Chapter 1: The Utility Belt – Tools Every Superhero SDET Needs Chevron down icon Chevron up icon
Chapter 2: Fortress of Solitude – Configuring WebdriverIO Chevron down icon Chevron up icon
Chapter 3: Cybernetic Enhancements – WebdriverIO Config and Debug Tips Chevron down icon Chevron up icon
Chapter 4: Super Speed – Time-Travel Paradoxes and Broken Promises Chevron down icon Chevron up icon
Chapter 5: Alter Egos – The ClickAdv Wrapper Chevron down icon Chevron up icon
Chapter 6: The setValue Wrapper – Entering Text and Dynamic Data Replacement Chevron down icon Chevron up icon
Chapter 7: The Select Wrapper – Choosing Values in Lists and Comboboxes Chevron down icon Chevron up icon
Chapter 8: The Assert Wrapper – the Importance of Embedded Details Chevron down icon Chevron up icon
Chapter 9: The Ancient Spell Book – Building the Page Object Model Chevron down icon Chevron up icon
Chapter 10: Increased Flexibility – Writing Robust Selectors and Reducing Maintenance Chevron down icon Chevron up icon
Chapter 11: Echo Location – Skipping the Page Object Model Chevron down icon Chevron up icon
Chapter 12: Superhero Landing – Setting Up Flexible Navigation Options Chevron down icon Chevron up icon
Chapter 13: The Multiverses – Cross-Browser Testing and Cross-Environment Testing Chevron down icon Chevron up icon
Chapter 14: The Time-Traveler’s Dilemma – State-Driven End to End User Journeys Chevron down icon Chevron up icon
Chapter 15: The Sentient Cape – Running Tests in a CI/CD Pipeline with Jenkins and LambdaTest Chevron down icon Chevron up icon
Epilogue Chevron down icon Chevron up icon
Index Chevron down icon Chevron up icon
Other Books You May Enjoy Chevron down icon Chevron up icon

Customer reviews

Top Reviews
Rating distribution
Full star icon Full star icon Full star icon Full star icon Full star icon 5
(7 Ratings)
5 star 100%
4 star 0%
3 star 0%
2 star 0%
1 star 0%
Filter icon Filter
Top Reviews

Filter reviews by




Paul M. Grossman Dec 14, 2023
Full star icon Full star icon Full star icon Full star icon Full star icon 5
The media could not be loaded. I used this book to learn more about Typescript, Yarn and Node.It has 15 chapters that start from basic installation, through intermediate method wrappers to advanced test execution from Jenkins and LambdaTest. It includes extras in each chapter. The Click method utilizes a unique object count to determine when the page build is completed. The setValue() chapter shows how to implement a tag that is replaced by a future or past date in multiple formatting. The select() chapter addresses both lists and combo boxes.It covers other tools including SelectorsHub for writing robust element selectors. It features self-healing techniques. This can find elements when the class type or property has changed. This reduces maintenance time as scripts can try to find elements on the fly.It also has an advanced loop technique that can move through User Journeys even when the order of the pages changes without writing and maintaining hundreds of bespoke tests.Lastly it features small code snippets that can mask passwords, highlight elements and output colored text to the console. It also describes how to resize a browser so that the output can be seen at the same time as a test run even on a small single monitor. This helps debug analysis at run time.And there are some real life stories the authors share that are entertaining.
Amazon Verified review Amazon
Somesh Ojha Jan 29, 2024
Full star icon Full star icon Full star icon Full star icon Full star icon 5
I have just started reading this book and already convinced that this book isna must have for anyone who in capacity enthusiastic about Test Automation. Game changer is the code examples which makes it more interesting. Loving it so far.
Amazon Verified review Amazon
Sri Priya P Jan 31, 2024
Full star icon Full star icon Full star icon Full star icon Full star icon 5
The book is drafted with clear practical examples with source code. The overall final thoughts on the book is authors have articulated the book to help the SDETs and Automation Testers to enhance the Test Automation skills. Even the complex concepts are explained in an easy way with step by step approach.
Amazon Verified review Amazon
Matthew R. Heusser Jan 12, 2024
Full star icon Full star icon Full star icon Full star icon Full star icon 5
The media could not be loaded. It's rare that you find a book that -A) Covers a tool in depth,B) Said tool will last and not get out of date,C) Gives you advice on how to deal with complex installs,D) Tells you how to deal with the common problems you'll have using the tool (such as wait states and concurrency),E) Gives advice on how to integrate the work into your build pipeline.If you're anything like me, (D) is the slog, where you end up going down blind alleys and trying things you read on stackoverflow and crossing your fingers. This happens on install too, and, come to think of it, upgrade on just about every version of every dependency of the framework.I found this book well-written, easy to read, and actually addresses my concerns with a new framework. Of particular value is the Appendix "The ultimate guide to TypeScript error messages, causes, and solutions", to prevent google-and-stackoverflow driven development.Two weeks ago, when it came to books printed on paper that get into the specifics of a tool framework, I'm afraid I couldn't recommend any.Today I can recommend one.If you want to get started writing code to drive a browser in JavaScript, this is your book. Five stars. Buy it today.
Amazon Verified review Amazon
LarryG Dec 18, 2023
Full star icon Full star icon Full star icon Full star icon Full star icon 5
With its superhero theme, this book is for newbies and advance users alike, well written and fully recommended
Amazon Verified review Amazon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

What is the delivery time and cost of print book? Chevron down icon Chevron up icon

Shipping Details

USA:

'

Economy: Delivery to most addresses in the US within 10-15 business days

Premium: Trackable Delivery to most addresses in the US within 3-8 business days

UK:

Economy: Delivery to most addresses in the U.K. within 7-9 business days.
Shipments are not trackable

Premium: Trackable delivery to most addresses in the U.K. within 3-4 business days!
Add one extra business day for deliveries to Northern Ireland and Scottish Highlands and islands

EU:

Premium: Trackable delivery to most EU destinations within 4-9 business days.

Australia:

Economy: Can deliver to P. O. Boxes and private residences.
Trackable service with delivery to addresses in Australia only.
Delivery time ranges from 7-9 business days for VIC and 8-10 business days for Interstate metro
Delivery time is up to 15 business days for remote areas of WA, NT & QLD.

Premium: Delivery to addresses in Australia only
Trackable delivery to most P. O. Boxes and private residences in Australia within 4-5 days based on the distance to a destination following dispatch.

India:

Premium: Delivery to most Indian addresses within 5-6 business days

Rest of the World:

Premium: Countries in the American continent: Trackable delivery to most countries within 4-7 business days

Asia:

Premium: Delivery to most Asian addresses within 5-9 business days

Disclaimer:
All orders received before 5 PM U.K time would start printing from the next business day. So the estimated delivery times start from the next day as well. Orders received after 5 PM U.K time (in our internal systems) on a business day or anytime on the weekend will begin printing the second to next business day. For example, an order placed at 11 AM today will begin printing tomorrow, whereas an order placed at 9 PM tonight will begin printing the day after tomorrow.


Unfortunately, due to several restrictions, we are unable to ship to the following countries:

  1. Afghanistan
  2. American Samoa
  3. Belarus
  4. Brunei Darussalam
  5. Central African Republic
  6. The Democratic Republic of Congo
  7. Eritrea
  8. Guinea-bissau
  9. Iran
  10. Lebanon
  11. Libiya Arab Jamahriya
  12. Somalia
  13. Sudan
  14. Russian Federation
  15. Syrian Arab Republic
  16. Ukraine
  17. Venezuela
What is custom duty/charge? Chevron down icon Chevron up icon

Customs duty are charges levied on goods when they cross international borders. It is a tax that is imposed on imported goods. These duties are charged by special authorities and bodies created by local governments and are meant to protect local industries, economies, and businesses.

Do I have to pay customs charges for the print book order? Chevron down icon Chevron up icon

The orders shipped to the countries that are listed under EU27 will not bear custom charges. They are paid by Packt as part of the order.

List of EU27 countries: www.gov.uk/eu-eea:

A custom duty or localized taxes may be applicable on the shipment and would be charged by the recipient country outside of the EU27 which should be paid by the customer and these duties are not included in the shipping charges been charged on the order.

How do I know my custom duty charges? Chevron down icon Chevron up icon

The amount of duty payable varies greatly depending on the imported goods, the country of origin and several other factors like the total invoice amount or dimensions like weight, and other such criteria applicable in your country.

For example:

  • If you live in Mexico, and the declared value of your ordered items is over $ 50, for you to receive a package, you will have to pay additional import tax of 19% which will be $ 9.50 to the courier service.
  • Whereas if you live in Turkey, and the declared value of your ordered items is over € 22, for you to receive a package, you will have to pay additional import tax of 18% which will be € 3.96 to the courier service.
How can I cancel my order? Chevron down icon Chevron up icon

Cancellation Policy for Published Printed Books:

You can cancel any order within 1 hour of placing the order. Simply contact customercare@packt.com with your order details or payment transaction id. If your order has already started the shipment process, we will do our best to stop it. However, if it is already on the way to you then when you receive it, you can contact us at customercare@packt.com using the returns and refund process.

Please understand that Packt Publishing cannot provide refunds or cancel any order except for the cases described in our Return Policy (i.e. Packt Publishing agrees to replace your printed book because it arrives damaged or material defect in book), Packt Publishing will not accept returns.

What is your returns and refunds policy? Chevron down icon Chevron up icon

Return Policy:

We want you to be happy with your purchase from Packtpub.com. We will not hassle you with returning print books to us. If the print book you receive from us is incorrect, damaged, doesn't work or is unacceptably late, please contact Customer Relations Team on customercare@packt.com with the order number and issue details as explained below:

  1. If you ordered (eBook, Video or Print Book) incorrectly or accidentally, please contact Customer Relations Team on customercare@packt.com within one hour of placing the order and we will replace/refund you the item cost.
  2. Sadly, if your eBook or Video file is faulty or a fault occurs during the eBook or Video being made available to you, i.e. during download then you should contact Customer Relations Team within 14 days of purchase on customercare@packt.com who will be able to resolve this issue for you.
  3. You will have a choice of replacement or refund of the problem items.(damaged, defective or incorrect)
  4. Once Customer Care Team confirms that you will be refunded, you should receive the refund within 10 to 12 working days.
  5. If you are only requesting a refund of one book from a multiple order, then we will refund you the appropriate single item.
  6. Where the items were shipped under a free shipping offer, there will be no shipping costs to refund.

On the off chance your printed book arrives damaged, with book material defect, contact our Customer Relation Team on customercare@packt.com within 14 days of receipt of the book with appropriate evidence of damage and we will work with you to secure a replacement copy, if necessary. Please note that each printed book you order from us is individually made by Packt's professional book-printing partner which is on a print-on-demand basis.

What tax is charged? Chevron down icon Chevron up icon

Currently, no tax is charged on the purchase of any print book (subject to change based on the laws and regulations). A localized VAT fee is charged only to our European and UK customers on eBooks, Video and subscriptions that they buy. GST is charged to Indian customers for eBooks and video purchases.

What payment methods can I use? Chevron down icon Chevron up icon

You can pay with the following card types:

  1. Visa Debit
  2. Visa Credit
  3. MasterCard
  4. PayPal
What is the delivery time and cost of print books? Chevron down icon Chevron up icon

Shipping Details

USA:

'

Economy: Delivery to most addresses in the US within 10-15 business days

Premium: Trackable Delivery to most addresses in the US within 3-8 business days

UK:

Economy: Delivery to most addresses in the U.K. within 7-9 business days.
Shipments are not trackable

Premium: Trackable delivery to most addresses in the U.K. within 3-4 business days!
Add one extra business day for deliveries to Northern Ireland and Scottish Highlands and islands

EU:

Premium: Trackable delivery to most EU destinations within 4-9 business days.

Australia:

Economy: Can deliver to P. O. Boxes and private residences.
Trackable service with delivery to addresses in Australia only.
Delivery time ranges from 7-9 business days for VIC and 8-10 business days for Interstate metro
Delivery time is up to 15 business days for remote areas of WA, NT & QLD.

Premium: Delivery to addresses in Australia only
Trackable delivery to most P. O. Boxes and private residences in Australia within 4-5 days based on the distance to a destination following dispatch.

India:

Premium: Delivery to most Indian addresses within 5-6 business days

Rest of the World:

Premium: Countries in the American continent: Trackable delivery to most countries within 4-7 business days

Asia:

Premium: Delivery to most Asian addresses within 5-9 business days

Disclaimer:
All orders received before 5 PM U.K time would start printing from the next business day. So the estimated delivery times start from the next day as well. Orders received after 5 PM U.K time (in our internal systems) on a business day or anytime on the weekend will begin printing the second to next business day. For example, an order placed at 11 AM today will begin printing tomorrow, whereas an order placed at 9 PM tonight will begin printing the day after tomorrow.


Unfortunately, due to several restrictions, we are unable to ship to the following countries:

  1. Afghanistan
  2. American Samoa
  3. Belarus
  4. Brunei Darussalam
  5. Central African Republic
  6. The Democratic Republic of Congo
  7. Eritrea
  8. Guinea-bissau
  9. Iran
  10. Lebanon
  11. Libiya Arab Jamahriya
  12. Somalia
  13. Sudan
  14. Russian Federation
  15. Syrian Arab Republic
  16. Ukraine
  17. Venezuela