Introduction to Course

Get an overview of this course and its intended audience.

Let’s consider the following scenario: We get an assignment to build a simple website that showcases the latest tech meetups. Users can add new meetups to the website and browse all upcoming meetups. Sounds pretty simple, right?

But what if a user tries to add a meetup that already exists? Or if they try to add a meetup that already happened? Or that they add a meetup with invalid data? Suddenly, this simple assignment becomes exponentially more complicated. How do we ensure that all of those scenarios are prevented and that our application has no hidden bugs?

We can run the application and test all the scenarios manually by going to the website and completing all the steps one after another to get to the desired outcome. This will take some time, but at least we can ensure the application works correctly. But what if we make a small typo when testing the submit form? Or if we forget to reset the database before running the application?

We can be competent programmers and testers but as humans we are prone to making errors. Despite this, our goal is to ensure our application remains error-free.

What is automated testing?

Along with writing code that aligns with business requirements, software engineers also write test cases to ensure the application runs as expected. Automated testing is a process of utilizing tools and scripts to test if our application works as expected. This approach ensures faster and more precise testing as compared to manual testing.

Software development life cycle (SDLC)
Software development life cycle (SDLC)

By the end of this course, we will have a full end-to-end tested Next.js application. We will also have a reproducible test setup that allows us to run our test suite on the Educative platform and in continuous integration environments.

In addition, we will learn Cypress in detail and acquire the skills of how to integrate it with Next.js.

We will also delve into the philosophy of why we test web applications and what are the benefits and disadvantages of different testing methodologies.

Prerequisites

Learning Next.js and Cypress is a big task, but you don’t need any previous experience with either of the frameworks to complete this course. We will cover end-to-end testing of Next.js applications with Cypress step by step, starting from a simple example to a production-ready full stack application.

It will be helpful if you know the following topics:

  • React.js

  • JavaScript

  • TypeScript

  • SQL Databases

Although you can learn Cypress and Next.js without these prerequisites, familiarity with these languages will make it easy to understand the code examples in the course.