dominator_testing/
element_utilities.rs

1use web_sys::Element;
2use wasm_bindgen::JsCast;
3
4pub fn test_dyn_element_by_id<T, F>(id: &str, tester: F)
5where
6    F: FnOnce(&T),
7    T: JsCast,
8{
9    let cmp = web_sys::window()
10        .unwrap()
11        .document()
12        .unwrap()
13        .get_element_by_id(id)
14        .unwrap_or_else(|| panic!("Element #{} not found", id));
15
16    tester(cmp.dyn_ref::<T>().unwrap_or_else(|| {
17        panic!(
18            "Element #{} is not castable to the requested element type",
19            id
20        )
21    }));
22}
23
24pub fn get_elements_by_class_name(class_name: &str) -> Vec<Element> {
25    let mut out = vec![];
26
27    let elements = web_sys::window()
28        .unwrap()
29        .document()
30        .unwrap()
31        .get_elements_by_class_name(class_name);
32
33    for n in 0..elements.length() {
34        let cmp = elements.item(n).unwrap();
35
36        out.push(cmp)
37    }
38
39    out
40}
41
42pub fn has_class_name(ele: &Element, class_name: &str) -> bool {
43    ele.class_name().contains(class_name)
44}