Learning Hub
Free tutorials and courses on QA Automation, Testing Frameworks & Software Engineering
Playwright Tutorial
Introduction to Playwright
What is Playwright, why choose it over other tools, and how it compares to Selenium, Cypress, and WebDriverIO.
Installation & Setup
Set up Playwright in JavaScript, Java, and Python projects with proper project structure and configuration.
Writing Your First Test
Write, run, and understand your first Playwright test — navigating pages, clicking elements, and verifying results.
Locators & Selectors
Master Playwright's built-in locators — getByRole, getByText, getByTestId, CSS, XPath, and chaining strategies.
Actions & Interactions
Click, type, hover, drag-and-drop, select from dropdowns, check/uncheck, and handle keyboard/mouse events.
Assertions
Use Playwright's auto-retrying assertions — toBeVisible, toHaveText, toHaveURL, toHaveCount, and custom matchers.
Page Object Model (POM)
Structure your tests using the Page Object pattern for maintainability, reusability, and cleaner code.
Handling Waits & Timeouts
Understand auto-waiting, explicit waits, custom timeouts, waitForSelector, waitForResponse, and retry logic.
Working with Frames & Iframes
Navigate and interact with content inside frames, nested iframes, and cross-origin frame scenarios.
Alerts, Dialogs & Popups
Handle JavaScript alerts, confirmation dialogs, prompts, new tabs/windows, and permission popups.
File Upload & Download
Upload files via file inputs, drag-and-drop uploads, download files, and verify downloaded content.
API Testing with Playwright
Make API requests, validate responses, chain API calls with UI tests, and use API for test setup/teardown.
Test Configuration & Fixtures
Configure playwright.config, use built-in fixtures, create custom fixtures, and manage test environments.
Visual Testing & Screenshots
Capture screenshots, compare visual snapshots, full-page captures, element-level screenshots, and PDF generation.
Parallel Execution & Sharding
Run tests in parallel, configure workers, shard test suites across machines, and optimize execution time.
CI/CD Integration
Integrate Playwright with GitHub Actions, Jenkins, GitLab CI, Azure Pipelines, and Docker containers.
Custom Reporters
Use built-in reporters (HTML, JSON, JUnit), build custom reporters, and integrate with test management tools.
Network Interception & Mocking
Intercept HTTP requests, mock API responses, modify requests on the fly, and test error scenarios.
Browser Contexts & Authentication
Manage browser contexts, reuse authentication state, test multi-user scenarios, and handle storage state.
Debugging & Tracing
Use Playwright Inspector, Trace Viewer, verbose logging, VS Code integration, and debug flaky tests.
API Testing Tutorial
Introduction to API Testing
What API testing is, why it matters, REST vs SOAP, HTTP methods, status codes, and the testing pyramid.
Setup & Project Structure
Install dependencies, configure your project structure, and set up a clean API testing workspace.
Your First GET Request
Make your first API call, parse JSON responses, inspect headers, and validate status codes.
POST, PUT, PATCH & DELETE
Create, update, and delete resources using all CRUD HTTP methods with proper request bodies.
Query Parameters & Path Params
Use query strings for filtering, sorting, and pagination. Path parameters for resource identification.
Headers & Content Types
Set and validate request/response headers, work with JSON, XML, and form-encoded content types.
Response Validation & Assertions
Master response validation — check JSON body fields, arrays, nested objects, and data types.
Authentication & Authorization
Implement Bearer tokens, Basic auth, API keys, and OAuth2. Test protected endpoints and access control.
JSON Schema Validation
Validate API response structure using JSON Schema — fields, types, required properties, and contracts.
Request & Response Serialization
Serialize request bodies from objects and deserialize responses into typed models for clean tests.
Error Handling & Negative Testing
Test 400, 401, 403, 404, 500 responses. Validate error messages, timeouts, and boundary conditions.
Data-Driven Testing
Run tests with multiple data sets using parameterization, CSV files, and dynamic test generation.
API Chaining & Workflows
Chain multiple API calls — create, read, update, delete. Pass data between requests for E2E flows.
File Upload & Multipart Requests
Upload files via multipart/form-data, handle binary data, and work with mixed file + JSON payloads.
Test Framework Integration
Build a reusable API testing framework with base classes, config management, helpers, and reporting.
Environment & Configuration
Manage multiple environments (dev, staging, prod), handle secrets, use .env files, and switch configs.
Retry Logic & Resilience Testing
Implement retry mechanisms, handle rate limiting, exponential backoff, and transient failures.
Mocking & Service Virtualization
Mock API responses with WireMock, nock, and responses for isolated, fast, reliable testing.
Performance & Load Testing
Measure response times, run concurrent load tests, validate SLAs, and analyze percentile metrics.
CI/CD Integration & Reporting
Integrate API tests into GitHub Actions and Jenkins pipelines with Allure and HTML reports.
Selenium Tutorial
Introduction to Selenium
What Selenium is, its architecture, Selenium 4 features, and how it compares to other tools.
Setup — Maven, pip & Project Structure
Set up a Selenium 4 project with Maven (Java) and pip (Python). Configure dependencies and layout.
Writing Your First Test
Launch a browser, navigate, interact with elements, and verify results in your first test.
Locators & Finding Elements
Master all locator strategies — ID, CSS, XPath, linkText, and Selenium 4 relative locators.
Interactions — Click, Type & Select
Click buttons, type into inputs, select dropdowns, toggle checkboxes, and handle radio buttons.
Waits — Implicit, Explicit & Fluent
Handle dynamic loading with implicit waits, WebDriverWait with ExpectedConditions, and fluent waits.
Assertions & Verification
Verify page state — check text, attributes, visibility, URLs, element counts, and soft assertions.
Page Object Model (POM)
Structure tests using the POM design pattern — encapsulate pages, PageFactory, and fluent APIs.
Alerts, Frames & Multiple Windows
Handle JavaScript alerts, switch between iframes, manage multiple windows and tabs.
Actions API — Advanced Interactions
Drag-and-drop, hover, right-click, double-click, keyboard combos, and Selenium 4 scrollToElement.
File Upload & Download
Upload files via sendKeys, configure download directories, and verify downloaded content.
JavaScript Executor
Execute JavaScript in the browser — scroll, manipulate DOM, handle hidden elements, and extract data.
Screenshots & Visual Testing
Capture full-page and element screenshots, auto-screenshot on failure, and visual regression.
Chrome DevTools Protocol (CDP)
Selenium 4 CDP integration — network interception, geolocation, device emulation, console logs.
Base Test Class & Framework Design
Build a production-ready framework with driver factory, base classes, and config management.
Data-Driven Testing
Run tests with multiple data sets using TestNG DataProviders, pytest parametrize, and CSV/Excel.
Cross-Browser Testing
Run across Chrome, Firefox, Edge. Use Selenium Grid 4 with Docker for distributed execution.
Parallel Execution & Reporting
Run tests in parallel with TestNG/pytest-xdist. Generate Allure and HTML reports.
CI/CD Integration
Integrate into GitHub Actions, Jenkins, and GitLab CI. Run headless tests in Docker containers.
Best Practices & Design Patterns
Retry logic, test independence, flaky test handling, and advanced design patterns.
Cucumber BDD Tutorial
Introduction to BDD & Cucumber
Understand BDD, the Gherkin language, how Cucumber bridges business and engineering, and why BDD matters.
Setup & Project Structure
Configure Cucumber with Maven (Java) and pip/Behave (Python). Install dependencies and organize files.
Gherkin Syntax Deep Dive
Master Gherkin keywords — Feature, Scenario, Given/When/Then, And/But, Background, and best practices.
Writing Step Definitions
Map Gherkin steps to code — Cucumber expressions, regex, parameter capture, and step matching.
Scenario Outline & Examples
Run the same scenario with multiple data sets using Scenario Outline and Examples tables.
Data Tables
Pass structured data in Gherkin steps — lists, maps, and multi-column tables for complex inputs.
Test Runner & Execution
Configure the Cucumber runner, set CucumberOptions, run from CLI/IDE, and control execution.
Hooks — Before, After & Around
Set up and tear down with hooks — Before/After scenario, BeforeAll/AfterAll, and tagged hooks.
Tags & Filtering
Organize and selectively run scenarios — @smoke, @regression, @wip, tag expressions, and logic.
Page Object Model with Cucumber
Integrate POM with step definitions — thin steps, page objects, and dependency injection.
Sharing State & Dependency Injection
Share WebDriver across step classes with PicoContainer (Java) and Behave context (Python).
Cucumber + Selenium Integration
Build a complete BDD suite with Selenium — end-to-end browser automation using Gherkin scenarios.
Custom Parameter Types
Create custom types to convert Gherkin text into dates, enums, currencies, and domain objects.
Doc Strings & Multi-line Data
Use doc strings for JSON payloads, email bodies, long text, and multi-line content in steps.
Parallel Execution
Run scenarios in parallel — thread-safe drivers, TestNG DataProvider, and Behave parallel plugins.
Reporting — Allure, HTML & Extent
Generate rich reports with Allure, Cucumber HTML, and Extent. Attach screenshots and logs.
API Testing with Cucumber
Write BDD scenarios for REST APIs — Gherkin with RestAssured (Java) and Requests (Python).
Reusable Step Libraries
Build a library of generic, composable step definitions — navigation, forms, verification, and waits.
CI/CD Integration
Run Cucumber in GitHub Actions and Jenkins pipelines. Publish reports and handle headless browsers.
Best Practices & Anti-Patterns
Write maintainable BDD — avoid anti-patterns, follow Gherkin guidelines, and scale your suite.