Example
You can find more bs-dom-testing-library examples at wyze/bs-dom-testing-library/src/__tests__.
You can find more bs-react-testing-library examples at wyze/bs-react-testing-library/src/__tests__.
React Testing Library
Component_test.re
open Jest;
open Expect;
open ReactTestingLibrary;
test("Component renders", () =>
  <div style=ReactDOMRe.Style.make(~color="rebeccapurple", ())>
    <h1> {ReasonReact.string("Heading")} </h1>
  </div>
  |> render
  |> container
  |> expect
  |> toMatchSnapshot
);
DOM Testing Library
The below examples use
bs-webapi to help
with typings and creating events.
getByText
__tests__/example_test.re
open Jest;
open DomTestingLibrary;
open Expect;
type parser;
[@bs.new]
external domParser : unit => parser = "DOMParser";
[@bs.send.pipe : parser]
external parseFromString : ( string, [@bs.as "text/html"] _) => Dom.element = "";
[@bs.get]
external body : Dom.element => Dom.element = "";
[@bs.get]
external firstChild : Dom.element => Dom.element = "";
let div = domParser()
  |> parseFromString({j|
      <div>
        <b title="greeting">Hello,</b>
        <p data-testid="world"> World!</p>
        <input type="text" placeholder="Enter something" />
        <input type="text" value="Some value" />
        <img src="" alt="Alt text" />
      </div>
    |j})
  |> body
  |> firstChild;
describe("getByText", () => {
  test("works with string matcher", () => {
    let actual = div |> getByText(~matcher=`Str("Hello,"));
    expect(actual) |> toMatchSnapshot;
  });
  test("works with regex matcher", () => {
    let actual = div |> getByText(~matcher=`RegExp([%bs.re "/\\w!/"]));
    expect(actual) |> toMatchSnapshot;
  });
  test("works with function matcher", () => {
    let matcher = ( _text, node ) => (node |> tagName) === "P";
    let actual = div |> getByText(~matcher=`Func(matcher));
    expect(actual) |> toMatchSnapshot;
  });
});
FireEvent
open Jest;
open DomTestingLibrary;
open Expect;
describe("FireEvent", () => {
  test("click works", () => {
    open Webapi.Dom;
    let node = document |> Document.createElement("button");
    let spy = JestJs.inferred_fn();
    let fn = spy |> MockJs.fn;
    let clickHandler = _ => [@bs] fn("clicked!") |> ignore;
    node |> Element.addEventListener("click", clickHandler);
    FireEvent.click(node);
    expect(spy |> MockJs.calls) |> toEqual([|"clicked!"|]);
  });
  test("change works", () => {
    open Webapi.Dom;
    let node = document |> Document.createElement("input");
    let spy = JestJs.inferred_fn();
    let fn = spy |> MockJs.fn;
    let changeHandler = _ => [@bs] fn("changed!") |> ignore;
    let event = Event.makeWithOptions("change", { "target": { "value": "1" } });
    node |> Element.addEventListener("change", changeHandler);
    FireEvent.change(node, event);
    expect(spy |> MockJs.calls) |> toEqual([|"changed!"|]);
  });
});