gridland
API Reference

@gridland/testing

Testing utilities API reference

createScreen

Creates a virtual screen for testing TUI components.

import { createScreen } from "@gridland/testing"

const screen = await createScreen(element, options?)

Options:

OptionTypeDefaultDescription
colsnumber80Number of columns
rowsnumber24Number of rows

Returns: Screen

Screen

The screen object returned by createScreen.

screen.getByText(text)

Find rendered text in the buffer.

  • Returns: { row: number, col: number, text: string } or null

screen.getAllByText(text)

Find all occurrences of text in the buffer.

  • Returns: Array<{ row: number, col: number, text: string }>

screen.sendKeys(keys)

Send key events to the focused component.

screen.toString()

Render the buffer to a plain text string for snapshot testing.

screen.debug()

Print the buffer to the console with ANSI colors.

screen.unmount()

Clean up the screen and reconciler.

keys

Key event helpers for sendKeys.

import { keys } from "@gridland/testing"
HelperDescription
keys.type(str)Type characters
keys.enterEnter key
keys.escapeEscape key
keys.tabTab key
keys.backspaceBackspace key
keys.upUp arrow
keys.downDown arrow
keys.leftLeft arrow
keys.rightRight arrow

waitFor

Wait for a condition to be met, polling at intervals.

import { waitFor } from "@gridland/testing"

await waitFor(() => {
  expect(screen.getByText("Done")).toBeTruthy()
}, { timeout: 5000, interval: 50 })

Options:

OptionTypeDefaultDescription
timeoutnumber1000Max wait time in ms
intervalnumber50Poll interval in ms