{"id":20316224,"url":"https://github.com/d0k1/jsflight","last_synced_at":"2025-04-11T17:40:50.109Z","repository":{"id":80819504,"uuid":"45923136","full_name":"d0k1/jsflight","owner":"d0k1","description":"Tools to record and replay user's activity in a web application","archived":false,"fork":false,"pushed_at":"2018-06-18T14:58:50.000Z","size":1279,"stargazers_count":20,"open_issues_count":6,"forks_count":12,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-25T13:39:46.078Z","etag":null,"topics":["java","jmeter","load-testing","selenium"],"latest_commit_sha":null,"homepage":"","language":"Java","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/d0k1.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2015-11-10T16:03:25.000Z","updated_at":"2024-09-15T14:04:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"98b4d480-5556-4e01-9faa-a6f35ca5bab0","html_url":"https://github.com/d0k1/jsflight","commit_stats":null,"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d0k1%2Fjsflight","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d0k1%2Fjsflight/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d0k1%2Fjsflight/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d0k1%2Fjsflight/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/d0k1","download_url":"https://codeload.github.com/d0k1/jsflight/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248451351,"owners_count":21105855,"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":["java","jmeter","load-testing","selenium"],"created_at":"2024-11-14T18:24:59.847Z","updated_at":"2025-04-11T17:40:50.096Z","avatar_url":"https://github.com/d0k1.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JSFlight\nTools to record user's activity and replay it later.\nThe project's main goal is to store major user events in a browser (mouse clicks, key presses) and them reproduce them using Selenium WebDriver.\nBesides it can store HttpRequests on server-side and convert them to a JMeter Scenario to replay it later.\n\n## Recording concepts\n### Browser recording\n* You should add some JS to a host page to record browsers events \n* Injected code will add some event handlers (you can easily configure what events should be recorded and what are not)\n* Event handlers store their data in browser's session store\n* Data from browser's session store is to be sent to the server with some period of time (Default period is 5 seconds)\n* `javax.servlet.http.HttpServlet` on server side decides what to do with data it received\n\n### Server-Side recording\n* There is base class to be used to build a custom `javax.servlet.Filter`\n* The filter will record any http request to urls it has been mapped to\n* Of course you can add some special app's internal events to the recording. For example to monitor a production environment (or to get more data to replay user load more accurate)\n\n[![Release](https://jitpack.io/v/d0k1/jsflight.svg)](https://jitpack.io/#d0k1/jsflight)\n[![Codeship Status for d0k1/JSFlightRecorder](https://codeship.com/projects/56dc64a0-6a0d-0133-3e69-6e257542035e/status?branch=master)](https://codeship.com/projects/114774)\n[![Codacy Badge](https://api.codacy.com/project/badge/grade/1f078e96ab984f2f92419c3c65bb7aa9)](https://www.codacy.com/app/denis-kirpichenkov/jsflight)\n[![Code Climate](https://codeclimate.com/github/d0k1/jsflight/badges/gpa.svg)](https://codeclimate.com/github/d0k1/jsflight)\n[![Issue Count](https://codeclimate.com/github/d0k1/jsflight/badges/issue_count.svg)](https://codeclimate.com/github/d0k1/jsflight)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd0k1%2Fjsflight","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fd0k1%2Fjsflight","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd0k1%2Fjsflight/lists"}