dominator_testing/
element_utilities.rs1use 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}