{"id":13795670,"url":"https://github.com/crossbario/autobahn-testsuite","last_synced_at":"2025-06-10T12:09:58.731Z","repository":{"id":2764224,"uuid":"3762517","full_name":"crossbario/autobahn-testsuite","owner":"crossbario","description":"Autobahn WebSocket protocol testsuite","archived":false,"fork":false,"pushed_at":"2025-02-13T09:57:26.000Z","size":4369,"stargazers_count":1441,"open_issues_count":36,"forks_count":98,"subscribers_count":33,"default_branch":"master","last_synced_at":"2025-05-06T17:51:23.175Z","etag":null,"topics":["autobahn","autobahn-testsuite","test-coverage","testsuite","websocket","websocket-client","websocket-server"],"latest_commit_sha":null,"homepage":"https://crossbar.io/autobahn/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/crossbario.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-03-19T09:59:18.000Z","updated_at":"2025-05-05T11:45:56.000Z","dependencies_parsed_at":"2024-06-18T21:23:50.037Z","dependency_job_id":"05834fb3-3b69-4714-822c-575adfb23fe0","html_url":"https://github.com/crossbario/autobahn-testsuite","commit_stats":{"total_commits":468,"total_committers":26,"mean_commits":18.0,"dds":0.2692307692307693,"last_synced_commit":"09cfbf74b0c8e335c6fc7df88e5c88349ca66879"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crossbario%2Fautobahn-testsuite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crossbario%2Fautobahn-testsuite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crossbario%2Fautobahn-testsuite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crossbario%2Fautobahn-testsuite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crossbario","download_url":"https://codeload.github.com/crossbario/autobahn-testsuite/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253841069,"owners_count":21972585,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autobahn","autobahn-testsuite","test-coverage","testsuite","websocket","websocket-client","websocket-server"],"created_at":"2024-08-03T23:01:00.251Z","updated_at":"2025-05-12T23:32:31.534Z","avatar_url":"https://github.com/crossbario.png","language":"Python","funding_links":[],"categories":["Networking","Python"],"sub_categories":[],"readme":"# Autobahn|Testsuite\r\n\r\nThe **Autobahn**|Testsuite provides a fully automated test suite to verify client and server implementations of [The WebSocket Protocol](http://tools.ietf.org/html/rfc6455) for specification conformance and implementation robustness.\r\n\r\n**Autobahn**|Testsuite also provides a couple of other tools useful for WebSocket\r\n(and [WAMP](https://wamp-proto.org/)) implementors and developers.\r\n\r\n**What users are saying:**\r\n\r\n\u003e \"Autobahn was a huge help during the standardization and early development of WebSocket in [Firefox](www.mozilla.org/firefox). It helped find many nasty corner conditions in a clean and repeatable way.\r\nInteroperation testing like this really moves the Open Web forward.\"\r\n**Patrick McManus, [Mozilla](http://www.mozilla.org/) [Firefox](www.mozilla.org/firefox)**\r\n\r\n\u003e \"The [Jetty project](http://eclipse.org/jetty) has been active in the development of the websocket protocol and lack of a comprehensive test suite was an impediment to the standardisation of the protocol. The Autobahn test suit has filled that void and been warmly embraced by our websocket engineers at [Intalio](http://www.intalio.com/products/jetty/overview/) as it has been invaluable for evaluating the protocol development, improving inter operability and monitoring adoption of new/optional features.\r\n*Our own implementation and the wider websocket 'ecosystem' are significantly better due to the availability of Autobahn*.\"\r\n**Greg Wilkins, [Jetty](http://eclipse.org/jetty) author, Chief Architect at [Intalio](http://www.intalio.com/)**\r\n\r\n\u003e \"During the time of implementing the latest WebSocket version in [Netty](http://netty.io/) and [Undertow](https://github.com/undertow-io/undertow) we were searching for a way to test our implementations and make sure they are 100% RFC compliant. While we already had unit tests in place there was a lack of good tests for the whole implementation. Using the AutobahnTestsuite for this purpose allowed us to concentrate on the implementation and made it easy to catch regressions as soon as possible.\"\r\n**Norman Maurer, Principal Software Engineer at [Red Hat](http://www.redhat.com/)**\r\n\r\n\r\n## Reports\r\n\r\nFor some current reports on the test coverage of [Autobahn|Python](https://github.com/crossbario/autobahn-python) see\r\n\r\n* [WebSocket client functionality](https://crossbar.io/autobahn/testsuite/reports/clients/index.html)\r\n* [WebSocket server functionality](https://crossbar.io/autobahn/testsuite/reports/servers/index.html)\r\n\r\n\r\n## Test Suite Coverage\r\n\r\nThe test suite will check an implementation by doing basic WebSocket\r\nconversations, extensive protocol compliance verification and performance\r\nand limits testing.\r\n\r\n**Autobahn**|Testsuite is used across the industry and contains over 500 test cases covering\r\n\r\n* Framing\r\n* Pings/Pongs\r\n* Reserved Bits\r\n* Opcodes\r\n* Fragmentation\r\n* UTF-8 Handling\r\n* Limits/Performance\r\n* Closing Handshake\r\n* Opening Handshake (under development)\r\n* WebSocket compression ([permessage-deflate extension](https://tools.ietf.org/html/draft-ietf-hybi-permessage-compression))\r\n\r\n\r\n## Other Tools\r\n\r\nBesides the automated testsuite (aka \"fuzzing\" server/client), **wstest**\r\nalso includes a number of other handy modes:\r\n\r\n* WebSocket echo server and client\r\n* WebSocket broadcast server (and client driver)\r\n* Testee modes to test [AutobahnPython](http://autobahn.ws/python) against the test suite\r\n* **wsperf** controller and master (see below for more)\r\n* WAMP server and client, for developing WAMP implementations\r\n* WebSocket Mass-Connect\r\n\r\n\r\n## Users\r\n\r\nAutobahn|Testsuite is used by numerous projects and companies across the industry:\r\n\r\n\u003cdiv class=\"testsuite_users_table\"\u003e\r\n  \u003cul style=\"float: left; width: 190px\"\u003e\r\n      \u003cli\u003e\u003ca href=\"http://autobahn.ws\"\u003eAutobahn\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://www.mozilla.org/\" target=\"_blank\"\u003eMozilla Firefox\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://www.chromium.org/Home\" target=\"_blank\"\u003eGoogle Chrome / WebKit\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://windows.microsoft.com/en-us/internet-explorer/products/ie/home\" target=\"_blank\"\u003eMicrosoft Internet Explorer\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://www.rim.com/\" target=\"_blank\"\u003eRIM / Browser\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://www.zaphoyd.com/websocketpp\" target=\"_blank\"\u003eWebSocket++\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://www.serverframework.com\" target=\"_blank\"\u003eThe Server Framework\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://eclipse.org/jetty/\" target=\"_blank\"\u003eJetty\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://netty.io/\" target=\"_blank\"\u003eNetty\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://grizzly.java.net/\" target=\"_blank\"\u003eGrizzly\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/kerryjiang/WebSocket4Net\" target=\"_blank\"\u003eWebSocket4Net\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/kerryjiang/SuperWebSocket\" target=\"_blank\"\u003eSuperWebSocket\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/webbit/webbit\" target=\"_blank\"\u003eWebbit\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/lipp/lua-websockets\" target=\"_blank\"\u003elua-websockets\u003c/a\u003e\u003c/li\u003e\r\n  \u003c/ul\u003e\r\n  \u003cul style=\"float: left; margin-left: 30px; width: 190px\"\u003e\r\n      \u003cli\u003e\u003ca href=\"http://crossbar.io\" target=\"_blank\"\u003eCrossbar.io\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://tomcat.apache.org/\" target=\"_blank\"\u003eApache Tomcat\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/Worlize/WebSocket-Node\" target=\"_blank\"\u003eWebSocket-Node\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/einaros/ws\" target=\"_blank\"\u003eWS for node.js\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/LearnBoost/websocket.io\" target=\"_blank\"\u003ewebsocket.io\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/Lawouach/WebSocket-for-Python\" target=\"_blank\"\u003ews4py\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/facebook/tornado\" target=\"_blank\"\u003eFacebook Tornado\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/google/pywebsocket\" target=\"_blank\"\u003epywebsocket\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://www.noemax.com/\" target=\"_blank\"\u003eNoemax PowerWebSockets\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://www.noemax.com/\" target=\"_blank\"\u003eNoemax WCF-Xtensions\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/TooTallNate/Java-WebSocket\" target=\"_blank\"\u003eJava-WebSocket\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://jwebsocket.org/\" target=\"_blank\"\u003ejWebSocket\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/aaugustin/websockets\" target=\"_blank\"\u003ewebsockets\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/DamnedFacts/RSWebSocket\" target=\"_blank\"\u003eRSWebSocket\u003c/a\u003e\u003c/li\u003e\r\n  \u003c/ul\u003e\r\n  \u003cul style=\"float: left; margin-left: 30px; width: 190px\"\u003e\r\n      \u003cli\u003e\u003ca href=\"http://cloudsecurity.intel.com/api-management\" target=\"_blank\"\u003eIntel API Management\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://pusher.com/\" target=\"_blank\"\u003ePusher / EM-WebSocket\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/square/SocketRocket\" target=\"_blank\"\u003eSocketRocket\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/DamnedFacts/RSWebSocket\" target=\"_blank\"\u003eRSWebSocket\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://faye.jcoglan.com/\" target=\"_blank\"\u003eFaye\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://bitbucket.org/Jeffrey/gevent-websocket/overview\" target=\"_blank\"\u003egevent-websocket\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/ninenines/cowboy\" target=\"_blank\"\u003eCowboy\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://caucho.com/resin-4.0/index.xtp\" target=\"_blank\"\u003eResin\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://yaws.hyber.org/\" target=\"_blank\"\u003eErlang Yaws\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://wasd.vsm.com.au/wasd/\" target=\"_blank\"\u003eWASD OpenVMS\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://gitorious.org/qtwebsocket\" target=\"_blank\"\u003eQtWebSocket\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet\" target=\"_blank\"\u003eeventlet\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"http://code.google.com/p/zaproxy/\" target=\"_blank\"\u003ezaproxy\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/boostorg/beast\" target=\"_blank\"\u003eBoost/Beast\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/IBM-Swift/Kitura-WebSocket-NIO\" target=\"_blank\"\u003eKitura-WebSocket-NIO\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e\u003ca href=\"https://github.com/machinezone/IXWebSocket\" target=\"_blank\"\u003eIXWebSocket\u003c/a\u003e\u003c/li\u003e\r\n      \u003cli\u003e... and more (can't keep up)\u003c/li\u003e\r\n  \u003c/ul\u003e\r\n\u003c/div\u003e\r\n\u003cdiv style=\"clear: both;\"\u003e\u003c/div\u003e\r\n\r\n\r\n## Installation\r\n\r\n### Using the testsuite Docker image (Recommended)\r\n\r\nThe testsuite is available as a [Docker image](https://hub.docker.com/r/crossbario/autobahn-testsuite/tags/) which allows\r\neasy and repeatable use both for testing WebSocket clients and WebSocket servers.\r\n\r\nBy default, the image will run the testsuite in so-called \"fuzzingserver\" mode. This is the mode used to test your WebSocket _client_ implementations.\r\n\r\nTo start the testsuite container:\r\n\r\n```console\r\ndocker run -it --rm \\\r\n    -v \"${PWD}/config:/config\" \\\r\n    -v \"${PWD}/reports:/reports\" \\\r\n    -p 9001:9001 \\\r\n    --name fuzzingserver \\\r\n    crossbario/autobahn-testsuite\r\n```\r\n\r\nAbove will mount an (included) test configuration from the [docker/config](config) folder, which must include a server test configuration file [docker/config/fuzzingserver.json](docker/config/fuzzingserver.json) like this:\r\n\r\n```json\r\n{\r\n    \"url\": \"ws://127.0.0.1:9001\",\r\n    \"outdir\": \"./reports/clients\",\r\n    \"cases\": [\"*\"],\r\n    \"exclude-cases\": [\r\n        \"9.*\",\r\n        \"12.*\",\r\n        \"13.*\"\r\n    ],\r\n    \"exclude-agent-cases\": {}\r\n}\r\n```\r\n\r\n\u003e This specific config will run all test cases, but exclude the longer running mass/performance test cases 9.*, and exclude the WebSocket compression test cases 12.*/13.* (which only make sense if your client library implements [RFC7692 (\"permessage-deflate\")](https://tools.ietf.org/html/rfc7692)).\r\n\r\nAbove command will also mount a host directory/volume [reports](reports) where the generated reports will be placed by the testsuite.\r\n\r\nFinally, the config will make the fuzzing server run on port 9001 - and expose that on the host.\r\n\r\n\u003e To test multiple clients and generate one big report containing all clients, do NOT stop the testsuite container, but run all your clients, and then stop the container. The generated reports will include all clients.\r\n\r\nHere is how to test the Python 3 / asyncio flavor of [AutobahnPython](https://github.com/crossbario/autobahn-python):\r\n\r\n```console\r\npip install autobahn\r\nwget https://raw.githubusercontent.com/crossbario/autobahn-python/master/wstest/testee_client_aio.py\r\npython testee_client_aio.py\r\n```\r\n\r\n### Using the testsuite Python package (Not Recommended)\r\n\r\n**The following recipe still works, but the new, recommended way is using a Docker toolchain image we provide. Please checkout [this](https://github.com/crossbario/crossbar-docker/tree/master/autobahn-testsuite#usage) - much easier and repeatable.**\r\n\r\nThe testsuite comes as a single command line tool, `wstest`. You will need Python 2 or PyPy (recommended).\r\n\r\n\u003e Right now we only support Python 2 and Python 3 will *not* work. The testsuite is developed and tested on CPython 2 and PyPy. The latter is a high-performance Python implementation.\r\n\r\nThe recommended way to install `wstest` is into it's own, dedicated [virtualenv](http://docs.python-guide.org/en/latest/dev/virtualenvs/).\r\n\r\n\u003e On Debian/Ubuntu systems, you can install virtualenv like `sudo apt-get install python-virtualenv`.\r\n\r\nCreate a new virtualenv in your HOME and install Autobahn testsuite:\r\n\r\n```console\r\nvirtualenv ~/wstest\r\nsource ~/wstest/bin/activate\r\npip install autobahntestsuite\r\n```\r\n\r\nYou will now have the `wstest` tool:\r\n\r\n\r\n```console\r\n(wstest)oberstet@thinkpad-t430s:~$ which wstest\r\n/home/oberstet/wstest/bin/wstest\r\n(wstest)oberstet@thinkpad-t430s:~$ wstest -a\r\nAutobahn 0.10.9\r\nAutobahnTestSuite 0.7.4\r\n(wstest)oberstet@thinkpad-t430s:~$ wstest --help\r\nUsage: wstest [options]\r\nOptions:\r\n  -d, --debug            Debug output [default: off].\r\n  -a, --autobahnversion  Print version information for Autobahn and\r\n                         AutobahnTestSuite.\r\n  -m, --mode=            Test mode, one of: echoserver, echoclient,\r\n                         broadcastclient, broadcastserver, fuzzingserver,\r\n                         fuzzingclient, testeeserver, testeeclient, massconnect,\r\n                         serializer [required]\r\n  -t, --testset=         Run a test set from an import test spec.\r\n  -s, --spec=            Test specification file [required in some modes].\r\n  -o, --outfile=         Output filename for modes that generate testdata.\r\n  -w, --wsuri=           WebSocket URI [required in some modes].\r\n  -u, --webport=         Web port for running an embedded HTTP Web server;\r\n                         defaults to 8080; set to 0 to disable. [optionally used\r\n                         in some modes: fuzzingserver, echoserver,\r\n                         broadcastserver, wsperfmaster]. [default: 8080]\r\n  -i, --ident=           Testee client identifier [optional for client testees].\r\n  -k, --key=             Server private key file for secure WebSocket (WSS)\r\n                         [required in server modes for WSS].\r\n  -c, --cert=            Server certificate file for secure WebSocket (WSS)\r\n                         [required in server modes for WSS].\r\n      --version          Display Twisted version and exit.\r\n      --help             Display this help and exit.\r\n\r\n(wstest)oberstet@thinkpad-t430s:~$\r\n```\r\n\r\n## How to use\r\n\r\n### Testing WebSocket server implementations\r\n\r\nTo test a **WebSocket server implementation** and generate compliance test reports, first start the WebSocket server that you want to test. Here, we are using a example from Autobahn|Python:\r\n\r\n```console\r\n(python279_1)oberstet@thinkpad-t430s:~/scm/crossbario/autobahn-python/examples/twisted/websocket/testee$ python testee_server.py\r\n2015-12-21 21:31:54+0100 [-] Log opened.\r\n2015-12-21 21:31:54+0100 [-] TesteeServerFactory starting on 9001\r\n2015-12-21 21:31:54+0100 [-] Starting factory \u003c__main__.TesteeServerFactory object at 0x7faf23551210\u003e\r\n```\r\n\r\nThen, run `wstest` in **fuzzing client mode**:\r\n\r\n```console\r\ncd ~\r\nmkdir test\r\ncd test\r\nwstest -m fuzzingclient\r\n```\r\n\r\nThe testsuite will now start a WebSocket fuzzing client connecting on TCP port 9001 to the WebSocket servers to be tested:\r\n\r\n```console\r\n(wstest)oberstet@thinkpad-t430s:~/test$ wstest -m fuzzingclient\r\nAuto-generating spec file 'fuzzingclient.json'\r\nLoading spec from /home/oberstet/test/fuzzingclient.json\r\n...\r\nAutobahn Fuzzing WebSocket Client (Autobahn Version 0.7.4 / Autobahn Testsuite Version 0.10.9)\r\nOk, will run 521 test cases against 1 servers\r\n...\r\n```\r\n\r\n### Testing WebSocket client implementations\r\n\r\nTo test a **WebSocket client implementation** and generate compliance test reports, start `wstest` in **fuzzing server mode**:\r\n\r\n```console\r\ncd ~\r\nmkdir test\r\ncd test\r\nwstest -m fuzzingserver\r\n```\r\n\r\nThe testsuite will now start a WebSocket fuzzing server listening on TCP port 9001 for WebSocket clients to be tested:\r\n\r\n```console\r\n(wstest)oberstet@thinkpad-t430s:~/test$ wstest -m fuzzingserver\r\nAuto-generating spec file 'fuzzingserver.json'\r\nLoading spec from /home/oberstet/test/fuzzingserver.json\r\n...\r\nAutobahn WebSockets 0.7.4/0.10.9 Fuzzing Server (Port 9001)\r\nOk, will run 521 test cases for any clients connecting\r\n...\r\n```\r\n\r\n\u003e Note: The fuzzing server mode will also start a Web server on port 8080 that renders a HTML page for browser WebSocket clients to be tested.\r\n\r\n\r\nOn first run, the tool will auto-generated a test configuration file:\r\n\r\n```console\r\n(wstest)oberstet@thinkpad-t430s:~/test$ cat fuzzingserver.json\r\n\r\n{\r\n   \"url\": \"ws://127.0.0.1:9001\",\r\n   \"outdir\": \"./reports/clients\",\r\n   \"cases\": [\"*\"],\r\n   \"exclude-cases\": [],\r\n   \"exclude-agent-cases\": {}\r\n}\r\n```\r\n\r\nYou can tweak that file to run only some tests, e.g. `\"cases: [\"1.*\", \"2.1.*\"]\"` will run only the tests under section 1.* and subsection 2.1.*.\r\n\r\n\r\n## More Information\r\n\r\nFor more information take a look at the following information\r\n\r\n* [usage instructions](/doc/usage.rst)\r\n\r\n\r\n## Get in Touch\r\n\r\nGet in touch on IRC `#autobahn` on `chat.freenode.net` or join an Autobahn [user forum](https://crossbar.discourse.group/).\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrossbario%2Fautobahn-testsuite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrossbario%2Fautobahn-testsuite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrossbario%2Fautobahn-testsuite/lists"}