Coder Social home page Coder Social logo

killmenot / angular-snapshot-testing Goto Github PK

View Code? Open in Web Editor NEW

This project forked from synapse-wireless-labs/angular-snapshot-testing

0.0 2.0 0.0 13 KB

Angular component snapshot testing for Jasmine

License: MIT License

TypeScript 95.57% JavaScript 4.43%

angular-snapshot-testing's Introduction

angular-snapshot-testing

Angular component snapshot testing for Jasmine

How to Use

  1. Install the extension: Via npm:
npm install jasmine-angular-snapshot-testing --save-dev

Via yarn:

yarn add jasmine-angular-snapshot-testing --dev
  1. Initialize the testing environment This extension requries you to run your unit tests on node instead of in a browser. This requires @angular/platform-server:
import { getTestBed } from '@angular/core/testing';
import { ServerTestingModule, platformServerTesting } from '@angular/platform-server/testing';

getTestBed().initTestEnvironment(
  ServerTestingModule,
  platformServerTesting()
);
  1. Configure the extension: After initializing the test environment initialize the snapshot testing extension:
import { initializeSnapshots } from 'jasmine-angular-snapshot-testing';


initializeSnapshots({
  /**
   * This flag will cause tests to fail if a new snapshot shoudl be generated.
   * Generally, you want to set this value to true when running tests on CI
   * and false when writing new unit tests
   */
  failOnSnapshotDiscovery: false,
  /**
   * This is the file extension that will be appended to the end of test
   * files when generating a snapshot file.
   *
   * For example, if this is set to 'snap' and the spec file is called
   * 'table.component.spec.ts' then the generated file will be called
   * 'table.component.spec.ts.snap'
   */
   fileExtension: 'snap',
   /**
    * This flag will cause new snapshots to overwrite existing snapshots.
    * This is useful during development.
    *
    * Be aware that if this is set to 'true' snapshot tests will never fail.
    */
    discardOldSnapshots: false,
});
  1. Use beforeAll/afterAll hooks to load and save snapshots: This must be done in each spec file:
import * as snapshots from 'jasmine-angular-snapshot-testing';

describe('Table Component', () => {
  beforeAll(() => snapshots.load(module));
  afterAll(() => snapshots.save());
});
  1. Generate snapshots: Use the new toMatchSnapshot() matcher to generate snapshots for any object that implements .toJSON(). Note that this module adds a .toJSON() method to component fixtures:
let fixture: ComponentFixture<TableComponent>;

beforeEach(async(() => {
  TestBed.compileComponents()
    .then(() => {
      fixture = TestBed.createComponent(TableComponent);
      fixture.detectChanges();
    });
}));

it('should compile successfully', () => {
  expect(fixture).toMatchSnapshot();
});

Caveats

This module has a number of caveats that restrict the type of components that can be tested with snapshots:

  • Unit tests must be run on node instead of a browser. This is a requirement because this extension requires access to the filesystem

  • Components cannot make use of external stylesheets or templates. This is because platform-server does not implement a ResourceLoader, though one may be able to be written.

angular-snapshot-testing's People

Contributors

dpdotjs avatar mikeryandev avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.