init projectmycelium
This commit is contained in:
115
tests/tests_archive/ux_suite/environment/mod.rs
Normal file
115
tests/tests_archive/ux_suite/environment/mod.rs
Normal file
@@ -0,0 +1,115 @@
|
||||
//! Test Environment Management
|
||||
//!
|
||||
//! Handles isolated test environment setup including:
|
||||
//! - Test server instance
|
||||
//! - Browser automation
|
||||
//! - Test data management
|
||||
//! - API client for validation
|
||||
|
||||
pub mod browser_manager;
|
||||
pub mod test_server;
|
||||
pub mod test_data_manager;
|
||||
pub mod api_client;
|
||||
|
||||
pub use browser_manager::*;
|
||||
pub use test_server::*;
|
||||
pub use test_data_manager::*;
|
||||
pub use api_client::*;
|
||||
|
||||
use std::path::PathBuf;
|
||||
use tokio::time::Duration;
|
||||
|
||||
/// Configuration for UX test environment
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct UXTestConfig {
|
||||
pub test_port: u16,
|
||||
pub headless: bool,
|
||||
pub timeout_seconds: u64,
|
||||
pub screenshot_on_failure: bool,
|
||||
pub browser_type: BrowserType,
|
||||
pub test_data_dir: PathBuf,
|
||||
pub screenshot_dir: PathBuf,
|
||||
}
|
||||
|
||||
impl Default for UXTestConfig {
|
||||
fn default() -> Self {
|
||||
let test_mode = std::env::var("UX_TEST_MODE").unwrap_or_else(|_| "dev".to_string());
|
||||
|
||||
match test_mode.as_str() {
|
||||
"ci" => Self {
|
||||
test_port: 8081,
|
||||
headless: true,
|
||||
timeout_seconds: 30,
|
||||
screenshot_on_failure: true,
|
||||
browser_type: BrowserType::Chrome,
|
||||
test_data_dir: PathBuf::from("user_data_test"),
|
||||
screenshot_dir: PathBuf::from("tests/ux_suite/reports/screenshots"),
|
||||
},
|
||||
"dev" => Self {
|
||||
test_port: 8081,
|
||||
headless: false,
|
||||
timeout_seconds: 60,
|
||||
screenshot_on_failure: true,
|
||||
browser_type: BrowserType::Chrome,
|
||||
test_data_dir: PathBuf::from("user_data_test"),
|
||||
screenshot_dir: PathBuf::from("tests/ux_suite/reports/screenshots"),
|
||||
},
|
||||
_ => Self {
|
||||
test_port: 8081,
|
||||
headless: false,
|
||||
timeout_seconds: 60,
|
||||
screenshot_on_failure: true,
|
||||
browser_type: BrowserType::Chrome,
|
||||
test_data_dir: PathBuf::from("user_data_test"),
|
||||
screenshot_dir: PathBuf::from("tests/ux_suite/reports/screenshots"),
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Complete UX test environment
|
||||
pub struct UXTestEnvironment {
|
||||
pub config: UXTestConfig,
|
||||
pub browser: BrowserManager,
|
||||
pub server: TestServer,
|
||||
pub data_manager: TestDataManager,
|
||||
pub api_client: APITestClient,
|
||||
}
|
||||
|
||||
impl UXTestEnvironment {
|
||||
/// Initialize a new test environment
|
||||
pub async fn new() -> Result<Self, Box<dyn std::error::Error>> {
|
||||
let config = UXTestConfig::default();
|
||||
|
||||
// Create directories
|
||||
std::fs::create_dir_all(&config.test_data_dir)?;
|
||||
std::fs::create_dir_all(&config.screenshot_dir)?;
|
||||
|
||||
// Initialize components
|
||||
let data_manager = TestDataManager::new(&config.test_data_dir)?;
|
||||
let server = TestServer::start(config.test_port).await?;
|
||||
let browser = BrowserManager::new(&config).await?;
|
||||
let api_client = APITestClient::new(config.test_port);
|
||||
|
||||
Ok(Self {
|
||||
config,
|
||||
browser,
|
||||
server,
|
||||
data_manager,
|
||||
api_client,
|
||||
})
|
||||
}
|
||||
|
||||
/// Get a UX test helper for this environment
|
||||
pub fn ux_helper(&self) -> UXTestHelper {
|
||||
UXTestHelper::new(self)
|
||||
}
|
||||
|
||||
/// Clean up test environment
|
||||
pub async fn cleanup(&mut self) -> Result<(), Box<dyn std::error::Error>> {
|
||||
self.browser.quit().await?;
|
||||
self.server.stop().await?;
|
||||
self.data_manager.cleanup()?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user