%% Last Updated: - [[]] Related - [[Load Testing Tool]] [[Tricentis]] [[Flood (company)]] [[Browser-based testing]] [[Book/Mine/Browser-based Load Testing]] [[Software Testing]] [[Test Automation]] %% Flood Element is an [[Open source|open-source]] [[Browser-based testing|browser-based]] [[Load Testing Tool|load testing tool]] based on [[Puppeteer]] and released by [[Tricentis]] [[Flood (company)|Flood]]. It adds a load testing-focused wrapper around [[Playwright]] (originally [[Puppeteer]]) and uses a syntax and terminology familiar to [[Selenium WebDriver]] users. Flood Element can be scaled up for load testing on [[flood.io]] [Website](https://element.flood.io) [Repo](https://github.com/flood-io/element) ## Using Element ### Installing Element Install the latest version of [[NodeJS]] [from here](https://nodejs.org/). ```bash # Using yarn yarn global add element-cli # Using npm npm i -g element-cli # Verify install element --version ``` or, on macOS and without NodeJS: `brew install flood-io/taps/element` ### Upgrading Element ![[sources/Article/Mine/What's new in Element 1.3.0#^ccdfe7]] ![[sources/Article/Mine/What's new in Element 1.3.0#^eb3295]] [[Flood Element conditional steps]] [[Flood Element Setup and Teardown Options]] [[Allowing camera or mic access on Element]] [[Troubleshooting Flood Element]] ## Key features of a load testing tool ## Scripting ### Creating a script - [ ] [[Recorder]] - [ ] [[Exclude third-party or configured domains]] - [x] [[Sample script packaged in]] - `element generate my-load-test.ts` to generate a new script with some nice commented instructions - many sample scripts for different uses - ![](assets/1621807253_42.png) - [ ] [[GUI Test Builder]] - [x] [[Code-based scripting]] - [ ] [[Protocol-based load testing]] - [x] [[Browser-based testing]] ### Making the script robust - Protocols Supported - [ ] [[HTTP/1.1] - [ ] [[HTTP/2] - [ ] [[WebSockets]] - [ ] [[gRPC] - [ ] [[Citrix ICA] - [ ] [[LDAP] - [ ] [[Modify headers]] - [x] [[Response assertions]] - [[Error handling]] - [x] [[Output to log upon error]] - [x] [[Screenshots]] - [x] [[Continue on error or restart iteration]] - [[Debugging]] - [ ] [[See request and response headers and bodies on single iteration]] - [x] [[Change log levels]] - [x] [[Transaction groups]] - Called "steps" - [x] [[Custom functions or test fragments]] - functions and modules ### Making the script realistic - [[Correlation of dynamic values]] - [x] [[JMeter Regular Expression Extractor]] - [x] [[CSS Selector]] - [x] [[JSON Extractor]] - [x] [[Dynamic think time and pacing]] - [x] [[Conditional logic]] - [[Flood Element conditional steps]] - [[Flood Element step.if()]] - [ ] [[Parallel execution of requests]] - [x] [[Download embedded resources]] - [x] [[Follow redirects]] - [ ] [[Network bandwidth throttling]] - [x] [[Cache management]] - [x] [[Startup and teardown thread groups]] - [[Flood Element Setup and Teardown Options]] - [[Flood Element before.all()]] - [[Flood Element afterAll()]] - [[Flood Element step.once()]] ### Test data - [x] [[Static test data]] - But not more than one CSV file at a time - [ ] [[Unique data generation during runtime]] - [ ] [[Virtual Table Server]] ### Collaborating on a script - [x] [[Version Control System]] - [x] [[Test Scaffolding]] ## Execution ### [x] [[Test Scenarios]] ### [x] [[Configurable Load profile]] - [x] [[Number of virtual users]] - [x] [[Duration]] - [x] [[Origin or Region]] - [x] [[Ramp-up]] - [ ] [[Ramp down]] - [x] [[Number of iterations]] - [ ] [[Fully customizable load profile]] ### SLAs - [ ] [[Set multiple thresholds]] ### [x] [[Execution Parameters]] ### Memory consumption benchmark Up to 40 users per [[AWS]] m5.xlarge according to [[flood.io]] ## Analysis ### Dashboard - [ ] [[Pre-generated reports]] - [ ] [[Custom dashboard creation]] - [ ] [[Reusable dashboards]] - Easy error troubleshooting - [x] [[Screenshots]] - [x] [[Response bodies]] - [x] [[Assertion success or failure]] - [x] [[Log for transaction failure]] ### Metrics - [x] [[Response time]] - [x] [[Request throughput]] - [x] [[Number of virtual users]] - [x] [[Error rate]] - [ ] [[Network throughput]] - [ ] [[Load generator CPU]] - [ ] [[Load generator memory]] ### Graphs - [ ] [[Different Graph Types]] - [ ] [[View by transaction]] - [ ] [[View by load generator or region]] - [ ] [[Custom views]] ### Results - [x] [[Raw data]] - [x] [[At least 1s granularity]] - [x] [[Export as plain text]] ## Continuous Load Testing - [x] [[Jenkins]] - [x] [[Azure Pipelines]] - [x] [[Travis CI]] - [x] [[CircleCI]]