{"id":16019944,"url":"https://github.com/datakurre/robotrecorder_vagrant","last_synced_at":"2025-09-06T14:47:17.358Z","repository":{"id":8451952,"uuid":"10046282","full_name":"datakurre/robotrecorder_vagrant","owner":"datakurre","description":"RobotRecorder Vagrant is a Vagrant kit for recording Selenium tests (with audio)","archived":false,"fork":false,"pushed_at":"2014-10-30T00:59:45.000Z","size":228,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-02T19:53:51.712Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Puppet","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"totolicious/gulp-task-list","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/datakurre.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-05-14T03:16:55.000Z","updated_at":"2023-05-26T07:32:23.000Z","dependencies_parsed_at":"2022-09-04T02:20:23.946Z","dependency_job_id":null,"html_url":"https://github.com/datakurre/robotrecorder_vagrant","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/datakurre/robotrecorder_vagrant","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datakurre%2Frobotrecorder_vagrant","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datakurre%2Frobotrecorder_vagrant/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datakurre%2Frobotrecorder_vagrant/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datakurre%2Frobotrecorder_vagrant/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/datakurre","download_url":"https://codeload.github.com/datakurre/robotrecorder_vagrant/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datakurre%2Frobotrecorder_vagrant/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273919750,"owners_count":25191207,"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","status":"online","status_checked_at":"2025-09-06T02:00:13.247Z","response_time":2576,"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":"2024-10-08T17:21:01.967Z","updated_at":"2025-09-06T14:47:17.284Z","avatar_url":"https://github.com/datakurre.png","language":"Puppet","funding_links":[],"categories":[],"sub_categories":[],"readme":"RobotRecorder Vagrant\n=====================\n\nThis is an example `vagrant \u003chttp://vagrantup.com/\u003e`_  provision for a single\nsession `Selenium \u003chttp://seleniumhq.org/\u003e`_ server with automatic video\nrecording of executed browser tests (including audio). The recordings will be\nsaved into flv files onto a directory shared with the host machine.\n\n::\n\n    $ git clone https://github.com/datakurre/robotrecorder_vagrant.git\n    $ cd robotrecorder_vagrant\n    $ vagrant up || vagrant provision\n\nThe current configuration runs the tests on Iceweasel (Firefox for Debian).\nOnly one active window at time can be recorded. These limitation are mainly to\nkeep the configuration simple.\n\nThe recording toolchain is based on Xvfb, x11vnc, vnc2flc and alsa (snd_aloop\nand arecord).\n\n\nRobot Framework example\n-----------------------\n\n``./bootstrap.py``::\n\n    $ curl -O http://downloads.buildout.org/2/bootstrap.py\n\n``./buildout.cfg``::\n\n    [buildout]\n    parts = pybot\n\n    [pybot]\n    recipe = zc.recipe.egg\n    eggs =\n        robotframework\n        robotframework-selenium2library\n\nRunning the buildout::\n\n    $ python bootstrap.py\n    $ bin/buildout\n\n``./example.robot``::\n\n    *** Settings ***\n\n    Library  Selenium2Library\n\n    Test Setup  Open browser  about:  remote_url=http://localhost:4444/wd/hub\n    Test Teardown  Close all browsers\n\n    *** Test cases ***\n\n    We should be on the first page\n        Go to  http://www.google.com/\n        Input text  q  Plone\\n\n        Wait until page contains  Plone CMS: Open Source Content Management\n        Click link  Plone CMS: Open Source Content Management\n        Wait until location is  https://plone.org/\n        Title should be  Plone CMS: Open Source Content Management\n\n    *** Keywords ***\n\n    Wait until location is\n        [Arguments]  ${expected_url}\n        ${timeout} =  Get Selenium timeout\n        ${implicit_wait} =  Get Selenium implicit wait\n        Wait until keyword succeeds  ${timeout}  ${implicit_wait}\n        ...                          Location should be  ${expected_url}\n\nExecuting the test::\n\n    $ bin/pybot example.robot\n\nThe test execution should result an ``./recordinsgs/out.TIMESTAMP.flv`` file\nbelow the current vagrant working directory.\n\n\nAnnotated Plone screencast example\n----------------------------------\n\n``./bootstrap.py``::\n\n    $ curl -O http://downloads.buildout.org/2/bootstrap.py\n\n``./buildout.cfg``::\n\n    [buildout]\n    extends =\n        http://dist.plone.org/release/4.3-latest/versions.cfg\n        https://raw.githubusercontent.com/plone/plone.app.robotframework/master/versions.cfg\n    parts = pybot\n\n    [pybot]\n    recipe = zc.recipe.egg\n    eggs =\n        Pillow\n        plone.app.robotframework[speak]\n    scripts = pybot\n\nRunning the buildout::\n\n    $ python bootstrap.py\n    $ bin/buildout\n\n``./example.robot``::\n\n    *** Settings ***\n\n    Resource  plone/app/robotframework/server.robot\n    Resource  plone/app/robotframework/annotate.robot\n    Resource  plone/app/robotframework/speak.robot\n\n    Suite Setup  Setup\n    Suite Teardown  Teardown\n\n    *** Keywords ***\n\n    Setup\n        Setup Plone site  plone.app.robotframework.testing.SPEAKJS_ROBOT_TESTING\n        Import library  Remote  ${PLONE_URL}/RobotRemote\n\n    Teardown\n        Teardown Plone Site\n\n    *** Test Cases ***\n\n    Portal factory add menu\n\n        Enable autologin as  Contributor\n        Set autologin username  John Doe\n        Go to  ${PLONE_URL}\n\n        Speak  Ok. Hello. I'm John Doe.\n        Sleep  2s\n        ${pointer} =  Add pointer  user-name\n        Sleep  2s\n        Remove elements  ${pointer}\n\n        Speak  I want to add some content into my site.\n        Sleep  4s\n\n        Click link  css=#plone-contentmenu-factories dt a\n        Element should be visible\n        ...    css=#plone-contentmenu-factories dd.actionMenuContent\n\n        ${dot1} =  Add dot\n        ...    css=#plone-contentmenu-factories dt a  1\n\n        ${note1} =  Add note\n        ...    css=#plone-contentmenu-factories\n        ...    At first, click Add new... to open the menu\n        ...    width=180  position=left\n\n        Speak  At first, I click the Add new menu.\n        Sleep  4s\n\n        ${dot2} =  Add dot\n        ...    css=#plone-contentmenu-factories dd.actionMenuContent  2\n        ${note2} =  Add note\n        ...    css=#plone-contentmenu-factories dd.actionMenuContent\n        ...    Then click any option to add new content\n        ...    width=180  position=left\n\n        Speak  Then I select the option, which I would like to add.\n        Sleep  4s\n\n        Align elements horizontally  ${dot2}  ${dot1}\n        Align elements horizontally  ${note2}  ${note1}\n\n        Capture and crop page screenshot  add-new-menu.png\n        ...    contentActionMenus\n        ...    css=#plone-contentmenu-factories dd.actionMenuContent\n        ...    ${dot1}  ${note1}  ${dot2}  ${note2}\n\n        Remove elements  ${dot1}  ${note1}  ${dot2}  ${note2}\n\n        Speak  Next, I will select page to add a new document.\n        Sleep  1s\n        Add pointer  css=a#document\n        Sleep  2s\n        Click link  css=a#document\n\n        Wait Until Page Contains Element  css=#archetypes-fieldname-title input\n\n        ${dot1} =  Add dot  css=input#title  1\n        ${note1} =  Add note  css=input#title\n        ...    Enter document title\n        ...    width=200  position=right\n\n        Speak  At first, I enter the title.\n        Sleep  3s\n\n        Input Text  title  This is the title\n\n        ${dot2} =  Add dot  css=textarea#description  2\n        ${note2} =  Add note  css=textarea#description\n        ...    Enter document summary or description\n        ...    width=200  position=right\n\n        Speak  Then, I enter some summary or description for the page.\n        Sleep  4s\n\n        Input Text  description  This is the summary.\n\n        Capture and crop page screenshot  add-new-document-1.png\n        ...    archetypes-fieldname-title  archetypes-fieldname-description\n        ...    ${dot1}  ${note1}  ${dot2}  ${note2}\n\n        Speak  Next, I just click save. I will add the rest later.\n        Sleep  2s\n\n        Mouse over  css=input.context\n\n        ${dot3} =  Add dot  css=input.context  3\n        ${note3} =  Add note  css=input.context\n        ...    Click save\n        ...    width=90  position=right\n\n        Sleep  2s\n\n        Capture and crop page screenshot  add-new-document-2.png\n        ...    css=input.context  css=input.standalone\n        ...    ${dot3}  ${note3}\n\n        Capture page screenshot  add-new-document.png\n        Remove elements  ${dot1}  ${note1}  ${dot2}  ${note2}  ${dot3}  ${note3}\n\n        Add pointer  css=input.context\n        Sleep  1s\n\n        Click button  Save\n        Element should contain  css=#parent-fieldname-title  This is the title\n\n        Speak  Well, that was easy.\n        Sleep  2s\n        Speak  Thank you.\n        Sleep  4s\n\n        Update element style  visual-portal-wrapper  -moz-transition  all 2s\n        Update element style  visual-portal-wrapper  -moz-transform  rotate(180deg) scale(0)\n        Update element style  visual-portal-wrapper  margin-top  50%\n        Sleep  3s\n\nExecuting the test::\n\n    $ ZSERVER_HOST=0.0.0.0 bin/pybot -v ZOPE_HOST:$MY_HOST_LAN_IP -v REMOTE_URL:http://localhost:4444/wd/hub example.robot\n\nReplace ``$MY_HOST_LAN_IP`` with a such IP or hostname of your host machine\nwhich is also accessible from the vagrant guest.\n\nThe test execution should result an ``./recordinsgs/out.TIMESTAMP.flv`` file\nbelow the current vagrant working directory. An example recording for the test\nabove is published at: http://www.youtube.com/watch?v=DAJ30qldJak\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatakurre%2Frobotrecorder_vagrant","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdatakurre%2Frobotrecorder_vagrant","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatakurre%2Frobotrecorder_vagrant/lists"}