Module Bonsai_web_test.HandleSource

include module type of struct include Bonsai_test.Handle end
Sourcetype ('result, 'incoming) t
Sourceval show : (_, _) t -> unit

show prints out the result of the component as specified by the Result_spec that was passed into Handle.create.

Sourceval show_diff : ?location_style:Patdiff_kernel.Format.Location_style.t -> ?diff_context:int -> (_, _) t -> unit

show_diff will print the diff of the view between now and the last time that show or show_diff was called.

diff_context can be used to adjust the number of unchanged lines before and after the diffed content. Defaults to 16

Sourceval recompute_view : (_, _) t -> unit

recompute_view is like show, but it doesn't print anything. Calling recompute_view between invocations of show_diff does not affect the diff the gets shown.

Sourceval recompute_view_until_stable : ?max_computes:int -> (_, _) t -> unit

This function calls recompute_view until either max_computes is reached (defaults to 100), or there are no more after-display lifecycle events for processing.

This can be useful when using e.g. Bonsai.Edge.on_change, which might otherwise delay their effects until the next frame.

Sourceval store_view : (_, _) t -> unit

store_view is like show except that instead of printing the view to stdout, it only stores the current view for use with show_diff. This can be useful if you want to print the diff of "before->after" without being required to print the entirety of "before".

Sourceval last_result : ('result, _) t -> 'result
Sourceval do_actions : (_, 'incoming) t -> 'incoming list -> unit
Sourceval clock : (_, _) t -> Bonsai.Time_source.t
Sourceval advance_clock_by : (_, _) t -> Core.Time_ns.Span.t -> unit
Sourceval advance_clock : to_:Core.Time_ns.t -> (_, _) t -> unit
Sourceval show_model : (_, _) t -> unit
  • alert rampantly_nondeterministic This function exposes Bonsai internals that may change without warning
Sourceval result_incr : ('r, 'i) t -> 'r Ui_incr.t
Sourceval lifecycle_incr : (_, _) t -> Ui_incr.Packed.t
Sourceval action_input_incr : (_, _) t -> Ui_incr.Packed.t
Sourceval has_after_display_events : ('result, 'incoming) t -> bool
Sourceval print_actions : (_, _) t -> unit
Sourceval print_stabilizations : (_, _) t -> unit
Sourceval print_stabilization_tracker_stats : (_, _) t -> unit
Sourceval create : (module Bonsai_web_test__.Proc.Result_spec.S with type incoming = 'b and type t = 'a) -> ?rpc_implementations: Async_rpc_kernel.Rpc.Connection.t Async_rpc_kernel.Rpc.Implementation.t list -> ?connectors: (Bonsai_web.Rpc_effect.Where_to_connect.t -> Bonsai_web.Rpc_effect.Connector.t) -> ?start_time:Core.Time_ns.t -> ?optimize:bool -> 'a Bonsai_web.Computation.t -> ('a, 'b) t
Sourceval flush_async_and_bonsai : ?max_iterations:int -> ?silence_between_frames:bool -> ('a, 'b) t -> unit Async_kernel.Deferred.t

Runs recompute_view and Async_kernel_scheduler.yield_until_no_jobs_remain in a loop until nothing remains to be done. This is a good sledgehammer function to use if you want to wait until all the effects of a user-action have completed.

By default, this function prints "------ between bonsai frame ------" in between each iteration to demonstrate when side-effects occur, and how long it took for a stable state to be reached. This line is just extra documentation; it is not necessarily a sign that something is wrong (unless, of course, the behavior of the thing you're trying to test shouldn't result in an extra frame). These lines can be removed by passing ~silence_between_frames:true in case your tests take a non-deterministic number of iterations to stabilize.

max_iterations controls how many loop iterations are allowed before the function aborts with an exception, in case the default of 100 is too low. However, you should rarely, if ever need this parameter.

Sourceval click_on : ?extra_event_fields:(string * Js_of_ocaml.Js.Unsafe.any) list -> ?shift_key_down:bool -> ?alt_key_down:bool -> ?ctrl_key_down:bool -> ('a, 'b) t -> get_vdom:('a -> Bonsai_web.Vdom.Node.t) -> selector:string -> unit
Sourceval submit_form : ?extra_event_fields:(string * Js_of_ocaml.Js.Unsafe.any) list -> ('a, 'b) t -> get_vdom:('a -> Bonsai_web.Vdom.Node.t) -> selector:string -> unit
Sourceval set_checkbox : ?extra_event_fields:(string * Js_of_ocaml.Js.Unsafe.any) list -> ?shift_key_down:bool -> ?alt_key_down:bool -> ?ctrl_key_down:bool -> ('a, 'b) t -> get_vdom:('a -> Bonsai_web.Vdom.Node.t) -> selector:string -> checked:bool -> unit
Sourceval input_text : ?extra_event_fields:(string * Js_of_ocaml.Js.Unsafe.any) list -> ('a, 'b) t -> get_vdom:('a -> Bonsai_web.Vdom.Node.t) -> selector:string -> text:string -> unit
Sourceval keydown : ?extra_event_fields:(string * Js_of_ocaml.Js.Unsafe.any) list -> ?shift_key_down:bool -> ?alt_key_down:bool -> ?ctrl_key_down:bool -> ('a, 'b) t -> get_vdom:('a -> Bonsai_web.Vdom.Node.t) -> selector:string -> key:Js_of_ocaml.Dom_html.Keyboard_code.t -> unit
Sourceval change : ?extra_event_fields:(string * Js_of_ocaml.Js.Unsafe.any) list -> ('a, 'b) t -> get_vdom:('a -> Bonsai_web.Vdom.Node.t) -> selector:string -> value:string -> unit
Sourceval focus : ?extra_event_fields:(string * Js_of_ocaml.Js.Unsafe.any) list -> ('a, 'b) t -> get_vdom:('a -> Bonsai_web.Vdom.Node.t) -> selector:string -> unit
Sourceval blur : ?extra_event_fields:(string * Js_of_ocaml.Js.Unsafe.any) list -> ?related_target:string -> ('a, 'b) t -> get_vdom:('a -> Bonsai_web.Vdom.Node.t) -> selector:string -> unit
Sourceval mousemove : ?extra_event_fields:(string * Js_of_ocaml.Js.Unsafe.any) list -> ('a, 'b) t -> get_vdom:('a -> Bonsai_web.Vdom.Node.t) -> selector:string -> unit
Sourceval mouseenter : ?extra_event_fields:(string * Js_of_ocaml.Js.Unsafe.any) list -> ('a, 'b) t -> get_vdom:('a -> Bonsai_web.Vdom.Node.t) -> selector:string -> unit
Sourceval wheel : ?extra_event_fields:(string * Js_of_ocaml.Js.Unsafe.any) list -> ('a, 'b) t -> get_vdom:('a -> Bonsai_web.Vdom.Node.t) -> selector:string -> delta_y:float -> unit
Sourceval trigger_hook : ('a, 'b) t -> get_vdom:('a -> Bonsai_web.Vdom.Node.t) -> selector:string -> name:string -> ('c -> unit Bonsai_web.Vdom.Effect.t) Core.Type_equal.Id.t -> 'c -> unit
Sourceval trigger_hook_via : ('a, 'b) t -> get_vdom:('a -> Bonsai_web.Vdom.Node.t) -> selector:string -> name:string -> 't Core.Type_equal.Id.t -> f:('t -> 'c -> unit Bonsai_web.Vdom.Effect.t) -> 'c -> unit
Sourceval get_hook_value : ('a, 'b) t -> get_vdom:('a -> Bonsai_web.Vdom.Node.t) -> selector:string -> name:string -> 'c Core.Type_equal.Id.t -> 'c
Sourcemodule Bulk_size_tracker : sig ... end
Sourcemodule Position_tracker : sig ... end
Sourcemodule Drag_and_drop : sig ... end