
In this lecture we will talk about the introduction of automation framework
In this lecture we will talk about types of automation framework
In this lecture we will talk about framework models
Summary of this section
In this lecture we will talk about the introduction of automation framework design
This lecture is an continuation of previous lecture
In this lecture we will talk about automation framework design prerequisite
In this lecture we will discuss framework design
In this lecture we will refactor framework design to industry standard
Start developing the automation framework with Selenium Java by building base components piece by piece, understanding each library before expanding the framework.
Develop a simple selenium login test in an existing IntelliJ project, showing how to add Maven dependencies for Selenium and JUnit and configure the Firefox Gecko driver.
Implement page object models with Selenium Java to reduce code duplication, organize elements into page classes, and use Page Factory for initialization and page navigation.
Learn how to simplify a page object model by using a base page abstract class to handle page initialization and enforce a standard approach in a Selenium Java framework.
Introducing the automation employee app built in ASP.NET MVC. Clone the GitHub repo, set up Visual Studio and SQL Server, and log in to view employees and web service benefits.
Centralize the WebDriver instance with a static base class and driver context, eliminating repeated constructor passing across login, home, and employee list pages.
Establish page navigation within the page object model to maintain relationships between login and home pages, preserving business logic as tests interact with the application.
Explore a base page navigation pattern using a current page property to switch between home and login pages, with casting to specific page types and a path toward generics.
Explore page navigation with generics in Java, standardizing page initialization via a generic getInstance method and page factory, enabling type-safe transitions between login and home pages.
Learn to support multiple browser types in Selenium Java using a browser type enum and a dedicated browser class. Initialize a driver for Chrome or Firefox and switch between browsers.
Standardize automation by initializing the web driver via the browser class, wiring the driver context, and navigating to the application URL to perform login.
Build and extend a selenium automation framework using a base page model, driver context, and browser class. Master page navigation and generics with industry-standard coding practices.
Develop reusable utilities and libraries for the Selenium Java automation framework, including Cucumber util, database util, Excel util, log util, and reporting util, to support data driven testing and reporting.
Develop an Excel utility to read, parse, and store sheet data in memory for data-driven automation testing using the Java XL API.
Enhance an Excel util library to drive data-driven tests from an Excel sheet, using a column dictionary and getcell to read username and password for login tests.
Develop a log utility for the automation framework, enabling console output via log4j2 and optional external log files, with a custom writer and Log Forge demos for CI auditing.
Learn how to set up and use log4j2 and log4j in a Selenium Java automation framework, including Maven dependencies, loggers with LogManager, and configuring log4j2.xml for controlled logging.
Demonstrates configuring a log4j2 rolling file appender with a log path property, pattern layout, startup triggering policy, and using various levels to capture framework events.
Develops a custom log utility for a Selenium Java automation framework, including random log file names, directory creation, and writing messages to log files.
In this lecture we will develop database utility for our framework, which will be used for Reporting as well as database testing of AUT.
Develop and deploy a reporting utility integrated with the Exit Automation Reporting System (URS) to provide end-user reporting for manual testers, automation engineers, developers, business analysts, and managers.
Execute a stored procedure to create a test cycle, insert a record into the iris_db reporting database, and validate the resulting test cycle ID and fields in the UI.
Review the log utility, Excel utility, database utility, and reporting utility, then preview their continuation in the next section.
Explore configuring the Selenium Java automation framework by moving hard coded values to a configuration file, enabling flexible control of browser type, app URL, test session details, and log paths.
Develop configuration by moving hard coded values to a Java properties file, using a settings class and config reader to populate app under test URL, log path, and driver type.
Develop a configuration component by reading configuration file properties into a settings class and exposing the reporting connection string, enabling connectivity to databases, and preparing for refactoring.
Refactor the selenium java framework by moving movable parts to configuration settings, like url, excel path, and log path, and use browser type from settings.
Learn how configurations and properties files power a Selenium Java automation framework, including creating custom configurations, storing data in local properties, and refactoring with settings.properties to read from global config.properties.
Develop the test layer of a Selenium Java automation framework using behavioral driven development with Gherkin. Use Cucumber and SpecFlow to create text scenarios bridging analysts and developers.
Refactor the code to be BDD ready by extracting hooks into a separate testinitialize class, integrating cucumber and framework initialize, and centralizing logging with static utilities.
Explore Cucumber-based BDD to replace Selenium tests, creating a login feature, feature files, and step definitions, then implement a page object model with data tables for login data.
Build and run a Selenium Java automation framework with cucumber scenarios, retrieving login data from a two-dimensional table, navigating pages, and validating the logged-in user text like hello admin.
Explore automating a user flow from login to employee creation using Cucumber scenarios, employee list and create employee pages, step definitions, and Cucumber util in a Selenium Java framework.
Develop a cucumber util that replaces index-based data table access with a custom data collection and a get cell value by column name, simplifying value retrieval from feature tables.
Develop a cucumber utility to convert a data table into a dictionary, store and retrieve column values by name for data-driven tests in Selenium Java.
Learn to customize Cucumber test runners, switch to TestNG, and implement an advanced custom runner with test.xml and before class attribute to run all features.
Master a Selenium automation framework by configuring a TestNG-driven test runner with TestNG.xml, enabling cucumber features to run via data providers from Maven or console.
Learn to customize a TestNG Cucumber runner to run a specific scenario inside a feature by filtering with Cucumber tag statements and building a custom data list.
Develop custom selenium controls by wrapping existing web element controls in Java, using IntelliJ, with a base control structure and concrete text box and button implementations.
Design and implement custom selenium controls by building a control base and text box interface that wrap web elements and expose enter text, get text, and support login workflows.
Implement controls in a Selenium Java framework, creating text box and button wrappers, solving null pointer issues with wrapped elements, and enabling actions like perform submit and get button text.
Develop custom controls to support the page object model in selenium by extending the page factory with a control factory, decorators, and handlers for text box, button, and checkbox.
Build a custom api library for a Selenium Java automation framework, including a control factory, control field decorator, and control handlers to initialize custom controls.
Implement implemented by processor and add implemented by annotation with runtime retention, applying it across control base, button base, and text box base, switching from page factory to control factory.
Refactor the init elements logic to implement a custom selenium control, replacing proxy construction with a driver context and proper casting to return an initialized page, ensuring backward compatibility.
Develop and integrate custom controls for a Selenium Java advanced POM, introducing a hyperlink base class and hyperlink interface to perform click, get URL text, and URL text contains checks.
Develop and implement custom Selenium controls, bypass the page object model where needed, and refactor the page factory into a control factory while ensuring backward compatibility with standard web elements.
Advance the Selenium Java automation framework by adding libraries, extending and refactoring the codebase, provisioning most requested features and code snippets, and enabling CI readiness.
In this lecture we will Extend Reporting with EARS by writing library on our ReportingUtil
Extend reporting with ears part 2 demonstrates calling the write test result method with feature name, scenario name, step name, and exception to record passed or failed via sp_insert_result.
Explore writing a generic reporting call for EARS during test initialization in cucumber with java, retrieving feature and scenario context, and recording test results via a centralized reporting utility.
Explore season two upgrades to Selenium, Cucumber, and IntelliJ, addressing waiting statements, cucumber data tables, and reporting, with Maven integration and API testing enhancements.
Upgrade the automation framework by updating IntelliJ, Selenium to 3.1.1, and Cucumber, then reorganize the project into a com.e.framework structure with test inside, enabling builds with JDK 1.8.
Add explicit wait with Selenium's WebDriverWait and expected conditions to replace Thread.sleep, enabling page load checks and element visibility, clickability, and text display within a 30 second timeout.
Learn to implement a Selenium wait library that waits for element visibility and text presence using expected conditions, driver context, and custom waits, replacing thread sleeps for faster, reliable tests.
Extend cucumber utilities to support multiple rows by adding get cell value with row index, using Java 9 arrow functions, and updating data collections to a list.
Upgrade Cucumber utilities to read multiple data rows from a table using row numbers, replacing legacy methods, and validate login with auto user two and related fields.
Add cucumber reporting with Maven command support by configuring json and html reports under target, enabling offline viewing and Jenkins integration.
Explore how Java ten introduces local variable type inference with the var keyword and upgrade the automation framework to Java ten, configuring IntelliJ and Maven for ten language level.
Discover how to set up selenium grid with hub and nodes to run parallel tests across browsers and operating systems, and make your framework thread-safe using non-static webdriver handling.
Modify the automation framework to run on selenium grid using remote webdriver, replacing static drivers with non-static variables to achieve thread-safe parallel execution.
Modify the automation framework to run tests in parallel on selenium grid using a local driver context with thread-local remote webdriver, replacing static variables.
Learn to run selenium tests in parallel with maven by configuring the test xml path in the pom surefire plugin and executing mvn clean verify across grid nodes.
Welcome to the Udemy's highest-rated course Automation framework with Selenium Java (Advanced) course. In this course, we will develop each and every component required for a perfect test automation framework with industry-standard coding practices.
Cucumber 6
Selenium 4 alpha 6
Cucumber TestNG
Extent Report
Custom Selenium controls
The course includes more than 100+ lectures with 12+ hours of content just on framework development instead of ancillary things
In this course, we will start our discussion with
Designing a perfect automation framework
Understanding to develop various components for automation framework like
Utilities
Base components
Configurations
Test runners
Understand developing generic Page Object Model practice
Understand developing generic Page Navigation concepts of POM
Understand and work with custom test runners for TestNG
Support of TestListeners
Extending test listeners for custom reporting with Extent report
Understand and writing custom controls for Selenium automation
Extending custom controls with Fluent way of writing code
Handing intelligent wait handling
Writing code using Cucumber with BDD fashion
Bringing all the best industry standard practices
Parallel Execution support with multi-thread handling and Selenium grid
Support of running test with Zalenium in Docker container
Support of Extent report with Parallel execution along with BDD cucumber format
Creating html reporter with single instance test support
Support of Parallel execution support
Support of latest version of Cucumber 6 and Selenium 4
This framework has so much of codes and resources, which helps to understand each and every section much clearer and easier.
What makes this course so special ?
The11+ hours curriculum of this course is designed not just by randomly picking some of the topics what I know.
Rather the course has evolved over a period of time (12+ years) by giving trainings to more than 300,000+ professional (both online and corporate training) and working on automation testing field (18+ years)
Hence the course is much refined version, meaning the course won't deviate from the topics of the course
Most of the sections in this course are not detailed anywhere as an online training so far