Release Notes
25.8.0 (2025-08-15)
Changed Fix an issue where PDFs failed to render in certain cases. Fix console output of certain assertion details.
Changed Upgrade
gherkin-officialto32for supporting BDD on Python 3.11 or later.Note that spaces are no longer allowed in gherkin tags, this could be a breaking change for BDD users. As a result, lines like
@tag a @tag bin feature files should be replaced with line like@tag_a @tag_b, and line@KNOWN_TO_FAIL: some reasoncould be replaced with@KNOWN_TO_FAIL:some_reason.New Added a timeout entry to the report to make testplan-level timeout events more visible to users. Fixed an issue where multitests incorrectly appeared as passed in stdout upon timeout. Updated the status of unfinished test suites and multitests to “incomplete”.
Changed Speed up interactive mode report initial load.
New Create new frontend components
DictMatchAllandFixMatchAll.Changed The wrapped driver class within
RemoteDriveris now constructed only on remote host.Changed Method signature check of testcases/test hooks has been relaxed to allow underscore-prefixed variants of parameters, so that linter wouldn’t raise unused variable warnings on them.
Changed Move certain dependencies to extras (i.e. optional dependencies) to shrink the installation size in pipelines. User need to install Testplan with extras in order to use certain features.
Extra
interactivefor interactive mode & report display through local server features, containingflask& several related packages.Extra
plotlyfor plotting with plotly feature, containingpandas&plotly.Extra
allfor all the features above.
For example, to use interactive mode feature, one can install Testplan with the following command:
pip install testplan[interactive]
Removed Remove support for Python 3.7 and 3.8.
Changed Parameters
auto_part_runtime_limitandplan_runtime_targetof @test_plan now takes “auto”. See documentation for details.Changed Make
teardown_timefield mandatory in the json file provided via--runtime-datacmdline arg for auto part and smart scheduling.Changed Fix an issue where nested lists in
dict.matchanddict.match_allassertions were not fully shown in the result output.Changed Temporarily restrict package dependency
marshmallowto versions<4.Changed Fixed fake report for UI development
Changed Runtime data JSON file specified through
--runtime-datanow accepts an optionaltestcase_countfield, which should hold the total number of testcases from the previous run. Iftestcase_countis specified, estimated MultiTest execution time will be adjusted by the ratio of current run’s testcase count to that of previous run, which should bring more accurate auto-partitioning and improved testing resource utilization.Changed Set
timezoneentries in Testplan reports toUTCwhen local timezone detection fails.Changed Fix an issue that generated incorrect figures of driver starting/stopping timeline inside the driver-info feature.
25.3.0 (2025-03-25)
Changed Change Testplan exported JSON report structure to reduce report size.
- Remove unused report entry fields.
fix_spec_path.status_overrideandstatus_reasonin case they are empty.line_no,code_contextandfile_pathif--codeis not enabled.env_status,part,strict_orderandhostdepending on report category.
Remove unused assertion entry fields
categoryandflagif they areDEFAULT.Merge assertion entry fields
utc_timeandmachine_timeinto a unix timestamp fieldtimestamp, and store timezone info in parent Test-level report under keytimezone.Replace ISO 8601 time string with unix timestamp in all
timerfields, and add atimezonefield to Testplan-level report as well.- Update data structure of several serialized assertion entries.
Delta encode level info of
flattened_dictfields ofDictLogandFixLogentries.Delta encode level info of
comparisonfields ofDictMatchandFixMatchentries.Delta encode level info of nested
comparisonfields ofDictMatchAllandFixMatchAllentries, remove extra nesting ofmatchesas well.Preserve abbreviations of match status of
DictMatch,FixMatch,DictMatchAllandFixMatchAllentries, i.e.pinstead ofPassed,finstead ofFailed,iinstead ofIgnored.Remove
indicesfield ofTableLogentries.
Changed Fix releaseherald documentation
Deprecated Support for Python 3.7 and 3.8 is deprecated and will be removed soon.
Changed Handle potential race condition during resource monitor termination
Changed Improve error logging for
RemoteService; fix incorrect imitated workspace on remote due to leftover symlink from previous run.Changed Remove Sphinx and other packages for building document from Testplan’s dependencies.
Changed Copy permission bits for the copied binary in App.
25.1.0 (2025-01-20)
Changed Checks if a process exists by reading the /proc/<pid>/stat.
Changed Support
RemoteDriverin dependency graph of test environment (thedependenciesparameter).Changed Use lazy import for Matplotlib and move cache to runpath.
New Added
--codeflag to collect code context for the assertions. Code context one-liner will be displayed on the web UI if enabled. Note that file path information is no longer collected by default. To collect file path information, enable code context.New Add a new summary page on resource view to show the task allocation per host.
Changed Refactor the stop logic of
Appdriver for faster environment shutdown. Rename parametersigint_timeouttostop_timeout. Add a new parameterstop_signalfor custom stop signals, its default valueNoneinvokesterminatemethod to stop subprocess, i.e. sendingSIGTERMsignal to subprocess on Linux. Environment will fail to stop if subprocess doesn’t terminate within the default 5-secondstop_timeoutfor graceful shutdown. Increasestop_timeoutor changestop_signal(to maybeSIGKILLon Linux) could resolve this issue.Changed Make sure when stop() is called on App type driver, we clean up all orphaned processes.
Changed If
Appdriver times out during shutdown or leaves orphaned processes after shutdown, Testplan will now emit a warning and perform a forced cleanup instead of failing the tests.Changed Increase the number of Remote worker setup thread.
Changed Fix interactive mode crashing issue when loading a namespace package. (It is still not supported to reload namespace packages.)
SyntaxErrorwill no longer be suppressed during interactive mode code reloading.Changed Fix incorrect early stop detection logic.
Changed Swapped Run and Reload buttons on the interactive UI by user request.
Changed Use a new JSON library
orjsonto improve performance when using Python 3.8 or later versions.Changed Limit the length of parameterization testcase name to 255 characters. If the name length exceeds 255 characters, index-suffixed names (e.g.,
{func_name} 1,{func_name} 2) will be used.New Testplan now includes its own version in generated report.
Changed
JSONExporterwill log a “file not found” warning in the log instead of raising an exception.Changed Fixed an issue where enabling Status icons crashed the report when a test was marked as XFAIL.
Changed Update
orjsondumping option to allow serializingnumpyobjects.
24.9.2 (2024-09-13)
New First official pypi release.