Angular Component Testing
What you'll learn​
- How to set up component tests in Angular
- How to configure Cypress for Angular projects
Framework Support​
Cypress Component Testing supports Angular ^18.0.0, ^19.0.0, and ^20.0.0.
Our testing harness, cypress/angular, still requires zone.js and @angular-devkit/build-angular to be installed in your project, even if your project is zoneless or is built with @angular/build.
Tutorial​
Visit the Getting Started Guide for a step-by-step tutorial on adding component testing to any project and how to write your first tests.
Installation​
To get up and running with Cypress Component Testing in Angular, install Cypress into your project:
- npm
- yarn
- pnpm
npm install cypress --save-dev
yarn add cypress --dev
pnpm add --save-dev cypress
Open Cypress:
- npm
- yarn
- pnpm
npx cypress open
yarn cypress open
pnpm cypress open

Choose Component Testing
The Cypress App will guide you through configuring your project.
For a step-by-step guide on how to create a component test, refer to the Getting Started guide.
For usage and examples, visit the Angular Examples guide.
Framework Configuration​
Cypress Component Testing works out of the box with @angular/cli projects.
Cypress will automatically detect your project is Angular during setup and
configure it properly. The examples below are for reference purposes.
Angular CLI Configuration​
- cypress.config.js
- cypress.config.ts
const { defineConfig } = require('cypress')
module.exports = defineConfig({
  component: {
    devServer: {
      framework: 'angular',
      bundler: 'webpack',
    },
    specPattern: '**/*.cy.ts',
  },
})
import { defineConfig } from 'cypress'
export default defineConfig({
  component: {
    devServer: {
      framework: 'angular',
      bundler: 'webpack',
    },
    specPattern: '**/*.cy.ts',
  },
})
Options API​
You can also use the options API to provide your own project specific
configuration to your devServer. The devServer configuration receives an
options property:
import { defineConfig } from 'cypress'
export default {
  component: {
    devServer: {
      framework: 'angular',
      bundler: 'webpack',
      options: {
        projectConfig: {
          root: '',
          sourceRoot: 'apps/my-app',
          buildOptions: {
            outputPath: 'dist/my-app',
            index: 'apps/my-app/src/index.html',
            main: 'apps/my-app/src/main.ts',
            polyfills: 'apps/my-app/src/polyfills.ts',
            tsConfig: 'apps/my-app/tsconfig.app.json',
            inlineStyleLanguage: 'scss',
            assets: ['apps/my-app/src/favicon.ico', 'apps/my-app/src/assets'],
            styles: ['apps/my-app/src/styles.scss'],
            scripts: [],
            buildOptimizer: false,
            optimization: false,
            vendorChunk: true,
            extractLicenses: false,
            sourceMap: true,
            namedChunks: true,
          },
        },
      },
    },
  },
}