Have ideas to improve npm?Join in the discussion! »

ink-testing-libraryTypeScript icon, indicating that this package has built-in type declarations

2.1.0 • Public • Published

ink-testing-library test

Utilities for testing Ink apps

Install

$ npm install --save-dev ink-testing-library

Usage

import React from 'react';
import {Text} from 'ink';
import {render} from 'ink-testing-library';
 
const Counter = ({count}) => <Text>Count: {count}</Text>;
 
const {lastFrame, rerender} = render(<Counter count={0}/>);
lastFrame() === 'Count: 0'; //=> true
 
rerender(<Counter count={1}/>);
lastFrame() === 'Count: 1'; //=> true

API

render(tree)

tree

Type: ReactElement

React component to render.

render(<MyApp/>);

This function returns an object, which contains the following methods and properties.

lastFrame()

Type: function

Shortcut to stdout.lastFrame.

frames

Type: array

Shortcut to stdout.frames.

rerender(tree)

Type: function

tree

Type: ReactElement

Rerender root component with different props or replace with another component.

const {rerender} = render(<OldApp/>);
rerender(<NewApp/>);

unmount()

Type: function

Unmount current component.

const {unmount} = render(<Test/>);
unmount();

stdin

Type: object

write()

Type: function

Write data to current component's stdin stream.

import {useInput, Text} from 'ink';
 
const Test = () => {
    useInput(input => {
        console.log(input);
        //=> 'hello'
    });
 
    return …;
};
 
const {stdin} = render(<Test/>);
stdin.write('hello');

stdout

Type: object

lastFrame()

Type: function

Return the last rendered frame (output) from stdout stream.

const Test = () => <Text>Hello</Text>;
 
const {stdout} = render(<Test/>);
stdout.lastFrame(); //=> 'Hello'
frames

Type: array

Array of all rendered frames, where the last frame is also the last item in that array.

const Counter = ({count}) => <Text>Count: {count}</Text>;
 
const {stdout, rerender} = render(<Counter count={0}/>);
rerender(<Counter count={1}/>);
 
console.log(stdout.frames); //=> ['Count: 0', 'Count: 1']

stderr

Type: object

lastFrame()

Type: function

Same as lastFrame in stdout, but for stderr stream.

frames

Type: array

Same as frames in stdout, but for stderr stream.

Keywords

Install

npm i ink-testing-library

DownloadsWeekly Downloads

1,843

Version

2.1.0

License

MIT

Unpacked Size

9.8 kB

Total Files

6

Last publish

Collaborators

  • avatar