Coder Social home page Coder Social logo

emahnovets / jsdom-to-image Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 1.65 MB

Generate image from JSDOM

License: MIT License

JavaScript 22.95% TypeScript 77.05%
jsdom visual-regression visual-regression-testing testing tests jest jest-snapshots jest-image-snapshot screenshot hacktoberfest

jsdom-to-image's Introduction

JSDOM to image

airbnb-style npm version

Generate image from JSDOM

Main goal of this package is to be used for regression testing in pair with jest-image-snapshot.

Installation

npm install --save-dev jsdom-to-image

Configuration

setGlobalOptions should be called once during tests setup.

Jest example

// jest.config.js

module.exports = {
  setupFilesAfterEnv: [
    '<rootDir>/setup-tests.js',
  ],
};
// setup-tests.js

import { setGlobalOptions } from 'jsdom-to-image';

setGlobalOptions({
  connectOptions: {
    browserWSEndpoint: 'ws://${host}:${port}'
  }
})

Launch configuration

setGlobalOptions({
  launchOptions: {
    ...
  }
})

Connect to already running browser instance

setGlobalOptions({
  connectOptions: {
    browserWSEndpoint: 'ws://${host}:${port}'
  }
})

Writing tests

This package could be used for eny framework that uses jsdom.

@testing-library/react example

import { takeImage } from 'jsdom-to-image';
import { render } from '@testing-library/react';

test('should match image snapshot', async (): Promise<void> => {
  render(
    <button class="btn btn-default" data-testid="test-button" />
  );

  expect(await takeImage({ targetSelector: '[data-testid=test-button]' })).toMatchImageSnapshot();
});

Possible Issues

Due to differences in rendering on different OS's you could face an issue when tests works on your env and failed on CI or other dev env. To fix this issue you could use browserless/chrome docker image:

# docker-compose.yml

version: '3'
services:
  browserless:
    image: browserless/chrome:latest
    container_name: "browserless"
    ports:
      - "9090:3000"
// setup-tests.js

import { setGlobalOptions } from 'jsdom-to-image';

setGlobalOptions({
  connectOptions: {
    browserWSEndpoint: 'ws://localhost:9090'
  }
})

In that case your test run would look like this:

docker-compose up -d
npm test
docker-compose down

jsdom-to-image's People

Contributors

dependabot[bot] avatar emahnovets avatar semantic-release-bot avatar

Stargazers

 avatar

Watchers

 avatar

jsdom-to-image's Issues

main property target is wrong

Describe the bug

I can't use the package, because is marked as not found by my test runner.

To Reproduce

npm add jsdom-to-image

try to import the module as usual

import { setGlobalOptions } from 'jsdom-to-image';

setGlobalOptions({
	connectOptions: {
		browserWSEndpoint: 'ws://localhost:9090',
	},
});

You get

    Cannot find module 'jsdom-to-image' from 'jest.setup.ts'

Expected behavior

should import the module

Additional context

Problem comes from package.json main and types properties

{
  "name": "jsdom-to-image",
  "version": "1.1.0",
  "description": "Generale image from JSDOM",
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
}

They should be instead

{
  "name": "jsdom-to-image",
  "version": "1.1.0",
  "description": "Generale image from JSDOM",
  "main": "dist/src/index.js",
  "types": "dist/src/index.d.ts",
}

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.