The software life cycle has undergone drastic changes in the last decade.
So much to the extent that the role of the tester has completely changed! With the coming in of the PDO (Product Driven Organization) structure, there are no more testers and developers but only full-stack engineers.
The bottom line is testing still needs to be done.
Who does that? How does it fit in the 2-week agile sprint? Is manual testing even possible in such a short time?
The Answer
To start with, the scope for manual testing has been reduced. Agree to it or not. This is what happens in real-life scenarios. Since testing is still a task on our User Stories, it needs to be completed. Most teams take the help of automation tools.
Now here is the challenge, many small and even big companies are going to open-source automation tools which give them the flexibility to customize as per their need without any investment.
There are several tools available for you to choose from based on the kind of application you have like a web-based app or a mobile app a desktop software etc.
Selenium is a popular open-source framework for automating web applications. Jason Huggins created it originally as a tool called “JavaScriptTestRunner” to automate repetitive tasks in web testing. Later, he changed the name to Selenium after hearing a joke about mercury poisoning from selenium supplements.
Selenium has a thriving community of developers, testers, and quality assurance professionals who help it grow and improve. The open-source nature encourages frequent updates and improvements. As of my most recent knowledge update in September 2021, the most recent version was Selenium 4, which introduced a number of significant changes and features.
Support for multiple programming languages such as Java, Python, C#, and others is one of Selenium’s key features. Selenium WebDriver for browser automation, Selenium IDE for recording and playback, and Selenium Grid for parallel testing across multiple machines and browsers are among the tools available.
Several factors contribute to selenium’s popularity. First and foremost, it is open-source, which means it is freely available to developers and organizations of all sizes. Because it supports a wide range of programming languages and browsers, it is highly adaptable to a variety of testing environments. Furthermore, the active community keeps Selenium up to date with the latest web technologies and provides solid support and documentation.
Puppeteer is a well-known open-source Node.js library that offers a high-level API for controlling headless or full browsers via the DevTools Protocol. It was created by Google’s Chrome team, making it a dependable and powerful tool for browser automation and web scraping tasks.
Puppeteer has a vibrant and growing community of web developers and enthusiasts who actively contribute to its development and upkeep. Puppeteer has evolved since my last knowledge update in September 2021, and new versions have been released, each bringing improvements, bug fixes, and new features.
Some notable features of Puppeteer include the ability to capture screenshots and generate PDFs of web pages, simulate user interactions such as clicks and form submissions, and navigate through pages and frames. It also works with a variety of browsers, including Google Chrome and Chromium, and supports both headless and non-headless modes.
Puppeteers are highly regarded for a variety of reasons. For starters, it offers a simple and user-friendly API that simplifies complex browser automation tasks. Its compatibility with the Chrome DevTools Protocol enables fine-grained control over browser behavior. Puppeteer’s speed and efficiency make it a popular choice for web scraping, automated testing, and generating web page snapshots for a variety of purposes.
Several factors contribute to selenium’s popularity. First and foremost, it is open-source, which means it is freely available to developers and organizations of all sizes. Because it supports a wide range of programming languages and browsers, it is highly adaptable to a variety of testing environments. Furthermore, the active community keeps Selenium up to date with the latest web technologies and provides solid support and documentation.
Chai and Mocha are two distinct JavaScript testing frameworks that are frequently used in web development. They play complementary roles, with Chai serving as an assertion library and Mocha serving as a testing framework, and when combined they provide a robust testing solution. Let’s take a look at each one:
Their popularity stems from their ease of use, versatility, and widespread adoption within the JavaScript ecosystem. The expressive syntax of Chai and the flexible testing framework of Mocha combine to form a formidable combination for writing robust and readable tests, which is critical for ensuring the quality of web applications and JavaScript code. Because of their ease of use and extensive documentation, developers frequently prefer this pair for testing in JavaScript projects.
Install Python: Selenium primarily works with Python, so ensure you have Python installed. You can download it from the official Python website.
Install Selenium Package: Open your terminal or command prompt and use pip, Python’s package manager, to install Selenium:
pip install selenium
WebDriver Installation: Selenium requires a WebDriver for your chosen browser (e.g., Chrome, Firefox). Download the WebDriver executable and add its path to your system’s PATH variable.
Verify Installation: To verify your installation, write a simple Python script that imports Selenium and opens a web page using a WebDriver.
Node.js Installation: Puppeteer is a Node.js library, so you need Node.js installed. Download it from the official Node.js website.
Initialize a Node.js Project (Optional): If you’re working on a Node.js project, navigate to your project folder and run:
npm init -y
Install Puppeteer: In your project folder or a new one, install Puppeteer using npm (Node Package Manager):
npm install puppeteer
Verify Installation: Create a JavaScript or TypeScript script to launch a headless Chromium browser using Puppeteer.
Node.js Installation: Chai Mocha is also a Node.js library, so ensure you have Node.js installed as mentioned in the Puppeteer installation steps.
Initialize a Node.js Project (Optional): If you haven’t already, initialize a Node.js project as shown in the Puppeteer installation steps.
Install Chai and Mocha: Use npm to install both Chai and Mocha as development dependencies:
npm install chai mocha –save-dev
Create a Test Directory: Create a directory for your test files, typically named “test” or “tests,” and place your test scripts there.
Write Test Scripts: Write your test scripts using Chai’s assertions and Mocha’s testing framework.
Run Tests: Use the mocha command to run your tests. Ensure your test files have appropriate naming conventions (e.g., *-test.js) to be automatically detected by Mocha.
Criteria | Selenium | Puppeteer | Chai Mocha |
Purpose | Web application testing across | Headless browser automation for | JavaScript testing framework for |
various browsers and platforms. | modern web applications. | Node.js applications. | |
Programming | Supports multiple languages: Java, | Primarily used with JavaScript. | JavaScript for test assertions and |
Language Support | Python, C#, etc. | Mocha as the test framework. | |
Browser | Cross-browser testing across major | Chrome and Chromium-based | N/A (Not a browser automation tool) |
Compatibility | browsers (e.g., Chrome, Firefox, | browsers. | |
Edge, Safari). | |||
Headless Mode | Supported | Supported | N/A (not applicable) |
DOM Manipulation | Limited support for interacting with the DOM. | Provides extensive support for interacting with the DOM. | N/A (focused on test assertions) |
Ease of Use | Relatively complex setup and usage. | User-friendly API and clear | Straightforward API for defining |
documentation. | tests and assertions. | ||
Asynchronous | Yes, with explicit wait commands. | Native support for asynchronous | Yes, supports asynchronous code. |
Testing | operations and Promises. |
Let us see how the tools discussed here can help you with your testing tasks.
Testing Type | Selenium | Puppeteer | Chai Mocha |
Functional | Yes | Yes | Yes |
Regression | Yes | Yes | Yes |
Sanity | Yes | Yes | Yes |
Smoke | Yes | Yes | Yes |
Responsive | Yes | No | No |
Cross Browser | Yes | No | Yes |
GUI (Black Box) | Yes | Yes | Yes |
Integration | Yes | No | No |
Security | Yes | No | No |
Parallel | Yes | No | Yes |
Hope this data comparison is helpful for you to decide which one to pick up for your team and project. My suggestion, if you are dealing with only Chrome then go for Puppeteer.
But if you want your application to run across all platforms and you want it to be tested in multiple browsers and platforms Selenium would be the right choice.
With Selenium, the coding and tool expertise required is also limited, which means you can build up your team and competency faster.
So our personal choice is Selenium which offers more features and online support forums for guidance as well.
Take your pick.