I am sure most of you guys have already heard about Cypress as it’s becoming one of the most popular E2E testing tools in the industry and more and more companies are using Cypress to do their end-to-end testing with it.

Now, if you are not familiar with how Cypress works and how to write tests in Cypress, then make sure to check out this Cypress Testing Tutorial Series for Beginners as it will cover everything you need to get started with

What is Cypress?

Cypress is a JavaScript All-in-one end-to-end testing framework. So what does that mean? Unlike many other frameworks…

In this Cypress testing tutorial, we will be doing the setup and installation on our local machine to get Cypress up and running.
One of the great things about Cypress is that using just one command you can get all the necessary packages installed to start writing your first test using Cypress. Let’s take a look at that –


To install Cypress locally, you need to run through the following steps –

  • Create a new npm project:
    mkdir your_project_name && cd your_project_name
    npm init -y to initialize your project
  • Install Cypress:
    npm install cypress --save-dev

This will download and unzip…

In this post, we will finalize everything by running our tests in Jenkins. We will cover Jenkins & GitHub Integration with the Selenium Python tests as well as generate a JUnit report at the end to see the results in Jenkins.


Make sure you have Jenkins installed in your local machine so that you can follow along with the rest of the steps. You can watch the Jenkins Installation video below that I made for the WebdriverIO tutorial series to see how to do that -

Push changes to GitHub

Once you have Jenkins installed, the next thing you will need to do…

In this post, we will go over how we can generate Dashboard and HTML reports with the SeleniumBase framework. SeleniumBase has in-built capabilities to generate reports without having to do any additional configuration. Let’s take a look at how we can do that:

Dashboard Report

Dashboard reports can be used to get a high-level overview of all the test runs. You can generate the reports by running the following command –

pytest --dashboard --rs --headless

In this post, we will take a look at how we can generate a screenshot of a test failure in Selenium Python so that we can quickly look at the screenshot and identify what was the state of our application at that moment.

We will also learn how to take screenshots whenever we want for a certain part of the screen and these screenshots can then be reviewed by your team for manual validation if needed.

Taking screenshot of failed tests

One of the many great features of using the SeleniumBase framework is that it comes with in-built screenshot generation capability when a test fails…

In this post, we will take a look at how to do exception handling using Selenium Python and the SeleniumBase framework. So, before we see how we can do that let’s talk about why you need to handle exceptions in the first place, usually if there’s an error within your test you would want the test to fail and that is true for 95% of the scenarios.

But, you will run into certain scenarios where you will encounter an error and you would want to handle that differently instead of just throwing the error and failing your test.

For example…

In this post, we will learn about the various wait commands available in Selenium Python using the SeleniumBase framework. Using wait commands when doing browser automation is inevitable. Therefore, it’s important to understand how to use wait commands the right way.

Using “Wait” the Wrong way

Now, this one, in particular, is a pet-peeve of mine. I have seen time and again in many codebases where hard-coded sleeps are used instead of implementing the right wait commands. I am sure you have seen this before as well or a variation of the code below –

In this post, we will learn what is Page Object Model and how to implement the Page Object Model with Selenium Python. Page Object pattern has been around for many years and is usually considered as one of the best practices to follow in the test automation industry.

What is Page Object Model (POM)?

POM is a design pattern that makes it easier for us to maintain our code and reduce code duplication. It allows you to abstract any page related information away from your actual tests.

So to put it simply, all the selectors that are within your tests, we can extract that away and…

WebdriverIO recently came out with v7, in this post, I will quickly go over some of the high-level changes that are part of this release. I will also cover how you can upgrade your WebdriverIO v6 project to v7.

WebdriverIO v7

TypeScript Rewrite — The biggest change they have made for this release is that they have rewritten all the WebdriverIO code in Typescript. Now if you are a Typescript lover, this is great news for you as you will get better type support with WebdriverIO now.

For everyone else that is still using JavaScript with WebdriverIO, it’s still good news as…

In this post, we will learn how we can use SeleniumBase Setup & Teardown methods to optimize our tests even further. If you are not familiar with setup & teardown concepts, essentially, it allows you to run certain steps before and after your actual test.

So, when you run the Setup method, it will trigger the steps BEFORE your test will run and the TearDown will run the steps AFTER your test has finished.

Setup Method

The setup method will run the steps before each of your tests. Let’s take a look at the sample code below –

Automation Bro

SDET Architect | YouTuber | Tech Blogger | Love to explore new tools and technologies. Check out my YouTube channel —

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store