
Start with puppeteer, a node library that provides a high level API to control Chrome or Chromium via the devtools protocol for automated testing, with headless by default.
Install puppeteer in Visual Studio Code by creating a project and running npm install to fetch puppeteer, its local Chromium, or use puppeteer-core to reduce size.
Write a super simple Puppeteer script that launches a browser, opens a page, navigates, and logs output with an immediately invoked function expression.
open a browser and page with puppeteer, type values, and slow down execution with slowMo; configure viewport and timeouts; create incognito context for a separate session with a new page.
Save the ws endpoint to preserve the browser session. Reconnect with puppeteer.connect, then open a new page and test offline mode.
Learn to automate keyboards and mouse in puppeteer, using the keyboard API for typing and pressing keys, and hovering to reveal menus. Viewport settings affect interactions and mouse movement.
Learn to identify and interact with UI elements on a page using different locators in Puppeteer, including CSS selectors and XPath, and handle promises to type username and password.
Learn to automate app navigation by locating and clicking all hyperlinks and menu items with Puppeteer, Playwright, and CodeceptJS, printing the resulting links and demonstrating navigation across pages.
Discover page-level and browser-level waiting mechanisms in Puppeteer, including waitForNavigation, waitForSelector, waitForRequest, waitForResponse, and network idle options, to synchronize tests with page loads.
Learn to use wait for methods in puppeteer for automation testing, including wait for navigation, wait for selector, and wait for response to manage page loads and images.
Explore how Puppeteer generates and uses page traces to measure page performance, capture trace files, and visualize timing data with the Chrome DevTools timeline viewer.
Explore generating PDFs of pages with Puppeteer, configuring page rendering, scale, width, height, and A4 format, saving the PDF to a path, and viewing the output in headed mode.
Learn how to use screen charting to capture screenshots at key moments in automated tests, including during exceptions, in CI/CD and headless mode, with simple naming and placement of screenshots.
Learn to enable request interception in Puppeteer to control network requests on the fly, abort or continue resources, and test pages with or without images.
Explore Puppeteer's core coverage feature and the Istanbul plugin to generate consumable coverage reports with NYC, including setup, execution, and producing the coverage folder.
Discover puppeteer extended with Apify SDK, a scalable web crawling and scraping library that enhances puppeteer for web automation, site map, and screenshotting.
Record and playback with puppetry, a desktop tool enabling recording of login, navigation, and interactions, then replay and export automated tests for puppeteer workflows.
Explore cross browser testing with puppeteer by running the same tests on Chrome and Firefox, install puppeteer Firefox, and extend code to support multiple browsers.
Learn the basics of Jest, a zero-configuration JavaScript testing framework with snapshot testing and parallel execution, used with Puppeteer and compatible with Babel, TypeScript, Node, and front-end frameworks.
Install jest in a VS Code project with npm, create test files like .test.js or .spec.js, and write basic describe and it blocks with expect assertions.
Master jest matchers to verify arrays and values, using to equal, greater than, less than, and related checks, and run tests synchronously or asynchronously with live VS Code plugin feedback.
Explore how to use just puppeteer with jest-puppeteer to run tests without manual browser setup, using presets, headless or visible mode, and slo mo for clearer playback.
Discover how to run Puppeteer tests without jest-puppeteer by integrating Puppeteer into your existing tests using before hooks and browser/page variables for seamless login flows.
CucumberJS enables behavior-driven development with puppeteer by writing tests in plain language using feature files, steps, hooks, and world contexts.
Create cucumber features and steps, install cucumber via npm, and map feature files to step definitions using the VS Code cucumber plugin for efficient BDD testing.
Explore sharing the page context across login step definitions, diagnose the page is not defined error, and apply S word to preserve context across files.
Use the word concept to share context across step definitions by building a world class with puppeteer, open browser, close browser, and set the word constructor via cucumber.
Learn to share context across CucumberJS World step definitions by reusing a single browser and page objects, and simplify stub definitions for robust automation tests.
Learn to implement cucumber hooks for setup and teardown, opening browser before each scenario and closing it after, with before hooks running in order and after hooks in reverse order.
Explore how data tables in CucumberJS provide access to table data with or without headers, parse rows with for each, and pass values to a user form in automation tests.
Implement a page object model in Puppeteer to reduce duplicate code and create home and login page objects by moving UI elements from step definitions into reusable cucumber pages.
Apply a page object model to login and user form entries. Learn exporting modules and integrating steps with cucumber for clearer, maintainable automation code.
Learn to install the cucumber reporter package, create a reporter.js with options for html output, and generate a report using the monitor plugin and UI dashboard.
Configure a cucumber html report by adding a js reporter under a cucumber folder, specifying bootstrap options, json and history paths, and generating the report after running tests.
Generate an html report for test export by executing the cucumber reporter script, view bootstrap visuals, and capture failure details with screenshots and verbose stacks.
Learn advanced coding practices for automation testing with puppeteer, focusing on modular libraries, class-based page objects, and using babel to transpile modern JavaScript for compatibility.
Learn how to create and work with JavaScript classes, export and import modules, and instantiate class objects in a testing context, with Babel configuration to run the code.
Install and configure the babel js compiler by adding babel cli, babel plugins for class properties, and polyfill; create a babelrc and register babel to run the code.
Create a browser library with puppeteer to perform browser operations, manage a shared browser and page context across the test framework, and export reusable open, navigate, and close methods.
Create a new Puppeteer helper library by building a library class with a page constructor, xpath support via $x, and a find element method, exported for browser integration.
Replace existing classes with libraries by importing browser and property libraries, configuring the browser library to share a page, and validating login functionality via puppeteer library find element methods.
Demonstrates creating a page object model with class properties and a custom Puppeteer helper library. Refactors login and home page interactions, updates selectors, and runs tests that pass.
Enhance the page object model by introducing class properties with a custom puppeteer helper, making element access clearer and more maintainable while replacing legacy browser library code.
learn to use XPath with puppeteer, identify elements via $x, resolve promises with async/await, avoid common asynchronous mistakes, and use XPath with puppeteer as shown.
Master file upload automation in Puppeteer by using file chooser, promises, and waitForFileChooser to click the file input and upload an image, with Chrome and Firefox compatibility.
Learn to debug test code in VS Code by configuring launch.json, setting breakpoints, and running specific files or folders with a node-based test runner.
Perform accessibility testing with puppeteer by generating a page snapshot and inspecting roles and names. Ensure DOM elements have accessible identifiers so assistive technologies can operate the UI.
Learn how to emulate devices in Puppeteer to test page rendering on real devices like iPhone X and iPad Pro, ensuring responsive behavior.
Demonstrates using Puppeteer v2.0 to interact with multi-select controls, selecting multiple values like India and Pakistan, and upgrading to the latest Puppeteer and Chromium for advanced features.
Explore CodeceptJS, a modern testing framework with a readable bdd-style syntax that unifies Puppeteer, Playwright, and other helpers. Learn installation, configuration, and switching helpers for the same API across tools.
Explore installing and getting started with CodeceptJS, configuring a Puppeteer helper, and running scenario-driven tests with driver-agnostic support, interactive debugging, and parallel, multi-session testing.
Learn to write CodeceptJS scenarios using the Puppeteer helper, including login flows for a demo site, form filling, waits, and assertions, with automatic tool switching and screenshot support.
Learn to generate a mocha awesome report in CodeceptJS by adding mocha awesome to package.json, running tests with the mocha awesome reporter, and viewing the generated report.
Learn behavior-driven development with CodeceptJS, writing BDD scenarios and step definitions, using cucumber-js style tables for data-driven login tests in puppeteer and playwright contexts.
Learn how CodeceptJS enables parallel test execution using run workers and run multiplier to split scenarios into groups and run tests across multiple browsers in parallel.
[Updated to new course name]
In this course Automation testing with Puppeteer, Playwright and CodeceptJS we will learn a lot more details, not just about Puppeteer tool, but also the tools and techniques which can make puppeteer, even more, better for testing larger application.
We will start our discussion from a basic topic to more advanced concepts of the Puppeteer, Playwright, and CodeceptJS tools. So, basically, this course is updated to supported three tools in parallel such as
Puppeteer
Playwright
CodeceptJS
The reason for adding Playwright and CodeceptJS in the original Puppeteer course being, Playwright is an incarnation of Puppeteer tool and CodeceptJS act as a framework for both Puppeteer and Playwright, hence having knowledge in all these tools are a good combination for automating an application.
Puppeteer
Introduction and Basics of Puppeteer
Distinguished features of Puppeteer
Extending Puppeteer
Jest with Puppeteer
Cucumber with Puppeteer
Puppeteer with Firefox
Cucumber HTML Reporting with Puppeteer
Page Object Model with Puppeteer
Migrating project from ES5 to ES6
Advanced concepts of Puppeteer
Playwright
Introduction and what is Playwright
Installation
Writing super simple code and understand how Playwright is similar to Puppeteer
Cross-browser testing
CodeceptJS support
Playwright CLI
Playwright Test Runner
Folio - Custom Test runner framework
CodeceptJS
Understanding the framework
How to make use of CodeceptJS helpers
CodeceptJS helper for Puppeteer
CodeceptJS syntax
Reporting
The course covers topics that are not covered elsewhere on the internet and that makes the course more distinguished by itself.
As that said, at the end of this course, the source code repository in the course will act as a clear guideline of how to extend the course based on your requirements at your work.