2.1. App harness — with_implot_app + with_implot_recording_app, thin ImPlot delegates over imgui_playwright’s with_imgui_app / with_recording_app

The integration-test entry point. with_implot_app(feature_path) $(app) { ... } spawns daslang-live against an ImPlot feature with both the dasImgui and dasImguiImplot modules loaded, runs the block against the live app, then shuts down — panicking on ready-timeout, test-timeout, or non-zero exit so the surrounding [test] fails.

It is a thin delegate over dasImgui’s imgui_playwright::with_imgui_app: the only ImPlot-specific knowledge is loading the implot module alongside dasImgui (a daspkg dependency, so it loads after it) and resolving modules/dasImguiImplot/... feature paths under the implot module root. All the spawn / port / headless / worker-index / ready / shutdown machinery lives once in with_imgui_app. with_implot_recording_app is the same delegate threading APNG capture through with_recording_app for tutorial recordings.

2.1.1. App harness

with_implot_app(feature_path: string; body: block<(app:ImguiApp):void> )

def with_implot_app (feature_path: string; body: block<(app:ImguiApp):void>)

Arguments:
  • feature_path : string

  • body : block<(app: ImguiApp):void>

2.1.1.1. with_implot_recording_app

with_implot_recording_app(feature_path: string; output_apng_basename: string; max_seconds: int; body: block<(app:ImguiApp):void> )

def with_implot_recording_app (feature_path: string; output_apng_basename: string; max_seconds: int; body: block<(app:ImguiApp):void>)

Arguments:
  • feature_path : string

  • output_apng_basename : string

  • max_seconds : int

  • body : block<(app: ImguiApp):void>

with_implot_recording_app(feature_path: string; output_apng_basename: string; max_seconds: int; fps: int; body: block<(app:ImguiApp):void> )