{"library":"mocha-tags-ultra","title":"Mocha Tags for Test Filtering","description":"mocha-tags-ultra is a utility for the Mocha test framework that allows developers to associate tags with their test suites and individual tests. It enables runtime filtering of tests based on these tags, supporting 'is:' and 'not:' criteria, as well as logical AND ('+') for more granular control. This is particularly useful for segmenting tests (e.g., 'unit', 'integration', 'network') and running only relevant subsets during development or CI/CD pipelines. The current stable version is 1.0.3. The package integrates by wrapping Mocha's `describe` and `it` functions, providing a fluent API for tag assignment. Key differentiators include its simple CLI integration, programmatic filtering options, and clear indication of skipped tests as 'pending' in Mocha's output.","language":"javascript","status":"active","last_verified":"Sun Apr 19","install":{"commands":["npm install mocha-tags-ultra"],"cli":{"name":"mocha-tags-ultra","version":null}},"imports":["const tags = require('mocha-tags-ultra');","const tags = require('mocha-tags-ultra');\nconst myFilter = new tags.Filter('is:unit');","const tags = require('mocha-tags-ultra');\ntags('unit').describe('My Unit Test Suite', () => { /* ... */ });","const tags = require('mocha-tags-ultra');\ntags('fast').it('should run quickly', () => { /* ... */ });"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"const tags = require('mocha-tags-ultra');\nconst assert = require('assert');\n\n// Simulate an external library like moment for programmatic filtering\nconst moment = () => ({\n  hours: () => new Date().getHours()\n});\n\n// Programmatic filter example: Only run trading-hours tests during business hours\nif (moment().hours() < 8 || moment().hours() > 18) {\n  tags.filter.remove('not:unit'); // Example of modifying existing filter\n  tags.filter.add('not:trading-hours');\n}\n\n// Log the active filter for debugging\nconsole.log('Test filter: ', tags.filter.toString());\n\ntags('network', 'slow')\n  .describe('Network Operations', () => {\n    tags('integration').it('should fetch data from an API', () => {\n      assert.ok(true, 'This test runs if network and integration tags match filters');\n    });\n  });\n\ntags('unit', 'fast')\n  .it('should perform a quick calculation', () => {\n    assert.strictEqual(1 + 1, 2, 'This is a fast unit test');\n  });\n\ntags('trading-hours').it(\n  'should execute a trade during market hours', \n  () => {\n    assert.ok(moment().hours() >= 8 && moment().hours() <= 18, 'This test only runs during market hours');\n  }\n);\n\n// Example of how to run this:\n// mocha --require <path_to_this_file> --tags \"is:unit not:slow\"\n// or mocha --require <path_to_this_file> --tags \"is:network+integration\"\n","lang":"javascript","description":"This example demonstrates how to set up tagged `describe` and `it` blocks, including programmatic filter modification based on time, and how to debug the active filter.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}