bitwarden_test/play/mod.rs
1//! Play test framework for E2E testing
2//!
3//! This module provides a scene-based testing framework with automatic cleanup.
4//!
5//! # Overview
6//!
7//! The Play framework enables E2E testing by:
8//! - Creating test data via a seeder API
9//! - Providing test isolation through unique play IDs
10//! - Automatic cleanup when the test closure completes
11//!
12//! # Example
13//!
14//! ```ignore
15//! use bitwarden_test::play::{play_test, Play, SingleUserArgs, SingleUserScene};
16//!
17//! #[play_test]
18//! async fn test_user_login(play: Play) {
19//! let args = SingleUserArgs {
20//! email: "[email protected]".to_string(),
21//! ..Default::default()
22//! };
23//! let scene = play.scene::<SingleUserScene>(&args).await.unwrap();
24//!
25//! // Access result data directly
26//! let user_id = &scene.result().user_id;
27//! let api_key = &scene.result().api_key;
28//!
29//! // Use mangled values for test isolation
30//! let email = scene.get_mangled("[email protected]");
31//!
32//! // Cleanup happens automatically
33//! }
34//! ```
35
36mod config;
37mod error;
38mod http_client;
39#[allow(clippy::module_inception)]
40mod play;
41mod query;
42mod scene;
43mod scene_template;
44
45pub mod scenes;
46
47pub use bitwarden_test_macro::play_test;
48pub use config::PlayConfig;
49pub use error::{PlayError, PlayResult};
50pub(crate) use http_client::PlayHttpClient;
51pub use play::{Play, PlayBuilder};
52pub use query::Query;
53pub(crate) use query::QueryRequest;
54pub use scene::Scene;
55pub use scene_template::SceneTemplate;
56pub(crate) use scene_template::{CreateSceneRequest, CreateSceneResponse};
57pub use scenes::{SingleUserArgs, SingleUserResult, SingleUserScene};