Front end load testing with PhantomJS/SlimerJS, sponsored by CoScale
Felt is a front-end load tester. It generates load by running a lot of browser instances simultaneously and waiting for the page to finish loading (no more pending resource calls). The tool uses PhantomJS or SlimerJS. You can use Felt to quickly generate load on front end heavy applications. With scenarios you can setup a path through your application for the browsers to follow.
- Load testing
- AngularJS
- React
- Backbone.js
- Ember.js
- Cache warming
- Quick local load tests
- Synthetic monitoring
- Real browser load testing of web applications
- Works with PhantomJS (webkit) and SlimerJS (firefox)
- Scenarios
- Tested on Python 2.7.10
- Unix based operating system
- Local install of PhantomJS or SlimerJS available in PATH
- Install commentjson (
pip install commentjson
)
-
git clone https://github.com/kidk/felt.git
-
cd felt
-
Download PhantomJS from http://phantomjs.org/download.html
-
Unzip and move PhantomJS executable into felt directory
The felt directory should look something like this: $ ls LICENSE README.md js main.py phantomjs
-
pip install commentjson
-
python main.py --verbose examples/basic.json
-
ctrl + c
to stop
usage: main.py [-h] [--debug] [--verbose] [--threads THREADS] [--test] [--screenshot]
scenario
Start workload.
positional arguments:
scenario
optional arguments:
-h, --help show this help message and exit
--debug enable debug information
--verbose makes generator more verbose
--threads THREADS number of threads to run simultaneously
--test run a scenario only once
--screenshot save screenshot per step
-
open_url
- Open browser and navigate to url.Attributes:
value
: Url to open
-
set_value
- Set value attribute in an elementAttributes:
selector
- Value forquerySelector
value
- Value to insert into element
-
submit
- Send submit event to elementAttributes:
selector
- Value forquerySelector
-
click
- Send click event to element (if selector returns multiple elements, first one is clicked)Attributes:
selector
- Value forquerySelectorAll
-
click_one
- Send click event to random selected elementAttributes:
selector
- Value forquerySelectorAll
-
sleep
- Wait for x milisecondsAttributes:
value
- Amount in ms you want function to wait or object with min, max to wait a random time between min and max
-
wait_for_element
- Wait for element to appear in browserAttributes:
selector
- Value forquerySelector
-
check_element_exists
- Check if element is present and contains contentAttributes:
selector
- Value forquerySelector
Included in this repository is a Vagrant file which you can use to develop Felt locally. Please don't hesitate to submit bugs, feature requests or pull requests.