@@ -5,6 +5,9 @@ use helix_core::Position;
55use helix_view::graphics::{CursorKind, Rect};
66
77use crossterm::event::Event;
8+
9+#[cfg(feature = "integration")]
10+use tui::backend::TestBackend;
811use tui::buffer::Buffer as Surface;
912
1013pub type Callback = Box<dyn FnOnce(&mut Compositor, &mut Context)>;
@@ -64,10 +67,20 @@ pub trait Component: Any + AnyComponent {
6467}
6568
6669use anyhow::Context as AnyhowContext;
70+use tui::backend::Backend;
71+
72+#[cfg(not(feature = "integration"))]
73+use tui::backend::CrosstermBackend;
74+
75+#[cfg(not(feature = "integration"))]
6776use std::io::stdout;
68−use tui::backend::{Backend, CrosstermBackend};
77+
78+#[cfg(not(feature = "integration"))]
6979type Terminal = tui::terminal::Terminal<CrosstermBackend<std::io::Stdout>>;
7080
81+#[cfg(feature = "integration")]
82+type Terminal = tui::terminal::Terminal<TestBackend>;
83+
7184pub struct Compositor {
7285 layers: Vec<Box<dyn Component>>,
7386 terminal: Terminal,
@@ -77,7 +90,12 @@ pub struct Compositor {
7790
7891impl Compositor {
7992 pub fn new() -> anyhow::Result<Self> {
93+ #[cfg(not(feature = "integration"))]
8094 let backend = CrosstermBackend::new(stdout());
95+
96+ #[cfg(feature = "integration")]
97+ let backend = TestBackend::new(120, 150);
98+
8199 let terminal = Terminal::new(backend).context("build terminal")?;
82100 Ok(Self {
83101 layers: Vec::new(),