Skip to content

testing-library/svelte-testing-library

Repository files navigation

Svelte Testing Library

chipmunk

Simple and complete Svelte testing utilities that encourage good testing practices.

Read The Docs | Edit the docs

Build Status Code Coverage version downloads MIT License

All Contributors PRs Welcome Code of Conduct Discord

Watch on GitHub Star on GitHub Tweet


Table of Contents

The Problem

You want to write tests for your Svelte components so that they avoid including implementation details, and are maintainable in the long run.

This Solution

The svelte-testing-library is a very lightweight solution for testing Svelte components. It provides light utility functions on top of svelte and dom-testing-library, 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.

Installation

This module is distributed via npm which is bundled with node and should be installed as one of your project's devDependencies:

npm install --save-dev @testing-library/svelte

This library has peerDependencies listings for svelte >= 3.

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

Setup

We recommend using @testing-library/svelte with Vitest as your test runner. To get started, add the svelteTesting plugin to your Vite or Vitest config.

  // vite.config.js
  import { svelte } from '@sveltejs/vite-plugin-svelte'
+ import { svelteTesting } from '@testing-library/svelte/vite'

  export default defineConfig({
    plugins: [
      svelte(),
+     svelteTesting(),
    ]
  });

See the setup docs for more detailed setup instructions, including for other test runners like Jest.

Svelte 5 support

If you are riding the bleeding edge of Svelte 5, you'll need to either import from @testing-library/svelte/svelte5 instead of @testing-library/svelte, or add an alias to your vite.config.js:

export default defineConfig({
  plugins: [svelte(), svelteTesting()],
  test: {
    alias: {
      '@testing-library/svelte': '@testing-library/svelte/svelte5',
    },
  },
})

Docs

See the docs over at the Testing Library website.

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.

Contributors

Thanks goes to these people (emoji key):

Ben Monro
Ben Monro

๐Ÿ’ป โš ๏ธ ๐Ÿค” ๐Ÿ“–
Emil Tholin
Emil Tholin

๐Ÿ’ป โš ๏ธ ๐Ÿค”
Eduardo Rabelo
Eduardo Rabelo

โš ๏ธ ๐Ÿ’ป ๐Ÿ“– ๐Ÿ’ก
Tim Deschryver
Tim Deschryver

๐Ÿ“–
Emanuele
Emanuele

๐Ÿ’ป โš ๏ธ ๐Ÿ“–
pngwn
pngwn

๐Ÿ’ป โš ๏ธ
Sebastian Silbermann
Sebastian Silbermann

๐Ÿ’ป
Rahim Alwer
Rahim Alwer

๐Ÿ’ป ๐Ÿ“– โš ๏ธ ๐Ÿ‘€
Bob
Bob

๐Ÿ› ๐Ÿ’ป
Ron Merkin
Ron Merkin

๐Ÿ’ป
Ben McCann
Ben McCann

โš ๏ธ
John Bowser
John Bowser

๐Ÿ’ป โš ๏ธ
Yoann
Yoann

๐Ÿ’ป
Yanick Champoux
Yanick Champoux

๐Ÿ’ป
Michael Cousins
Michael Cousins

๐Ÿ’ป

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

LICENSE

MIT