Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@vtex/test-tools

Package Overview
Dependencies
Maintainers
45
Versions
52
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@vtex/test-tools

VTEX IO testing tools

  • 0.1.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
8K
decreased by-46.78%
Maintainers
45
Weekly downloads
 
Created
Source

VTEX Test Tools

Tools for testing JavaScript, TypeScript, Node and React applications

Install

$ yarn add @vtex/test-tools @babel/runtime -D

Usage

Add a new script to your package.json:

  "test": "vtex-test-tools test"

Run in your terminal:

$ yarn test

Under the hood, we use Jest, so you can pass Jest flags as parameters: read the docs.

API

react module

The module react makes it easy to test VTEX IO React apps.

Example
import React from 'react'
import { render } from '@vtex/test-tools/react'
import HelloWorld from './HelloWorld'

test('should render the Hello!', () => {
  const { getByText } = render(<HelloWorld />)

  const element = getByText(/Hello!/)

  expect(element).toBeDefined()
})

This module uses react-testing-library under the hood, so most of its API it's the same: read the docs.

There are few new features added to it:

Messages

We will automatically wrap your component with an IntlProvider with your app's messages/en-US.json messages.

You can change the default locale being used adding a config to your package.json. Example:

  "vtexTestTools": {
    "defaultLocale": "pt-BR"
  }

If you want to change the locale just in a test, you may pass the locale option. Example:

import React from 'react'
import { render } from '@vtex/test-tools/react'
import HelloWorld from './HelloWorld'

test('should render the example translated to portuguese', () => {
  const { getByText } = render(
    <HelloWorld />,
    { locale: 'pt' }
  )

  const element = getByText(/Olá!/)

  expect(element).toBeDefined()
})

GraphQL

We automatically wrap your component with an Apollo's MockProvider.

You can pass props to it using the graphql option. Example:

import React from 'react'
import { render } from '@vtex/test-tools/react'
import GraphqlComponent from './GraphqlComponent'
import GET_BOOKS from './getBooks.graphql'

test('should render mock graphql responses', async () => {
  const bookMock = {
    request: {
      query: GET_BOOKS,
    },
    result: {
      data: {
        books: [
          {
            id: 10,
            title: 'Hello',
          }
        ]
      }
    }
  }

  const { getByText } = render(<GraphqlComponent />, {
    graphql: { mocks: [bookMock] }
  })

  expect(getByText(/Loading/)).toBeDefined()

  await new Promise(resolve => setTimeout(resolve, 0))

  expect(getByText(/Hello/)).toBeDefined()
})

Examples

These are some common use cases that might be helpful to see how it's done:

Testing a React component

Testing a TypeScript React component

Testing a component using CSS Modules

Testing a component using GraphQL

Testing a component using React Hooks

Testing a component translating in another locale

License

MIT © VTEX

Keywords

FAQs

Package last updated on 12 Mar 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc