mirror of
https://github.com/emilk/egui.git
synced 2026-08-30 05:10:03 -04:00
Add Harness::spawn_eframe_app (#8120)
This lets you start up the test app from within the test itself, which can be very useful when you have a specific test scenario set up that you need to debug. ### Related * Previous attempt: https://github.com/emilk/egui/pull/5418 ### macOS On macOS, you may only run UIs on the main loop, so you need a few additional steps. Not ideal, but works! ```diff diff --git a/crates/egui_demo_app/Cargo.toml b/crates/egui_demo_app/Cargo.toml index f9a153268..4e0cc14ee 100644 --- a/crates/egui_demo_app/Cargo.toml +++ b/crates/egui_demo_app/Cargo.toml @@ -84,3 +84,7 @@ web-sys.workspace = true [dev-dependencies] egui_kittest = { workspace = true, features = ["eframe", "snapshot", "wgpu"] } + +[[test]] +name = "test_demo_app" +harness = false diff --git a/crates/egui_demo_app/tests/test_demo_app.rs b/crates/egui_demo_app/tests/test_demo_app.rs index e083c8455..7ad9ed516 100644 --- a/crates/egui_demo_app/tests/test_demo_app.rs +++ b/crates/egui_demo_app/tests/test_demo_app.rs @@ -4,7 +4,10 @@ use egui_demo_app::{Anchor, WrapApp}; use egui_kittest::SnapshotResults; use egui_kittest::kittest::Queryable as _; -#[test] +fn main() { + test_demo_app(); +} + fn test_demo_app() { let mut harness = egui_kittest::Harness::builder() .with_size(Vec2::new(900.0, 600.0)) @@ -73,5 +76,8 @@ fn test_demo_app() { harness.run_steps(4); results.add(harness.try_snapshot(anchor.to_string())); + + harness.spawn_eframe_app(); + break; } } ```
This commit is contained in:
@@ -399,6 +399,7 @@ fn run_and_exit(event_loop: EventLoop<UserEvent>, winit_app: impl WinitApp) -> R
|
||||
pub fn run_glow(
|
||||
app_name: &str,
|
||||
mut native_options: epi::NativeOptions,
|
||||
egui_ctx: Option<egui::Context>,
|
||||
app_creator: epi::AppCreator<'_>,
|
||||
) -> Result {
|
||||
use super::glow_integration::GlowWinitApp;
|
||||
@@ -406,13 +407,15 @@ pub fn run_glow(
|
||||
#[cfg(not(target_os = "ios"))]
|
||||
if native_options.run_and_return {
|
||||
return with_event_loop(native_options, |event_loop, native_options| {
|
||||
let glow_eframe = GlowWinitApp::new(event_loop, app_name, native_options, app_creator);
|
||||
let glow_eframe =
|
||||
GlowWinitApp::new(event_loop, app_name, native_options, egui_ctx, app_creator);
|
||||
run_and_return(event_loop, glow_eframe)
|
||||
})?;
|
||||
}
|
||||
|
||||
let event_loop = create_event_loop(&mut native_options)?;
|
||||
let glow_eframe = GlowWinitApp::new(&event_loop, app_name, native_options, app_creator);
|
||||
let glow_eframe =
|
||||
GlowWinitApp::new(&event_loop, app_name, native_options, egui_ctx, app_creator);
|
||||
run_and_exit(event_loop, glow_eframe)
|
||||
}
|
||||
|
||||
@@ -425,7 +428,7 @@ pub fn create_glow<'a>(
|
||||
) -> impl ApplicationHandler<UserEvent> + 'a {
|
||||
use super::glow_integration::GlowWinitApp;
|
||||
|
||||
let glow_eframe = GlowWinitApp::new(event_loop, app_name, native_options, app_creator);
|
||||
let glow_eframe = GlowWinitApp::new(event_loop, app_name, native_options, None, app_creator);
|
||||
WinitAppWrapper::new(glow_eframe, true)
|
||||
}
|
||||
|
||||
@@ -435,6 +438,7 @@ pub fn create_glow<'a>(
|
||||
pub fn run_wgpu(
|
||||
app_name: &str,
|
||||
mut native_options: epi::NativeOptions,
|
||||
egui_ctx: Option<egui::Context>,
|
||||
app_creator: epi::AppCreator<'_>,
|
||||
) -> Result {
|
||||
use super::wgpu_integration::WgpuWinitApp;
|
||||
@@ -442,13 +446,15 @@ pub fn run_wgpu(
|
||||
#[cfg(not(target_os = "ios"))]
|
||||
if native_options.run_and_return {
|
||||
return with_event_loop(native_options, |event_loop, native_options| {
|
||||
let wgpu_eframe = WgpuWinitApp::new(event_loop, app_name, native_options, app_creator);
|
||||
let wgpu_eframe =
|
||||
WgpuWinitApp::new(event_loop, app_name, native_options, egui_ctx, app_creator);
|
||||
run_and_return(event_loop, wgpu_eframe)
|
||||
})?;
|
||||
}
|
||||
|
||||
let event_loop = create_event_loop(&mut native_options)?;
|
||||
let wgpu_eframe = WgpuWinitApp::new(&event_loop, app_name, native_options, app_creator);
|
||||
let wgpu_eframe =
|
||||
WgpuWinitApp::new(&event_loop, app_name, native_options, egui_ctx, app_creator);
|
||||
run_and_exit(event_loop, wgpu_eframe)
|
||||
}
|
||||
|
||||
@@ -461,7 +467,7 @@ pub fn create_wgpu<'a>(
|
||||
) -> impl ApplicationHandler<UserEvent> + 'a {
|
||||
use super::wgpu_integration::WgpuWinitApp;
|
||||
|
||||
let wgpu_eframe = WgpuWinitApp::new(event_loop, app_name, native_options, app_creator);
|
||||
let wgpu_eframe = WgpuWinitApp::new(event_loop, app_name, native_options, None, app_creator);
|
||||
WinitAppWrapper::new(wgpu_eframe, true)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user