
- About me (Instructor)
- The Testing Talks Hub Difference
- Automation Framework Technology Stack
- Key Online Resources to bookmark
- Let’s connect
We look at why automation framework architecture matters and the power of the automation framework you will build as part of this course.
- Why automation framework architecture matters
- The importance of building a 'Proof of Concept' automation framework
- How to leverage your wider team to help build a robust automation framework
- Key object-orientated design principles to use across your frameworks
- How this architectural approach can support multiple automation frameworks
- Finally, Some key observations (Successes and Challenges)
Install and configure Node.js, a cross-platform open source backend JavaScript runtime, and set up macOS and Windows system paths to enable node commands.
Set up your development environment for this course using intel j ultimate or its free community edition, and install cucumber juice and cucumber plus plugins to accelerate your automation framework.
- Downloading and Installing VSCODE
- Installing the Cucumber (Gherkin) Full Support Plugin
- Adding a VSCODE settings.json file
- Adding the the ability to step into cucumber scenario steps via the settings.json
- Stepping into our cucumber feature step definition
- SSH Keys & Cloning your first GitHub repository
Set up your first automation framework inside a React app by creating an e2e folder, cloning a repository, installing dependencies with yarn, and configuring TypeScript and tsconfig for test execution.
Install selenium-webdriver, Chrome driver, cucumber, and ts-node; scaffold e2e with features, step definitions, and hooks; implement a before hook to launch a Chrome browser driver and maximize the window.
Set up a cucumber selenium web driver automation framework in TypeScript, including quitting drivers, creating a home page feature, and writing navigation and verification step definitions.
Set up a cucumber selenium TypeScript test framework, import chai's expect and cucumber, locate the contacts element by data-id, and verify its text with getAttribute while configuring cucumber in package.json.
Learn to download and install node, add it to your system path, clone a repository, manage packages with yarn, and run a first automation test with cucumber, selenium, and typescript.
Run your automation tests in IntelliJ with an npm configuration, using cucumber plugins to align with the pipeline. Execute via terminal or Intelligent's run window using the AMPM configuration.
Learn how cucumber tags label scenarios and drive test execution with @dev, @smoke, and @regression, and configure --tags in the e2e package.json, using hooks for pre- and post-test code.
Master passing parameters in cucumber steps by updating regex to capture quoted strings. Apply techniques to map inputs to actions and assertions in a TypeScript Selenium WebDriver automation framework.
Explore Cucumber with Selenium WebDriver and TypeScript to build flexible step definitions and element locators using data-id attributes and Chrome DevTools.
Create and validate element locators in a Cucumber, Selenium, and TypeScript automation framework by defining data-id elements, retrieving them with a WebDriver, and asserting display in tests.
Explain how hooks govern before and after test execution, and show building a Chrome driver with browser options to enable headless mode for future Firefox and Safari support.
Learn to run tests with npm plugin, tag-based device market regression, and cucumber parameter configuration. Parse parameters with regex, add element locators, and leverage selenium builder for better browser capabilities.
Implement after hook screenshot capture in a cucumber TypeScript Selenium framework, using cucumber world for global config and fs to write failure images to reports/screenshots for debugging.
Explore how Cucumber World provides an isolated per-scenario context to store configuration and browser state, enabling parallel tests across Chrome, Safari, and Firefox in a TypeScript Selenium framework.
Set up a browser builder that uses an environment variable to pick Chrome, Firefox, or Safari, configures headless or headed modes, and validates the selection for cucumber tests.
Configure Firefox options and accept insecure certs, use a browser switch for Chrome and Firefox, and implement an env var helper for cucumber world setup.
Introduces cucumber world with separate context scenarios, part 4, to validate the ui automation browser against Chrome, Firefox, or Safari, and refactor hooks to share the driver via scenario world.
Learn to use Cucumber world for separate driver contexts across all step definitions, exporting the world, and configuring Gecko driver and environment variables to run Firefox tests.
Learn to configure dynamic cucumber.js test runs across devices and browsers with a custom babel and TypeScript setup for ci-ready e2e automation, including dev, smoke, and regression profiles.
Update npm configuration in Intellij to run cucumber tests using profiles and environment variables, switch to cucumber with dash profile, and streamline environment variables management for test execution.
Load environment variables with dot end from a file and override them in the terminal. Create common config for cucumber tests to enable ci-ready automation with browser and screenshot settings.
Implement Cucumber reporter integration with a dynamic test runner in part 1, store screenshots in reports, configure bootstrap theme, JSON and HTML reports, and add pre and post Cucumber scripts.
Set up a cucumber test runner to generate html reports and surface failures when post scripts fail. Leverage a tag-driven workflow and bash scripts to run cucumber tests in CGI.
Windows users only:
- Why the run_tests.sh returns a COMMON_CONFIG_FILE command error
- Creating our run_tests.bat file to run our automation suite on windows
- Updating our pacakge.json to remove COMMON_CONFIG_FILE references
- Updating our run_tests.sh file with our export COMMON_CONFIG_FILE
Many of students reached out asking how we can run our automation suite with npm instead of yarn.
- Consistent exporting of COMMON_CONFIG_FILE across .bat and .sh files
- Refactoring the structure of our package.json scripts
- Updating our yarn references to npm
- Adding additional double dashes to enable passing multiple arguments with npm
This new order we call our scripts inside package.json also resolves the "TypeError: suite.features.forEach is not a function" that some students had reported seeing - especially if you attempted to run the suite with no tests.
Explore key learnings from the cucumber selenium webdriver typescript automation framework, including generating screenshots, using cucumber world, passing the selenium driver across steps, and dynamic environment-driven test configuration.
Map hosts and pages using JSON to pass environment-driven parameters in cucumber world, applying SRP and global types to create a maintainable Selenium TypeScript automation framework.
Create a new global world config and wire host and pages mappings by loading JSON files at runtime, making mappings accessible in each cucumber scenario.
Replace the simple driver with a navigate to page function that uses host and pages mappings in a Cucumber Selenium WebDriver TypeScript automation framework.
Learn how to extend element mappings with global variables in cucumber world to determine the current page and preload page element mappings for faster test execution.
Create and load element mappings with a page element mappings file, integrate global variables, and implement a web element locator and helper to drive page elements.
Create element locators and map page elements using global vars in a cucumber Selenium TypeScript framework, defining page and common mappings to drive robust web tests.
Introduce a custom WaitFor() function that retries interactions until success, boosting stability across selenium, puppeteer, Cyprus, and playwright for reliable parallel tests.
Introduce a custom WaitFor() in a Cucumber Selenium WebDriver TypeScript framework, replacing chai assertions with a reusable element displayed wait, supporting retries, default timeouts, and script timeout configuration.
Refactor the framework by introducing custom wait for and get element text utilities, remove chai, and implement reusable driver-based checks to retry until expected text appears.
Identify key learnings from separation of concerns, host and page config types, and json mappings for hosts, pages, and elements. Implement helpers, cucumber world variables, and page-specific element mappings.
Match page URLs with regex to drive navigation and page assertions in a Cucumber Selenium TypeScript automation framework. Improve stability on page transitions.
Remove the global current page and determine the page by matching the URL against a regex in pages.json to auto-map pages.
Learn to validate page selection with regex using the current path in a Cucumber Selenium TypeScript automation framework, and extend the suite with a create contact feature and step definitions.
Implement a reliable Selenium WebDriver workflow in a Cucumber with TypeScript framework by creating step definitions, using an element locator, waiting for visibility, and clicking with stability checks.
Determine the current page using regex matching and add a retry-enabled wait for stability. Map the create contact page with header data id and validate the page after navigation.
Launch your first end-to-end test in the Cucumber Selenium WebDriver TypeScript framework by building a contact form test, cleaning up console logs, and asserting the expected text.
Explore building a reusable, object-oriented end-to-end test framework in TypeScript with cucumber and Selenium, including selecting form options and using get element with options and select element value.
Learn to build an end-to-end test by adding a form step, filling in gender, contact details, and address, saving the new contact, and then searching and validating the saved data.
Introduce form steps for the first end-to-end test, refactor common element attributes into a shared location, and validate create, edit, and delete actions in a fast, stable automation framework.
Map browser URLs to pages, wait for URL matches with a page regex, then click, fill forms, and select options, building end-to-end Selenium tests in TypeScript and enabling headless mode.
Introduce ESLint for TypeScript to improve code quality in the Cucumber Selenium WebDriver automation framework, leveraging Chrome DevTools, console logs, breakpoints, and test reports for debugging.
Develop debugging skills with Chrome developer tools, console logs, and breakpoints to locate automation issues, missing or hidden elements, dialogs, and UI changes in a Cucumber Selenium TypeScript framework.
learn how to use chrome developer tools and console logs to diagnose test failures, distinguish UI rendering from data, and add a sleep step in the Cucumber Selenium TypeScript framework.
Enable chrome developer tools for automated tests and use a debugger to inspect the contact form, applying debugging techniques to fix issues and verify tests pass.
Learn to debug Selenium Cucumber tests using console logs, breakpoints, and HTML reports; fix failing element mappings, generate screenshots, and interpret test reports to resolve missing elements and improve automation.
Learn debugging techniques, rc for clean code, and sleep strategies to diagnose test failures, assert values, and review Cucumber reports with failure screenshots using Chrome DevTools.
Learn selenium-based automation with cucumber and TypeScript as you automate radio buttons (check and uncheck), use code negation to reduce duplication, and validate autocomplete inputs.
learn to implement check and uncheck steps for radio buttons using cucumber, selenium, and typescript, including a reusable element checked helper and verification for mail and female options.
Explore introducing a gate to reduce cucumber step duplication by handling should be checked and should not be checked, using TypeScript and Selenium WebDriver in radio button tests.
Explore negating assertions in cucumber step definitions to reduce duplication, using should not contain and regex to reuse steps across radio buttons, checkboxes, and switches in TypeScript selenium webdriver framework.
Learn to automate autocomplete inputs and form validation using Cucumber, Selenium, and TypeScript, including mapping data attributes, selecting suggestions by text, and asserting input values.
Understand automating autocomplete inputs with a cucumber Selenium WebDriver TypeScript framework, including finding elements, clicking, and validating input values via should contain and should not contain value checks.
Explore automated input testing with equals value assertions, handle required, disabled, and read-only inputs, and implement a scroll to element step to improve Selenium stability on long forms.
Develop and validate auto-complete input behavior by asserting value equality, disabled and read-only states, and form validation across a Cucumber Selenium WebDriver TypeScript automation framework.
Speed up the regression suite by running tests in parallel across browsers and retrying failures. Automate validation inputs and labels within a Cucumber Selenium WebDriver TypeScript automation framework.
Master interacting with radio buttons, autocomplete inputs, and clicks on text elements; assert enabled or disabled states and negatives; retrieve elements by text paths and values; run automation with retry.
Automate checkboxes with a versatile check and uncheck step using regex, map by data-id, and validate checked states, extending existing radio button logic for a Cucumber Selenium TypeScript framework.
Learn to automate interactions with iframes using selenium, switching between main content and iframes, and creating iframe-specific steps and mappings for reliable end-to-end tests.
Learn to switch to iframes mid-test and implement element stability checks with a frame-wide retry, ensuring the frame and elements are stable before inputting values.
Learn to switch to iframes mid-test using selenium web driver with typescript. Assert iframe content, like contact elements, with frame stable and wait-for-selector strategies.
Learn to automate iframe interactions by switching frames mid-test, asserting on text inside frames, and extending cucumber selenium web driver steps to handle iframe contexts for form testing.
Refactor the assertion steps to use element stable checks by integrating wait-for-selector logic, importing the element stable helper, and ensuring consistent retry and error messaging across verifications.
Learn how to automate new tabs and windows in selenium and other frameworks, using a tabs feature in the e2e playground to open, switch between tabs, and verify page titles.
Explore automating new tabs and windows with Selenium WebDriver in TypeScript, switching between tabs using window handles, and retrieving page titles for readability with first, second, third, fourth cues.
Create the interaction step for new tabs in a Cucumber Selenium TypeScript framework, wire up page notice with step definitions, handle page index and switch window logic for multi-page scenarios.
Automate new tabs and windows in a Cucumber Selenium WebDriver TypeScript framework by adding steps, verifying the displayed tab, and validating text with regex.
Automate new tabs and windows with Cucumber Selenium TypeScript in a single framework. Verify text across tabs and windows, map steps to windows, and run end-to-end tests in parallel.
Master automating checkboxes and radio buttons, handling iframes, new tabs and windows, and crafting subset step definitions; use regex to enable, check, and uncheck, with sleep for slower tests.
Automate links and buttons, click elements by index, and test tables and switches in a Cucumber Selenium TypeScript framework, handling dynamic elements with data IDs.
this lecture teaches automating a buttons feature to interact with and assert on buttons by index, including scrolling to target button, using element position and index, and wait for selectors.
Implement index-based scrolling and clicking for links and buttons by duplicating and adapting the scroll element into view. Add get elements and click element at index, update imports, and verify tests pass.
Learn to automate index-based clicking of links and buttons with Cucumber, Selenium, and TypeScript, avoiding copy-paste pitfalls and validating button text at each position.
Automate table assertions by mapping an HTML table to a cucumber data table, transforming it to an object of strings, and validating exact data with data table rules.
Develop a getTableData function that uses promises to fetch and stringify HTML table data (rows and cells) for assertions against Cucumber data tables in a TypeScript Selenium framework.
Automate switches using a cucumber selenium WebDriver TypeScript automation framework by toggling on and off, treating switches as replacements for radios or checkboxes, and validating state changes in the playground.
Master automating links and button interactions, handling dynamic elements with get elements, converting strings to numbers, asserting on tables and HTML data, including cucumber data tables and checkbox regex updates.
This course has been designed to simulate a real-world experience in building a Cucumber, Selenium Webdriver (Version 4.1+ Latest) & TypeScript automation framework from the ground up for a fully-featured application.
Upon completion, you will be able to apply your learnings and the automation framework you have built into your respective companies and projects. We are confident you will become an expert in building a world-class automation framework.
Our course and the automation framework we will build together has been developed with guidance from some of the globes leading testing and software engineering professionals and because of that we believe we can offer an incredible course where we will:
- Develop your automation framework against a real react application running on your local machine.
- Build an end-to-end automation framework from the ground up for a full-featured end-to-end react application.
- Evolve your skills and continuously improve your automation framework as we progress through the course
- Learn how to build an object-orientated – engineer reviewed and approved automation framework.
We want this course to be the best decision you have ever made for your personal growth when it comes to improving your knowledge and skills in test automation framework architecture.
Across 170 lectures, 19 Quizzes and 22+ hours of exciting content I will be at the bottom right of your screen instructing and cheering you along throughout the course. You will have everything you need to learn how to build a world-class automation framework.