npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

ngx-feature-flags-testing

v1.2.1

Published

<p align="center"> <img width="20%" height="20%" src="./logo.svg"> </p>

Readme

MIT commitizen PRs styled with prettier All Contributors ngneat spectator

Testing should be easy

ngx-feature-flags-testing is a package to simplify writting tests when you use ngx-feature-flags. It offers you the ability to define directly feature flags in the import section of your TestBed.

Features

  • ✅ Import all parts of ngx-feature-flags without additional configuration.
  • ✅ Configure single feature flag during import
  • ✅ Configure multiple feature flags during import
  • ✅ Edit state during runtime with set or toggle

Table of Contents

Installation

NPM

npm install ngx-feature-flags-testing --save-dev

Yarn

yarn add ngx-feature-flags-testing --dev

Usage

The NgxFeatureFlagsTestingModule class can provide all of the capabilities of the ngx-feature-flags NgxFeatureFlagsModule (directives, pipes,and services) and easily be configured with feature flags for your test cases.

The module can easily be imported into your test cases:

import { NgxFeatureFlagsTestingModule } from 'ngx-feature-flags-testing';

Using without feature flags

TestBed.configureTestingModule({
  imports: [NgxFeatureFlagsTestingModule],
});

Using with one feature flag

/// With feature disabled
TestBed.configureTestingModule({
  imports: [NgxFeatureFlagsTestingModule.withFeatureFlag('featureA')],
});
// With feature enabled
TestBed.configureTestingModule({
  imports: [NgxFeatureFlagsTestingModule.withFeatureFlag('featureA', true)],
});

Using with multiple feature flags

TestBed.configureTestingModule({
  imports: [
    NgxFeatureFlagsTestingModule.withFeatureFlags(
      new Map([
        ['featureA', true],
        ['featureB', false],
      ])
    ),
  ],
});

Using with Spectator

import { createComponentFactory, Spectator } from '@ngneat/spectator/jest';
import { NgxFeatureFlagsTestingModule } from '../../lib/ngx-feature-flags-testing.module';
import { DirectiveTestsComponent } from './directive-tests.component';

describe('Import without configuration', () => {
  let spectator: Spectator<DirectiveTestsComponent>;
  const createComponent = createComponentFactory({
    imports: [NgxFeatureFlagsTestingModule],
    component: DirectiveTestsComponent,
  });

  beforeEach(() => (spectator = createComponent()));
  it('should create', () => {
    expect(spectator.component).toBeTruthy();
  });

  it('should display "FeatureB is disabled', () => {
    expect(spectator.query('p')).toHaveText('FeatureB is disabled');
  });
});

describe('Import with flag configuration enabled', () => {
  let spectator: Spectator<DirectiveTestsComponent>;
  const createComponent = createComponentFactory({
    imports: [NgxFeatureFlagsTestingModule.withFeatureFlag('featureB', true)],
    component: DirectiveTestsComponent,
  });

  beforeEach(() => (spectator = createComponent()));
  it('should create', () => {
    expect(spectator.component).toBeTruthy();
  });

  it('should display "FeatureB is enabled', () => {
    expect(spectator.query('p')).toHaveText('FeatureB is enabled');
  });
});

describe('Import with flag configuration disabled', () => {
  let spectator: Spectator<DirectiveTestsComponent>;
  const createComponent = createComponentFactory({
    imports: [NgxFeatureFlagsTestingModule.withFeatureFlag('featureB', false)],
    component: DirectiveTestsComponent,
  });

  beforeEach(() => (spectator = createComponent()));
  it('should create', () => {
    expect(spectator.component).toBeTruthy();
  });

  it('should display "FeatureB is disabled', () => {
    expect(spectator.query('p')).toHaveText('FeatureB is disabled');
  });
});

Set a specific feature flag

beforeEach(() => {
    TestBed.configureTestingModule({imports: [NgxFeatureFlagsTestingModule]});
    configure = TestBed.get(NgxFeatureFlagsConfigurationService);
    service = TestBed.get(NgxFeatureFlagsService);
  });

  it('should disable feature', () => {
    // Enable a specific feature
    configure.setFeatureFlag('feature', true);
    expect(service.featureOn('feature')).toBeTrue();
    //disable a specific feature
    configure.setFeatureFlag('feature', false);
    expect(service.featureOn('feature')).toBeFalse();
    // Toggle the state of a specific feature
    configure.toggleFeatureFlag('feature');
    expect(service.featureOn('feature')).toBeTrue());
  });

FAQ

Contributors ✨

Thanks goes to these wonderful people (emoji key):

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