// Screen snapshot tests mod helpers; use helpers::app_builder::TestAppBuilder; use helpers::snapshot_utils::{render_to_buffer, buffer_to_string}; use helpers::test_data::create_test_chat; use insta::assert_snapshot; use tele_tui::app::AppScreen; use tele_tui::tdlib::client::AuthState; #[test] fn snapshot_loading_screen_default() { let mut app = TestAppBuilder::new() .screen(AppScreen::Loading) .build(); let buffer = render_to_buffer(80, 24, |f| { tele_tui::ui::render(f, &mut app); }); let output = buffer_to_string(&buffer); assert_snapshot!("loading_screen_default", output); } #[test] fn snapshot_loading_screen_with_status() { let mut app = TestAppBuilder::new() .screen(AppScreen::Loading) .status_message("Подключение к Telegram...") .build(); let buffer = render_to_buffer(80, 24, |f| { tele_tui::ui::render(f, &mut app); }); let output = buffer_to_string(&buffer); assert_snapshot!("loading_screen_with_status", output); } #[test] fn snapshot_auth_screen_phone() { let mut app = TestAppBuilder::new() .screen(AppScreen::Auth) .auth_state(AuthState::WaitPhoneNumber) .phone_input("+7") .build(); let buffer = render_to_buffer(80, 24, |f| { tele_tui::ui::render(f, &mut app); }); let output = buffer_to_string(&buffer); assert_snapshot!("auth_screen_phone", output); } #[test] fn snapshot_auth_screen_code() { let mut app = TestAppBuilder::new() .screen(AppScreen::Auth) .auth_state(AuthState::WaitCode) .code_input("1234") .build(); let buffer = render_to_buffer(80, 24, |f| { tele_tui::ui::render(f, &mut app); }); let output = buffer_to_string(&buffer); assert_snapshot!("auth_screen_code", output); } #[test] fn snapshot_auth_screen_password() { let mut app = TestAppBuilder::new() .screen(AppScreen::Auth) .auth_state(AuthState::WaitPassword) .password_input("pass") .build(); let buffer = render_to_buffer(80, 24, |f| { tele_tui::ui::render(f, &mut app); }); let output = buffer_to_string(&buffer); assert_snapshot!("auth_screen_password", output); } #[test] fn snapshot_main_screen_empty() { let mut app = TestAppBuilder::new() .screen(AppScreen::Main) .build(); let buffer = render_to_buffer(80, 24, |f| { tele_tui::ui::render(f, &mut app); }); let output = buffer_to_string(&buffer); assert_snapshot!("main_screen_empty", output); } #[test] fn snapshot_main_screen_terminal_too_small() { let chat = create_test_chat("Mom", 123); let mut app = TestAppBuilder::new() .screen(AppScreen::Main) .with_chat(chat) .build(); // Use smaller terminal size (30x8) - below minimum 40x10 let buffer = render_to_buffer(30, 8, |f| { tele_tui::ui::render(f, &mut app); }); let output = buffer_to_string(&buffer); assert_snapshot!("main_screen_terminal_too_small", output); }