v0.1.0
·
4 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
This is the first public release of LiveLoad.
For the full development journey (and basically my personal development diary) from an empty repo to this release, see the Devlog.
If you are just getting started with LiveLoad, the Writing Your First Scenario guide is the best place to start. It covers everything from basic navigation to throttles, assigns, and the full scenario lifecycle.
Enhancements
Core
- [LiveLoad] Add
LiveLoad.run/1as the main entrypoint for running load tests - [LiveLoad.Scenario] Add behaviour for defining load test scenarios with
config/1,throttles/1, andrun/3callbacks - [LiveLoad.Scenario] Add
use LiveLoad.Scenariomacro that sets up the behaviour, imports context functions, and provides default callback implementations - [LiveLoad.Scenario.Runner] Add
gen_statembased scenario runner that loopsrun/3until duration expires, halt, or failure - [LiveLoad.Scenario.Discovery] Add various levels of automatic scenario discovery to allow running scenarios in different ways
Scenario Context
- [LiveLoad.Scenario.Context] Add
Plug.Conninspired pipeline struct with automatic error short-circuiting - [LiveLoad.Scenario.Context] Add navigation functions:
navigate/2,reload/1 - [LiveLoad.Scenario.Context] Add element interaction functions:
click/2,fill/3,clear/2,press/3,check/2,uncheck/2,select_option/3,select_multiple_options/3,focus/2,blur/2,hover/2,drag_and_drop/3,wait_for_selector/2 - [LiveLoad.Scenario.Context] Add LiveView specific functions:
ensure_liveview/1,wait_for_liveview/1,wait_for_phx_loading_completion/3,submit_form/2 - [LiveLoad.Scenario.Context] Add value extraction functions with
:asoption:page_content/2,inner_html/3,inner_text/3,text_content/3,input_value/3,get_attribute/4,visible?/3,checked?/3 - [LiveLoad.Scenario.Context] Add assigns management:
assign/3,reset_assigns/1,clear_assign/2,update_assign!/3 - [LiveLoad.Scenario.Context] Add flow control:
halt/1,fail/2,halted?/1,failed?/1 - [LiveLoad.Scenario.Context] Add browser storage functions:
context_storage_snapshot/2,restore_context_storage/2,reset_context_storage/1 - [LiveLoad.Scenario.Context] Support resolvable values (1-arity functions receiving the context) for selectors, URLs, and values
Throttles
- [LiveLoad.Scenario.Throttle.Rate] Add rate limiter with configurable interval and gradual ramp-up support
- [LiveLoad.Scenario.Throttle.Interarrival] Add interarrival-based throttle with gradual ramp-up support
- [LiveLoad.Scenario.Throttle.Parallelism] Add concurrency limiter
Browser
- [LiveLoad.Browser] Add browser abstraction with pluggable
LiveLoad.Browser.Connectionbehaviour - [LiveLoad.Browser.Connection.Playwright] Add Playwright based browser connection using PlaywrightEx
- [Mix.Tasks.LiveLoad.Install] Add
mix live_load.installtask to download the Playwright standalone driver and Chromium binaries
Distribution
- [LiveLoad.Cluster] Add FLAME based elastic cluster formation with automatic node count calculation based on resource availability
- [LiveLoad.Cluster.Node] Add
FLAME.Trackablenode struct for eager cluster priming - [LiveLoad.Cluster.AmocSeed] Add parallel cluster seeding with direct pinging to work around gossip deadlocks on larger clusters
Telemetry and Results
- [LiveLoad.Telemetry.Listener] Add per node telemetry listener collecting metrics into DDSketch structures via
ddskerl - [LiveLoad.Telemetry.Collector] Add primary node collector that merges sketches from all nodes into a single result
- [LiveLoad.Result] Add compact, JSON-serializable result struct with 101-point precomputed quantile curves, dimensioned histograms and counters, time-series buckets, and per-node breakdowns
Reporters
- [LiveLoad.Reporter.Markdown] Add simple tabular markdown reporter
- [LiveLoad.Reporter.HTML] Add self-contained single-file HTML reporter with embedded React/TypeScript SPA