Robotframework

Latest version: v7.0

Safety actively analyzes 629678 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 12 of 14

3.0a2

Robot Framework 3.0 alpha 2 is the second preview of the next Robot Framework major version. The biggest enhancement it contains is Python 3 support, but also new generic `robot` start-up script have been introduced.

Biggest change in alpha 2 over alpha 1 is improvement in the execution speed when using listeners. The issue list at the end of [full release notes](https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-3.0a2.rst) mentions for each issue whether it came in alpha 1 or 2.

Source distribution is available at [PyPI](https://pypi.python.org/pypi/robotframework/3.0a2) and pip users can simply run `pip install --upgrade --pre robotframework` to install or upgrade to the latest release or `pip install robotframework==3.0a2` to install exactly this version.

Separate Windows installers are not created and the plan is not to create them even for final releases in the future (2218). The standalone jar distribution can be created and added here if there are requests, but we only upload final releases to the [Maven central](http://search.maven.org/#search%7Cga%7C1%7Ca%3Arobotframework).

Robot Framework 3.0 alpha 2 was released on Thursday December 10, 2015.

3.0a1

Robot Framework 3.0 alpha 1 is the first preview of the next Robot Framework major version. The biggest enhancement it contains is Python 3 support, but also new generic `robot` start-up script have been introduced. For more details see the [full release notes](https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-3.0a1.rst).

Source distribution is available at [PyPI](https://pypi.python.org/pypi/robotframework/3.0a1) and pip users can simply run `pip install --upgrade --pre robotframework` to install or upgrade to the latest release or `pip install robotframework==3.0a1` to install exactly this version.

Separate Windows installers are not created and the plan is not to create them even for final releases in the future (2218). The standalone jar distribution can be created and added here if there are requests, but we only upload final releases to the [Maven central](http://search.maven.org/#search%7Cga%7C1%7Ca%3Arobotframework).

Robot Framework 3.0 alpha 1 was released on Thursday November 19, 2015.

2.9.2

Robot Framework 2.9.2 fixes broken AutoItLibrary support, adds IronPython support to the Dialogs library, and contains several other fixes and enhancements. For more details see the [full release notes](https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-2.9.2.rst).

Source distribution and Windows installers are available at [PyPI](https://pypi.python.org/pypi/robotframework/2.9.2) and the standalone JAR with Jython 2.7 at [Maven central](http://search.maven.org/#search%7Cga%7C1%7Ca%3Arobotframework). Pip users can simply run `pip install --upgrade robotframework` to install or upgrade to the latest release or `pip install robotframework==2.9.2` to install exactly this version.

Robot Framework 2.9.2 was released on Friday October 9, 2015.

2.9.1

Robot Framework 2.9.1 is a bug fix release that fixes few high priority bugs in
Robot Framework 2.9. For more details see the [full release notes](https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-2.9.1.rst).

Source distribution and Windows installers are available at [PyPI](https://pypi.python.org/pypi/robotframework/2.9.1) and the standalone JAR with Jython 2.7 at [Maven central](http://search.maven.org/#search%7Cga%7C1%7Ca%3Arobotframework). Pip users can simply run `pip install --upgrade robotframework` to install or upgrade to the latest release or `pip install robotframework==2.9.1` to install exactly this version.

Robot Framework 2.9.1 was released on Friday August 28, 2015.

2.9

Robot Framework 2.9 is a new major version with nearly 100 fixed issues. It contains, for example, high priority enhancements related to variables, support for creating keywords with embedded arguments in test libraries, and possibility to tag keywords. The most visible enhancement is the new fresh look in logs and reports. For more details see the [full release notes](https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-2.9.rst).

Source distribution and Windows installers are available at [PyPI](https://pypi.python.org/pypi/robotframework/2.9) and the standalone JAR with Jython 2.7 at [Maven central](http://search.maven.org/#search%7Cga%7C1%7Ca%3Arobotframework). Pip users can simply run `pip install --upgrade robotframework` to install or upgrade to the latest release or `pip install robotframework==2.9` to install exactly this version.

Robot Framework 2.9 was released on Friday July 31, 2015.

2.9rc1

Release notes

Robot Framework 2.9 rc 1 is the sixth and hopefully last preview version of the forthcoming RF 2.9 release. It contains, for example, high priority enhancements related to variables and supports creating keywords with embedded arguments in test libraries. All issues targeted for RF 2.9 can be found from the [issue tracker](https://github.com/robotframework/robotframework/issues?q=milestone%3A2.9).

This release ought to be very stable, and we hope that it gets as much real life testing as possible. We especially hope that library and tool developers would test how well this new version works with their projects. If no issues are found from the rc 1 release in a week, RF 2.9 final will be be released based on it. If problems arise, rc 2 will be created as soon as possible.

Questions and comments related to this release can be sent to the [robotframework-users](http://groups.google.com/group/robotframework-users) and possible bugs submitted to the [issue tracker](https://github.com/robotframework/robotframework/issues).

We have not generated Windows installers for this preview, but the source distribution is available from [PyPI](https://pypi.python.org/pypi/robotframework/2.9rc1) and the standalone jar with Jython 2.7 can be found from downloads below these release notes.

If you have pip just run `pip install --upgrade --pre robotframework` to install or upgrade to the latest version or use `pip install robotframework==2.9rc1` to install exactly this version. For more details and other installation approaches see [installation instructions](https://github.com/robotframework/robotframework/blob/master/INSTALL.rst).

Robot Framework 2.9 rc 1 was released on Wednesday July 15, 2015.

Compatibility with other projects

Robot Framework 2.9 should, for most parts, be compatible with other projects in the larger Robot Framework ecosystem. It may, however, take some time before tools support new syntax like dictionary variables or keyword tags. Additionally, big internal changes may affect tools that have used internal APIs. Libraries and tools know not to be compatible with Robot Framework 2.9 will be listed here.
- RIDE 1.4 and older is not compatible with new syntax added in Robot Framework 2.9. Updated version is to be released shortly.
- Selenium2Library 1.7 and older [use an internal API](https://github.com/rtomac/robotframework-selenium2library/issues/429) that was removed in Robot Framework 2.9 beta 1. Selenium2Library 1.7.1 and newer are compatible with Robot Framework 2.9.
- Also RemoteSwingLibrary 2.0.2 and older use a [removed internal API](https://github.com/robotframework/remoteswinglibrary/issues/24). A fixed version is to be released shortly.
- Robot Framework Jenkins plugin 1.6.0 and older [can not parse the new output.xml](https://issues.jenkins-ci.org/browse/JENKINS-29178). Jenkins plugin 1.6.1 and newer are compatible with Robot Framework 2.9.

Most important enhancements

Dictionary variable type (1450)

The most noticeable feature in RF 2.9 is the new syntax to create and use dictionary (a.k.a map or hashtable) variables. Dictionaries can be returned from keywords or created in variable files, but they can also be created in the variable table:

robotframework
*** Variables ***
&{DICT} key=value second=2 third=${3}


The above example will create a dictionary variable `&{DICT}` with Python dictionary `{'key': 'value', 'second': '2', 'third': 3}` as the value. If a dictionary variable is used as a scalar variable like `${DICT}`, it will be passed forward as a single argument containing the whole dictionary. If it used like `&{DICT}`, individual items are passed as named arguments. For example, these two examples are equivalent:

robotframework
*** Test Cases ***
Example 1
My Keyword key=value second=2 third=${3}
Example 2
My Keyword &{DICT}


Individual dictionary variable items can be accessed either using special `&{DICT}[key]` syntax similarly as individual list variable items can be accessed like `{LIST}[0]`. As a special feature, dictionary variables are ordered and allow accessing values also using attribute access like `${DICT.key}`. For more information about dictionary variables, see Variables section in the [User Guide](http://robotframework.org/robotframework/#user-guide).

**NOTE**: RIDE 1.4 and older do not support dictionary variables.

Python style `**kwargs` support with user keywords using `&{kwargs}` syntax (1561)

New dictionary variable syntax can be used with user keywords to accept free keyword arguments similarly as Python based keywords can accept `**kwargs`. This can be accomplished simply by having a dictionary variable like `&{kwargs}` as the last argument in user keyword argument specification:

robotframework
*** Keywords ***
Run My Process
[Arguments] {arguments} &{configuration}
Run Process myproc.exe {arguments} &{configuration}


Also this new functionality is explained with further examples in the [User Guide](http://robotframework.org/robotframework/#user-guide).

Embedded arguments in keywords defined in test libraries (1818)

User keywords have supported embedded arguments since RF 2.1.1 (370), and finally this functionality is supported also by library keywords. This is accomplished by giving a custom name to a keyword by setting `robot_name` attribute manually or by using `robot.api.deco.keyword' decorator (1835), and using`${args}` in the name similarly as with user keywords. The implementing method or function must also accept same number of arguments as there are embedded argument.

python
from robot.api.deco import keyword

keyword(name='User "${user}" selects "${item}" from webshop')
def select_item(user, item):
...


The [User Guide](http://robotframework.org/robotframework/#user-guide) is, again, the place where to find more information and examples.

Keyword categorization (i.e. tagging) support

Keywords can now have tags (925). The tags can be added to user keywords either by new `[Tags]` setting, or by adding them to the last line of documentation.

robotframework
*** Keywords ***
My keyword
[Tags] tag1 tag2
No Operation
My other keyword
[Documentation] Tags can also be added as last line of documentation.
... Tags: tag1, tag2
No Operation


Library keywords can also use documentation to specify their tags or they can be added to `robot_tags`attribute for each method. The `keyword` decorator provides a handy shortcut for specifying tags for each method.

python
from robot.api.deco import keyword

keyword(tags=['tag1', 'tag2'])
def select_item(user, item):
...


Libdoc will show keywords by tags (1840) and tags can also be used to specify keywords for `--removekeywords` and `--flattenkeywords` commandline options (1935).

Programmatic modifications of test data and results as part of normal execution

It is now possible to specify modifiers to preprocess the test data before the test run and to modify the results before generation of log and report. The modifiers can be taken into use with `--prerunmodifier` and `--prerebotmodifier`. See the issue 1976 for an example and more details.

Lighter and more neutral colors for logs and reports (1943)

Logs and reports have a new fresh look. Go run some tests and see yourself!

Less verbose and quiet console outputs (317)

New option `--console` allows changing the console output type. Possible values are `verbose` (default), `dotted` (x-unit like output where each passing test prints only a dot), `quiet` (no output except warnings and errors) and `none` (no output whatsoever). Dotted output has a shortcut `--dotted` or `-.` as a short option.

Variables are added to evaluation namespace of `Evaluate`, `Run Keyword If`, etc. (2040)

Robot´s variables are now available with a `$` prefix as Python variables in evaluation namespace of various BuiltIn library keywords.

The two rows below are now equivalent (assuming value of `${my var}` is a string):

robotframework
*** Keywords ***
My keyword
Run keyword if "${my var}" != "Foo" ... old syntax
Run keyword if $my_var != "Foo" ... new syntax in 2.9


`FOR ... IN ZIP ...` and `FOR ... IN ENUMERATE` (1952)

New for loop syntax allows use of for-in-zip and for-in-enumarete loops.

robotframework
*** Keywords ***
For in zip example take elements from both lists
:FOR ${number} ${name} IN ZIP ${NUMBERS} ${NAMES}
\ Number Should Be Named ${number} ${name}
For in enumerate example take an item and an increasing index number
:FOR ${index} ${item} IN ENUMERATE {LIST}
\ My Keyword ${index} ${item}


See the [userguide](http://robotframework.org/robotframework/2.9b2/RobotFrameworkUserGuide.html#for-loops) for more details.

Contribution guidelines (1805)

We have written guidelines helping to submit issue and contribute code. A link to them appears when submitting and issue or creating a pull request, and they are also [directly available](https://github.com/robotframework/robotframework/blob/master/CONTRIBUTING.rst). We plan to enhance the guidelines in the future, so all kind of comments and enhancement ideas are highly appreciated.

Other high priority enhancements and fixes
- Scalar and list variables stored in same namespace (1905)
- Standard libraries do not mask third party Python modules (1737)
- Fixed sporadic failures with timeouts on IronPython (1931)
- `--ExitOnFailure` does not work if test/suite setup/teardown fails (2004)
- Support YAML files as first class variable files (1965)
- Run Keyword If Test (Failed / Passed) will detect failure in teardown (1270)
- DateTime: DST problems when calculating with dates (2018)

Backwards incompatible changes

Being a major release, RF 2.9 contains lot of changes and some of them are backwards incompatible.

List and scalar variables stored in same namespace (1905)

It has been possible to use a list variable `{list}` as a scalar variable `${list}` since RF 2.0.3 (117), and scalar variables containing lists have been usable as list variables since RF 2.8 (483). It has, however, been possible to also create scalar and list variables with same base name, for example, in the variable table:

robotframework
*** Variables ***
${VAR} Scalar variable
{VAR} List variable


This caused a lot of confusion, and the addition of `&{dictionary}` variables (1450) would have made situation even more complicated. As a result it was decided to store all variables in the same namespace (1905) and decide how they are used depending on the format (e.g. `${var}` for scalar, `{var}` for list, and `&{var}` for dictionary).

As a result of this change, tests using scalar and list variables with same base name will need to be updated. Unfortunately there is no other good way to detect these problems than running tests with the new version and seeing does anything break.

Variables no longer leak to lower level keywords (532)

Local variables used to leak from test to keywords and from keywords to lower level keywords. The example below shows variable leaking from test to keyword:

robotframework
*** Test Case ***
Example
${x}= Set Variable hello
My keyword

*** Keywords ***
My keyword
Should be equal ${x} hello


This behaviour was never intended, but fixing the bug can break tests where this was used either intentionally or by accident.

Python and Jython 2.5 support dropped (1928)

With the official [Jython 2.7](http://jython.org) version out, we dropped the support for Python and Jython 2.5 series. The standalone JAR distribution contains Jython 2.7 from now on.

Empty elements or attributes are not written to output.xml (2020)

For example, every suite, test and keyword used to have `<doc></doc>` element even if they did not have any documentation.Nowadays such empty elements are not written to the output.xml at all. This change may affect tools processing output.xml files, but it also reduced output.xml size up to 10% in our tests.

PYTHONPATH environment variable is not processed with Jython or IronPython anymore (1983)

Robot Framework used to add PYTHONPATH to JYTHONPATH for Jython and to IRONPYTHONPATH for IronPython. In RF 2.9 Jython and IronPython will ignore PYTHONPATH and you need to use the correct path environment variable for your executor.

Execution directory not added automatically to module search path (2019)

The directory where execution is started from is not anymore added to the module search path. If it is needed, `PYTHONPATH`, `JYTHONPATH` or `IRONPYTHONPATH` environment variable can be explicitly set to `.` before execution.

Standard libraries not importable in Python without the `robot.libraries` prefix (1737)

It used to be possible to import Robot Framework's standard libraries in Python code by just using the library name like `import DateTime`. This caused problems in with standard libraries having same name as third party Python modules like [DateTime](https://pypi.python.org/pypi/DateTime/4.0.1).

To avoid these problems, standard libraries are not anymore directly importable in Python code. They are still importable with the `robot.libraries` prefix like `from robot.libraries import DateTime`. This has also always been the recommended way and the one used in examples in the User Guide.

Disabling command line options accepting no values by using same option again not supported anymore (1865)

Earlier it was possible to disable options accepting no values like `--dryrun` by giving the option again like `--dryrun --other options --dryrun`. This was rather confusing, and nowadays it is possible to do that by using the same option with `no` prefix like `--nodryrun` instead. If option is used with and without the `no` prefix, the last used value has precedence. Having same option multiple times has no special functionality anymore.

Possible equal signs in arguments to `BuiltIn.Call Method` need to be escaped (1603)

`Call Method` nowadays supports `**kwags` and thus possible equal signs in normal arguments need to be escaped with a backslash like `hello\=world`.

Unused internal functions, classes, etc. removed (1924)

See issue 1924 for a detailed list of changes to internal APIs. These changes should not affect libraries or tools using Robot Framework's public APIs.

Other backwards incompatible changes

These changes should generally not cause problems in real life. See linked issues for more details if you think you may be affected.
- Not possible to use keyword with embedded arguments as a normal keyword (1962)
- When assigning keyword return values to multiple scalar variables, an exact number of values is required (1910)
- `Create Dictionary` keyword moved from Collections to BuiltIn (1913)
- Keyword name conflict involving Remote library keyword causes failure and not warning (1815)
- Possibility to set scalar variables with lists value using `Set Test/Suite/Global Variable` keyword removed (1919)
- Variable assignment is not anymore be part of keyword name with --removekeywords, in logs, in listener interface, or in other APIs (1611)
- Deprecated syntax for repeating single keyword removed (1775)
- Deprecated `--runmode` option removed (1923)
- Deprecated `--xunitfile` option removed in favor of `--xunit` (1925)
- Deprecated way to exit for loops using custom exception with `ROBOT_EXIT_FOR_LOOP` attribute has been removed (1440)
- Run Keyword If Test (Failed / Passed) detects failures also in teardown (1270)
- DateTime: DST fixes when calculating with dates (2018)
- `FAIL` is no longer usable as a normal log level (2016)
- Console colors and markers: Fail if given value is invalid and remove outdated `FORCE` color value (2031)
- OperatingSystem and Dialogs: Remove partial support for running without Robot Framework itself (2039)

Deprecated features

Robot Framework 2.9 also deprecates some features that will be removed in the future releases. See the issues below for more details:
- `OperatingSystem.Start Process` keyword deprecated in favor of much more flexible `Process.Start Process` (1773)
- Listener interface version 1.0 deprecated (1841)
- `--runfailed` and `--rerunmerge` options deprecated in favor of `--rerunfailed` and `--merge`, respectively (1642)
- Old `Meta: Name` syntax for specifying test suite metadata deprecated (1918)
- Using same setting multiple times deprecated (2063)
- `DeprecatedBuiltIn` and `DeprecatedOperatingSystem` officially deprecated (1774)
- Deprecate `--monitorxxx` options in favor of `--consolexxx` (2027)

Acknowledgements

Robot Framework 2.9 got more contributions than any earlier release. Big thanks for the following contributors as wells for anyone who has tested the preview releases, submitted issues, or otherwise helped to make RF 2.9 a great release!
- Jared Hellman (hellmanj) implemented support for embedded arguments with library keywords (1818) and custom library keyword names (1835) required by it.
- Vinicius K. Ruoso (vkruoso) implemented support for adding support for multiple listeners per library (1970).
- Joseph Lorenzini (jaloren) exposed `ERROR` log level for keywords (1916).
- Guillaume Grossetie (Mogztter) contributed initial versions of log and report styles (1943).
- Ed Brannin (edbrannin) implemented FOR ... IN ZIP, FOR ... IN ENUMERATE syntax (1954).
- Moon SungHoon (MoonSungHoon) added new `Get Regexp Matches` keyword to the String library (1985).
- Hélio Guilherme (HelioGuilherme66) added support for partial match for `Get Lines Matching Regexp` also in the String library (1836).
- Guy Kisel (guykisel) wrote the initial contribution guidelines (1805).

Full list of fixes and enhancements

| ID | Type | Priority | Summary | Added&nbsp;In |
| --- | --- | --- | --- | --- |
| 532 | bug | critical | Variables should not leak to lower level keywords | alpha 3 |
| 1450 | enhancement | critical | Dictionary variable type | alpha 1 |
| 1561 | enhancement | critical | Support Python style `**kwargs` with user keywords using `&{kwargs}` syntax | alpha 1 |
| 1905 | enhancement | critical | Store list and scalar variables in same namespace | alpha 1 |
| 925 | enhancement | critical | Keyword categorization (i.e. tagging) support | alpha 2 |
| 1270 | bug | high | Run Keyword If Test (Failed / Passed) does not detect failure in teardown | alpha 3 |
| 1737 | bug | high | Standard libraries should not be importable in Python w/o `robot.libraries` prefix | alpha 1 |
| 1931 | bug | high | Timeouts can cause sporadic failures with IronPython | alpha 1 |
| 2004 | bug | high | `--ExitOnFailure` does not work if test/suite setup/teardown fails | alpha 2 |
| 2018 | bug | high | DateTime: DST problems when calculating with dates | alpha 3 |
| 1805 | enhancement | high | Contribution instructions | rc 1 |
| 1818 | enhancement | high | Embedded arguments in keywords defined in test libraries | alpha 1 |
| 1840 | enhancement | high | Libdoc: Show keywords by tags | alpha 2 |
| 1928 | enhancement | high | Drop Python/Jython 2.5 support to ease adding support for Python 3 | alpha 1 |
| 1943 | enhancement | high | Use lighter and more neutral colors for report and log html page | beta 1 |
| 1952 | enhancement | high | `FOR ... IN ZIP ...` and `FOR ... IN ENUMERATE` | beta 2 |
| 1965 | enhancement | high | Support yaml files as first class variable file | alpha 2 |
| 1976 | enhancement | high | Support programmatic modifications of test data and results as part of normal execution | alpha 2 |
| 1991 | enhancement | high | Include Jython 2.7 in standalone jar | alpha 2 |
| 2040 | enhancement | high | Add variables to evaluation namespace of `Evaluate`, `Run Keyword If`, ... | beta 2 |
| 293 | enhancement | high | Support reloading library | alpha 2 |
| 317 | enhancement | high | Less verbose and quiet console outputs | alpha 3 |
| 1611 | bug | medium | Variable assignment should not be part of keyword name with `--removekeywords`, in logs, in listener interface, or in other APIs | alpha 2 |
| 1900 | bug | medium | Log messages lost if library `__init__` imports or initializes other libraries | alpha 1 |
| 1908 | bug | medium | Telnet option negotiation loop | alpha 1 |
| 1992 | bug | medium | Listeners are not unregistered when using `TestSuite.run` API | alpha 2 |
| 2062 | bug | medium | Not possible to print to stdout/stderr by listeners or otherwise inside `Run Keyword` variants | rc 1 |
| 1440 | enhancement | medium | Remove attribute ROBOT_EXIT_FOR_LOOP depracated in 2.8 | alpha 1 |
| 1603 | enhancement | medium | Support `**kwargs` with `BuiltIn.Call Method` keywords | alpha 1 |
| 1728 | enhancement | medium | Support setting child suite variables with `Set Suite Variable` | beta 1 |
| 1743 | enhancement | medium | Make keyword prefix (library name) less visible than keywords in HTML reports | alpha 2 |
| 1773 | enhancement | medium | Deprecate `OperatingSystem.Start Process` keyword | alpha 1 |
| 1774 | enhancement | medium | Officially deprecate `DeprecatedBuiltIn` and `DeprecatedOperatingSystem` | alpha 1 |
| 1826 | enhancement | medium | Process: Better support on Jython 2.7 (termination, signals, pid) | alpha 1 |
| 1834 | enhancement | medium | String: Support partial match with `Get Lines Matching RegExp` | beta 2 |
| 1835 | enhancement | medium | Allow giving a custom name to keywords implemented using the static and the hybrid APIs | alpha 1 |
| 1841 | enhancement | medium | Deprecate old listener API | alpha 1 |
| 1865 | enhancement | medium | Support disabling command line options accepting no values using `no` prefix (e.g. `--dryrun` -> `--nodryrun`) | alpha 1 |
| 1869 | enhancement | medium | Variable errors should not exit `Wait Until Keyword Succeeds`, `Run Keyword And Expect Error`, etc. | rc 1 |
| 1910 | enhancement | medium | Require exact number of keyword return value when assigning multiple scalar variables | alpha 1 |
| 1911 | enhancement | medium | Accept list variable as a wildcard anywhere when assigning variables | alpha 1 |
| 1913 | enhancement | medium | Move `Create Dictionary` to BuiltIn and enhance to preserve order, allow accessing keys as attributes, etc. | alpha 1 |
| 1914 | enhancement | medium | Catenate cell values when creating scalar variable in variable table | alpha 1 |
| 1916 | enhancement | medium | Expose `ERROR` log level to custom libraries | alpha 3 |
| 1927 | enhancement | medium | Remote: Support accessing keys of returned dicts using attribute access | alpha 1 |
| 1935 | enhancement | medium | Support keyword tags with `--flattenkeywords` and `--removekeywords` | alpha 2 |
| 1958 | enhancement | medium | `Log Many`: Support logging `&{dictionary}` variable items | alpha 1 |
| 1959 | enhancement | medium | `Wait Until Keyword Succeeds`: Support giving wait time as number of times to retry | alpha 1 |
| 1962 | enhancement | medium | Disallow using keyword with embedded arguments as normal keywords | alpha 1 |
| 1969 | enhancement | medium | Allow giving listener and model modifier instances to `robot.run` and `TestSuite.run` | alpha 3 |
| 1970 | enhancement | medium | Enhance ROBOT_LIBRARY_LISTENER to accept a list of listeners | alpha 2 |
| 1972 | enhancement | medium | User Guide: Switch examples to use plain text format instead of HTML format | rc 1 |
| 1983 | enhancement | medium | PYTHONPATH environment variable should not be processed with Jython or IronPython | alpha 2 |
| 1985 | enhancement | medium | String: New `Get Regexp Matches` keyword | beta 2 |
| 1990 | enhancement | medium | Avoid Python 3 incompatible type checks | beta 2 |
| 1998 | enhancement | medium | Pass keyword and library names separately to listeners | alpha 2 |
| 2020 | enhancement | medium | Do not write empty elements or attributes to output.xml | alpha 3 |
| 2027 | enhancement | medium | Deprecate `--monitorxxx` options in favor of `--consolexxx` | alpha 3 |
| 2028 | enhancement | medium | Tag patterns starting with `NOT` | alpha 3 |
| 2029 | enhancement | medium | When exiting gracefully, skipped tests should get automatic `robot-exit` tag | alpha 3 |
| 2030 | enhancement | medium | Notify listeners about library, resource and variable file imports | beta 2 |
| 2032 | enhancement | medium | Document that test and keyword tags with `robot-` prefix are reserved | alpha 3 |
| 2036 | enhancement | medium | `BuiltIn.Get Variables`: Support getting variables without `${}` decoration | beta 1 |
| 2038 | enhancement | medium | Consistent usage of Boolean arguments in standard libraries | beta 1 |
| 2063 | enhancement | medium | Deprecate using same setting multiple times | rc 1 |
| 1815 | bug | low | Keyword name conflict involving Remote keyword should cause failure, not warning | alpha 1 |
| 1906 | bug | low | Free keyword arguments (**kwargs) names cannot contain equal signs or trailing backslashes | alpha 1 |
| 1922 | bug | low | Screenshot library causes deprecation warning with wxPython 3.x | alpha 1 |
| 1997 | bug | low | User Guide has outdated links to test templates | beta 2 |
| 2002 | bug | low | Keyword and test names with urls or quotes create invalid html on log and report | alpha 2 |
| 2003 | bug | low | Checking is stdout/stderr stream terminal causes exception if stream's buffer is detached | alpha 2 |
| 2016 | bug | low | `FAIL` should not be useable as a normal log level | alpha 3 |
| 2019 | bug | low | Execution directory should not be added to module search path (`PYTHONPATH`) | alpha 2 |
| 2043 | bug | low | BuiltIn: Some `Should` keyword only consider Python `True` true and other values false | beta 1 |
| 1642 | enhancement | low | Deprecate `--runfailed` and `--rerunmerge` options | alpha 1 |
| 1775 | enhancement | low | Remove deprecated syntax for repeating single keyword | alpha 1 |
| 1897 | enhancement | low | Clean-up reference to RF 2.6 and older from User Guide and other documentation | alpha 1 |
| 1898 | enhancement | low | Improve error message for "Else" instead of "ELSE" | alpha 3 |
| 1918 | enhancement | low | Deprecate old `Meta: Name` syntax for specifying test suite metadata | alpha 1 |
| 1919 | enhancement | low | Remove possibility to setting scalar variables with lists value using `Set Test/Suite/Global Variable` keyword | alpha 1 |
| 1921 | enhancement | low | More flexible syntax to deprecate keywords | alpha 1 |
| 1923 | enhancement | low | Remove deprecated `--runmode` option | alpha 1 |
| 1924 | enhancement | low | Remove unused internal functions, classes, etc. | alpha 1 |
| 1925 | enhancement | low | Remove deprecated `--xunitfile` option | alpha 1 |
| 1929 | enhancement | low | OperatingSystem: Enhance documentation about path separators | alpha 1 |
| 1945 | enhancement | low | Enhance documentation of `Run Keyword If` return values | alpha 1 |
| 2021 | enhancement | low | Update XSD schemas | alpha 3 |
| 2022 | enhancement | low | Document that preformatted text with spaces in Robot data requires escaping | beta 1 |
| 2031 | enhancement | low | Console colors and markers: Fail if given value is invalid and remove outdated `FORCE` color value | alpha 3 |
| 2033 | enhancement | low | Use `setuptools` for installation when available | beta 1 |
| 2037 | enhancement | low | `BuiltIn.Evaluate`: Support any mapping as a custom namespace | beta 1 |
| 2039 | enhancement | low | OperatingSystem and Dialogs: Remove partial support for running without Robot Framework itself | beta 1 |
| 2041 | enhancement | low | Collections: New keyword `Convert To Dictionary` | beta 1 |
| 2045 | enhancement | low | BuiltIn: Log argument types in DEBUG level not INFO | beta 1 |

Altogether 94 issues. See on [issue tracker](https://github.com/robotframework/robotframework/issues?q=milestone%3A2.9).

Page 12 of 14

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.