Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
1 contributor

Users who have contributed to this file

1080 lines (908 sloc) 43.6 KB

Robot Framework 3.1

Robot Framework 3.1 is a new major release with Robotic Process Automation (RPA) support, automatic argument type conversion, support for named-only arguments, for loop enhancements, fix for intermittent corruption of output.xml files when using timeouts, and several other interesting new features and as various bug fixes. It also starts the deprecation process to remove the support of using test data in HTML format and making test data parsing more strict also otherwise.

Questions and comments related to the release can be sent to the robotframework-users mailing list or to Robot Framework Slack, and possible bugs submitted to the issue tracker.

If you have pip installed, just run

pip install --upgrade robotframework

to install the latest available release or use

pip install robotframework==3.1

to install exactly this version. Alternatively you can download the source distribution from PyPI and install it manually. For more details and other installation approaches, see the installation instructions.

Robot Framework 3.1 was released on Thursday December 6, 2018.

Most important enhancements

Terminology configuration to support Robotic Process Automation (RPA)

Robotic Process Automation (RPA) means automating business processes that typically have been designed for humans and thus involve a lot of GUIs. As an automation tool Robot Framework has always supported this kind of usage, but it has been a bit awkward to create test cases when not actually automating tests.

Robot Framework 3.1 is taking the first steps to make Robot Framework a proper RPA tool by allowing creation of tasks instead of tests and changing terminology in reports and logs when tasks are executed (#2788). There are two ways to activate the RPA mode:

  1. Use the new *** Tasks *** (or *** Task ***) header in data instead of the normal *** Test Cases *** header. This is useful when it is important that data contains tasks, not tests. It is an error to run multiple files together so that some have tasks and others have tests.
  2. Use the new --rpa command line option. This is convenient when executing data that needs to be compatible with earlier Robot Framework versions and when using editors that do not support the new *** Tasks *** header. Also Rebot supports the --rpa option, so it is possible to execute tests as earlier and only create reports and logs using the --rpa option.

Regardless how the RPA mode is enabled, the generated reports and logs use term "task", not "test".

As a convenience, a new command line option --task has been added as an alias for the existing --test option. It is also possible to use Task Setup, Task Teardown, Task Template and Task Timeout settings instead of Test Setup/Teardown/Template/Timeout, and additionally Set Task Variable keyword can be used instead of Set Test Variable.

Development related to the RPA support has been separately sponsored by Siili, Knowit, Vala, Qentinel and Eficode. For more information about Robot Framework and RPA see http://robotframework.org/rpa.

Automatic argument conversion

By default all arguments that are not specified as variables are given to Python based keywords as Unicode strings. This includes cases like this:

*** Test Cases ***
Example
    Example Keyword    42    False

Starting from Robot Framework 3.1, it is possible to specify argument types when implementing keywords using few different approaches, and Robot Framework then converts arguments to the specified types automatically.

When using Python 3, it is possible to use function annotations to explicitly specify types (#2890):

def example_keyword(count: int, case_insensitive: bool = True):
    if case_insensitive:
        # ...

An alternative way to explicitly specify types is using the @keyword decorator (#2947) that works also with Python 2. It is possible both to map argument names to types using a dictionary and to use a list mapping arguments to types based on position:

@keyword(types={'count': int, 'case_insensitive': bool})
def example_keyword(count, case_insensitive=True):
    if case_insensitive:
        # ...

@keyword(types=[int, bool])
def example_keyword(count, case_insensitive=True):
    if case_insensitive:
        # ...

If an argument has no explicit type specified, Robot Framework still tries to get the type implicitly from an argument default values (#2932):

def example_keyword(count=-1, case_insensitive=True):
    if case_insensitive:
        # ...

Automatic argument conversion is also supported by the dynamic library interface (#2068) and the remote interface (#3008) via new get_keyword_types method. Remote server authors are suggested to add this new method to their server implementations to make the new functionality available for their users.

Named-only arguments support

Python 3 supports so called keyword-only arguments and Robot Framework 3.1 supports the same approach but uses the term named-only arguments. The new syntax can be used with Python 3 based test libraries (#2555), user keywords (#2896), and dynamic libraries (#2897).

With Python 3 libraries this syntax could be used, for example, like this:

def sort_words(*words, case_sensitive=False):
    key = str.lower if case_sensitive else None
    return sorted(words, key=key)
*** Test Cases ***
Example
    Sort Words    Foo    bar    baZ
    Sort Words    Foo    bar    baZ    case_sensitive=True

User keywords using the new syntax could look like this:

*** Keywords ***
With Varargs
    [Arguments]    @{varargs}    ${named}
    Log Many    @{varargs}    ${named}

Without Varargs
    [Arguments]    @{}    ${first}    ${second}=default
    Log Many    ${first}    ${second}

Fix for intermittent corrupted outputs when using timeouts

There have now and then been reports about output.xml files being corrupted and preventing log and report generation. Such problems are typically very hard to reproduce and they may be due to bugs in Robot Framework itself or in libraries/tools used with it. Issue #2839 demonstrated that this can happen when using Robot Framework's own test and keyword timeouts, if keywords log using the programmatic logging interface. That particular problem is now fixed.

Installation enhancements

There are various enhancements and other changes related to installation:

  • The robot and rebot start-up scripts are nowadays *.exe files on Windows. They used to be *.bat files which caused all kinds of bigger and smaller issues. (#2415)
  • Robot Framework is now distributed as a wheel distribution making installation faster. (#1734)
  • Source distribution format has been changed from tar.gz to zip. (#2830)
  • Old pybot, jybot, ipybot, jyrebot and ipyrebot start-up scripts have been removed. (#2818)

For loop enhancements

The for loop syntax has got several enhancements:

  • The most noticeable change is that loops nowadays end with an explicit END marker on its own row and keywords inside the loop do not need to be escaped with a backslash. (#3009)
  • Another visible change is that the for loop marker used to be :FOR (case-insensitive) when nowadays just FOR (case-sensitive) is enough. (#2990)
  • Also the for loop separators IN, IN RANGE, IN ENUMERATE and IN ZIP were changed to be both case- and space-sensitive. (#2991)

As a result of these changes, for loops can now be written like this:

FOR    ${animal}    IN    cat    dog    cow
    Keyword    ${animal}
    Another keyword
END

This is a big improvement compared to the old syntax:

:FOR    ${animal}    IN    cat    dog    cow
\    Keyword    ${animal}
\    Another keyword

These changes pave the way for possible future syntax enhancements like support for IF/ELSE and TRY/EXCEPT structures as well as allowing nested control structures.

The old for loop syntax still works in Robot Framework 3.1 without visible deprecation warnings, but the plan is to deprecate it already in Robot Framework 3.2 to make it possible to introduce new syntax in Robot Framework 3.3. Users are advised to switch to the new syntax as soon as possible.

Accessing nested list and dictionary variable items

There has been a syntax to access items of variables containing lists or dictionaries, but this syntax has only supported accessing direct items, not possible nested items. This limitation has now been lifted by issue #2601 and it is possible to use syntax like ${var}[key][0] to access as deeply nested items as needed. This is useful, for example, when working with JSON objects typically used with REST interfaces.

Notice that at the same time the general item access syntax has changed to use style ${var}[0] and ${var}[key] regardless is the variable a list or dictionary. The old syntax @{var}[0] and &{var}[key] still works but it will be deprecated in the future.

New *.resource extension for resource files

Resource files can now have a dedicated *.resource extension, for example login.resource, to differentiate them from *.robot files containing test cases (#2891). The *.robot extension continues to work with resource files as well and there are no plans to deprecate it.

Better error reporting when test data is invalid

There is now an explicit error in these cases where errors have earlier been silently ignored:

  • If parsing a file fails when executing a directory. (#2857)
  • If test data contains unrecognized section header. (#2860)

Better compatibility with third party tools consuming xUnit outputs

Robot Framework's xUnit compatible output files created with the --xunit command line option were not compatible with tooling that was more strict about the xUnit file format. This is mainly due to the format not being officially standardized, but nowadays Robot's xUnit outputs use a format that ought to be compatible with all or at least most tools. See #2978 for more information.

No need to install external ElementTree module with IronPython 2.7.9+

IronPython 2.7.9 finally contains a working ElementTree implementation. Robot Framework 3.1 uses the standard ElementTree with IronPython 2.7.9+ (#2954) and there is no need to install an external ElementTree module anymore.

Generating documentation for Java based libraries works without tools.jar with Java 9+

Earlier Libdoc always required the tools.jar package when creating documentation for Java based libraries. This package used to be part of the Java SDK but it was removed in Java 9. At the same time Java got new standard modules that support same functionality, and now Libdoc has been enhanced to not need tools.jar with Java 9 and newer. (#2854)

Backwards incompatible changes

Python 2.6 and 3.3 are not supported anymore

Neither Python 2.6 nor Python 3.3 are supported anymore. Both Python versions have reached their end-of-life, the former already in 2013. (#2276)

Old start-up scripts like pybot are removed

Old start-up scripts pybot, jybot, ipybot, jyrebot and ipyrebot have been removed in favor of the generic robot and rebot scripts introduced in Robot Framework 3.0. (#2818)

Changes to pattern matching syntax

Robot Framework supports pattern matching using glob-like patterns in various places. This includes command line options like --test and --include and keywords like Should (Not) Match, Run Keyword And Expect Error, and various Match keywords in the XML library.

Starting from Robot Framework 3.1, these patterns support using [chars] as a pattern matching any character inside the brackets (#2471). This is a useful enhancement, but also means that square brackets are considered special and existing patterns using them as literal characters are affected.

A simple fix to possible problems is replacing brackets with a question mark (?) which matches any single character. Run Keyword And Expect Error also got a new feature making it possible to use, for example, exact match in addition to glob pattern matching (#2967).

Pattern matching also had a bug that a trailing newline in the matched strings was ignored (#2894). For example, foobar\n was earlier considered to match both *bar and foobar. After this bug being fixed pattern matching is more strict and trailing newlines need to be added to matched strings if they are missing.

Square brackets after variable like ${var}[xxx] is considered item access

Syntax like ${var}[xxx] is now considered variable item access (#2601), not variable ${var} followed by a literal string [xxx]. If the latter is desired, escaping like ${var}\[xxx] is needed.

Underscores are not converted to spaces in values given from the command line

Earlier underscores were automatically converted to spaces with command line options --name, --doc, --metadata, --tagdoc, --tagstatcombine, --logtitle and --reporttitle. For example, --doc Underscores_used_here was interpreted as Underscores used here, but nowadays the value is used as-is. A simple fix is quoting or escaping spaces on the command line like --doc "We got spaces" or --doc We\ got\ spaces. (#2399)

Changes to xUnit output file format

Third party tools consuming xUnit compatible XML files earlier supported both skip and skipped attribute when reporting the number of skipped tests, but nowadays many tools are stricter and only support skipped. Previous Robot Framework versions used skip, but it has now been changed to skipped to fix compatibility with the more strict tools (#2978). This obviously affects possible tools that expect the attribute to be skip but they ought to be rare. If such tool turn out to be common and not easy to update, we can consider making the attribute name configurable.

Times in xUnit outputs are floats when they used to be integers (#2397). This should not cause problems with 3rd party tools because they generally parse times as floats, but custom tools parsing times as integers using int() or equivalent need to be updated.

time attribute was added also to the <testsuite> element (#2979). Third party tools ought to handle this common optional attribute just fine, but some overly strict custom tool may still be affected and needs to be fixed.

Logs and reports do not support IE 8 and other old browsers anymore

JavaScript dependencies used internally by logs and reports have been updated. This may cause problems with ancient browsers, and most notably IE 8 is not supported anymore. (#2419)

Newline handling changed with Create File and Append To File on Windows

Earlier Create File and Append To File did not convert the newline character (\n) to the native Windows newline character combination (\r\n). Most Windows tools handle both kind of newlines, but if it was necessary to use actual Windows newlines, then literal \r\n or operating system dependent automatic variable ${\n} needed to be used.

This was accidentally changed in RF 3.1 (#3097) so that nowadays \n will automatically be converted to \r\n on Windows. Although this was accidental, the behavior is more convenient and it was decided not to be changed back. This is also how Python (and most other programing languages) handle newlines.

Some deprecated syntax removed

Syntax that has been deprecated earlier has now been removed altogether:

  • *** Metadata *** and *** User Keywords *** headers do not anymore work as synonyms for *** Settings *** and *** Keywords ***, respectively. (#2864)
  • Document cannot be used as a synonym for the Documentation setting. (#2865)
  • Pre Condition and Post Condition do not anymore work as synonyms for Setup and Teardown, respectively. (#2865)
  • It is not anymore possible to import a library with an extra space in its name like Selenium Library. (#2879)
  • Giving an alias to an imported library requires using WITH NAME with all uppercase letters. (#2880)

Other issues possibly causing backwards incompatibility problems

  • First logical, not physical, line of the keyword documentation is included in log files. (#2491)
  • Test libraries using the dynamic library API get all named arguments as part of kwargs (when their run_keyword accepts it), not mapped to positional arguments. (#2930)
  • Run Keyword And Ignore Error and others similar keywords let "passing exceptions" caused by Pass Execution and similar keywords to go through. (#2799)
  • robot-exit tag that is added automatically to tests if execution is stopped gracefully has been renamed to robot:exit. (#2539)
  • Collections keywords cannot anymore be used with strings. (#2580)
  • FOR alone, case-sensitively, is enough to start a for loop (#2990). This may cause problems if a keyword is named FOR or when using templates and a data item is exactly FOR. In the former case a workaround is using the keyword like For, and in the latter case the value needs to be escaped like \FOR.
  • Timer string format is more strict. For example, 01:02:03:123 and 01:02foo do not work anymore. (#2921)
  • Deprecated robot.running.TestSuite.(imports|variables|user_keywords) propertys have been removed from the programmatic API. (#2867)

Deprecated features

HTML and TSV data formats have been deprecated

The HTML format has been deprecated for good and it will not be supported by future Robot Framework versions at all. The TSV format has been deprecated as well, but it can be used if the data is fully compatible with the plain text format and the --extension option is used to tell that TSV files should be parsed. It is possible to use, for example, --extension tsv (*.tsv only) or --extension robot:tsv (*.robot and *.tsv). (#2819)

Parsing other than *.robot files by default is deprecated

The plan is that Robot Framework 3.2 would parse only files with the *.robot extension by default, but the --extension option could be used to tell that also some other files should be parsed. The first step towards that goal is deprecating parsing other than *.robot files by default in Robot Framework 3.1. This naturally includes HTML and TSV files that are deprecated in general (see above), but also the otherwise supported plain text test data in normal text files (*.txt) and embedded into reStructuredText files (*.rst or *.rest). (#2820)

Use the --extension option like --extension rst (.rst only) or --extension robot:rst:rest (*.robot, *.rst and *.rest) to avoid the deprecation warning and to get these files parsed also in the future.

For loop syntax changes

As discussed above, for loop syntax has been enhanced heavily, and the plan is to deprecate and remove the old syntax pretty quickly. The old syntax still works in Robot Framework 3.1 and for most parts is not deprecated yet. Users are nevertheless advised to switch to the new syntax as soon as possible.

List item access to be changed to use syntax ${var}[item]

Issue #2601 introduces syntax like ${var}[key][0] to access nested items in variables containing lists and dictionaries, and also makes it possible to access direct items like ${var}[0] and ${var}[key] regardless is the variable a list or dictionary. The old syntax @{var}[0] and &{var}[key] still works, but it will be deprecated in the future. Using solely the new syntax is highly recommend already now.

Using section and setting names space-insensitively is deprecated

Earlier it has been possible to use internal spaces freely in section headers like *** S e t t i n g s *** and in settings like Testsetup or [ S e t u p ]. This is now deprecated and formats like *** Settings ***, Test Setup and [Setup] needs to be used. All names are still case-insensitive, though, and a space can be used around the name and a possible surrounding marker meaning that also ***Settings*** and [ Setup ] are accepted. (#2985)

Escaping problematic characters with --escape is deprecated

Robot Framework's custom --escape functionality has been deprecated and normal command line escaping mechanism needs to be used instead. Typically values can be quoted like -v "VAR:Value with spaces", but depending on the context and the terminal using the backslash character may work as well. (#2846)

--warnonskippedfiles has been deprecated

The --warnonskippedfiles option has made it possible to explicitly show if certain files are skipped because they cannot be parsed successfully. Because such problems are nowadays reported as explicit errors (#2857), the --warnonskippedfiles option is not useful anymore and it has been deprecated.

Acknowledgements

There have been several valuable contributions by the community:

  • @Brian-Williams implemented keyword-only argument support with Python 3 libraries (#2555).
  • @LSumbler added HTTPS support to the Remote interface (#2912).
  • Jonathan Koser (@JonKoser) fixed problems with signal handlers registered outside Python (#2952).
  • Jani Mikkonen (@rasjani) investigated and fixed compatibility problems with third party tools consuming xUnit output files (#2978).
  • Juuso Issakainen (@juusoi) changed times in xUnit outputs from integers to floats (#2397) and enhanced error messages if keywords from the Collections library are used with invalid arguments (#2580).
  • @kanchi240 added time attribute to <testsuite> elements in xUnit outputs (#2979).
  • @andreeakovacs provided initial pull requests to fix a regression with global variables not being available in listeners' close method (#2443) and to enhance parsing logic when using --suite option (#2564). Mihai Pârvu (@mihaiparvu) finalized both of these PRs.
  • @DanielPBak fixed problems when libraries imported using a filesystem path modified sys.path (#2923).
  • @skhomuti provided a simple example reliably reproducing a nasty problem with timeouts leading to output.xml files being corrupted (#2839). The example made it easy to debug the problem and to come up with a proper fix.
  • István Rábel (@aquator) enhanced Libdoc to allow generating documentation for Java libraries without tools.jar when using Java 9 or newer (#2854).
  • Élysson MR (@elyssonmr) added Format String keyword to the String library (#2822).
  • Simandan Andrei-Cristian (@cristii006) added Get Selections From User keyword to the Dialogs library (#2906).

Huge thanks to all contributors and to everyone else who has reported problems, tested preview releases, participated discussion on various forums, or otherwise helped to make Robot Framework as well as the ecosystem and community around it better.

Robot Framework 3.1 is the first major release sponsored by Robot Framework Foundation. Big thanks to all the 20+ member organizations, and hopefully the foundation gets even more members in the future to make the development more active and faster. Separate thanks to Siili, Knowit, Vala, Qentinel and Eficode for sponsoring the development related to the RPA support.

Thanks everyone and good luck with Robot Framework 3.1!

Pekka Klärck (@pekkaklarck)
Robot Framework Lead Developer

Full list of fixes and enhancements

ID Type Priority Summary
#2839 bug critical Logging when timeouts are enabled may corrupt output
#2415 enhancement critical Use .exe wrappers instead of .bat under Windows
#2788 enhancement critical Terminology configuration to support usage in generic automation
#2819 enhancement critical Deprecate using test data in HTML and TSV formats
#2820 enhancement critical Deprecate parsing other than .robot files
#2890 enhancement critical Automatic argument conversion based on Python 3 function annotations
#2947 enhancement critical Automatic argument conversion based on type information passed to @keyword decorator
#2854 bug high Libdoc: Generating documentation for Java libraries with Java 9+ doesn't work
#2857 bug high Emit error if parsing file fails when executing a directory
#2860 bug high Emit an error if test data contains unrecognized section header
#2978 bug high Fix xUnit compatibility with 3rd party tooling
#1734 enhancement high Provide wheel distribution
#2068 enhancement high Support automatic argument conversion with dynamic libraries
#2276 enhancement high Remove support for Python 2.6 and 3.3
#2555 enhancement high Support keyword-only arguments in Python 3 libraries
#2601 enhancement high Accessing nested list and dictionary variable items like ${var}[key][0]
#2818 enhancement high Remove pybot, jybot, ipybot, jyrebot and ipyrebot start-up scripts
#2891 enhancement high Support .resource extension with resource files
#2896 enhancement high Support named-only arguments with user keywords
#2897 enhancement high Support named-only arguments with dynamic libraries
#2932 enhancement high Automatic type conversion based on argument default values
#2954 enhancement high Remove need for custom ElementTree installation with IronPython 2.7.9+
#2985 enhancement high Deprecate using section and setting names space-insensitively
#2990 enhancement high Allow creating for loop using FOR (case-sensitive) in addition to :FOR (case-insensitive)
#3008 enhancement high Automatic argument conversion with Remote interface
#3009 enhancement high End for loops with END and avoid escaping keywords inside loops
#2399 bug medium Underscores should not be replaced with spaces in values given from command line
#2443 bug medium Global variables not accessible in listener close method
#2750 bug medium PYTHONIOENCODING is not honored with Python 2
#2817 bug medium pip install -I corrupts robot.bat if Robot Framework is already installed
#2829 bug medium Operating system encoding detection problems on Windows with Python 3.6
#2894 bug medium Should Match and other related keywords consider foo\n to match foo
#2930 bug medium Default values unnecessarily passed to keywords when using dynamic library API
#2952 bug medium Signal handler registered outside Python causes error
#2968 bug medium Telnet: Write Control Character does not work with numeric values on Python 3
#3015 bug medium Run Keyword And Continue On Failure doesn't work if keyword teardown fails
#2397 enhancement medium Times in xUnit outputs should be floats not integers
#2419 enhancement medium Update JavaScript dependencies used by logs and reports internally
#2471 enhancement medium Support [...] syntax with glob patterns
#2491 enhancement medium Include first logical line of keyword documentation in log
#2539 enhancement medium Rename robot-exit tag to use robot: prefix
#2576 enhancement medium Possibility to configure number of error message lines in reports
#2822 enhancement medium Add a generic string format keyword
#2830 enhancement medium Change source distribution format from tar.gz to zip
#2846 enhancement medium Deprecate using --escape to escape characters problematic on console
#2864 enhancement medium Remove deprecated Metadata and User Keyword table name synonyms
#2865 enhancement medium Remove deprecated Document and Suite/Test Pre/Post Condition synonym settings
#2906 enhancement medium Dialogs: New Get Selections From User to allow selecting multiple values
#2912 enhancement medium Remote Library Connection over HTTPS redirects to HTTP
#2925 enhancement medium Libdoc: Show function argument annotations
#2967 enhancement medium Support other than glob patterns with Run Keyword And Expect Error
#2973 enhancement medium Support "slice access" with variables containing lists like ${var}[2:]
#2979 enhancement medium xUnit outputs: Add time attribute to <testsuite> element
#2991 enhancement medium Deprecate using for loops with other separators than exact IN, IN RANGE, IN ZIP and IN ENUMERATE
#3013 enhancement medium Optional case-normalization support to Normalize Path
#2861 --- medium Deprecate --warnonskippedfiles because it is not needed anymore
#2564 bug low When using --suite parent.child, all test case files with name child.robot are parsed
#2580 bug low Collections keywords fail with bad error message when used with invalid input
#2594 bug low Run Keyword And Return not returning in teardown context if executed test fails
#2655 bug low User Guide: Broken reference to outdated Python tutorial
#2659 bug low Bad error if using TestSuite.configure with a non-root suite
#2761 bug low Log and report are broken if top-level suite has empty name (e.g. running _.robot)
#2799 bug low Run Keyword And Ignore Error and others don't handle "passing" exceptions correctly
#2833 bug low Document that Run Keyword Unless doesn't support ELSE/ELSE IF branches
#2834 bug low Problems with glob patterns on IronPython 2.7.8
#2837 bug low User Guide: Update reference to decorator module
#2871 bug low Document that nested Run Keyword If with ELSE/ELSE IF is not supported
#2872 bug low Rounding problem with Should Be Equal As Numbers (and elsewhere)
#2881 bug low Refreshing logs, reports and library docs don't always scroll to previous anchor
#2921 bug low Invalid strings work as timer strings
#2923 bug low Importing by path interferes with sys.path changes caused by imported modules
#2945 bug low --timestampoutputs generates files with different timestamps
#2966 bug low Error reporting problems with --ExitOnFailure if test fails due to being empty
#2994 bug low Run Keyword If and Run Keywords do not work correctly in dry-run if used with Given/When/Then prefixes
#3003 bug low Dialogs: Get Selection From User doesn't support multiline messages on Jython
#3006 bug low Libdoc with Java libraries without source code adds extra * and ** to varargs and kwargs
#2821 enhancement low Document that importing library implemented as module with absolute path requires no trailing slash
#2867 enhancement low Remove deprecated robot.running.TestSuite.(imports|variables|user_keywords) propertys
#2879 enhancement low Remove support to import library with extra spaces in name
#2880 enhancement low Remove support to import libraries with alias using WITH NAME case-insensitively
#2895 enhancement low User Guide: Adjust Python code examples to be Python 3 compatible
#2903 enhancement low Add note in documentation about ${SPACE} to clarify that it means the ASCII space
#2913 enhancement low Clarify documentation related to specifying test setup/teardown in initialization files
#2927 enhancement low Consider strings 0 and OFF to be false when used in Boolean context
#2999 enhancement low Clarify documentation related to options that have an effect with TestSuite.run()
#3011 enhancement low Document that Set Global Variable overrides variable table also in subsequent suites
#3021 enhancement low User Guide: Clarify using newlines in documentation in test data

Altogether 87 issues. View on the issue tracker.

You can’t perform that action at this time.