test(techdemo): shorten generated resource paths
Import scoped generated handles and slots in techdemo tests so assertions read as local resources instead of fully-qualified generated paths. req: component/003 req: dx/006
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
use slhx_techdemo::ui;
|
||||
use slhx_techdemo::ui::control_center::{handles, slots};
|
||||
use slhx_techdemo::ui::issue_card::handles as card_handles;
|
||||
use std::process::{Child, Command, Stdio};
|
||||
use std::time::{Duration, Instant};
|
||||
use thirtyfour::prelude::*;
|
||||
@@ -56,11 +57,11 @@ async fn browser_drives_typed_product_end_to_end() -> WebDriverResult<()> {
|
||||
wait_for_text(&driver, "#probe-island [data-island-readout]", "probe live").await?;
|
||||
|
||||
driver
|
||||
.find(By::Css(&handle_selector(ui::control_center::handles::simulate_push)))
|
||||
.find(By::Css(&handle_selector(handles::simulate_push)))
|
||||
.await?
|
||||
.click()
|
||||
.await?;
|
||||
wait_for_text(&driver, &slot_selector(ui::control_center::slots::notice), "Push simulated").await?;
|
||||
wait_for_text(&driver, &slot_selector(slots::notice), "Push simulated").await?;
|
||||
wait_for_text(&driver, "[data-island-readout]", "activity rows").await?;
|
||||
|
||||
driver.find(By::Css("button.primary-action")).await?.click().await?;
|
||||
@@ -69,41 +70,41 @@ async fn browser_drives_typed_product_end_to_end() -> WebDriverResult<()> {
|
||||
|
||||
drag_card_to_lane(&driver, 2, "product").await?;
|
||||
wait_for_text(&driver, ".lane[data-lane='product'] .work-card[data-key='2']", "Shipped").await?;
|
||||
wait_for_text(&driver, &slot_selector(ui::control_center::slots::notice), "Drag-and-drop move persisted").await?;
|
||||
wait_for_text(&driver, &slot_selector(slots::notice), "Drag-and-drop move persisted").await?;
|
||||
|
||||
driver
|
||||
.find(By::Css(&card_button_selector(ui::issue_card::handles::spotlight_work, 2)))
|
||||
.find(By::Css(&card_button_selector(card_handles::spotlight_work, 2)))
|
||||
.await?
|
||||
.click()
|
||||
.await?;
|
||||
wait_for_text(
|
||||
&driver,
|
||||
&slot_selector(ui::control_center::slots::inspector),
|
||||
&slot_selector(slots::inspector),
|
||||
"Stream typed presence · lane=Product · stage=Shipped · impact=7",
|
||||
)
|
||||
.await?;
|
||||
|
||||
driver
|
||||
.find(By::Css(&card_button_selector(ui::issue_card::handles::advance_work, 3)))
|
||||
.find(By::Css(&card_button_selector(card_handles::advance_work, 3)))
|
||||
.await?
|
||||
.click()
|
||||
.await?;
|
||||
wait_for_text(&driver, ".lane[data-lane='product'] .work-card[data-key='3']", "Active").await?;
|
||||
|
||||
driver
|
||||
.find(By::Css(&handle_selector(ui::control_center::handles::simulate_push)))
|
||||
.find(By::Css(&handle_selector(handles::simulate_push)))
|
||||
.await?
|
||||
.click()
|
||||
.await?;
|
||||
wait_for_text(&driver, &slot_selector(ui::control_center::slots::live_feed), "SSE tick").await?;
|
||||
wait_for_text(&driver, &slot_selector(slots::live_feed), "SSE tick").await?;
|
||||
|
||||
driver.find(By::Css("a[href='/architecture']")).await?.click().await?;
|
||||
wait_for_text(&driver, &slot_selector(ui::control_center::slots::inspector), "Page swap").await?;
|
||||
wait_for_text(&driver, &slot_selector(slots::inspector), "Page swap").await?;
|
||||
wait_for_text(&driver, "[data-island-readout]", "activity rows").await?;
|
||||
assert!(driver.current_url().await?.as_str().ends_with("/architecture"));
|
||||
|
||||
driver.goto(&format!("http://{APP_ADDR}/")).await?;
|
||||
wait_for_text(&driver, &slot_selector(ui::control_center::slots::live_feed), "SSE tick").await?;
|
||||
wait_for_text(&driver, &slot_selector(slots::live_feed), "SSE tick").await?;
|
||||
|
||||
Ok::<(), WebDriverError>(())
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
use scraper::{Html, Selector};
|
||||
use slhx::{Effect, EffectBatch, Payload, EFFECT_BATCH_ABI_VERSION};
|
||||
use slhx_techdemo::ui;
|
||||
use slhx_techdemo::ui::BUILD_FINGERPRINT;
|
||||
use slhx_techdemo::ui::issue_card::handles as card_handles;
|
||||
use slhx_techdemo::ui::issue_lane::handles as lane_handles;
|
||||
use std::io::{Read, Write};
|
||||
use std::net::TcpStream;
|
||||
use std::process::{Child, Command, Stdio};
|
||||
@@ -116,32 +118,32 @@ fn product_is_e2e_working_over_http() {
|
||||
|
||||
let move_to_lane = post(
|
||||
"/",
|
||||
&format!("__h={}&work_id=4&lane=runtime", ui::issue_lane::handles::move_to_lane),
|
||||
&format!("__h={}&work_id=4&lane=runtime", lane_handles::move_to_lane),
|
||||
);
|
||||
assert_effect_response(&move_to_lane);
|
||||
let move_to_lane_batch = move_to_lane.batch();
|
||||
assert_card(&move_to_lane_batch, "Design hero moment", "Runtime", "Active", "width:99%");
|
||||
assert_payload_contains(&move_to_lane_batch, "Drag-and-drop move persisted");
|
||||
|
||||
let inspect = post("/", &format!("__h={}&work_id=4", ui::issue_card::handles::spotlight_work));
|
||||
let inspect = post("/", &format!("__h={}&work_id=4", card_handles::spotlight_work));
|
||||
assert_effect_response(&inspect);
|
||||
let inspect_batch = inspect.batch();
|
||||
assert_payload_contains(&inspect_batch, "Design hero moment · lane=Runtime");
|
||||
assert_payload_contains(&inspect_batch, "Inspector focused");
|
||||
|
||||
let advance = post("/", &format!("__h={}&work_id=4", ui::issue_card::handles::advance_work));
|
||||
let advance = post("/", &format!("__h={}&work_id=4", card_handles::advance_work));
|
||||
assert_effect_response(&advance);
|
||||
let advance_batch = advance.batch();
|
||||
assert_payload_contains(&advance_batch, "Pipeline advanced");
|
||||
assert_payload_contains(&advance_batch, "<span class=\"pill\">Active</span>");
|
||||
|
||||
let advance_default = post("/", &format!("__h={}&work_id=5", ui::issue_card::handles::advance_work));
|
||||
let advance_default = post("/", &format!("__h={}&work_id=5", card_handles::advance_work));
|
||||
assert_effect_response(&advance_default);
|
||||
let advance_default_batch = advance_default.batch();
|
||||
assert_payload_contains(&advance_default_batch, "Default impact");
|
||||
assert_card(&advance_default_batch, "Default impact", "Compiler", "Active", "width:55%");
|
||||
|
||||
let ship_default = post("/", &format!("__h={}&work_id=5", ui::issue_card::handles::advance_work));
|
||||
let ship_default = post("/", &format!("__h={}&work_id=5", card_handles::advance_work));
|
||||
assert_effect_response(&ship_default);
|
||||
let ship_default_batch = ship_default.batch();
|
||||
assert_card(&ship_default_batch, "Default impact", "Product", "Shipped", "width:55%");
|
||||
@@ -154,12 +156,12 @@ fn product_is_e2e_working_over_http() {
|
||||
assert_payload_contains(&push_batch, "Simulated push event produced the same EffectBatch shape");
|
||||
assert_emit(&push_batch, "slhx:island-orbit", "activity rows");
|
||||
|
||||
let delete_missing = post("/", &format!("__h={}&work_id=999", ui::issue_card::handles::delete_work));
|
||||
let delete_missing = post("/", &format!("__h={}&work_id=999", card_handles::delete_work));
|
||||
assert_effect_response(&delete_missing);
|
||||
let delete_missing_batch = delete_missing.batch();
|
||||
assert_payload_not_contains(&delete_missing_batch, "Deleted card #999");
|
||||
|
||||
let delete = post("/", &format!("__h={}&work_id=4", ui::issue_card::handles::delete_work));
|
||||
let delete = post("/", &format!("__h={}&work_id=4", card_handles::delete_work));
|
||||
assert_effect_response(&delete);
|
||||
let delete_batch = delete.batch();
|
||||
assert_payload_contains(&delete_batch, "Card removed");
|
||||
@@ -187,7 +189,7 @@ fn product_is_e2e_working_over_http() {
|
||||
fn assert_effect_response(response: &Response) {
|
||||
assert_eq!(response.status, 200);
|
||||
assert!(response.header("content-type").contains("application/slhx"));
|
||||
assert_eq!(response.header("x-slhx-fingerprint"), ui::BUILD_FINGERPRINT.0.to_string());
|
||||
assert_eq!(response.header("x-slhx-fingerprint"), BUILD_FINGERPRINT.0.to_string());
|
||||
let batch = response.batch();
|
||||
assert_eq!(batch.abi_version, EFFECT_BATCH_ABI_VERSION);
|
||||
assert!(!batch.ops.is_empty());
|
||||
|
||||
Reference in New Issue
Block a user