Skip to content

Snapshots

Curtaincall can serialize the terminal screen as a box-drawn string for snapshot testing.

Basic Usage

def test_table_output(terminal):
    term = terminal("python my_app.py table", rows=10, cols=40)
    expect(term.get_by_text("Results")).to_be_visible()
    snapshot = term.to_snapshot()

The snapshot looks like:

+----------------------------------------+
|$ python my_app.py table                |
|+----------+-------+                    |
|| Name     | Score |                    |
|+----------+-------+                    |
|| Alice    |    95 |                    |
|+----------+-------+                    |
|Results                                 |
|                                        |
|                                        |
+----------------------------------------+

With Syrupy

Pair to_snapshot() with syrupy for automatic snapshot management:

def test_table_output(terminal, snapshot):
    term = terminal("python my_app.py table", rows=10, cols=40)
    expect(term.get_by_text("Results")).to_be_visible()
    assert term.to_snapshot() == snapshot

Update snapshots with pytest --snapshot-update.