Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
@vtex/test-tools
Advanced tools
Add tests to your VTEX IO app in an instant 🚀
$ yarn add @vtex/test-tools apollo-client apollo-cache-inmemory -D
Add a new script to your react/package.json
:
"test": "vtex-test-tools test"
Add these lines to your .vtexignore
:
react/**/__tests__/**
react/**/__mocks__/**
react/**/__snapshots__/**
react/**/*.test.js
react/**/*.test.ts
react/**/*.test.tsx
Run in your terminal:
$ yarn test
If you're using TypeScript there are a few more steps.
Done! 🎉
Under the hood, we use Jest, so you can pass Jest flags as parameters: read the docs.
react
moduleThe module react
makes it easy to test VTEX IO React apps.
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:
You can also test your custom hooks.
import { renderHook, act } from '@vtex/test-tools/react'
import useCustomHook from "./useCustomHook"
it('counter should be one', async () => {
const { result } = renderHook(() => useCustomHook())
// This waits for the useEffect hook to be triggered and mutate hook state
await act(async () => await Promise.resolve())
expect(result.current).toBe(1)
})
The module uses @react-testing-library/react-hooks
under the hood, to understand the reactHook function you can read its doc
There are few new features added to it:
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()
})
We automatically wrap your component with an Apollo's MockedProvider
. Just import it from @apollo/react-testing
and pass it as the MockedProvider
option.
You can pass props to it using the graphql
option. Example:
import React from 'react'
import { render, flushPromises } from '@vtex/test-tools/react'
import { MockedProvider } from '@apollo/react-testing'
import GraphqlComponent from './GraphqlComponent'
import GET_BOOKS from './getBooks.graphql'
test('should render mock graphql responses', async () => {
jest.useFakeTimers()
const bookMock = {
request: {
query: GET_BOOKS,
},
result: {
data: {
books: [
{
id: 10,
title: 'Hello',
}
]
}
}
}
const { getByText } = render(<GraphqlComponent />, {
graphql: { mocks: [bookMock] },
MockedProvider,
})
expect(getByText(/Loading/)).toBeDefined()
await flushPromises()
jest.runAllTimers()
expect(getByText(/Hello/)).toBeDefined()
})
These are some common use cases that might be helpful to see how it's done:
MIT © VTEX
[2.1.0] - 2019-12-04
@react-testing-library/react-hooks
out of the box. You can import renderHook
now.FAQs
VTEX IO testing tools
The npm package @vtex/test-tools receives a total of 11,234 weekly downloads. As such, @vtex/test-tools popularity was classified as popular.
We found that @vtex/test-tools demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
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.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.