# Steep > steep is a Go test harness for terminal programs. It runs a Bubble Tea model or component, or any command on a pseudo-terminal, in an emulated terminal, drives it with keys, text, mouse events, and resizes, and asserts on what it draws, with waits, text and JSON snapshots, and recordings of failures. This is one section of the documentation for steep, reel, and the reel CLI. [The overview](https://getsteep.dev/llms.txt) says which to use. ## Start here - [Introduction](https://getsteep.dev/steep.md): What steep is, what a test looks like, how to install it, and why you would. - [Your first test](https://getsteep.dev/steep/first-test.md): Write a test of a small Bubble Tea program from an empty file, break it on purpose, and read what steep tells you. - [Add steep to an existing project](https://getsteep.dev/steep/existing-project.md): Start with a test that needs no refactoring, then add more only where it pays off. ## Writing tests - [Harnesses](https://getsteep.dev/steep/harnesses.md): Which harness fits what you are testing, what each can do, and how to set one up. - [Keyboard and mouse](https://getsteep.dev/steep/input.md): Press keys, type, paste, click what is on the screen, and drag. - [Terminal](https://getsteep.dev/steep/terminal.md): Resize the terminal, set its colors and clipboard, and read what your program told it. - [Program and messages](https://getsteep.dev/steep/program.md): Send messages, change the model directly, quit, and check the messages your model receives. - [Waits and checks](https://getsteep.dev/steep/checks.md): The three ways to check the screen, how waiting and settling work, and conditions beyond plain text. - [Snapshots](https://getsteep.dev/steep/snapshots.md): Golden files of the screen: which kind to use, what they hold, and how to manage them. ## Recording - [Recording](https://getsteep.dev/steep/recording.md): How recording works, what an export writes and when, and the logo, outro, and stills. - [Export configurator](https://getsteep.dev/steep/configurator.md): Choose your formats and options, and get the command, CI step, or Go code to match. ## When a test fails - [Failures and troubleshooting](https://getsteep.dev/steep/failures.md): Every way a steep test fails, what it prints, and what to do about the usual problems. - [Debugging](https://getsteep.dev/steep/debugging.md): See what a test did: logs, the inspector, marks, messages and source lines, and hooks. - [Running in CI](https://getsteep.dev/steep/ci.md): Run steep tests in CI, keep recordings of failures, and update snapshots. ## Reference - [Environment variables](https://getsteep.dev/steep/environment.md): Every variable steep reads, what it overrides, and how values are parsed. - [How it works](https://getsteep.dev/steep/how-it-works.md): What runs where when a test runs, what happens from start to cleanup, and what a recording holds. ## Optional - [API reference](https://pkg.go.dev/getsteep.dev/steep): every package, type, and function - [Everything](https://getsteep.dev/llms-full.txt): every page of the site, as one file