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

    ink-testing-library
    TypeScript 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

    3,033

    Version

    2.1.0

    License

    MIT

    Unpacked Size

    9.8 kB

    Total Files

    6

    Last publish

    Collaborators

    • avatar