About credits test: clear textures_delta, drive the real dialog tabs; ROADMAP progress-log row for #843

This commit is contained in:
MarekSpodBiedry
2026-10-18 18:39:06 +02:00
parent 0298201b2c
commit 445e7c6b55
2 changed files with 35 additions and 2 deletions
+1
View File
@@ -131,6 +131,7 @@ app's JSON control channel (`deckcraft --control PORT`).
| Date | What landed |
|---|---|
| 2026-10-18 | About: Contributors and Models get their own fixed-size block below the tab row, so the tab row is no longer squeezed into the credits and the tabs keep answering (#843) |
| 2026-10-17 | Opening a file caps absurd effect sizes (glow, soft edges, shadows, reflections, on shapes, text and table text) at what Format Shape allows: a glow of 10^18 pt in a .pptx made rendering ask for 34 GB and abort |
| 2026-10-17 | Opening a .deckcraft file whose shapes repeat an id gives the repeats fresh ids (groups, layouts and masters too), so the deck validates and edits by id find one shape |
| 2026-10-17 | Edit Points: turning a shape into a freeform is one undo step, so Undo brings the original shape back (it used to stay a freeform) |
+34 -2
View File
@@ -3699,7 +3699,38 @@ mod paragraph_dialog_tests;
#[cfg(test)]
mod about_credits_tests {
use super::{CREDITS_SIZE, credits_block};
use egui_kittest::Harness;
use egui_kittest::kittest::Queryable;
use super::{CREDITS_SIZE, Dialog, credits_block};
use crate::{Services, SlideApp};
fn tab_of(h: &Harness<'_, SlideApp>) -> String {
let d = h.state().dialog.as_ref().expect("the About dialog is open");
d.fields.get("tab").cloned().unwrap_or_else(|| "about".into())
}
/// The reported symptom (#843): in the real dialog the tabs stopped answering once Contributors
/// or Models was open. Click through Contributors, Models and back to About.
#[test]
fn about_dialog_tabs_keep_responding() {
let mut app = SlideApp::new(deckcraft_engine::Session::with_new(), Services::default());
app.dialog = Some(Dialog::new("about"));
let mut h = Harness::builder().with_size(egui::vec2(1440.0, 900.0)).with_step_dt(1.0 / 60.0).build_ui_state(
|ui, app: &mut SlideApp| {
app.logic(ui.ctx());
app.ui(ui);
},
app,
);
h.run_steps(4);
assert_eq!(tab_of(&h), "about");
for label in ["Contributors", "Models", "About", "Models", "Contributors"] {
h.get_by_label(label).click();
h.run_steps(3);
assert_eq!(tab_of(&h), label.to_lowercase(), "clicking {label} switches the tab");
}
}
#[test]
fn credits_get_their_own_block_below_the_tab_row() {
@@ -3708,11 +3739,12 @@ mod about_credits_tests {
let mut tabs = egui::Rect::NOTHING;
let mut block = egui::Rect::NOTHING;
let mut whole = egui::Rect::NOTHING;
let _ = ctx.run_ui(egui::RawInput::default(), |ui| {
let mut out = ctx.run_ui(egui::RawInput::default(), |ui| {
tabs = ui.label("About").rect;
block = credits_block(ui, models);
whole = ui.min_rect();
});
out.textures_delta.clear();
assert_eq!(block.size(), CREDITS_SIZE, "models={models}");
assert!(block.min.y >= tabs.max.y, "the credits start below the tab row (models={models})");
assert!(whole.max.y >= block.max.y, "the dialog grows to hold the block (models={models})");