//! Общий headless-рендер: произвольный Slint-компонент → непустой PNG (План 6 P6.1). use shturman_render::render_to_png; slint::slint! { export component Probe inherits Window { width: 64px; height: 48px; background: #101418; Rectangle { background: #ffffff; width: 20px; height: 20px; } } } #[test] fn renders_component_to_nonempty_png() { let dir = tempfile::tempdir().unwrap(); let path = dir.path().join("probe.png"); render_to_png(|| Ok(Probe::new()?), 64, 48, &path).expect("render"); let dec = png::Decoder::new(std::fs::File::open(&path).unwrap()); let mut r = dec.read_info().unwrap(); assert_eq!((r.info().width, r.info().height), (64, 48)); let mut buf = vec![0u8; r.output_buffer_size()]; let info = r.next_frame(&mut buf).unwrap(); let px = &buf[..info.buffer_size()]; assert!(px.iter().any(|&b| b != px[0]), "кадр одноцветный"); }