Cypress V6- UI Automation Testing + API Testing + Frameworks
Cypress is a JavaScript End to End Testing Framework that is popular and still growing in popularity due to the great features and how easy it is to write tests.
More
Requirements:
Some knowledge of programming would be beneficial (not critical)
Some basic JS, HTML and CSS knowledge would also be useful (not critical)
Key Topics this course covers:
Fundamentals of Cypress io
Setting up Cypress cleanly
Creating a range of UI and API tests (beginner to advanced level)
Statics gathering and analysis using the Cypress dashboard
Triggering tests using a CI system (Jenkins)
Parallel test execution (in great detail)
Advanced API testing
Advanced reporting
And much more (check out the course syllabus)
Key Features of Cypress:
Easy setup - Installing Cypress is simple. No dependencies, extra downloads, or changes to your code required.
Write tests - Write tests easily and quickly, and watch them execute in real time as you build your web application.
Run tests - Debugging your tests in CI is as easy as running tests locally. With built in parallelization and load balancing.
Record tests - Record CI test data, screenshots and video - and view aggregated, next-level insights in your Dashboard.
Benefits of Cypress:
Developer friendly - Cypress has been made specifically for developers and QA engineers, to help them get more done.
Open source - Cypress benefits from our amazing open source community - and Cypresses tools are evolving better and faster than if we worked on them alone.
Built from the ground up - Cypress is based on a completely new architecture. No more Selenium. Lots more power.
What sets Cypress apart?
Time travel - Cypress takes snapshots as your tests run. Simply hover over commands in the Command Log to see exactly what happened at each step.
Debugging - Stop guessing why your tests are failing. Debug directly from familiar tools like Chrome DevTools. The readable errors and stack traces make debugging lightning fast.
Real time reloads - Cypress automatically reloads whenever you make changes to your tests. See commands execute in real time in your app.
Automatic waiting - Never add waits or sleeps to your tests. Cypress automatically waits for commands and assertions before moving on. No more async hell.
Why this course?
This course combines all of the BEST free knowledge that is out there in one place
This course is taught by a real automation test engineer that is an automation test lead at his place of employment
This course has been designed, refined and perfected to maximise the learning experience
This course perfects the teaching techniques by experience learned from the mentors previous courses
Before and after code examples provided on almost every coding lecture
Questions usually always answered in 24 hours
Course recorded using high quality recording software and microphone to give the best learning experience
Who this course is for:
- Students completely new to automation testing
- Manual testers looking to enter the automation testing space
- Anyone interested in automation testing and wanting to learn one of the most popular frameworks out there
- Front end developers interested in automation testing using a language they will be familiar with
- Intermediate and advanced students wanting to learn new concepts and techniques
What you'll learn:
- By the end of this course, you will be able to build simplistic to advanced automation tests for any Web Application using Cypress
- You will gain advanced knowledge to build both UI and API tests
- Learn XHR/API testing using Cypress for building smart Automation tests
- Complete understanding of Cypress components for generating test execution videos, screenshots & reports
- You will understand how to execute your tests in parallel using a CI system (Jenkins & Agents)
- You will learn advanced architectural concepts (Page Object Modelling and more)
Watch Online Cypress V6- UI Automation Testing + API Testing + Frameworks
# | Title | Duration |
---|---|---|
1 | What is Cypress? | 05:20 |
2 | Why Learn Cypress? | 01:08 |
3 | How does Cypress Work? | 08:25 |
4 | What are the Key Differences between Cypress and other Automation Tools? | 04:01 |
5 | Want to delve deeper into Cypress’s Code? | 01:09 |
6 | Cypress Demo | 05:49 |
7 | Cypress Chat | 01:15 |
8 | Future Course & Cypress Updates - [Must Watch!] | 02:32 |
9 | Chrome & Firefox Browser Installation | 00:52 |
10 | NodeJs Setup | 02:52 |
11 | Gitbash Setup | 03:56 |
12 | VS Code Installation & Configuration | 03:36 |
13 | Cypress Installation & Setup | 08:02 |
14 | NPM Installation & Update | 04:48 |
15 | Opening Cypress for the First Time! | 04:08 |
16 | Cypress Test Runner | 11:48 |
17 | Cypress Project Structure | 10:28 |
18 | Keeping Cypress Up to Date | 05:29 |
19 | Cypress API - Overview | 04:00 |
20 | Cypress Updates - (Change Logs) | 03:40 |
21 | Systems Under Test | 02:27 |
22 | Mocha - Overview | 03:25 |
23 | Constructing our First Test using Mocha | 08:27 |
24 | Command Activation & Inspecting Specific Cypress Commands | 04:44 |
25 | Visit & Click Command | 11:12 |
26 | Click Options | 07:18 |
27 | Type Command | 04:36 |
28 | Challenge - Overview | 01:33 |
29 | Challenge - Solution | 06:27 |
30 | Creating Our Second Cypress Test - (Negative Test Case) | 04:55 |
31 | Targeting Individual Tests via Mocha | 02:02 |
32 | Running Tests in Chrome, Electron & Firefox | 03:04 |
33 | Why do we need Selectors? | 04:54 |
34 | Document Object Model (DOM) & Elements | 06:54 |
35 | Practical In Depth Look into Selectors - Part 1/2 | 09:24 |
36 | Practical In Depth Look into Selectors - Part 2/2 | 05:44 |
37 | Selector Generator Tools | 05:49 |
38 | CSS Selectors | 08:45 |
39 | Xpath Selectors - Part 1/3 | 05:46 |
40 | Xpath Selectors - Part 2/3 | 08:31 |
41 | Xpath Selectors - Part 3/3 | 09:09 |
42 | Improving our Tests with Dynamic Selectors | 10:22 |
43 | More Selector Examples! | 03:38 |
44 | Why do we need Assertions? | 01:29 |
45 | Chai Assertions & Cypress Examples | 04:18 |
46 | Adding Assertions to our Existing Tests | 03:56 |
47 | Chai JQuery | 05:29 |
48 | Assertion - Challenge | 01:29 |
49 | Assertion Challenge - Solution | 05:10 |
50 | Cypress Contains | 06:06 |
51 | cy.document() | 07:11 |
52 | cy.title() | 04:22 |
53 | cy.url() | 04:39 |
54 | Headless Electron Browser | 07:04 |
55 | Non Headless Electron Browser | 05:00 |
56 | Non Headless Chrome Browser | 03:06 |
57 | Trigger Individual Tests | 04:44 |
58 | Cypress Chaining Commands - Introduction | 05:39 |
59 | More Examples of Command Chaining - get, find, contains, eq - Part 1/2 | 09:06 |
60 | More Examples of Command Chaining - get, find, contains, eq - Part 2/2 | 08:36 |
61 | Synchronous vs Asynchronous - Overview | 03:52 |
62 | Synchronous - Example | 07:01 |
63 | Asynchronous - Example | 07:51 |
64 | Cypress Asynchronous Nature | 04:02 |
65 | Non Cypress Commands and Async Nature | 03:48 |
66 | Cypress log | 02:44 |
67 | Promises Real World Example | 09:40 |
68 | Cypress and Promises | 04:04 |
69 | then Command | 08:57 |
70 | Promise - Challenge | 01:14 |
71 | Promise Challenge - Solution | 05:47 |
72 | Variables - Part 1/4 | 07:51 |
73 | Variables - Part 2/4 | 07:04 |
74 | Variables - Part 3/4 | 09:55 |
75 | Variables - Part 4/4 | 05:40 |
76 | Variables, Promises & Nested Closures - Part 1/2 | 11:34 |
77 | Variables, Promises & Nested Closures - Part 2/2 | 08:36 |
78 | Iterating through Elements - Documentation & Preparation | 08:44 |
79 | Practical Example of Iterating through Elements - Part 1/2 | 06:21 |
80 | Practical Example of Iterating through Elements - Part 2/2 | 05:56 |
81 | Alias & Invoke - Documentation | 06:01 |
82 | Alias & Invoke - Practical Example | 09:45 |
83 | Alias & Invoke - Challenge | 02:44 |
84 | Alias & Invoke - Solution | 09:54 |
85 | Combining Alias , Invoke, Variables & Iterating through Data - Part 1/5 | 08:10 |
86 | Combining Alias , Invoke, Variables & Iterating through Data - Part 2/5 | 08:58 |
87 | Combining Alias , Invoke, Variables & Iterating through Data - Part 3/5 | 08:27 |
88 | Combining Alias , Invoke, Variables & Iterating through Data - Part 4/5 | 10:48 |
89 | Combining Alias , Invoke, Variables & Iterating through Data - Part 5/5 | 05:03 |
90 | Cypress Limitations | 03:41 |
91 | Cypress Recipes | 02:00 |
92 | Handling Multiple Browser Tabs | 12:07 |
93 | Same Origin Policy - Example 1/2 | 09:49 |
94 | Same Origin Policy - Example 2/2 | 05:44 |
95 | Back, Forward, Reload - Part 1/2 | 08:57 |
96 | Back, Forward, Reload - Part 2/2 | 07:38 |
97 | Back, Forward, Reload - Challenge | 01:21 |
98 | Back, Forward, Reload - Challenge Solution | 03:55 |
99 | Handing Alerts - Documentation | 03:55 |
100 | Handling Alerts - Example 1/2 | 09:24 |
101 | Handling Alerts - Example 2/2 | 06:27 |
102 | Alert - Challenge | 00:48 |
103 | Alert Challenge - Solution | 07:41 |
104 | Handling Alerts with Stubs | 09:18 |
105 | Handling Iframe's - Part 1/2 | 09:44 |
106 | Handling Iframe's - Part 2/2 | 10:48 |
107 | Handling Checkboxes - Part 1/2 | 07:26 |
108 | Handling Checkboxes - Part 2/2 | 03:40 |
109 | Handling Checkboxes - Challenge | 01:21 |
110 | Handling Checkboxes - Solution | 03:37 |
111 | Selecting Multiple Checkboxes | 06:23 |
112 | Handling Radio Buttons | 09:51 |
113 | Validating States of Radio Buttons (Checked & Unchecked) | 09:33 |
114 | Handling Drop-down Lists - Part 1/2 | 08:51 |
115 | Handling Drop-down Lists - Part 2/2 | 03:12 |
116 | Drop-down List - Challenge | 00:38 |
117 | Drop-down List - Solution | 03:21 |
118 | Handling Autocomplete Lists - Part 1/2 | 07:32 |
119 | Handling Autocomplete Lists - Part 2/2 | 08:16 |
120 | Autocomplete - Challenge | 01:31 |
121 | Autocomplete - Challenge Solution | 05:12 |
122 | Scroll into View | 06:16 |
123 | Drag & Drop | 08:21 |
124 | Double Click | 03:06 |
125 | Click, Hold & Assertions | 06:50 |
126 | Traversal - Preparation | 02:28 |
127 | children() | 07:13 |
128 | closest() | 05:26 |
129 | eq() | 06:43 |
130 | filter() | 06:06 |
131 | find() | 06:03 |
132 | first() | 06:50 |
133 | last() | 02:22 |
134 | nextAll() | 03:55 |
135 | nextUntil() | 04:29 |
136 | not() | 04:42 |
137 | parent() | 04:40 |
138 | parents() | 05:22 |
139 | prev() | 03:36 |
140 | prevAll() | 03:41 |
141 | prevUntil() | 05:31 |
142 | siblings() | 04:51 |
143 | Handling Data - Example 1 - Part 1/3 | 07:56 |
144 | Handling Data - Example 1 - Part 2/3 | 10:44 |
145 | Handling Data - Example 1 - Part 3/3 | 05:40 |
146 | Handling Data - Example 2 - Part 1/2 | 08:08 |
147 | Handling Data - Example 2 - Part 2/2 | 08:27 |
148 | Handling Date Pickers - Part 1/5 | 11:08 |
149 | Handling Date Pickers - Part 2/5 | 10:24 |
150 | Handling Date Pickers - Part 3/5 | 10:37 |
151 | Handling Date Pickers - Part 4/5 | 13:55 |
152 | Handling Date Pickers - Part 5/5 | 11:02 |
153 | Introduction & Preparation | 07:42 |
154 | Uploading File(s) | 07:01 |
155 | Uploading no File(s) | 01:24 |
156 | Hooks - Documentation & Practical Example | 09:46 |
157 | Hooks - Improving Existing Tests | 05:27 |
158 | Hooks - Challenge | 01:34 |
159 | Hooks - Challenge Solution | 03:59 |
160 | Fixtures - Documentation | 03:56 |
161 | Fixtures & Data Driven Testing - Part 1/2 | 08:01 |
162 | Fixtures & Data Driven Testing - Part 2/2 | 05:49 |
163 | Alias & Fixtures | 10:25 |
164 | Custom Commands - Documentation & Practical Example - Part 1/2 | 08:36 |
165 | Custom Commands - Documentation & Practical Example - Part 2/2 | 04:23 |
166 | Custom Commands - Challenge | 01:44 |
167 | Custom Commands - Challenge Solution | 06:01 |
168 | Using Custom Commands to Further Improve our Framework - Part 1/2 | 10:58 |
169 | Using Custom Commands to Further Improve our Framework - Part 2/2 | 10:13 |
170 | Custom Commands & Fixtures - Wrap Up - Part 1/3 | 10:43 |
171 | Custom Commands & Fixtures - Wrap Up - Part 2/3 | 07:31 |
172 | Custom Commands & Fixtures - Wrap Up - Part 3/3 | 07:25 |
173 | Cypress.config | 06:51 |
174 | Ignore Files | 03:44 |
175 | Environment Variables | 12:17 |
176 | Setting up a Base URL | 05:41 |
177 | Dynamic URL's | 13:16 |
178 | Dynamic URL's & Custom Commands - Example 1/2 | 03:36 |
179 | Dynamic URL's & Custom Commands - Example 2/2 | 04:05 |
180 | Page Object Modelling - Part 1/6 | 11:27 |
181 | Page Object Modelling - Part 2/6 | 09:05 |
182 | Page Object Modelling - Part 3/6 | 12:33 |
183 | Page Object Modelling - Part 4/6 | 07:02 |
184 | Page Object Modelling - Part 5/6 | 10:01 |
185 | Page Object Modelling - Part 6/6 | 08:49 |
186 | URL Timeouts | 06:45 |
187 | Explicit Timeouts | 04:32 |
188 | Assertion Timeouts | 05:37 |
189 | Pause | 05:39 |
190 | Wait | 03:48 |
191 | Cypress Debugger | 10:44 |
192 | Capturing Screenshots | 12:43 |
193 | Recording Videos | 08:04 |
194 | Altering Viewports - Configuring Size and Orientation | 04:48 |
195 | Clearing Cookies & Local Storage | 03:27 |
196 | Cypress Dashboard - Practical Example Part 1/2 | 10:31 |
197 | Cypress Dashboard - Practical Example Part 2/2 | 11:21 |
198 | Npx | 05:06 |
199 | Npm scripts - Part 1/2 | 09:15 |
200 | Npm scripts - Part 2/2 | 05:27 |
201 | JUnit Reporter | 11:20 |
202 | JUnit - Merging Reports | 05:11 |
203 | Npm Scripts - Merge & Delete JUnit Reports | 09:32 |
204 | Mochawesome Reporter | 10:06 |
205 | Mochawesome - Merging Reports | 05:48 |
206 | Npm Scripts - Merge & Delete Mochawesome Reports | 04:42 |
207 | Npm Scripts - Merging & Deleting All Reports | 08:55 |
208 | Custom Config File - Overview & Creation | 07:27 |
209 | Adding Logic to our Custom Config File | 10:50 |
210 | Injecting Custom Config File Logic into our Framework | 08:39 |
211 | Using Custom Config File Settings during Runtime | 06:19 |
212 | Retry Plugin - Installation | 05:35 |
213 | Adding Retry Logic to Framework | 05:07 |
214 | Adding Retry Logic to Tests | 03:14 |
215 | Adding Retry Logic to NPM Scripts | 07:27 |
216 | GitHub - Account Creation & Login | 03:49 |
217 | Visual Studio Code & GitHub - Setup | 11:55 |
218 | Committing and Pushing our Code (Framework) to GitHub - Part 1/2 | 10:46 |
219 | Committing and Pushing our Code (Framework) to GitHub - Part 2/2 | 11:15 |
220 | Pushing & Pulling New Changes | 07:48 |
221 | Triggering Tests Using New Repo & Code - (Cypress Dashboard) | 07:49 |
222 | GitHub Cypress App - [Homework] | 01:49 |
223 | NPM Scripts - Multi Browser Testing | 10:48 |
224 | Configuring Code & Tests for Specific Browsers | 08:16 |
225 | Jenkins (CI) - Overview | 05:30 |
226 | Java JDK - Download & Setup | 08:56 |
227 | Java JDK - Download & Setup - Mac, Ubuntu, Linux…. | 01:47 |
228 | Jenkins - Download & Setup | 08:09 |
229 | Jenkins - Overview | 04:33 |
230 | Jenkins Plugins - Download & Setup | 05:19 |
231 | Jenkins - Configuration | 06:20 |
232 | Jenkins - Job Creation | 11:58 |
233 | Jenkins Build(s) - Triggering Cypress Tests - Part 1/2 | 05:30 |
234 | Jenkins Build(s) - Triggering Cypress Tests - Part 2/2 | 08:18 |
235 | Linking Jenkins & Cypress Dashboard | 10:11 |
236 | Cypress Dashboard - Pricing Plans | 04:13 |
237 | Parallelization - Documentation | 07:40 |
238 | Parallelization - Architecture Overview - (Real World Example) | 04:46 |
239 | Making Jenkins Assessable Via Local Network | 04:10 |
240 | Jenkin’s Slaves (Node’s) - Setup - Part 1/2 | 10:42 |
241 | Jenkin’s Slaves (Node’s) - Setup - Part 2/2 | 04:41 |
242 | Jenkins Pipeline Job - Overview | 04:45 |
243 | Jenkins Pipeline Script – Creation - Part 1/2 | 11:07 |
244 | Jenkins Pipeline Script – Creation - Part 2/2 | 07:45 |
245 | Jenkins Pipeline Job - Creation | 06:06 |
246 | Jenkins Node(s) (Agents) - Activation | 06:53 |
247 | Parallelization In Action! | 11:37 |
248 | Parallelization In Action! - Chrome Headed Mode | 05:19 |
249 | Triggering Different Test Suites in Parallel | 11:39 |
250 | Automating Test Suite(s) Execution | 05:50 |
251 | API & JSON - Overview | 10:40 |
252 | JSON - Practical Example - Part 1/2 | 09:44 |
253 | JSON - Practical Example - Part 2/2 | 12:59 |
254 | JSON - Challenge | 02:33 |
255 | JSON - Solution | 05:24 |
256 | Postman - Installation | 03:17 |
257 | JSON Server - Installation | 10:18 |
258 | GET - Request via Postman | 05:27 |
259 | POST - Request via Postman | 08:45 |
260 | PUT - Request via Postman | 04:37 |
261 | DELETE - Request via Postman | 02:58 |
262 | JSON Server & Cypress Integration | 04:13 |
263 | GET - Request via Cypress - Validate Status Code | 08:26 |
264 | GET Request - Validate Keys & Values | 10:39 |
265 | GET Request - Loop Through & Assert Response | 06:53 |
266 | POST Request - Validate Status Code | 09:15 |
267 | POST Request - Post & Validate Properties | 12:35 |
268 | POST Request - Dynamic Data | 05:35 |
269 | UPDATE Request via Cypress | 05:55 |
270 | DELETE Request via Cypress | 03:55 |
271 | API - Challenge Overview | 05:33 |
272 | API - Challenge Solution - Part 1/2 | 14:32 |
273 | API - Challenge Solution - Part 2/2 | 06:52 |
274 | XHR Testing - Overview | 03:46 |
275 | XHR - Project Setup | 09:31 |
276 | Get Request - XHR Testing | 12:52 |
277 | Mocking Get Requests by Stubbing Responses | 08:05 |
278 | Post Request - XHR Testing | 11:33 |
279 | Put Request - Stubbing Server Response - XHR Testing | 10:16 |
280 | Real world Example - Project Setup & Cypress Integration | 06:59 |
281 | Real world Example - Manual Account Creation | 05:04 |
282 | Real world Example - Automating Account Creation | 13:26 |
283 | Real world Example - UI & XHR Validation | 10:15 |
284 | Real world Example - Automating Account Login | 08:41 |
285 | Real world Example - Mocking Data | 10:56 |
286 | Real world Example - Mocking Data - Challenge Overview | 03:28 |
287 | Real world Example - Mocking Data - Challenge Solution | 14:31 |
288 | Project Setup - Challenge Overview | 02:07 |
289 | Project Setup - Challenge Solution | 09:02 |
290 | Signup Test - Challenge Overview | 01:43 |
291 | Signup Test - Challenge Solution - Part 1/3 | 10:11 |
292 | Signup Test - Challenge Solution - Part 2/3 | 08:06 |
293 | Signup Test - Challenge Solution - Part 3/3 | 04:27 |
294 | Login Test - Challenge Overview | 01:43 |
295 | Login Test - Challenge Solution - Part 1/2 | 07:02 |
296 | Login Test - Challenge Solution - Part 2/2 | 03:37 |
297 | API Testing - Challenge Overview | 05:14 |
298 | API Testing - Challenge Solution | 10:24 |
299 | API Authentication - Token Extraction | 09:11 |
300 | API Authentication - Loading Token & Login - (Non UI) | 13:04 |
301 | Prerequisite - Please Watch! | 04:41 |
302 | Updating Cypress v4 to v5 | 02:41 |
303 | Whitelist XHR (Update) | 03:46 |
304 | Cypress New Retry Ability - Intro | 03:19 |
305 | Migrating Retry-ability 'Functionality' to Cypress v5+ | 07:15 |
306 | Adding Retry Logic to Framework | 05:25 |
307 | Adding Retry Logic to Tests | 04:07 |
308 | Adding Retry Logic to NPM Scripts | 09:28 |
309 | Prerequisite - Please Watch! | 05:10 |
310 | cy.intercept - Example 1: [Project: angular-realworld-example-app] - Part 1/2 | 08:59 |
311 | cy.intercept - Example 1: [Project: angular-realworld-example-app] - Part 2/2 | 11:27 |
312 | cy.intercept - Example 2: [Project: network-requests] - Part 1/3 | 08:55 |
313 | cy.intercept - Example 2: [Project: network-requests] - Part 2/3 | 12:09 |
314 | cy.intercept - Example 2: [Project: network-requests] - Part 3/3 | 06:59 |
315 | Cypress Studio | 10:04 |
316 | $el.click() Deprecated; (method) JQuery<HTMLElement>.click() | 02:42 |
317 | What is Cucumber BDD? | 10:02 |
318 | Mocha vs Cucumber BDD | 06:34 |
319 | Setting up Cucumber BDD | 05:11 |
320 | Feature File & Scenario - Creation | 09:23 |
321 | Step Definitions - Creation: Part 1/2 | 13:00 |
322 | Step Definitions - Creation: Part 2/2 | 06:01 |
323 | Adding Hook(s) | 09:35 |
324 | Creating Multiple Scenario's | 05:10 |
325 | Data Driven Testing -> Scenario Outlines | 08:50 |
326 | Tags & Custom Scripts | 11:16 |