-
-
Notifications
You must be signed in to change notification settings - Fork 0
9. Testing
RAprogramm edited this page Nov 4, 2025
·
1 revision
Test your Telegram Mini App without deploying.
Enable mock feature for testing:
[dependencies]
telegram-webapp-sdk = { version = "0.3", features = ["mock"] }#[cfg(feature = "mock")]
use telegram_webapp_sdk::mock::{init_mock, MockConfig, MockUser};
#[cfg(feature = "mock")]
fn setup_test_env() {
init_mock(MockConfig {
user: Some(MockUser {
id: 12345,
first_name: "Test".into(),
last_name: Some("User".into()),
username: Some("testuser".into()),
language_code: Some("en".into()),
is_premium: Some(true),
..Default::default()
}),
platform: "ios",
version: "7.0",
..Default::default()
});
}#[cfg(test)]
mod tests {
use wasm_bindgen_test::*;
use telegram_webapp_sdk::TelegramWebApp;
wasm_bindgen_test_configure!(run_in_browser);
#[wasm_bindgen_test]
fn test_user_data() {
init_mock(MockConfig::default());
let webapp = TelegramWebApp::new();
let user = webapp.init_data_unsafe().user;
assert!(user.is_some());
}
}Test complete user flows:
#[wasm_bindgen_test]
async fn test_checkout_flow() {
init_mock(MockConfig::default());
// 1. Add item to cart
cloud_storage::set_item("cart", r#"{"quantity": 2}"#, |success| {
assert!(success);
}).await;
// 2. Read cart
cloud_storage::get_item("cart", |value| {
assert_eq!(value, Some(r#"{"quantity": 2}"#.to_string()));
}).await;
// 3. Checkout
let webapp = TelegramWebApp::new();
webapp.show_confirm("Checkout?", |confirmed| {
assert!(confirmed);
});
}trunk serve --openChanges to Rust code trigger automatic recompilation and browser refresh.
#[cfg(debug_assertions)]
use telegram_webapp_sdk::logger;
#[cfg(debug_assertions)]
logger::log("Debug: user logged in");# .github/workflows/test.yml
name: Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- run: cargo test
- run: cargo test --target wasm32-unknown-unknown→ Home