Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
A

angular-testing-library

> 前端框架
Open source

Simple and complete Angular testing utilities that encourage good testing practices

791 stars0 likes0 views
WebsiteGitHub

About

Simple and complete Angular testing utilities that encourage good testing practices

Table of Contents

  • Table of Contents
  • The problem
  • This solution
  • Zoneless support
  • Example
  • Installation
  • Version compatibility
  • Guiding Principles
  • Contributors
  • Docs
  • FAQ
    • I am using Reactive Forms and the jest-dom matcher toHaveFormValues always returns an empty object or there are missing fields. Why?
  • Issues
    • Bugs
    • Feature Requests
    • ❓ Questions
  • Getting started with GitHub Codespaces
  • LICENSE

The problem

You want to write maintainable tests for your Angular components. As a part of this goal, you want your tests to avoid including implementation details of your components and rather focus on making your tests give you the confidence for which they are intended. As part of this, you want your testbase to be maintainable in the long run so refactors of your components (changes to implementation but not functionality) don't break your tests and slow you and your team down.

This solution

The @testing-library/angular is a very lightweight solution for testing Angular components. It provides light utility functions on top of Angular and @testing-library/dom, in a way that encourages better testing practices. Its primary guiding principle is:

The more your tests resemble the way your software is used, the more confidence they can give you.

Zoneless support

For zoneless applications, Angular Testing Library provides a dedicated slim entry point:

import { render } from '@testing-library/angular/zoneless';

A schematic is available to migrate existing tests:

ng generate @testing-library/angular:migrate-to-zoneless

Example

counter.component.ts

@Component({
  selector: 'atl-counter',
  template: `
    {{ hello() }}
    -
    Current Count: {{ counter() }}
    +
  `,
})
export class CounterComponent {
  counter = model(0);
  hello = input('Hi', { alias: 'greeting' });

  increment() {
    this.counter.set(this.counter() + 1);
  }

  decrement() {
    this.counter.set(this.counter() - 1);
  }
}

counter.component.spec.ts

…

See more examples

Installation

This module is distributed via npm which is bundled with node and should be installed as one of your project's devDependencies. Starting from ATL version 17, you also need to install @testing-library/dom:

npm install --save-dev @testing-library/angular @testing-library/dom

Or, you can use the ng add command. This sets up your project to use Angular Testing Library, which also includes the installation of @testing-library/dom.

ng add @testing-library/angular

You may also be interested in installing jest-dom so you can use the custom jest matchers.

Docs

Version compatibility

Angular Angular Testing Library
22.x 19.x
21.x 19.x
20.x 18.x, 17.x, 16.x, 15.x, 14.x, 13.x
19.x 17.x, 16.x, 15.x, 14.x, 13.x
18.x 17.x, 16.x, 15.x, 14.x, 13.x
17.x 17.x, 16.x, 15.x, 14.x, 13.x
16.x 14.x, 13.x
>= 15.1 14.x, 13.x
[The more your tests resemble the way your software is used, the more

confidence they can give you.]guiding-principle

We try to only expose methods and utilities that encourage you to write tests that closely resemble how your Angular components are used.

Utilities are included in this project based on the following guiding principles:

  1. If it relates to rendering components, it deals with DOM nodes rather than component instances, nor should it encourage dealing with component instances.
  2. It should be generally useful for testing individual Angular components or full Angular applications.
  3. Utility implementations and APIs should be simple and flexible.

At the end of the day, what we want is for this library to be pretty light-weight, simple, and understandable.

Contributors

Thanks goes to these people (emoji key):

Tim Deschryver ⚠️

Michaël De Boey

Ignacio Le Fluk ⚠️

Tamás Szabó

Gregor Woiwode

Toni Villena ⚠️

ShPelles

Miluoshi ⚠️

Nick McCurdy

Srinivasan Sekar

Bitcollage

Emil Sundin

Ombrax

Rafael Santana ⚠️

Benjamin Blackwood ⚠️

Gustavo Porto

Bo Vandersteene

Janek ⚠️

Gleb Irovich ⚠️

Arjen

Suguru Inatomi

Amit Miran

Jan-Willem Willebrands

Sandro

Michael Westphal ⚠️

Lukas

Matan Borenkraout

mleimer ⚠️

MeIr ⚠️

John Dengis ⚠️

Rokas Brazdžionis

Mateus Duraes

Josh Joseph ⚠️

Torsten Knauf

antischematic

Florian Pabst

Mark Goho

Jan-Willem Baart ⚠️

S. Mumenthaler ⚠️

Andrei Alecu

Daniel Ramírez Barrientos

Mahdi Lazraq ⚠️

Arthur Petrie

Fabien Dehopré

Jamie Vereecken

Christian24

Michal Štrajt

J. Degand

Maksim Popov

MattijsE

Jonas Kuske

Ryan Diehl

Jeevan Mahesha

This project follows the all-contributors specification. Contributions of any kind welcome!

Docs

Read The Docs | Edit the docs

FAQ

I am using Reactive Forms and the jest-dom matcher toHaveFormValues always returns an empty object or there are missing fields. Why?

Only form elements with a name attribute will have their values passed to toHaveFormsValues.

Issues

Looking to contribute? Look for the Good First Issue label.

Bugs

Please file an issue for bugs, missing documentation, or unexpected behavior.

See Bugs

Feature Requests

Please file an issue to suggest new features. Vote on feature requests by adding a . This helps maintainers prioritize what to work on.

See Feature Requests

❓ Questions

For questions related to using the library, please visit a support community instead of filing an issue on GitHub.

  • Discord
  • Stack Overflow

Getting started with GitHub Codespaces

To get started, create a codespace for this repository by clicking this A codespace will open in a web-based version of Visual Studio Code. The dev container is fully configured with software needed for this project.

Note: Dev containers is an open spec which is supported by GitHub Codespaces and other tools.

LICENSE

MIT

Issues· 6 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

TypeScriptangulardom-testing-librarytestingtesting-library

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category前端框架
PricingOpen source

> Related tools

R
React
用于构建用户界面的 JavaScript 库
V
Vue.js
渐进式 JavaScript 框架
N
Next.js
基于 React 的全栈 Web 框架