{"id":37021796,"url":"https://github.com/seleniumkit/selenograph","last_synced_at":"2026-01-14T02:35:32.698Z","repository":{"id":57742768,"uuid":"52610929","full_name":"seleniumkit/selenograph","owner":"seleniumkit","description":"Powered version of Selenium Grid Router","archived":false,"fork":false,"pushed_at":"2016-11-21T02:20:28.000Z","size":675,"stargazers_count":42,"open_issues_count":9,"forks_count":14,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-07-29T07:20:54.910Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/seleniumkit.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}},"created_at":"2016-02-26T14:47:44.000Z","updated_at":"2023-07-27T11:13:23.000Z","dependencies_parsed_at":"2022-09-09T10:11:03.574Z","dependency_job_id":null,"html_url":"https://github.com/seleniumkit/selenograph","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/seleniumkit/selenograph","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seleniumkit%2Fselenograph","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seleniumkit%2Fselenograph/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seleniumkit%2Fselenograph/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seleniumkit%2Fselenograph/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seleniumkit","download_url":"https://codeload.github.com/seleniumkit/selenograph/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seleniumkit%2Fselenograph/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408711,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2026-01-14T02:35:32.096Z","updated_at":"2026-01-14T02:35:32.683Z","avatar_url":"https://github.com/seleniumkit.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Selenograph\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/ru.qatools.seleniumkit/selenograph/badge.svg?style=flat)](https://maven-badges.herokuapp.com/maven-central/ru.qatools.seleniumkit/selenograph) \n[![Build status](http://ci.qatools.ru/job/pessimistic-mongodb_master-deploy/badge/icon)](http://ci.qatools.ru/job/selenograph_master-deploy/) \n\n**Selenograph** is a powered version of [Selenium Grid Router](https://github.com/seleniumkit/gridrouter) \nproviding more information about currently running Selenium sessions and hubs state. With this information Selenograph finds available browser faster and provides data for the real time status and statistics.\n\n![Screenshot](screen.png)\n\n## Requirements\n\nUnlike the original Grid Router, Selenograph has the shared state between nodes, which is stored in database.\nWe use [MongoDB](https://www.mongodb.org/) (v. 3.2+) as a database, because it provides high availability, fault tolerance and schema-less approach.\nAlthough it's recommended to use a replica set (at least 3 nodes of MongoDB), you can run just a single instance to play with Selenograph.\n\n## Features\n\n* Web interface displaying all available quotas, browsers and versions with the corresponding number of currently running sessions\n* REST API showing information about currently running sessions for each quota and hub\n* Ability to export to Graphite e.g. in order to visualize quotas and browsers usage statistics\n\n## Installation\n\nFor Ubuntu users we provide deb packages. Please note that yandex-selenograph package conflicts with \nyandex-grid-router, so if you have previously installed Selenium Grid Router, you'll need to uninstall it first. \n\nAlso ensure that you have Java 8 installed:\n```\n$ sudo add-apt-repository ppa:webupd8team/java\n$ sudo apt-get update\n$ sudo apt-get install oracle-java8-installer\n```\n\nTo install Selenograph itself:\n```\n$ sudo add-apt-repository ppa:yandex-qatools/selenograph\n$ sudo apt-get update\n$ sudo apt-get install yandex-selenograph\n$ sudo service yandex-selenograph start\n```\n\nYou can also run Selenograph in Docker container (not yet available - coming soon):\n\n```\n$ sudo docker run --net host \\ \n                --log-opt max-size=1g \\\n                --log-opt max-file=2 \\\n                -v /etc/grid-router:/etc/grid-router:ro \\\n                -v /var/log/grid-router:/var/log/grid-router \\\n                -d qatools/selenograph:latest \n```\n\n## Configuration\n\nMost of configuration options duplicate the original [Selenium Grid Router](https://github.com/seleniumkit/gridrouter#configuration) ones.\nTo configure the MongoDB connection and other Selenograph-specific options, you should edit `/etc/grid-router/selenograph.properties`:\n\n```\n##### Main MongoDB options:  #####\n# Specifies the mongodb hosts\ncamelot.mongodb.replicaset=localhost:27017\n\n# Set the database name for selenograph\ncamelot.mongodb.dbname=selenograph\n\n# Set the username for selenograph user\ncamelot.mongodb.username=\n\n# Set the password for selenograph user\ncamelot.mongodb.password=\n\n\n##### Graphite export options:  #####\n# Specifies the graphite api host (uncomment to enable)\n# graphite.host=127.0.0.1\n\n# Specifies the graphite api port\n# graphite.port=42000\n\n# Specifies the prefix for metrics\n# selenograph.gridrouter.graphite.prefix=selenograph\n\n\n##### Advanced MongoDB options:  #####\n# The following options are not recommended to change\n# Edit them at your own risk only if you want to configure the connection options\n# camelot.mongodb.connections.per.host=30\n# camelot.mongodb.threads.connection.mult=40\n# camelot.mongodb.connect.timeout=15000\n# camelot.mongodb.heartbeat.timeout=15000\n# camelot.mongodb.heartbeat.frequency=1000\n# camelot.mongodb.heartbeat.socket.timeout=10000\n# camelot.mongodb.readpreference=PRIMARY_PREFERRED\n# camelot.mongodb.socket.timeout=60000\n# camelot.mongodb.waitForLockSec=120\n# camelot.mongodb.lockPollMaxIntervalMs=7\n```\n\n\n## REST API\n\n### /quota\nRequires Basic HTTP authorization with quota credentials. \nShows information about browsers available in current quota. Output example:\n```\n{  \n   \"firefox:33.0\":135,\n   \"chrome:opera-28.0\":10,\n   \"chrome:opera-29.0\":10,\n   \"firefox:37.0\":55,\n   \"firefox:36.0\":30,\n   \"firefox:39.0\":10,\n   \"firefox:38.0\":110,\n   \"chrome:48.0\":100,\n   \"chrome:43.0\":10,\n   \"internet explorer:9\":20,\n   \"chrome:42.0\":130,\n   \"internet explorer:8\":20,\n   \"chrome:45.0\":20,\n   \"chrome:44.0\":10,\n   \"chrome:opera-30.0\":10,\n   \"MicrosoftEdge:12.1\":10,\n   \"firefox:40.0\":20,\n   \"internet explorer:11\":20,\n   \"firefox:41.0\":20,\n   \"iOS:7.1\":2,\n   \"internet explorer:10\":20,\n   \"chrome:yandex-browser\":25,\n   \"chrome:41.0\":55,\n   \"chrome:40.0\":5,\n   \"iOS:8.4\":2,\n   \"android:6.0\":5,\n   \"opera:12.16\":20\n}\n```\n### /stats\nRequires Basic HTTP authorization with quota credentials. \nReturns usage statistics for each browser version for quota. `max` and `avg` numbers displays the maximum and average\nconcurrent sessions during current minute. `raw` and `current` displays the currently running sessions count.\nOutput example: \n```\n{  \n   \"selenium:firefox:36.0\":{  \n      \"max\":0,\n      \"avg\":0,\n      \"raw\":0,\n      \"current\":0\n   },\n   \"selenium:chrome:41.0\":{  \n      \"max\":0,\n      \"avg\":0,\n      \"raw\":0,\n      \"current\":0\n   },\n   \"selenium:firefox:37.0\":{  \n      \"max\":0,\n      \"avg\":0,\n      \"raw\":0,\n      \"current\":0\n   },\n   \"selenium:firefox:38.0\":{  \n      \"max\":0,\n      \"avg\":0,\n      \"raw\":0,\n      \"current\":0\n   }\n}\n```\n### /ping\nA ping API for load balancers. Returns 200 when service is functioning properly.\n\n### /api/selenograph/strategy\nShows a list of all available hubs with percentage of free browsers (100% for completely free hub). \nThis information is used while selecting the next hub to route the session to. Output example:\n```\n{  \n   \"lastUpdated\":\"Feb,26 12:39:13.061\",\n   \"hubs\":{  \n      \"firefox33-1.selenium.net:4445\":100,\n      \"firefox33-2.selenium.net:4445\":75,\n      \"firefox42-1.selenium.net:4445\":50,\n      \"firefox42-2.selenium.net:4445\":100,\n      \"chrome45-1.selenium.net:4444\":80,\n      \"firefox38-1.selenium.net:4445\":100,\n   }\n}\n```\n### /api/selenograph/quotas\nShows information about all available quotas: which browser versions exist and how many browsers are available for each version.\nThis info is actually the mirror of the configured Gridrouter quotas enriched with currently running sessions count.\n```\n{  \n   \"all\":[  \n      {  \n         \"versions\":[  \n            {  \n               \"version\":\"33.0\",\n               \"running\":211,\n               \"max\":500\n            }\n         ],\n         \"name\":\"firefox\",\n         \"running\":211,\n         \"max\":500\n      },\n      {  \n         \"versions\":[  \n            {  \n               \"version\":\"11.0\",\n               \"running\": 280,\n               \"max\": 584,\n               \"occupied\":0\n            },\n         ],\n         \"name\":\"internet explorer\",\n         \"running\":0,\n         \"max\":584,\n         \"occupied\":0\n      },\n   ],\n   \"nick-ie11\":[  \n      {\n         \"versions\":[  \n            {  \n               \"version\":\"11.0\",\n               \"running\": 280,\n               \"max\": 584\n            },\n         ],\n         \"name\":\"internet explorer\",\n         \"running\":0,\n         \"max\": 584\n      },\n   ],\n   \"john-firefox\":[  \n      {\n         \"versions\":[  \n            {  \n               \"version\":\"33.0\",\n               \"running\": 211,\n               \"max\": 500\n            },\n         ],\n         \"name\":\"firefox\",\n         \"running\":211,\n         \"max\": 500\n      },\n   ]\n}\n```\n\n### /api/selenograph/quota/:name\n\nThe same as `/api/selenograph/quotas`, but for the single quota name.\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseleniumkit%2Fselenograph","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseleniumkit%2Fselenograph","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseleniumkit%2Fselenograph/lists"}