# Suite-based organization for Jasmine ![Latest Release](https://img.shields.io/npm/v/@beanbag/jasmine-suites) ![License](https://img.shields.io/badge/license-MIT-green.svg) ![Review Board](https://img.shields.io/badge/Review%20Board-d0e6ff?label=reviewed%20with) **GitHub:** https://github.com/beanbaginc/jasmine-suites **NPM:** https://www.npmjs.com/package/@beanbag/jasmine-suites **Status:** Maintained / released / used in production This extends [Jasmine](http://pivotal.github.io/jasmine/) 4.6+ by making it easy to create nested, reusable namespaces for test suites. Typically, a large codebase using Jasmine will split tests into multiple files, each with a `describe()` call wrapping the file's tests. This works fine for small sets of tests, but on a larger codebase, it leaves much to be desired. There's no way to organize tests across files under a common suite, or to limit the test run to those tests. Namespaced suites solve this by taking a namespaced path (something like `projectname/mysuite/component`) and automatically generating test suites for each component of the namespace. It will also merge any tests in that refer to the same parts of the namespace from other files. ## Usage [](https://github.com/beanbaginc/jasmine-suites#usage) Switching to namespaced suites is really easy. Instead of doing this: ```js describe('projectname/mysuite/component', function() { ... }); ``` or: ```js describe('projectname', function() { describe('mysuite', function() { describe('component', function() { ... }); }); }); ``` You can instead do: ```js suite('projectname/mysuite/component', function() { ... }); ``` You can reuse any part of that namespace in as many files as you like. Their tests will be combined into the suites. For example, say you have the following: ```js // tests1.js suite('projectname/models/MyModel', function() { ... }); suite('projectname/views/MyView', function() { ... }); // tests2.js suite('projectname/views/AnotherView', function() { ... }); ``` Jasmine will end up laying out the tests like: ``` projectname models views MyView AnotherView ```