* ft makepad_test * Improve run handling, manifest parsing, and stdout newline Replace dynamic free-port lookup with an ephemeral localhost SocketAddr in test runtime and remove the unused find_free_listen_address helper. Ensure headless stdout messages end with a newline. Simplify send_to_app error handling and add a test that queued bootstrap messages are delivered once an app socket connects. Substantially enhance process_manager: unify cargo flag parsing, parse Cargo.toml to determine package/bin targets, resolve the correct binary name for direct stdio runs, and build the cargo/build+exec script from the resolved args. Add unit tests for manifest parsing and script generation and adjust related call sites. * test harness * Preserve test attrs; return Vec for gateway binds In the test macro (libs/makepad_test/macros/src/lib.rs) preserve wrapper-only attributes (ignore and should_panic) on the generated wrapper test while removing them from the inner function. Added Attribute import, is_wrapper_only_test_attr helper, adjusted attribute filtering and emission, and added unit tests to verify attribute placement and expansion. In the hub (studio/hub/src/hub.rs) change gateway_bind_candidates to return a Vec<SocketAddr> instead of an iterator and special-case ephemeral port 0 to preserve ephemeral binding; otherwise collect the range of candidate ports into a Vec. Added tests to validate candidate behavior. Also minor formatting/whitespace tweaks and a small IPv6 formatting adjustment. * Add visible Studio mode and remote client Enable running UI tests visibly through a running Makepad Studio. Adds a new makepad-network dependency and studio_remote client (libs/makepad_test/src/studio_remote.rs) and integrates it into the runtime via a TestConnection enum. Introduces visible-mode tooling: env vars (MAKEPAD_TEST_VISIBLE, MAKEPAD_TEST_STUDIO, MAKEPAD_TEST_STUDIO_MOUNT, MAKEPAD_TEST_STARTUP_DELAY_MS, MAKEPAD_TEST_ACTION_DELAY_MS, MAKEPAD_TEST_KEEP_OPEN_MS), pacing/delays after actions, and pause-before-shutdown. Splits startup into start_headless_app/start_visible_app, clears existing visible builds before launching, and updates tests, docs (GUIDE.md, README.md), and selector/runtime minor cleanups/formatting.
27 lines
973 B
Rust
27 lines
973 B
Rust
use makepad_test::{makepad_test, Selector, TestApp};
|
|
|
|
#[makepad_test]
|
|
fn panel_input_updates_main_window_status(app: TestApp) {
|
|
app.locator(Selector::id("panel_input").window("panel_window"))
|
|
.wait_visible()
|
|
.fill("hello")
|
|
.wait_value("hello");
|
|
app.locator(Selector::id("status_label"))
|
|
.wait_text("Panel typing: \"hello\"");
|
|
app.press_return();
|
|
app.locator(Selector::id("status_label"))
|
|
.wait_text("Panel submitted: \"hello\"");
|
|
app.locator(Selector::id("ping_button").window("panel_window"))
|
|
.click();
|
|
app.locator(Selector::id("status_label"))
|
|
.wait_text("Panel button pressed 1 time.");
|
|
}
|
|
|
|
#[makepad_test]
|
|
fn floating_panel_can_be_dragged(app: TestApp) {
|
|
app.locator(Selector::id("drag_target").window("panel_window"))
|
|
.wait_visible()
|
|
.drag_by(140.0, 40.0);
|
|
app.locator(Selector::id("drag_value").window("panel_window"))
|
|
.wait_text("Drag delta: 140, 40");
|
|
}
|