debugGlassShaderLoader top-level property
How every host, ripple and GlassHost.precache loads a shader: ui.FragmentProgram.fromAsset, which a widget test cannot make fail — the engine reads the asset itself, past the asset channel's mock.
A test that has to see a load fail sets this before anything loads, in a file of its own, since the programs are cached per process; nothing else should set it.
Implementation
@visibleForTesting
Future<ui.FragmentProgram> Function(String asset) debugGlassShaderLoader = ui.FragmentProgram.fromAsset;