wgpu/tests/gpu-tests/create_surface_error.rs
2025-03-20 11:35:54 -04:00

31 lines
1.2 KiB
Rust

//! Test that `create_surface_*()` accurately reports those errors we can provoke.
/// This test applies to those cfgs that can create a surface from a canvas, which
/// include WebGL and WebGPU, but *not* Emscripten GLES.
#[cfg(all(target_arch = "wasm32", not(target_os = "emscripten")))]
#[wasm_bindgen_test::wasm_bindgen_test]
fn canvas_get_context_returned_null() {
// Not using the normal testing infrastructure because that goes straight to creating the canvas for us.
let instance = wgpu_test::initialize_instance(
wgpu::Backends::all(),
&wgpu_test::TestParameters::default(),
);
// Create canvas
let canvas = wgpu_test::initialize_html_canvas();
// Using a context id that is not "webgl2" or "webgpu" will render the canvas unusable by wgpu.
canvas.get_context("2d").unwrap();
#[allow(clippy::redundant_clone)] // false positive — can't and shouldn't move out.
let error = instance
.create_surface(wgpu::SurfaceTarget::Canvas(canvas.clone()))
.unwrap_err();
assert!(
error
.to_string()
.contains("canvas.getContext() returned null"),
"{error}"
);
}