//! Shared helpers for frontend UX integration tests use std::fs; use std::panic::{catch_unwind, AssertUnwindSafe}; /// Cleanup test user data JSON file for a given email pub fn cleanup_test_user_data(user_email: &str) { let encoded_email = user_email.replace("@", "_at_").replace(".", "_"); let file_path = format!("user_data/{}.json", encoded_email); if std::path::Path::new(&file_path).exists() { let _ = fs::remove_file(&file_path); } } /// Run a named step, catching panics to allow the test to continue and collect failures pub fn run_step(name: &str, f: F, failures: &mut Vec) { println!("🔧 {}", name); match catch_unwind(AssertUnwindSafe(f)) { Ok(_) => println!(" ✅ {} - OK", name), Err(err) => { let msg = if let Some(s) = err.downcast_ref::<&str>() { s.to_string() } else if let Some(s) = err.downcast_ref::() { s.clone() } else { "unknown panic".to_string() }; println!(" ❌ {} - FAILED: {}", name, msg); failures.push(format!("{}: {}", name, msg)); } } }