Angular Cypress Example: Test Angular App using Cypress

Jump to

We create a decent website by utilising many technologies such as React, Angular, and other recent technologies. In terms of testing, the customer prefers unit or end-to-end testing. So, in today’s Angular Cypress example, you’ll learn how to build an end-to-end testing framework called CYPRESS in an Angular application and build some simple test cases.

What is Cypress?

Cypress is a website testing automation framework that runs from start to finish. If your project requires automated testing, Cypress is a good place to start. Cypress automation is particularly appealing to developers because of its usage of JavaScript.

Angular Cypress: Project Set-Up

We will clone the repository before we begin with our angular Cypress example and begin developing test cases. The repository contains boilerplate to which we will eventually add code to test the app. You are welcome to utilise your project as well.

To set up the project in your local system, open a terminal and run the below command.

git clone https://github.com/talent500/cypress-testing-angular.git
cd cypress-testing-angular
npm install
ng s -o

Install Cypress in Angular Project

First, we need to include Cypress in our application, therefore run the command below to include Cypress in our master branch.
ng add @cypress/schematic


The above command will produce a sepc.ts file as a sample cypress testing file and set up the basic needed setup with certain files.

To check the Cypress test cases

npm run cypress:open
The above command will open a Chrome browser to see the Cypress test cases, as shown below.

When you click on the spec.ts file, the cypress test cases for that file are executed.

To share the spec success/failure report

npm run cypress:run
It will run in a terminal and report on the spec’s success and failure.

Testing Angular Application Using Cypress

We’ll now look at how to create genuine Cypress test cases with Cypress and their methods. I hope you’re comfortable with the setting of this project and Cypress, so let’s get started

In Cypress, we may access a certain URL of our application using a variety of approaches. We may choose the element in the same way that we select the HTML element in a page. getElementById methods and validate the assertions.

This is comparable to unit testing in terms of writing the spec, since we must construct descriptions and then write the spec using the manner shown below.
describe(‘My First Test’, () =>{
  it(‘Visits the initial project page’, () =>{
    cy.visit(‘/’)
    cy.contains (‘Welcome’)
    cy.contains (‘sandbox app is running!’)
  })
})

However, one major distinction is that you do not need to import anything, such as a service or a dependency, like we do with unit testing.
In our Cypress Angular example, we will write the following two test cases:

  • Visiting the Login page
  • Entering a valid email address and password, later redirects to the dashboard

First Test Case is to Visit the Login Page

// specs.ts

 

describe( ‘My First Test’, () =>{

  it(‘Should visit the login page’, ()={

    cy.visit(‘/login’);

   cy.url().should(‘includes’, ‘login’)

    cy.get(‘#loginFormTitle’).should (‘be.visible’);

    cy.get(‘#loginFormTitle’).should (‘have.text’, ‘Login Form’);

  })

})


If we alter our current test case as shown in the above image and then click on spec.ts as shown previously in the blog, we will get the output shown below with success test cases.

The meanings of what we have written in the test cases

cy.visit(‘/login’) – this means it will visit/redirect to the given URL.
cy.url().should(‘includes’, ‘login’) – this means it will check whether the page where it should redirect that URL includes the login as a keyword or not.

After that it will stop the execution of that spec.

cy.get(‘#loginFormTitle’).should(‘be.visible’);

  • We may get the element using the cy.get() function in the same manner as we can in JS with “document.getelementbyid(#id).
  • We may go to a certain element by utilising class and id. It is preferable to retrieve the element just by its id.
  • If the element is in the DOM, it will be visible, and we can verify Cypress assertions on it using the should() method, such as.should(‘be.visible’); if it does not exist in the DOM, we can use.should(‘not.exist’); for example, see the picture below.

// specs.ts
describe(‘My First Test’, () =>{
it(‘Should visit the login page’, () =>{
    cy.visit(‘/login’);\
    cy.url().should(‘includes’, ‘login’);
    cy.get(‘#loginFormTitle’).should(‘be.visible’);
    cy.get(‘#loginFormTitle’).should (‘have.text’, ‘Login Form’);    cy.get(‘#loginFormEmailInputValue’).should(‘not.exist’);    cy.get(‘#loginFormPasswordInputValue’).should (‘not.exist’);
})
});

Second Test Case is to Enter Valid Email and Password. Redirect to the Dashboard

Now, in our Angular Cypress example, we will build our second test case, which will require the user to input a valid email/password and then redirect the user to the dashboard.

// specs.ts

It should enter valid email and password and redirect to the dashboard’, ()>{

  cy.visit(‘/login’);

  cy.url().should (‘includes’, ‘login’);

  cy.get(‘#loginFormEmailInput’).type(‘parthagmail.com);

  cy.get(‘#loginFormPasswordInput’).type( ‘Parth@123’);

  cy.get(‘#loginFormSubmitButton’).click();

  cy.get(‘#loginFormEmailInputValue’).should ‘be.visible’);

  cy.get (‘#loginFormEmailInputValue’).should( ‘have.text’, ‘Email: parth@gmail.com’);

  cy.get (‘#loginFormPasswordInputValue’).should( ‘be.visible’);

  cy.get(‘#loginFormPasswordInputValue’).should( ‘have.text’, ‘Password: Parth@123’);
});


Conclusion

When performing end-to-end testing on your application, Cypress is a fantastic choice to explore. It is simple to use, has extensive documentation, and is widely used, so any queries you have may be quickly answered.

Cypress is quite visual, and you can create really complicated tests to evaluate the entire application. You may also test how your application functions in the world’s most popular browsers.

So that’s the fundamentals of Cypress test cases in the Angular application. We hope the Angular Cypress example aided you in getting started with testing your Angular app.

Leave a Comment

Your email address will not be published. Required fields are marked *

You may also like

Developers using GitHub’s AI tools with GPT-5 integration in IDEs

GitHub AI Updates August 2025: A New Era of Development

August 2025 marked a defining shift in GitHub’s AI-powered development ecosystem. With the arrival of GPT-5, greater model flexibility, security enhancements, and deeper integration across GitHub’s platform, developers now have

AI agents simulating human reasoning to perform complex tasks

OpenAI’s Mission to Build AI Agents for Everything

OpenAI’s journey toward creating advanced artificial intelligence is centered on one clear ambition: building AI agents that can perform tasks just like humans. What began as experiments in mathematical reasoning

Developers collaborating with AI tools for coding and testing efficiency

AI Coding in 2025: Redefining Software Development

Artificial intelligence continues to push boundaries across the IT industry, with software development experiencing some of the most significant transformations. What once relied heavily on human effort for every line

Categories
Interested in working with Angular, Frontend ?

These roles are hiring now.

Loading jobs...
Scroll to Top