{"id":15018745,"url":"https://github.com/marketsquare/robotframework-seleniumtestability","last_synced_at":"2025-05-07T15:21:19.618Z","repository":{"id":43535679,"uuid":"152263520","full_name":"MarketSquare/robotframework-seleniumtestability","owner":"MarketSquare","description":"Extension for SeleniumLibrary that provides manual and automatic waiting for asyncronous events like fetch, xhr, etc.","archived":false,"fork":false,"pushed_at":"2023-11-03T09:07:02.000Z","size":626,"stargazers_count":38,"open_issues_count":5,"forks_count":13,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-05-01T16:03:26.706Z","etag":null,"topics":["hacktoberfest","hacktoberfest2020","robot-framework","robotframework","selenium","testability"],"latest_commit_sha":null,"homepage":"","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/MarketSquare.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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},"funding":{"patreon":"rasjani","liberapay":"rasjani"}},"created_at":"2018-10-09T14:15:50.000Z","updated_at":"2024-03-07T20:38:31.000Z","dependencies_parsed_at":"2024-06-18T20:03:38.839Z","dependency_job_id":"3b33431d-43ce-40c6-b016-ae9d8c935f46","html_url":"https://github.com/MarketSquare/robotframework-seleniumtestability","commit_stats":{"total_commits":208,"total_committers":8,"mean_commits":26.0,"dds":0.3653846153846154,"last_synced_commit":"ca4679e97f340fe5041932e89a31e90313023cda"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarketSquare%2Frobotframework-seleniumtestability","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarketSquare%2Frobotframework-seleniumtestability/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarketSquare%2Frobotframework-seleniumtestability/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarketSquare%2Frobotframework-seleniumtestability/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MarketSquare","download_url":"https://codeload.github.com/MarketSquare/robotframework-seleniumtestability/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252902720,"owners_count":21822289,"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":["hacktoberfest","hacktoberfest2020","robot-framework","robotframework","selenium","testability"],"created_at":"2024-09-24T19:52:24.022Z","updated_at":"2025-05-07T15:21:19.598Z","avatar_url":"https://github.com/MarketSquare.png","language":"Python","readme":"robotframework-seleniumtestability\n==================================\n\nSeleniumTestability is a plugin to Robot Framework's SeleniumLibrary that adds\nfunctionality to it doesn't fit into its mission. These new features are archived\nby SL's plugin api that then automatically instrumentents the web application via\njavascript calls and provides  keywords to bridge those into Robot Framework.\n\nPlugin provides automatic detection of asyncronous events happening within\nthe web application. For example, if a rest api is called from the application,\ntestcase can automatically wait for that call to finish before doing any\ninteraction in the UI. There's also a bunch of functionality like fetching of\nbrowser logs,  keywords to interact with local and session storage.  See the\nkeyword documentation [here](https://marketsquare.github.io/robotframework-seleniumtestability/index.html?tag=plugin)\nfor more details.\n\nSeleniumTestability relies on core Selenium's feature EventFiringWebdriver\nand provides it's own listener interface that takes care of waiting in right\nplaces and instrumenting the SUT whenever it is needed.\n\nIn the future, its also possible to extend the javascript parts of\nSeleniumTestability to incorporate more state inspections.\n\nMonitoring of the asyncronous events is archived with help of [Testability.js](https://github.com/alfonso-presa/testability.js)\nand its [bindings](https://github.com/alfonso-presa/testability-browser-bindings)\n\n# Support\n\n\"Official\" support channel available in [Gitter.im](https://gitter.im/robotframework-seleniumtestability/community)\n\n# Installation\n\n```\npip install robotframework-seleniumtestability\n```\n\n# Usage\n\n## Initialize library\n\n```\nLibrary         SeleniumLibrary     plugins=SeleniumTestability;True;30 Seconds;True\n```\n\nFor parameter descriptions, refer to keyword docmentation.\n\n## Example\n\n```robotframework\n  Click Element             id:button_that_triggers_ajax_request\n  Click Element             id:some_other_element\n  Log To Console            This will happen right after clicking\n```\n\nIn here, if automatic_wait has been enabled, second `Click Element` keyword wont\nbe executed before action triggered by the first button is finished.\n\nIf automatic_wait is not enabled, test case can request the wait itself and previous\nexample would look something like this.\n\n```\n  Click Element               id:button_that_triggers_ajax_request\n  Wait For Testability Ready\n  Click Element               id:some_other_element\n  Wait For Testability Ready\n  Log To Console              This would show after events triggered by second click are done.\n```\n\n# Currently Supported Asyncronous features\n\n* setTimeout \u0026 setImmediate calls and wait for them.\n* fetch() call and wait for it to finish\n* XHR requests and wait for them to finish\n* CSS Animations and wait form them to finish\n* CSS Transitions and wait form them to finish\n* Viewport scrolling.\n\nDo note that catching css animations and transitions is browser dependant. In the past\ncertain browsers did not implement these features as \"the standard\" would require.\n\n# Other functionality.\n\nSeleniumTestability also provides other conveniance keywords that do not make sense to incorporate into\nSeleniumLibrary itself, mainly due to functionality not being in scope of SeleniumLibrary and Selenium\npython bindings. Do check the keyword documentation for up to date list of keywords.\n\n\n# Keyword Documentation\n\nKeyword documentation [here](https://marketsquare.github.io/robotframework-seleniumtestability/index.html?tag=plugin) and if you need to create one for offline usage:\n\n```\npython -m robot.libdoc SeleniumLibrary::plugins=SeleniumTestability\n```\n\n# Contributing\n\n[CONTRIBUTING.md](https://github.com/marketsquare/robotframework-seleniumtestability/blob/master/CONTRIBUTING.md) documents how to setup the environment for further development of SeleniumTestability.\n\n","funding_links":["https://patreon.com/rasjani","https://liberapay.com/rasjani"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarketsquare%2Frobotframework-seleniumtestability","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarketsquare%2Frobotframework-seleniumtestability","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarketsquare%2Frobotframework-seleniumtestability/lists"}