mirror of
https://github.com/emilk/egui.git
synced 2026-08-31 22:00:03 -04:00
Improve egui_kittest documentation and update CONTRIBUTING.md (#5296)
This should hopefully make it easier for egui contributors and egui_kittest users to understand the snapshot tests * [X] I have followed the instructions in the PR template
This commit is contained in:
@@ -80,6 +80,9 @@ impl Display for SnapshotError {
|
||||
}
|
||||
|
||||
/// Image snapshot test.
|
||||
/// The snapshot will be saved under `tests/snapshots/{name}.png`.
|
||||
/// The new image from the last test run will be saved under `tests/snapshots/{name}.new.png`.
|
||||
/// If new image didn't match the snapshot, a diff image will be saved under `tests/snapshots/{name}.diff.png`.
|
||||
///
|
||||
/// # Errors
|
||||
/// Returns a [`SnapshotError`] if the image does not match the snapshot or if there was an error
|
||||
@@ -170,6 +173,9 @@ fn maybe_update_snapshot(
|
||||
}
|
||||
|
||||
/// Image snapshot test.
|
||||
/// The snapshot will be saved under `tests/snapshots/{name}.png`.
|
||||
/// The new image from the last test run will be saved under `tests/snapshots/{name}.new.png`.
|
||||
/// If new image didn't match the snapshot, a diff image will be saved under `tests/snapshots/{name}.diff.png`.
|
||||
///
|
||||
/// # Panics
|
||||
/// Panics if the image does not match the snapshot or if there was an error reading or writing the
|
||||
@@ -187,6 +193,9 @@ pub fn image_snapshot(current: &image::RgbaImage, name: &str) {
|
||||
#[cfg(feature = "wgpu")]
|
||||
impl Harness<'_> {
|
||||
/// Render a image using a default [`crate::wgpu::TestRenderer`] and compare it to the snapshot.
|
||||
/// The snapshot will be saved under `tests/snapshots/{name}.png`.
|
||||
/// The new image from the last test run will be saved under `tests/snapshots/{name}.new.png`.
|
||||
/// If new image didn't match the snapshot, a diff image will be saved under `tests/snapshots/{name}.diff.png`.
|
||||
///
|
||||
/// # Errors
|
||||
/// Returns a [`SnapshotError`] if the image does not match the snapshot or if there was an error
|
||||
@@ -198,6 +207,9 @@ impl Harness<'_> {
|
||||
}
|
||||
|
||||
/// Render a image using a default [`crate::wgpu::TestRenderer`] and compare it to the snapshot.
|
||||
/// The snapshot will be saved under `tests/snapshots/{name}.png`.
|
||||
/// The new image from the last test run will be saved under `tests/snapshots/{name}.new.png`.
|
||||
/// If new image didn't match the snapshot, a diff image will be saved under `tests/snapshots/{name}.diff.png`.
|
||||
///
|
||||
/// # Panics
|
||||
/// Panics if the image does not match the snapshot or if there was an error reading or writing the
|
||||
|
||||
@@ -6,6 +6,7 @@ use image::RgbaImage;
|
||||
use std::iter::once;
|
||||
use wgpu::Maintain;
|
||||
|
||||
/// Utility to render snapshots from a [`Harness`] using [`egui_wgpu`].
|
||||
pub struct TestRenderer {
|
||||
device: wgpu::Device,
|
||||
queue: wgpu::Queue,
|
||||
@@ -19,6 +20,7 @@ impl Default for TestRenderer {
|
||||
}
|
||||
|
||||
impl TestRenderer {
|
||||
/// Create a new [`TestRenderer`] using a default [`wgpu::Instance`].
|
||||
pub fn new() -> Self {
|
||||
let instance = wgpu::Instance::new(InstanceDescriptor::default());
|
||||
|
||||
@@ -39,6 +41,7 @@ impl TestRenderer {
|
||||
Self::create(device, queue)
|
||||
}
|
||||
|
||||
/// Create a new [`TestRenderer`] using the provided [`wgpu::Device`] and [`wgpu::Queue`].
|
||||
pub fn create(device: wgpu::Device, queue: wgpu::Queue) -> Self {
|
||||
Self {
|
||||
device,
|
||||
@@ -47,13 +50,20 @@ impl TestRenderer {
|
||||
}
|
||||
}
|
||||
|
||||
/// Enable or disable dithering.
|
||||
///
|
||||
/// Disabled by default.
|
||||
#[inline]
|
||||
pub fn with_dithering(mut self, dithering: bool) -> Self {
|
||||
self.dithering = dithering;
|
||||
self
|
||||
}
|
||||
|
||||
/// Render the [`Harness`] and return the resulting image.
|
||||
pub fn render(&mut self, harness: &Harness<'_>) -> RgbaImage {
|
||||
// We need to create a new renderer each time we render, since the renderer stores
|
||||
// textures related to the Harnesses' egui Context.
|
||||
// Calling the renderer from different Harnesses would cause problems if we store the renderer.
|
||||
let mut renderer = egui_wgpu::Renderer::new(
|
||||
&self.device,
|
||||
TextureFormat::Rgba8Unorm,
|
||||
|
||||
Reference in New Issue
Block a user