Skip to content

Commit 6415a0b

Browse files
authored
Use web-sys-ec instead of sleeps in end to end tests (#322)
1 parent efcc9f6 commit 6415a0b

25 files changed

+106
-77
lines changed

Cargo.lock

+15-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,4 @@ fluent-templates = { version = "0.13", default-features = false, features = [
4242
] }
4343
leptos-fluent-csr-minimal-example = { path = "./examples/csr-minimal" }
4444
leptos-fluent-csr-complete-example = { path = "./examples/csr-complete" }
45+
web-sys-ec = "0.1.0"

tests/end2end/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ wasm-bindgen.workspace = true
1919
wasm-bindgen-test.workspace = true
2020
leptos = "0.8"
2121
gloo-utils.workspace = true
22+
web-sys-ec.workspace = true
2223

2324
[package.metadata.cargo-machete]
2425
ignored = ["fluent-templates"]

tests/end2end/helpers/Cargo.toml

-1
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,4 @@ web-sys = { version = "0.3", features = [
1111
"Storage"
1212
] }
1313
wasm-bindgen.workspace = true
14-
gloo-timers = { version = "0.3", features = ["futures"] }
1514
gloo-utils.workspace = true

tests/end2end/helpers/src/lib.rs

-5
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,6 @@ macro_rules! mount {
2727
};
2828
}
2929

30-
/// Wait a moment for the DOM to update.
31-
pub fn sleep_a_moment() -> gloo_timers::future::TimeoutFuture {
32-
gloo_timers::future::sleep(std::time::Duration::from_millis(30))
33-
}
34-
3530
pub fn element_text(selector: &str) -> String {
3631
gloo_utils::document()
3732
.query_selector(selector)

tests/end2end/set-language-to-cookie/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ fluent-templates.workspace = true
1111
leptos-fluent-csr-minimal-example.workspace = true
1212
wasm-bindgen-test.workspace = true
1313
leptos = "0.8"
14+
web-sys-ec.workspace = true
1415

1516
[package.metadata.cargo-machete]
1617
ignored = ["fluent-templates"]

tests/end2end/set-language-to-cookie/tests/set_language_to_cookie.rs

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
use end2end_helpers::{element_text, input_by_id, mount, sleep_a_moment};
1+
use end2end_helpers::{element_text, input_by_id, mount};
22
use leptos::prelude::*;
33
use leptos_fluent::{cookie, leptos_fluent};
44
use leptos_fluent_csr_minimal_example::{LanguageSelector, TRANSLATIONS};
55
use wasm_bindgen_test::*;
6+
use web_sys_ec::{By, Ec, Wait};
67

78
wasm_bindgen_test_configure!(run_in_browser);
89

@@ -30,7 +31,7 @@ pub fn App() -> impl IntoView {
3031
}
3132

3233
#[wasm_bindgen_test]
33-
async fn test_set_language_to_cookie() {
34+
pub async fn test_set_language_to_cookie() {
3435
let en = move || input_by_id("en");
3536
let es = move || input_by_id("es");
3637

@@ -40,8 +41,9 @@ async fn test_set_language_to_cookie() {
4041
assert_eq!(element_text("p"), "Select a language:");
4142

4243
es().click();
43-
sleep_a_moment().await;
44+
Wait(1)
45+
.until(("p", Ec::InnerTextContains("Selecciona un idioma:")))
46+
.await;
4447
assert!(es().checked());
45-
assert_eq!(element_text("p"), "Selecciona un idioma:");
4648
assert_eq!(cookie::get(COOKIE), Some("es".to_string()));
4749
}

tests/end2end/set-language-to-localstorage/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ fluent-templates.workspace = true
1111
leptos-fluent-csr-minimal-example.workspace = true
1212
wasm-bindgen-test.workspace = true
1313
leptos = "0.8"
14+
web-sys-ec.workspace = true
1415

1516
[package.metadata.cargo-machete]
1617
ignored = ["fluent-templates"]

tests/end2end/set-language-to-localstorage/tests/set_language_to_localstorage.rs

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
use end2end_helpers::{element_text, input_by_id, mount, sleep_a_moment};
1+
use end2end_helpers::{element_text, input_by_id, mount};
22
use leptos::prelude::*;
33
use leptos_fluent::{leptos_fluent, localstorage};
44
use leptos_fluent_csr_minimal_example::{LanguageSelector, TRANSLATIONS};
55
use wasm_bindgen_test::*;
6+
use web_sys_ec::{By, Ec, Wait};
67

78
wasm_bindgen_test_configure!(run_in_browser);
89

@@ -30,7 +31,7 @@ fn App() -> impl IntoView {
3031
}
3132

3233
#[wasm_bindgen_test]
33-
async fn test_set_language_to_localstorage() {
34+
pub async fn test_set_language_to_localstorage() {
3435
let en = move || input_by_id("en");
3536
let es = move || input_by_id("es");
3637

@@ -40,8 +41,9 @@ async fn test_set_language_to_localstorage() {
4041
assert_eq!(element_text("p"), "Select a language:");
4142

4243
es().click();
43-
sleep_a_moment().await;
44+
Wait(1)
45+
.until(("p", Ec::InnerTextContains("Selecciona un idioma:")))
46+
.await;
4447
assert!(es().checked());
45-
assert_eq!(element_text("p"), "Selecciona un idioma:");
4648
assert_eq!(localstorage::get(LOCALSTORAGE_KEY), Some("es".to_string()));
4749
}

tests/end2end/set-language-to-sessionstorage/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ fluent-templates.workspace = true
1111
leptos-fluent-csr-minimal-example.workspace = true
1212
wasm-bindgen-test.workspace = true
1313
leptos = "0.8"
14+
web-sys-ec.workspace = true
1415

1516
[package.metadata.cargo-machete]
1617
ignored = ["fluent-templates"]

tests/end2end/set-language-to-sessionstorage/tests/set_language_to_localstorage.rs

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
use end2end_helpers::{element_text, input_by_id, mount, sleep_a_moment};
1+
use end2end_helpers::{element_text, input_by_id, mount};
22
use leptos::prelude::*;
33
use leptos_fluent::{leptos_fluent, sessionstorage};
44
use leptos_fluent_csr_minimal_example::{LanguageSelector, TRANSLATIONS};
55
use wasm_bindgen_test::*;
6+
use web_sys_ec::{By, Ec, Wait};
67

78
wasm_bindgen_test_configure!(run_in_browser);
89

@@ -30,7 +31,7 @@ fn App() -> impl IntoView {
3031
}
3132

3233
#[wasm_bindgen_test]
33-
async fn test_set_language_to_sessionstorage() {
34+
pub async fn test_set_language_to_sessionstorage() {
3435
let en = move || input_by_id("en");
3536
let es = move || input_by_id("es");
3637

@@ -40,9 +41,10 @@ async fn test_set_language_to_sessionstorage() {
4041
assert_eq!(element_text("p"), "Select a language:");
4142

4243
es().click();
43-
sleep_a_moment().await;
44+
Wait(1)
45+
.until(("p", Ec::InnerTextContains("Selecciona un idioma:")))
46+
.await;
4447
assert!(es().checked());
45-
assert_eq!(element_text("p"), "Selecciona un idioma:");
4648
assert_eq!(
4749
sessionstorage::get(SESSIONSTORAGE_KEY),
4850
Some("es".to_string())

tests/end2end/tests/context_outside_reactive_ownership_tree.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ fn Child() -> impl IntoView {
6363
}
6464

6565
#[wasm_bindgen_test]
66-
async fn context_outside_reactive_ownership_tree() {
66+
pub async fn context_outside_reactive_ownership_tree() {
6767
let fails_div = move || input_by_id("fails");
6868
let success_div = move || input_by_id("success");
6969

tests/end2end/tests/cookie.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ fn App() -> impl IntoView {
3030
}
3131

3232
#[wasm_bindgen_test]
33-
async fn test_cookie() {
33+
pub async fn test_cookie() {
3434
let es = move || input_by_id("es");
3535
let en = move || input_by_id("en");
3636

tests/end2end/tests/cookie_to_localstorage.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ fn App() -> impl IntoView {
3232
}
3333

3434
#[wasm_bindgen_test]
35-
async fn test_cookie_to_localstorage() {
35+
pub async fn test_cookie_to_localstorage() {
3636
let es = move || input_by_id("es");
3737
let en = move || input_by_id("en");
3838

tests/end2end/tests/csr_complete.rs

+30-27
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
use end2end_helpers::{element_text, input_by_id, mount, sleep_a_moment};
1+
use end2end_helpers::{element_text, input_by_id, mount};
22
use gloo_utils::document_element;
33
use leptos::prelude::*;
44
use leptos_fluent::localstorage;
55
use leptos_fluent_csr_complete_example::App;
66
use wasm_bindgen_test::*;
7+
use web_sys_ec::{By, Ec, Wait};
78

89
wasm_bindgen_test_configure!(run_in_browser);
910

1011
#[wasm_bindgen_test]
11-
async fn csr_complete_example() {
12+
pub async fn csr_complete_example() {
1213
localstorage::delete("language");
1314

1415
mount!(App);
@@ -17,56 +18,58 @@ async fn csr_complete_example() {
1718

1819
// translations working
1920
en().click();
20-
sleep_a_moment().await;
21-
assert_eq!(element_text("p"), "Select a language:");
21+
Wait(1)
22+
.until(("p", Ec::InnerTextContains("Select a language:")))
23+
.await;
2224
es().click();
23-
sleep_a_moment().await;
25+
Wait(1)
26+
.until(("p", Ec::InnerTextContains("Selecciona un idioma:")))
27+
.await;
2428
assert!(es().checked());
2529
assert!(!en().checked());
26-
assert_eq!(element_text("p"), "Selecciona un idioma:");
2730
en().click();
28-
sleep_a_moment().await;
31+
Wait(1)
32+
.until(("p", Ec::InnerTextContains("Select a language:")))
33+
.await;
2934
assert!(en().checked());
3035
assert_eq!(element_text("p"), "Select a language:");
3136
assert!(!es().checked());
3237

3338
// sync_html_tag_lang
3439
es().click();
35-
sleep_a_moment().await;
40+
Wait(1)
41+
.until(("html", Ec::AttributeValueIs("lang", "es")))
42+
.await;
3643
assert!(es().checked());
37-
assert_eq!(
38-
document_element().get_attribute("lang"),
39-
Some("es".to_string())
40-
);
4144
en().click();
42-
sleep_a_moment().await;
43-
assert_eq!(
44-
document_element().get_attribute("lang"),
45-
Some("en".to_string())
46-
);
45+
Wait(1)
46+
.until(("html", Ec::AttributeValueIs("lang", "en")))
47+
.await;
4748

4849
// sync_html_tag_dir
4950
assert_eq!(
5051
document_element().get_attribute("dir"),
5152
Some("ltr".to_string())
5253
);
5354
es().click();
54-
sleep_a_moment().await;
55-
assert_eq!(
56-
document_element().get_attribute("dir"),
57-
Some("auto".to_string())
58-
);
55+
Wait(1)
56+
.until(("html", Ec::AttributeValueIs("dir", "auto")))
57+
.await;
5958
en().click();
60-
sleep_a_moment().await;
59+
Wait(1)
60+
.until(("html", Ec::AttributeValueIs("dir", "auto")))
61+
.await;
6162

6263
// set_language_to_localstorage
6364
localstorage::delete("language");
6465
assert_eq!(localstorage::get("language"), None);
6566
es().click();
66-
sleep_a_moment().await;
67-
assert_eq!(localstorage::get("language"), Some("es".to_string()));
67+
Wait(1)
68+
.until(Ec::LocalStorageAttributeValueIs("language", "es"))
69+
.await;
6870
en().click();
69-
sleep_a_moment().await;
70-
assert_eq!(localstorage::get("language"), Some("en".to_string()));
71+
Wait(1)
72+
.until(Ec::LocalStorageAttributeValueIs("language", "en"))
73+
.await;
7174
localstorage::delete("language");
7275
}

0 commit comments

Comments
 (0)