PhoenixTestJsdom.FireEvent (PhoenixTestJsdom v0.1.2)

Copy Markdown View Source

Fires DOM events on elements inside a JSDom-mounted LiveView, mirroring dom-testing-library's fireEvent.<eventName> API.

Event names are extracted at compile time directly from the installed @testing-library/dom package (via a short Node invocation), so the list stays in sync automatically with whichever version is in priv/node_modules.

Usage

import Phoenix.LiveViewTest, only: [element: 2, element: 3]
alias PhoenixTestJsdom.FireEvent

view
|> FireEvent.mouse_down(element(view, "button#menu"))
|> FireEvent.key_down(element(view, "input"), %{key: "Enter", code: "Enter"})
|> FireEvent.change(element(view, "input[name=email]"), %{target: %{value: "a@b.com"}})
|> PhoenixTestJsdom.render()

The third argument merges on top of the event's defaultInit. The special key :target (a map) is applied as element property assignments before dispatch, which is how RTL's change(el, { target: { value: "x" } }) works.

All functions return the view for pipeability. Use PhoenixTestJsdom.render/1 afterwards to see the updated HTML.

For custom or non-standard events, use the generic fire/4:

FireEvent.fire(view, element(view, "#my-el"), "my-custom-event", %{detail: 42})

Attribution

Event names and defaults are taken from dom-testing-library (MIT License, Copyright (c) 2018 Kent C. Dodds).

Summary

Functions

Fires an arbitrary named DOM event on the resolved element.

Functions

abort(view, element, properties \\ %{})

animation_end(view, element, properties \\ %{})

animation_iteration(view, element, properties \\ %{})

animation_start(view, element, properties \\ %{})

blur(view, element, properties \\ %{})

can_play(view, element, properties \\ %{})

can_play_through(view, element, properties \\ %{})

change(view, element, properties \\ %{})

click(view, element, properties \\ %{})

composition_end(view, element, properties \\ %{})

composition_start(view, element, properties \\ %{})

composition_update(view, element, properties \\ %{})

context_menu(view, element, properties \\ %{})

copy(view, element, properties \\ %{})

cut(view, element, properties \\ %{})

dbl_click(view, element, properties \\ %{})

double_click(view, element, properties \\ %{})

drag(view, element, properties \\ %{})

drag_end(view, element, properties \\ %{})

drag_enter(view, element, properties \\ %{})

drag_exit(view, element, properties \\ %{})

drag_leave(view, element, properties \\ %{})

drag_over(view, element, properties \\ %{})

drag_start(view, element, properties \\ %{})

drop(view, element, properties \\ %{})

duration_change(view, element, properties \\ %{})

emptied(view, element, properties \\ %{})

encrypted(view, element, properties \\ %{})

ended(view, element, properties \\ %{})

error(view, element, properties \\ %{})

fire(view, element, event_name, properties \\ %{})

Fires an arbitrary named DOM event on the resolved element.

Useful for custom events or any event not in dom-testing-library's event map.

focus(view, element, properties \\ %{})

focus_in(view, element, properties \\ %{})

focus_out(view, element, properties \\ %{})

got_pointer_capture(view, element, properties \\ %{})

input(view, element, properties \\ %{})

invalid(view, element, properties \\ %{})

key_down(view, element, properties \\ %{})

key_press(view, element, properties \\ %{})

key_up(view, element, properties \\ %{})

load(view, element, properties \\ %{})

load_start(view, element, properties \\ %{})

loaded_data(view, element, properties \\ %{})

loaded_metadata(view, element, properties \\ %{})

lost_pointer_capture(view, element, properties \\ %{})

mouse_down(view, element, properties \\ %{})

mouse_enter(view, element, properties \\ %{})

mouse_leave(view, element, properties \\ %{})

mouse_move(view, element, properties \\ %{})

mouse_out(view, element, properties \\ %{})

mouse_over(view, element, properties \\ %{})

mouse_up(view, element, properties \\ %{})

offline(view, element, properties \\ %{})

online(view, element, properties \\ %{})

page_hide(view, element, properties \\ %{})

page_show(view, element, properties \\ %{})

paste(view, element, properties \\ %{})

pause(view, element, properties \\ %{})

play(view, element, properties \\ %{})

playing(view, element, properties \\ %{})

pointer_cancel(view, element, properties \\ %{})

pointer_down(view, element, properties \\ %{})

pointer_enter(view, element, properties \\ %{})

pointer_leave(view, element, properties \\ %{})

pointer_move(view, element, properties \\ %{})

pointer_out(view, element, properties \\ %{})

pointer_over(view, element, properties \\ %{})

pointer_up(view, element, properties \\ %{})

pop_state(view, element, properties \\ %{})

progress(view, element, properties \\ %{})

rate_change(view, element, properties \\ %{})

reset(view, element, properties \\ %{})

resize(view, element, properties \\ %{})

scroll(view, element, properties \\ %{})

seeked(view, element, properties \\ %{})

seeking(view, element, properties \\ %{})

select(view, element, properties \\ %{})

stalled(view, element, properties \\ %{})

submit(view, element, properties \\ %{})

suspend(view, element, properties \\ %{})

time_update(view, element, properties \\ %{})

touch_cancel(view, element, properties \\ %{})

touch_end(view, element, properties \\ %{})

touch_move(view, element, properties \\ %{})

touch_start(view, element, properties \\ %{})

transition_cancel(view, element, properties \\ %{})

transition_end(view, element, properties \\ %{})

transition_run(view, element, properties \\ %{})

transition_start(view, element, properties \\ %{})

volume_change(view, element, properties \\ %{})

waiting(view, element, properties \\ %{})

wheel(view, element, properties \\ %{})