{"id":41052,"library":"etherpad-load-test","title":"Etherpad Load Test","description":"Clients for load testing an Etherpad instance, including legacy and sweep modes. Version 2.0.3, actively maintained by the Ether team. Supports configurable lurker and author counts, duration limits, and a sweep mode for reproducible concurrency curves with Prometheus metric scraping. Key differentiators: designed specifically for Etherpad's real-time collaboration model; built-in test for multiple pads in parallel; produces report artifacts (JSON, CSV, Markdown) suitable for plotting and issue reporting. Requires Node.js >=18.0.0 and ep_etherpad-lite >=1.8.6 with load-testing enabled.","status":"active","version":"2.0.3","language":"javascript","source_language":"en","source_url":"https://github.com/ether/etherpad-load-test","tags":["javascript"],"install":[{"cmd":"npm install etherpad-load-test","lang":"bash","label":"npm"},{"cmd":"yarn add etherpad-load-test","lang":"bash","label":"yarn"},{"cmd":"pnpm add etherpad-load-test","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency: the Etherpad server must have load-testing enabled via settings.json for the load test to work.","package":"ep_etherpad-lite","optional":false}],"imports":[{"note":"This package is a CLI tool, typically installed globally. The import symbol is the CLI command, not a JavaScript module. Do not import in source code.","wrong":"npm install etherpad-load-test --save-dev","symbol":"etherpad-loadtest","correct":"npm install -g etherpad-load-test"},{"note":"The multi-pad test is a separate CLI command, not a flag on the main command. Available after global install.","wrong":"etherpad-loadtest --multi","symbol":"etherpad-loadtest-multi","correct":"etherpad-loadtest-multi [<num of pads>]"},{"note":"Sweep mode is a separate flag with its own syntax. Not combinable with legacy -l/-a/-d flags.","wrong":"etherpad-loadtest -l 50 -a 10 --sweep","symbol":"sweep config","correct":"etherpad-loadtest --sweep authors=10..200:step=10:dwell=30s:warmup=5s --report ./out"}],"quickstart":{"code":"# Enable load testing in Etherpad settings.json: set \"loadTest\": true, then restart.\n# Install the CLI tool globally\nnpm install -g etherpad-load-test\n# Run a basic load test against a local Etherpad instance\necho \"Testing http://127.0.0.1:9001 with 10 lurkers and 3 active authors for 30 seconds\"\netherpad-loadtest http://127.0.0.1:9001 -l 10 -a 3 -d 30\n# After test, disable load testing by setting \"loadTest\": false in settings.json and restart.","lang":"javascript","description":"Installs and runs a basic load test against a local Etherpad instance with 10 lurkers and 3 active authors for 30 seconds."},"warnings":[{"fix":"Upgrade Node.js to 18.0.0 or later.","message":"Node.js version requirement: >=18.0.0. Older versions will fail to install or run.","severity":"breaking","affected_versions":"node <18.0.0"},{"fix":"Migrate to sweep mode with --sweep and --report flags for better reproducibility and reporting.","message":"Legacy mode (-l, -a, -d) is unchanged but not actively enhanced; sweep mode is the recommended path for reproducible testing.","severity":"deprecated","affected_versions":">=2.0.0"},{"fix":"Edit Etherpad's settings.json, set loadTest to true, restart, then after testing revert to false and restart.","message":"The Etherpad server must have \"loadTest\":true in its settings.json before running the load test, and must be set back to false afterward for security.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Upgrade Etherpad Lite to version 1.8.6 or later.","message":"Peer dependency ep_etherpad-lite >=1.8.6 required. Incompatible with older Etherpad versions.","severity":"breaking","affected_versions":"ep_etherpad-lite <1.8.6"},{"fix":"Use lowercase 's' for seconds (e.g., 30s), 'm' for minutes, 'ms' for milliseconds.","message":"Sweep mode uses duration strings (e.g., 30s) which are case-sensitive; do not use uppercase 'S'.","severity":"gotcha","affected_versions":">=2.0.0"}],"env_vars":null,"search_vec":"'1.8.6':85 '18.0.0':79 '2.0.3':17 'activ':18 'artifact':67 'author':28 'built':57 'built-in':56 'client':4 'collabor':54 'concurr':38 'configur':25 'count':29 'csv':69 'curv':39 'design':46 'differenti':45 'durat':30 'enabl':90 'ep':81 'ether':22 'etherpad':1,9,49,83 'etherpad-lit':82 'includ':11 'instanc':10 'issu':75 'javascript':91 'json':68 'key':44 'legaci':12 'limit':31 'lite':84 'load':2,6,88 'load-test':87 'lurker':26 'maintain':19 'markdown':70 'metric':42 'mode':15,35 'model':55 'multipl':61 'node.js':78 'pad':62 'parallel':64 'plot':73 'produc':65 'prometheus':41 'real':52 'real-tim':51 'report':66,76 'reproduc':37 'requir':77 'scrape':43 'specif':47 'suitabl':71 'support':24 'sweep':14,34 'team':23 'test':3,7,59,89 'time':53 'version':16","created_at":"2026-06-04T18:50:33.063411+00:00","updated_at":"2026-06-04T18:50:33.063411+00:00","problems":[{"fix":"Ensure Etherpad Lite (>=1.8.6) is installed and load-testing is enabled in its settings.json.","cause":"Peer dependency ep_etherpad-lite not installed or incompatible version.","error":"Error: Cannot find module 'ep_etherpad-lite'"},{"fix":"Set 'loadTest': true in Etherpad's settings.json and restart the server.","cause":"The Etherpad server does not have load testing enabled.","error":"FATAL: loadTest must be enabled in Etherpad settings.json"},{"fix":"Use lowercase 's' for seconds: '30s' instead of '30S'.","cause":"Uppercase 'S' used in duration string (sweep mode).","error":"RangeError: Invalid duration string: 30S"},{"fix":"Upgrade Node.js to version 18.0.0 or later.","cause":"Running an older Node.js version.","error":"Error: The engine \"node\" is incompatible with this module. Expected version \">=18.0.0\"."}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/ether/etherpad-load-test#readme","github":"https://github.com/ether/etherpad-load-test","docs":null,"changelog":null,"pypi":null,"npm":"etherpad-load-test","openapi_spec":null,"status_page":null,"smithery":null,"categories":["testing"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-04","next_check":"2026-09-02","install_tag":null}}