
Explore how docker creates containers that package java, maven, browsers, and test data for running Selenium-based test automation across machines, providing lightweight virtual machines and cross-platform consistency.
Verify Docker installation by confirming Docker daemon is running, check service status when needed, and use terminal to query Docker and Docker Compose versions, ensuring they are up to date.
Master Docker terminologies, including Dockerfile, build, image, tag, container, and Docker Hub. Understand how Docker Compose and modular images enable running interconnected containers for Selenium test environments.
Demonstrates using docker run and docker pull to fetch and start hello world image, prune unused resources, and inspect images and containers with docker images and docker ps -a.
Learn the Docker image name format, including repository host, owner, image name, and tag, and how defaults like library and latest apply when fields are omitted.
Explore Docker run options, prune images, and interact with Ubuntu in a hands-on demo, highlighting containers, images, and entry points.
Map host ports to container ports to expose applications across a network. Learn how ip addresses and port mapping identify machines and specific services inside docker containers.
Create and connect docker containers on a shared network, run Nginx and Alpine, test inter-container access with ping, and verify the Nginx welcome page is served.
Create your own docker image by starting from a base image, writing a dockerfile with from, add, run, env, workdir, expose, and entrypoint to build a containerized app.
Pass environment variables to a Docker container to drive a Java program that reads an argument, parses it to an integer, and prints squares up to that number.
Learn how to view Docker container output with the docker logs command, even after a container exits, by using the container id or name.
Explore how docker packages apps into isolated containers with runtime environments, using images, docker hub, and core commands to build, run, and share containerized applications.
Master docker compose by defining a yaml template to automate containers, networks, port mappings, and volume mappings, simplifying multi-container setups and environment variables.
Create a Docker Compose file for the square finder app using a template YAML, define a Squares service with the image and environment variables, then run Docker Compose up.
Prune dead containers and unused networks with docker system prune -f, then bring up with docker compose up and tear down with docker compose down for a fresh start.
Watch a hands-on Docker Compose demo that sets up an Nginx and an Alpine container in a shared network, pinging Nginx by service name and validating startup order with depends_on.
Learn how depends_on in docker compose only sets the container creation order, not startup readiness, since docker cannot see inside containers or wait for fast nginx vs slow databases.
Run docker compose in detached mode, monitor containers with docker ps and docker compose ps, view logs with docker compose logs, and stop with docker compose down.
Remove port mapping in the Alpine Nginx ping demo to show that pinging Nginx works without port mapping, correcting a copy-paste mistake.
Explore how docker compose specification versions work from v1 to v3.8, learn YAML file syntax, and understand future deprecations like depends_on.
Learn docker compose volume mapping with an alpine demo, using wget to fetch a page inside a container and expose the file on the host.
Configure docker compose for volume mapping and set a working directory to bind host folders to container paths. Verify with wget and access the nginx index.html over http.
Learn how containers communicate on their own network without port mapping; a container accesses nginx on port 80 via a service name, while port mapping exposes services outside.
Learn to parameterize docker compose by using environment variables, override values at runtime, and apply default values with colon minus syntax, using NUM to pass data via the command line.
Learn to override docker image versions using a dot env file in docker compose, substituting V1, V2, and V3 for an nginx app through environment variables and port mapping.
Switch between multiple environment files in docker compose, using dev and qa env files to set v3 or v2 configurations and corresponding host ports for test runs.
Learn how to organize docker compose by splitting services into multiple yaml files, use the -f flag to bring them up or down, and understand shared networks for inter-container communication.
Docker Compose uses a YAML file to declare containers, networks, and run options; up creates, down removes, and you can manage env vars with .env files or multiple -f inputs.
Build a data-driven test automation framework with Java and Selenium, using Maven and Jenkins to dockerize workflow tests for a flight reservation app and an ecommerce admin portal.
Learn how selenium drives browser automation by using webdriver to locate elements with id, name, or css selectors, manage browser drivers, and ensure version compatibility for reliable system integration tests.
Set up a Maven Java project in IntelliJ workspace, configure Java 17, add selenium, logback, WebDriverManager, Jackson, and a testing framework, then load maven changes and run maven clean compile.
Explore the flight reservation application by building and validating end-to-end test scripts in a page object model, adjusting passenger counts, and verifying price changes across registration, search, and confirmation pages.
Build a registration confirmation page using the page object model, identify the element by id, click to proceed, and initialize elements with page factory and an abstract page.
Build a reusable abstract page as the base for all pages, sharing a protected driver and 30s wait, initializing elements, and enforce isAt checks to confirm each page loads.
Create a flights search page object that loads the page, waits for the passenger dropdown, uses a select wrapper to choose passengers, and clicks search flights.
Demonstrate a page object pattern for the flights selection page by selecting random departure and arrival options by name and confirming flights after a load wait.
Create a page object for the flights confirmation page, extract and validate the price against the selected passenger, using a robust CSS selector and element traversal to ensure unique identification.
Build a flight confirmation page object in a Java-based automation test, modeling flight confirmation and total price, with a get price method and logging of the confirmation and price.
Develop and run a Java Selenium test suite for flight reservations, including registration, flight search, two-passenger selection, and reservation confirmation with price validation, using page objects.
Execute a flight reservation test, verify browser behavior and price calculations, troubleshoot Chrome driver compatibility by updating or trying older drivers, and document a price discrepancy when increasing passengers.
Demonstrate building a TestNG suite with top of the suite file configuration, parameterized tests for different passenger counts, price verification, and reading settings from a property file.
Learn where to keep your test suite, preferring source test resources for better organization, while noting the test can run fine from the project root if needed.
Navigate the vendor portal with admin-style dashboards displaying earnings and inventory, log in as Sam, Mike, or John to view order history, search by keyword or location, and log out.
Create a login page object for the vendor portal in a java automation framework, extending the abstract page and exposing username, password, login button, and a login method.
Develop the dashboard page object to expose methods for monthly and annual earnings, profit margin, and available inventory; implement search history with parsed results count and logout flow with logging.
Create a vendor portal test class with login and dashboard checks, verify monthly earning of 40,000 for Sam, search order history for eight results, then logout using a webdriver.
Learn to implement stability in vendor portal tests by waiting for logout elements, asserting earnings and inventory, and organizing page objects for login and dashboard workflows.
Compare traditional Java classes with Java 17 records, where a single declaration replaces boilerplate code and provides auto-generated accessors with no setters, yielding immutable objects.
Create a json util to convert an input stream to a Java object using Jackson's ObjectMapper, with try-with-resources and logging, and demonstrate reading test data from JSON files.
Master reading json into Java objects with Jackson, ensure json field names match class fields, use JsonProperty to map mismatches, and handle no such file and unrecognized fields.
Refactor the vendor portal test suite to read test data from a file using a test data path, inject parameters, and replace hard-coded values with json util driven data.
Drive flight reservation test data with Json files and a generic Java model, reading Json via Jackson to instantiate the correct flight reservation data structure.
Summarize the completed test automation framework featuring two workflows, page objects, test classes, test suites, and json-based parameterization. Demonstrate by running the flight reservation xml to validate the name.
Discover disposable selenium grid infrastructure with docker, enabling cross-browser and parallel testing via a hub and multiple nodes, with Chrome, Firefox, and Edge versions and ports 4444, 4442, and 4443.
Spin up a selenium grid with docker compose, access the grid at localhost:4444, and run up to two parallel tests using Chrome and Firefox containers.
Troubleshoot grid not working by ensuring the Docker image provided is used, allocate sufficient memory to Docker (8 GB or more), and keep dependencies updated via the GitHub project.
Run tests in parallel via the suite XML, enabling thread counts and parallel execution in the test engine. Explore local browser setups with chrome and firefox and selenium grid constraints.
Scale the selenium grid by deploying multiple chrome containers with docker compose deploy replicas, enabling parallel test execution coordinated by the hub.
Increase Selenium Grid concurrency by overriding the maximum sessions per container with an environment variable, apply it to Chrome and Firefox, and run tests in parallel.
Scale containers by combining max concurrency with the scale option to run multiple browser containers, such as two Firefox and zero Chrome containers, with each container supporting four concurrent sessions.
Learn to observe dockerized selenium grid live execution by inserting deliberate delays, enabling VNC access, and managing parallel sessions for sequential testing.
Explore a dockerized grid with video recording options, discuss limitations, and switch to cheap logging and an HTML report with screenshots for effective debugging.
Learn how to generate and interpret test reports with the surefire plugin, Maven, and TestNG, create html and emailable reports, and attach screenshots for failing tests.
Attach a screenshot on test failure in TestNG by implementing a test listener that retrieves the thread's WebDriver from the test context and embeds a base64 image in the report.
Spin up a disposable dockerized Selenium grid for parallel and cross-browser testing, defined in YAML with runtime overrides, plus screenshots and logging for debugging in cloud-scale tests.
Dockerize test automation scripts to run in a container on machines with a dockerized selenium grid, avoiding access issues and browser driver management. Keep all project files inside project workspace.
Package your application with maven clean package, skip tests, and explore the target docker resources to see how jars include selenium docker test jars and dependencies for Java automation.
Learn how to move files from the project root or source resources into the package directory with the Maven resources plugin, or use a simple copy script for building.
Discover how Java's resource loader locates the config directory and reads test data by first checking the classpath, then the user directory.
Demonstrates configuring and running selenium tests in a Dockerized grid, including enabling selenium grid and passing system properties with -D to switch the browser between Chrome and Firefox.
Choose a Java base image from Docker Hub, such as Eclipse Temurin or BellSoft Liberica Alpine. Pull the image, run a container, and verify the Java version.
Create a docker file to build a test automation image, using an alpine-based Java 17 base, a dedicated work directory, and added target resources for execution.
Demonstrate running a Selenium grid inside a Docker container with volume-mapped test reports and resolve localhost port 4444 networking issues by using the host IP address.
Locate your machine’s ip address with ifconfig or ipconfig, replace localhost with that ip for selenium grid access, and validate the test runs in docker.
Run tests inside a Docker Selenium image by passing environment variables like browser, hub host, and test suite to verify the grid and test execution.
Understand why docker images can appear with a none name and tag when reusing the same repository name and tag, and how to fix it with docker system prune.
Create and run a docker compose driven selenium grid with a vendor portal test container, hub-based communication, environment variables, and volume mapping for reports.
Verify the selenium grid status by checking hub readiness and node registration before launching tests. Wait for chrome and firefox nodes to register to avoid connection refused errors.
Install curl and jq in the Docker image using apk add, verify their availability, and prepare a script to check hub status before running tests.
Run tests with Docker Compose after verifying grid status, restart services, and confirm tests pass with a zero exit code. Follow platform notes and output checks for a clean run.
Execute two test suites in parallel using Docker Compose, running vendor portal and flight reservation in separate containers, while archiving results in distinct output directories to prevent overwrites.
Discover how to pass test data to a container via volume mapping, including mapping single files and overriding entry points for dynamic Selenium Docker test runs.
Explain why linux containers run tests instead of Windows containers, highlighting java's platform neutrality, linux's lightweight images, and routing test actions through a Selenium hub to simulate user behavior.
Create Docker images by packaging jars for page objects and tests. Run tests in containers with parallel suites and threads, using a disposable external grid, and map volumes for reports.
Explore Jenkins master slave architecture, where the master coordinates slaves or agents over ports 8080 and 50,000, with Java on all nodes and optional tools like Maven or Docker.
Set up a Jenkins agent by creating a node, configuring the remote root, and launching the agent jar to connect the master and slave.
Learn how to abort a stuck Jenkins job by editing a job, simulating a long-running task with sleep, and using the abort action to terminate the execution.
Explore Jenkins pipeline and the Jenkinsfile as infrastructure as code, replacing manual job setup with a domain-specific language and stages that cover maven and docker commands.
Explore how to define global and stage-specific environment variables in a Jenkins pipeline. Override defaults for a stage to customize execution, print variable values, and compare global versus stage-scoped behavior.
Understand how single quote and double quote behave in Jenkins pipeline scripts, choosing literal strings versus substituted values, and when to use single quotes to avoid substituting environment variable values.
Learn to execute a Jenkins pipeline with a Docker run container step, including environment variables, image selection, and platform-specific commands, plus cleanup with Docker system prune.
Learn how Jenkins creates and uses the workspace directory inside the node for each job, including Docker test pipelines and temporary files, with future builds such as Maven clean package.
Archive build artifacts in Jenkins to view outputs from remote nodes on the master via the browser, using a post-build artifact step with a relative path like index.html.
Create and push a GitHub repository for a Java project, configure a .gitignore to exclude target and IDE files, run git init, add, commit, and push.
Add a Jenkins file to the project to automate building a Java jar with Maven, building a Docker image, and pushing it to Docker Hub from a GitHub workflow.
The node clones the repository for the Selenium Docker Builder into a new directory, builds the jar with mvn clean package, and pushes the Docker image to Docker Hub.
Add docker hub credentials in Jenkins, configure an environment block with the credentials helper, log in with docker login, push the image, then log out in post build action.
Learn to build and push Docker images in Jenkins using a Docker container, with stage-level Maven, volume mappings, and Groovy scripts for pipeline control.
Learn how webhooks, poll scm, and cron triggers automate Jenkins builds from GitHub, linking code updates to automatic docker image builds, while noting practical network and scheduling considerations.
Demonstrate running automated tests with a Docker-based setup by deploying a public Docker image, using Docker Compose and Jenkins, and mastering separation of concerns between builder and runner.
Create a new GitHub repository named selenium docker runner and configure a docker compose driven selenium grid to run vendor portal and flight reservation tests in parallel via Jenkins.
Create a Jenkins pipeline with a Selenium docker runner to run tests, but docker compose up leaves hub and browser containers running, so learn how to stop the test automatically.
Fix a never-ending Jenkins job by restructuring docker compose into a selenium grid and test suites setup, starting grid in background and running tests in foreground, then tearing down.
Push four files to the Selenium Docker Runner, verify the Jenkins node connection, and run the grid with flight reservation and vendor portal containers until the job completes.
Learn to address content security policy issues in Jenkins by configuring Java options in a docker compose setup, restart Jenkins, and validate CSP behavior with fresh browser sessions.
Parameterize Jenkins jobs to run tests across Chrome or Firefox by passing browser as a parameter; configure Jenkinsfile and grid scaling to run the selected browser for all test suites.
Run Jenkins builds with parameters by updating the Jenkinsfile, refreshing the job, and selecting browser and thread count to run tests on Chrome or Firefox.
Demonstrates validating failure handling by updating test data, running failing scenarios, and attaching screenshots when results diverge from expectations, with Docker, Jenkins, and Selenium Docker workflow.
Explore a practical hack to mark a Jenkins stage as failed when tests fail. Detect test failed XML files in the workspace with a Groovy script and attach artifacts.
Execute end-to-end testing with Selenium Docker, GitHub, and Jenkins, updating test data, releasing new images, and validating vendor portal tests to produce successful artifacts.
This lecture demonstrates automating tests in a ci/cd pipeline with Jenkins, showing how a developer deployment triggers a selenium test via an invoked job and a selenium docker runner.
Scale test suites by parameterizing a single test suite service in docker compose to run vendor portal and flight reservation suites in parallel, triggered by environment variables or Jenkins parameters.
Automate end-to-end test pipelines with Jenkins, from GitHub pull to Docker image push. Parameterize tests, run on demand or schedule, and manage the grid via a single yaml file.
Discover how to run dockerized tests in the AWS cloud with Jenkins, renting and terminating machines on demand. Learn cost, security, and cloud best practices for running tests.
Understand AWS free tier realities and 12 months free, as only six eligible EC2 instance types qualify for 750 hours per month, affecting Jenkins-created machines and project sizing.
Explore core cloud terms like region and availability zone, virtual private cloud, subnet, AMI, security groups, and IAM to understand how AWS resources are organized for global, secure deployments.
Explore AWS instance purchase options, including dedicated hardware for special licenses, reserved instances for long-term use, on-demand pay-as-you-go, and cheap spot instances, with guidance on production use and Jenkins nodes.
Create an AWS account while noting that a credit card is required, even if you won’t use services; watch the demonstration and follow along carefully.
Learn to provision Jenkins nodes in the cloud by creating an ami with git, java, docker, and docker compose, open port 22, and configure key pairs for master–node connections.
Install and configure the docker engine on Ubuntu, install docker compose and Java, and enable non-sudo docker access while verifying with hello world to prepare a Jenkins slave.
Create an ami from a configured ec2 instance, name it Jenkins node ami, and use it as the baseline to launch more instances, then terminate the original to stop charges.
Set up Jenkins to talk to AWS by creating a dedicated IAM user with limited permissions for EC2 fleet, attach a policy, and generate secure access keys.
Install the EC2 fleet plugin in Jenkins via manage Jenkins, then restart Jenkins to apply changes and bring Jenkins back up with docker compose up.
Learn how to configure Jenkins cloud for an Amazon EC2 spot fleet, including credentials, region, SSH credentials, host key verification strategy, and auto-scaling with min zero and max three machines.
Revoke Jenkins credentials and delete the Jenkins user to prevent access; terminate all EC2 instances and delete resources such as security groups, key pairs, snapshots, launch templates, and spot requests.
Compare AMI and Docker images, showing how AMIs provision actual cloud machines in AWS with specific configurations while Docker images package applications for lightweight, portable deployment.
This course requires you to download Docker Desktop from official docker site. If you are a Udemy Business user, please check with your employer before downloading software.
-
Discover the power of modern test automation with a comprehensive course that combines Selenium WebDriver, Java, Docker, Jenkins, and AWS. From foundational Docker knowledge to orchestrating scalable Selenium Grids in the cloud, this course equips you with the skills to supercharge your testing infrastructure.
Prerequisites:
Knowledge on Java, Selenium, Maven, Git, TestNG.
Key Benefits:
Mastery from Scratch: Start with Docker and CI/CD pipelines, even with zero prior knowledge.
Efficient Testing: Learn to run Selenium tests within Docker containers, eliminating infrastructure management hassles.
On-Demand Selenium Grid: Bring up Selenium Grid infrastructure as needed and run multiple test suites in parallel.
Cloud Testing: Execute tests on AWS saving valuable time and resources.
What You'll Learn:
Docker fundamentals and its pivotal role in Test Automation.
Leveraging Docker Compose for streamlined container orchestration.
Utilizing Docker Hub for image sharing and scaling containers on demand.
Setting up Selenium Grid effortlessly with Docker.
Custom image creation and automation with Jenkins pipelines.
Extending scalability with Jenkins for parallel test execution.
Writing Jenkins files using Groovy DSL for seamless automation.
Executing automated tests on AWS with spot instances and AMI creation.
Archiving results via Jenkins in the cloud.
Developing a Selenium framework optimized for Docker.
Achieving parallel execution and multi-browser support through Docker.
Effectively archiving results via Jenkins in the cloud.