Skip to main content

Robot Framework testing resources for Plone

Project description provides Robot Framework compatible resources and tools for writing functional Selenium tests (including acceptance tests) for Plone CMS and its add-ons.

Please read the full documentation at Plone Developer Documentation.


  • Anatoly Bubenkov

  • Asko Soukka

  • Benoît Suttor

  • Carles Bruguera

  • Chris Ewing

  • Chris Shenton

  • Daniel Widerin

  • Ed Manlove

  • Eric Brehault

  • Esa-Matti Suuronen

  • Fulvio Casali

  • Godefroid Chapelle

  • Hector Velarde

  • Jean-Michel Francois

  • Jens Klein

  • Johan Beyers

  • Johannes Raggam

  • Jonas Baumann

  • Kees Hink

  • Laure Perez Mayos

  • Leo Rochael

  • Mikko Ohtamaa

  • Roman Kozlovskyi

  • Silvio Tomatis

  • Steffen Lindner

  • Stephan Geulette

  • Timo Stollenwerk

  • Victor Fernandez de Alba

  • zotya


2.1.2 (2024-02-12)

Bug fixes:

  • Fix duplicate installation of profile. @davisagli (#154)

  • Fix printing the server URL when robot-server is run without reloading enabled. @davisagli (#155)

2.1.1 (2023-10-25)


  • Update configuration files. [plone devs] (434550cc)

2.1.0 (2023-07-14)

New features:

  • Add support for playwright-based tests via robotframework-browser. [datakurre] (#3813)

Bug fixes:

  • Remove unused and empty keyword that was displaying an error. [gforcada] (#147)

2.0.1 (2023-02-22)

Bug fixes:

  • Fix deprecation warnings (#142)

2.0.0 (2022-11-30)

Bug fixes:

  • Final release. [gforcada] (#600)

2.0.0b2 (2022-08-30)

New features:

  • Add keyword ‘Wait For Elements’. Here the requested element is allowed to match multiple times. [maurits] (#3582)

Bug fixes:

  • Sleep in ‘Wait For Element’ and ‘Wait For Then Click Element’. After this sleep, check that the element in question is there only once. Hopefully this will stabilize the Plone core robot tests. [maurits] (#3582)

2.0.0b1 (2022-06-23)

New features:

  • Add keywords for making sure an element is visible before clicking. Keywords are: Wait For Element, Wait For Then Click Element, Wait For Then Click Invisible Element. [maurits] (#134)

Bug fixes:

  • Change the Selenium timeout from 30 seconds to 7. [maurits] (#135)

2.0.0a6 (2022-05-14)

Bug fixes:


2.0.0a5 (2022-05-09)

Bug fixes:

  • Fixed undefined name, should have been WSGI_SERVER_TEST_SCOPE_FIXTURE. [maurits] (#131)

2.0.0a4 (2022-05-09)

Breaking changes:

  • Cleanup: Python 3 only, Dexterity only, isort, black. [maurits] (#129)

Bug fixes:

  • Make compatible with robotframework 3-5. [maurits] (#5)

  • Fix Volto Cypress tests by adding a new functional test layer layer, which does not not accept requests between tests cases. [datakurre] (#131)

2.0.0a3 (2022-04-04)

Bug fixes:

  • Update modal and toolbar selectors for ES6. [agitator] (#126)

2.0.0a2 (2022-03-09)

New features:

  • Add VHM support in the PloneRobotFixture [sneridagh] (#127)

2.0.0a1 (2021-08-04)

Breaking changes:

  • Update to Barceloneta-LTS selectors [petschki] (#123)

1.5.6 (2020-10-12)

New features:

  • Removed backwards compatibility code for old quickinstaller. Current is only for Plone 5.2+, so this code was no longer used. See also PLIP 1775. [maurits] (#1775)

1.5.5 (2020-09-26)

Bug fixes:

  • Fixed error Variable '${CMFPLONE_SELECTORS}' not found on Plone 6. [maurits] (#680)

  • Fixed DeprecationWarning: invalid escape sequence. [maurits] (#3130)

1.5.4 (2020-03-13)

Bug fixes:

  • Fixed package install error with Python 3.6 without locale. See coredev issue 642. [maurits] (#642)

1.5.3 (2019-11-25)

Bug fixes:

  • Fix the Debug keyword (#114)

  • Remove deprecation warnings [ale-rt] (#116)

1.5.2 (2019-05-21)

Bug fixes:

  • Removed the legacy keyword Refresh JS/CSS resources. [Rotonen] (#110)

  • Use the ‘Plone test setup’ and ‘Plone test teardown’ keywords in the Robot tests. [Rotonen] (#110)

  • Stabilize tests by defaulting to a browser window size of 4K x 4K. [Rotonen] (#110)

1.5.1 (2019-05-01)

Bug fixes:

  • Patch selenium.is_connectable for Python 3 to retry on ConnectionResetError. See issue 2786. [maurits] (#2786)

1.5.0 (2019-02-08)

New features:

  • Print the ZServer and XMLRPC URLs when starting up the server. [jone] (#106)

Bug fixes:

  • Remove five.globalrequest dependency. It has been deprecated upstream (Zope 4). [gforcada] (#95)

  • Fix old links on [gforcada] (#96)

  • Use the standard library signal module instead of the ZServer Signal module [ale-rt] (#97)

  • Fix the travis build which is broken since we are picking a random port (fixes #100) [ale-rt] (#100)

  • Do not raise an error if the child processes we want to kill is not there anymore. Replace “Zope 2 server” with the more appropriate “Zope robot server” [ale-rt] (#104)

1.4.0 (2018-10-31)

New features:

  • Read files as binary in Python 3. [davisagli]

  • Avoid test layer isolation problems by setting the remote library as an attribute of the PloneSite class instead of a particular portal instance. [davisagli]

1.3.1 (2018-10-31)

Breaking changes:

  • Default to the new plone.testing default of picking the ZServer port dynamically. [Rotonen]

1.3.0 (2018-10-01)

New features:

  • Remove compatibility code for Plone 4.x. [hvelarde]

  • Skip Support for Plone 4.x. [jensens]

Bug fixes:

  • Add support for Python 3. [davisagli]

  • Support for Plone 5.x toolbar, i18n, … [jensens]

  • Fix RemoteLibrary i18n to work proper with registry based settings. [jensens]

  • Make robotframework work with merged plone.login. [jensens]

  • Fix Travis CI setup. [jensens]

1.2.1 (2018-06-22)

Bug fixes:

  • Fixed create user with multiple roles with args:

    Create user  siteadmin  Contributor  Reviewer  Site Administrator

    and with kwargs:

    @{roles} =  Create list  Contributor  Reviewer  Site Administrator
    Create user  siteadmin  roles=@{roles}

    [ksuess, datakurre]

1.2.0 (2018-02-23)

New features:

  • Imports are Python3 compatible. Add six into install_requires set and sort each file’s imports with the isort package. [b4oshany, @davilima6]

1.1.3 (2018-02-02)

Bug fixes:

  • Import activatePluginInterfaces from Products.PlonePAS.setuphandlers. [maurits]

1.1.2 (2018-01-30)

Bug fixes:

  • Use get_installer for checking if a product is installed. Fall back to getting the portal_quickinstaller tool. [maurits]

1.1.1 (2017-06-28)

Bug fixes:

  • Update links to external documentation. [jensens]

1.1 (2017-04-08)

New features:

  • Add new variable ${SELENIUM2LIBRARY_RUN_ON_FAILURE} with default value ‘No operation’ (Robot Framework built-in keyword with no action) to define operation immediately after failed Selenium keyword [datakurre]

Bug fixes:

  • Fix issue where an error “No keyword with name ‘No keyword’ found.” after a failing test was reported [datakurre]

1.0.3 (2017-03-28)

New features:

  • Manage datetime and date field types in “set field value” keyword [sgeulette]

  • Manage RelationList field using “references” field type in “set field value” keyword [sgeulette]

1.0.2 (2017-02-22)

Bug fixes:

  • Fix issue where custom pybot-entrypoint failed to parse Sphinx-document with :ref: [datakurre]

1.0.1 (2016-09-08)

Bug fixes:

  • fix broken links [staeff]

1.0 (2016-07-15)

Breaking changes:

  • Do not use run_on_failure from Selenium2Library. This interferes with Wait until keyword succeeds: an initial failure is seen as total failure instead of checking the retries of this keyword. See [maurits]

0.9.17 (2016-07-15)

New features:

  • Test with robotframework version 3.0. [maurits]

  • Added Plone Test Setup and Plone Test Teardown keywords. In that last one, in case of a failure do what is done by run_on_failure, which will be removed in version 1.0. This means a screen shot by default, but you can override this on the command line with for example ROBOT_SELENIUM_RUN_ON_FAILURE=Debug. See [maurits]

  • Add Running tests with the Google Chrome browser section. Briefly: ROBOT_BROWSER=chrome ./bin/test --all [thet]

Bug fixes:

  • Replaced deprecated Fail Unless Equal with Should Be Equal in test. [maurits]

0.9.16 (2016-06-07)


  • Removed bad format parameter on ObjectModifiedEvent: must be an Attributes instance. See zope.lifecycleevent.ObjectModifiedEvent class. Removed because we can’t get the interface and the correct fieldname. [sgeulette]

0.9.15 (2016-02-26)


  • Do not require argparse, decorator, and simplejson in Python 2.7, only lower. [maurits]

  • Replace import of zope.testing.testrunner with zope.testrunner. [thet]

0.9.14 (2015-10-11)

  • With lazy sandbox-server shutdown, let test layers to declare themselves dirty and force sandbox rebuild when required [datakurre]

  • Fix PloneRobotFixture to know its deployment state and declare itself dirty when required for lazy sandbox-server shutdown support [datakurre]

0.9.13 (2015-10-10)

  • Add support for lazy sandbox-server (Zope2Server) shutdown with pybot --listener or with Sphinx extension to allow sequential Sphinx documents to share the same server for screenshots generation [datakurre]

0.9.12 (2015-09-27)

  • Fix CSRF errors on content creation keywords [vangheem]

0.9.11 (2015-09-16)

  • Fix issue where ‘use_email_as_login’ was not found in registry [datakurre]

  • Fix selenium2library link in documentation [gotcha]

  • Inline sample robot code for mentioned example into docs [pjoshi]

0.9.10 (2015-07-30)

  • Update good known versions. [gotcha]

  • “Create content” keyword fix: creation of random images in ATCT did not work when dexterity was installed. [gotcha]

0.9.9 (2015-03-13)

  • “Create content” keyword fixes: Fix creation of random images, add image to News Item if not defined, add file to File if not defined. [thet]

  • Also detect mockup-based modals in the “Click Overlay Link” and “Click Overlay Button” keywords. [davisagli]

  • Read use_email_as_login setting from the registry instead of portal properties (see [jcerjak]

0.9.8 (2014-11-11)

  • Fix dependency on plone.namedfile to be optional [hvelarde, datakurre]

0.9.7 (2014-10-13)

  • Restore robotsuite into direct dependencies for convenience [datakurre]

0.9.6 (2014-10-11)

  • Fix package dependencies; Remove needless dependency on unittest2 Remove implicit dependency on z3c.relationfield unless it’s required by the tested add-on [vincentfretin, hvelarde, datakurre]

0.9.5 (2014-10-09)

  • Fix issue where Dexterity content creation without explicit id fails [datakurre]

  • Add user keywords ‘a logged in test user’ and ‘a logged in site owner’. [tisto]

  • Add user.robot keywords. [tisto] [datakurre]

  • Refactor Dexterity not to be explicit dependency [datakurre]

  • Add default RobotRemote instance to support enabling the default remote library with collective.monkeypatcher (see p.a.robotframework.testing) [datakurre]

0.9.4 (2014-06-23)

  • Make the ‘id’ parameter optional for the ‘create content’ keyword. [timo]

0.9.3 (2014-06-23)

  • Add ‘Global allow’ content keyword [tisto]

0.9.2 (2014-04-28)

  • Fix package dependencies [hvelarde]

0.9.1 (2014-04-16)

  • Fix robot-server debug-mode support to work also in code reloading mode [datakurre]

0.9.0 (2014-04-13)

  • Add a new command-line option for robot-server to start Zope in debug-mode (usage: bin/robot-server -d or bin/robot-server –debug-mode) [datakurre]

  • Change robot LISTENER_PORT (used in communication between bin/robot-server and bin/robot via robotframework) to default port 49999 instead of 10001 [datakurre]

  • Add SELENIUM_RUN_ON_FAILURE-variable into resource file plone/app/robotframewor/selenium.robot to support custom keyword be called at the first failing step (defaults to Capture Page Screenshot, but can be changed to ease debugging)

  • Refactor Debug keyword in plone/app/robotframwork/keywords.robot to to support both DebugLibrary and Dialogs-library and finally fallback to pdb REPL.

  • Add new script bin/robot-debug as a shortcut to run robot with variable SELENIUM_RUN_ON_FAILURE=Debug [datakurre]

  • Fix MOCK_MAILHOST_FIXTURE’s teardown to don’t crash on missing portal._original_mailhost attribute because of wrong layer order [thet]

0.8.5 (2014-04-02)

  • Add ‘Get total amount of sent emails’-keyword into MockMailHost remote library [datakurre]

0.8.4 (2014-03-31)

  • Fix regression in PloneRobotFixture (used in documentation screenshots) [datakurre]

0.8.3 (2014-03-04)

  • Fix ‘title’-keyword argument to be optional for Create content -keyword [datakurre]

0.8.2 (2014-02-17)

  • Move robotframework-debuglibrary into its own extras to not require it by default and to restore compatibility with robotframework < 2.8. Note: Debug-keywords now requires either that is required with [debug] extras or that robotframework-debuglibrary is requires explicitly. [datakurre]

0.8.1 (2014-02-13)

  • Fix debug-keyword to load DebugLibrary lazily to not require readline until its really required [fixes #20] [datakurre]

0.8.0 (2014-02-13)

  • Add Debug-keyword by adding dependency on robotframework-debuglibrary and automatically include it in keywords.robot. [datakurre]

0.7.5 (2014-02-11)

  • Fix crete content keyword to support schema.Object-fields (e.g. RichText) [datakurre]

  • Fix support of passing list variables from environment into PloneRobotFixture [datakurre]

0.7.4 (2014-02-11)

  • Add ‘Delete content’ keyword for content remote library [datakurre]

0.7.3 (2014-02-09)

  • Allow to custom open browser keyword in server.robot [datakurre]

0.7.2 (2014-02-09)

  • Add support for registering translations directly from docs for screenshots [datakurre]

0.7.1 (2014-02-08)

  • Add ignored Sphinx-directives to pybot to make it easier to run pybot against Sphinx documentation [datakurre]

  • Update libdoc-generated documentations [datakurre]

0.7.0 (2014-02-08)

  • Fix kwargs support for robotframework >= 2.8.3 [fixes #17] [datakurre]

  • Add path_to_uid method to content library. [tisto]

  • Add content library container tests for documentation. [tisto]

  • The title attribute for Dexterity types needs to be unicode. [tisto]

  • Add field type reference (only intid support for now). [tisto]

  • Add file/image support to set_field_value method/keyword. [tisto]

  • Add support for list type. [tisto]

  • Support setting RichText (Dexterity only). [tisto]

  • Call reindexObject after setting a field value so the object is updated in the catalog as well. [tisto]

  • Add new set_field_value keyword that allows to set the field type explicitly. [tisto]

  • Fix use object_rename view instead of pop-up for rename content title [Gagaro]

  • Fix use “a” instead of “span” for Open User Menu [Gagaro]

  • Fix rename content title [Gagaro]

0.7.0rc4 (2013-11-13)

  • Add support for path as container argument value in Create content -keyword [datakurre]

0.7.0rc3 (2013-11-12)

  • Drop dependency on plone.api [datakurre]

0.7.0rc2 (2013-11-12)

  • Fix backwards compatibility with robotframework 1.7.7 [datakurre]

0.7.0rc1 (2013-11-10)

This is Arnhem Sprint preview release of 0.7.0.

  • Refactor and clean; Rename ‘Do transition’ to ‘Fire transition’; Split ‘PloneAPI’ RemoteLibrary into ‘Content’ and ‘Users’ libraries [datakurre]

  • Add ‘Pause’-keyword [datakurre]

  • Cleanup Zope2ServerRemote-library keywords [datakurre]

  • Add I18N, MockMailHost, PortalSetup and PloneAPI -keywords from c.usermanual [datakurre]

  • Rename RemoteServer-keyword library into Zope2ServerRemote and provide a shortcut import [datakurre]

  • Fix to support explicit layers with zodb_setup and zodb_teardown calls, because sometime the layers is not available (because of different server library instance); Add remote library for zodb_setup and zodb_teardown keywords [datakurre]

  • Rename PloneRobotSandboxLayer into PloneRobotFixture, because it’s only usable as it is [datakurre]

  • Drop LiveSearch-layer (it was CMFPlone-specific); Add MockMailHostlayer; Add robot configurable PloneRobotSandboxLayer [datakurre]

  • Refactor to use python only for environment variables and define other variables in robot to support robot variable overrides [datakurre]

  • Deprecate annotate-library in favor of Selenium2Screenshots-library [datakurre]

  • Remove moved CMFPlone-tests [datakurre]

  • Use robotframework 2.8.1 [datakurre]

  • Fix to tell in ‘robot-server’ help how to enable code-reloading support [fixes #13] [datakurre]

  • Add entry point for robot.libdoc [Benoît Suttor]

  • Return location to reference new content [Benoît Suttor]

  • Refactor add content keywords [Benoît Suttor]

  • Explain stop keyword from debugging library [Benoît Suttor]

0.6.4 (2013-08-19)

  • Better support for Login/Logout on multilingual sites by not relying on ‘Log in’ and ‘Log out’ on these pages. Check css locators instead. [saily]

0.6.3 (2013-06-28)

  • ZSERVER_PORT, ZOPE_HOST and ZOPE_PORT environment variables are supported. [gotcha]

  • Make robot-server show logging messages. [gotcha]

0.6.2 (2013-06-19)

  • Remove the default selenium-version (SELENIUM_VERSION-variable) set for sessions Sauce Labs to fix issues with mobile browser testing (selenium-version must not be set when testing mobile browsers) [datakurre]

  • Documentation updates [gotcha, datakurre]

  • Add Capture viewport screenshot into annotate.robot keywords library [datakurre]

  • Fix Speak-keyword to use jQuery instead of jq [datakurre]

0.6.1 (2013-05-16)

  • Fix Click Action by keyword. on Sunburst Theme the action id is #plone-contentmenu-actions-${name} [JeanMichel FRANCOIS]

  • Enhance Server-library to support carefully designed additional layers (appended after the main layer) [datakurre]

  • Documentatio updates [ebrehault, Fulvio Casali, saily]

0.6.0 (2013-04-30)

  • Add verbose console output for robot-server for test setup and teardown [datakurre]

  • Documentation update [datakurre, Silvio Tomatis]

  • Merge pull request #2 from silviot/patch-1

  • Add Element should become visible keyword [datakurre]

0.5.0 (2013-04-09)

  • Add Align elements horizontally annotation keyword.

0.4.4 (2013-04-09)

  • Fix image cropping math.

0.4.3 (2013-04-08)

  • Fix the default Selenium timeout to be 30s instead of 10s, because defaults need to be safe at first and only then optimal.

0.4.2 (2013-04-08)

  • Use Capture and crop page screenshot keyword in screencast example; Try more transparent annotation pointer

0.4.1 (2013-04-08)

  • Rename Add dot to Add pointer and Add numbered dot to Add dot; Available annotations keywords are now Add pointer, Add dot and Add note.

0.4.0 (2013-04-08)

  • Moved speak.js into collective.js.speakjs.

  • Add note positions. Add numbered dot

  • Tune old annotation keywords.

0.3.0 (2013-04-07)

  • Add annotation library with dot and note

  • Add image cropping keyword into annotation library

  • Restore pybot-entrypoint (it’s needed for screenshot-usecase)

0.2.5 (2013-04-05)

  • PLOG2013 development release.

  • Fix Sauce Labs -library to work without tunnel identifier

0.2.4 (2013-04-04)

  • PLOG2013 development release.


0.2.3 (2013-04-04)

  • PLOG2013 development release.

  • Define dedicated reusable AUTOLOGIN_ROBOT_FIXTURE

  • Drop BBB for plone.act

  • Drop entrypoints for pure pybot and rebot to make it easier to use them pure without extra dependencies by installing robotentrypoints-package

0.1.0 (2013-04-03)

  • PLOG2013 development release.

Project details

Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution (913.4 kB view hashes)

Uploaded Source

Built Distribution (130.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page