Change Log

Kiwi TCMS 13.1.1 (27 Feb 2024)


This is a hot-fix release for a bug introduced in v13.1!

Recommended upgrade path, see Upgrading:

13.1 -> 13.1.1

After upgrade don’t forget to:

./ upgrade

Bug fixes

  • Downgrade node_modules/ from 3.0.0 to 2.4.3. Fixes Issue #3552


  • Use max() built-in function instead of an if block

Kiwi TCMS 13.1 (26 Feb 2024)


This is a small release which contains several improvements, new settings and API methods, bug fixes and internal refactoring!

Recommended upgrade path, see Upgrading:

13.0 -> 13.1

After upgrade don’t forget to:

./ upgrade


  • Update django from 4.2.9 to 4.2.10

  • Update django-simple-history from 3.4.0 to 3.5.0

  • Update mysqlclient from 2.2.1 to 2.2.4

  • Update psycopg from 3.1.17 to 3.1.18

  • Update tzdata from 2023.4 to 2024.1

  • Update uwsgi from 2.0.23 to 2.0.24

  • Update node_modules/ from 2.4.2 to 3.0.0

  • Add robots.txt file to tell various robots to stop probing Kiwi TCMS

  • Resolve the path /favicon.ico because some browsers still search for it

  • Send Referer: header for container HEALTHCHECK command in order to make NGINX logs more readable

  • Allow users to reset their email by asking them to confirm their new address. Fixes Issue #3211

  • Add support for custom email validators on the registration page

  • Move X-Frame-Options header definition into settings

  • Move X-Content-Type-Options header definition into settings

  • Enable anonymous analytics, see


  • New settings ANONYMOUS_ANALYTICS and PLAUSIBLE_DOMAIN control anonymous analytics

  • New setting EMAIL_VALIDATORS for custom email validation during registration

  • Add the following settings in order to document them - CSRF_COOKIE_AGE, CSRF_COOKIE_HTTPONLY, SESSION_COOKIE_HTTPONLY, CSRF_COOKIE_SECURE and SESSION_COOKIE_SECURE. Most likely you don’t need to change their values

  • Respect X_FRAME_OPTIONS setting, defaults to DENY

  • Respect SECURE_CONTENT_TYPE_NOSNIFF setting, defaults to nosniff

  • Configure SECURE_SSL_REDIRECT setting to True


  • New method TestExecution.remove() which should be used in favor of TestRun.remove_case()

Bug fixes

  • Fix a bug where non-distinct values made it into generated property matrix

  • On TestRun page allow removal of individual parametrized TestExecution(s). Closes Pull #3282

Refactoring and testing

  • Update codecov/codecov-action from 3 to 4

  • Update node_modules/webpack from 5.89.0 to 5.90.3

  • Update runner image for CircleCI

  • Fix failure in test_utf8_uploads on CircleCI

  • Several improvements around performance benchmark tests

  • Refactor RegistrationForm.clean_email() using field validator function

  • Add tests for test matrix generation functionality

Kiwi TCMS 13.0 (17 Jan 2024)


This is a backwards incompatible release which contains security and functional improvements, runtime, settings and API changes, bug fixes, internal refactoring and updated translations!

Recommended upgrade path, see Upgrading:

12.7 -> 13.0

After upgrade don’t forget to:

./ upgrade


  • Preventatively patch calls to the built-in xmlrpc.client module using the defusedxml package


  • Update container runtime from Python 3.9 to Python 3.11

  • Update Django from 4.2.7 to 4.2.9

  • Update django-colorfield from 0.10.1 to 0.11.0

  • Update django-modern-rpc from 0.12.1 to 1.0.2

  • Update django-tree-queries from 0.15.0 to 0.16.1

  • Update django-simple-captcha from 0.5.20 to 0.6.0

  • Update jira from 3.5.2 to 3.6.0

  • Update markdown from 3.5.1 to 3.5.2

  • Update mysqlclient from 2.2.0 to 2.2.1

  • Update psycopg from 2.9.9 to 3.1.17

  • Update python-gitlab from 4.1.1 to 4.4.0

  • Update tzdata from 2023.3 to 2023.4

  • Update node_modules/pdfmake from 0.2.8 to 0.2.9

  • Show an icon when some child TPs not shown on Search Test Plans page to let the user know that parent-child hierarchies shown on the page may be incomplete because the data has been filtered out by their search criteria. Closes Issue #3313

  • Hide the Expand/Collapse button Search Test Plans page for TP with 0 children in the result set



The location of the Python runtime inside the container has changed. This affects settings override files as well as any downstream customizations to the Kiwi TCMS container image! For example you may have to adjust Docker volumes like so:

-            - ./
+            - ./
  • Explicitly define the DATA_UPLOAD_MAX_MEMORY_SIZE setting. It controls file uploads via RPC, not webUI, because the payload is base64 encoded and is part of the request body. Closes Issue #3262



This version of Kiwi TCMS introduces backward incompatible changes to API methods

  • Method TestRun.filter() no longer returns the field plan__product

  • Method TestRun.filter() no longer returns the field plan__product_version

  • Method TestRun.filter() no longer returns the field plan__product_version__value

  • Method TestRun.filter() now returns the new field build__version

  • Method TestRun.filter() now returns the new field build__version__product

  • Method TestRun.filter() now returns the new field build__version__value

Bug fixes

  • Fix TestPlan cloning with different product (@somenewacc)

  • Fix row reload when adding new comment in TestRun page (@somenewacc)

  • Fix tag display for parametrized executions on TestRun page (@somenewacc)

  • Fix bug in search/display of Version on Search TestRun page. The root cause was that the correct relationship here should have been TR -> Build -> Version which is independent of the relationship TP -> Product -> Version. Fixes Issue #3258

  • Fix bug in search/display of Product on Search TestRun page. The root cause was that the correct relationship here should have been TR -> Build -> Version -> Product which is independent of the relationship TP -> Product

  • Fix Telemetry pages to query Product/Version from execution’s data. All of these underlying queries on these pages operate on TestExecution and Product/Version information should be matched against what is stored in TestExecution->Build because it is more accurate over time, while TE->TR->TP->Product/Version is more likely to change as test plan documents evolve

  • Adjust Product & Version display on TestRun page using the relationship TR->Build as the starting point

  • For IssueTracker integration use Product/Version from Note that is initialized with and then may change its value if we’re recording results against multiple builds inside the same TestRun. For example mark some executions as PASS, others as FAIL; then update TR to a newer Build; retest and mark the FAIL results as PASS. Using the value of is more accurate

  • Treat the file /Kiwi/etc/uwsgi.override as an ini file and load it if it exists. This means that any override files must include the [uwsgi] section as well

Refactoring and testing

  • Adjust Kiwi TCMS for newer version of django-modern-rpc (Antoine Lorence)

  • Remove commented out code (@deepsource-autofix[bot])

  • Add integration test for uploading files with maximum allowed size

  • Update isort from 5.12.0 to 5.13.2

  • Update node_modules/eslint from 8.54.0 to 8.56.0

  • Update node_modules/eslint-plugin-import from 2.29.0 to 2.29.1

  • Update node_modules/eslint-plugin-n from 16.3.1 to 16.6.2

  • Update actions/setup-python from 4 to 5

  • Update github/codeql-action from 2 to 3

  • Update actions/upload-artifact from 3 to 4


Kiwi TCMS 12.7 (25 Nov 2023)


This is our first release after reaching 2 million downloads on Docker Hub. It is a small release which contains security related updates, several improvements, bug fixes and internal refactoring!

Recommended upgrade path, see Upgrading:

12.6.1 -> 12.7

After upgrade don’t forget to:

./ upgrade


  • Update django from 4.2.4 to 4.2.7. Fixes CVE-2023-46695, CVE-2023-43665 and CVE-2023-41164. We believe these issues do not affect Kiwi TCMS

  • Update django-simple-captcha from 0.5.18 to 0.5.20

  • We do not believe that any of these issue affect Kiwi TCMS directly however we recommend that you upgrade your installation as soon as possible


  • Update bleach from 6.0.0 to 6.1.0

  • Update django-colorfield from 0.9.0 to 0.10.1

  • Update django-grappelli from 3.0.6 to 3.0.8

  • Update django-simple-history from 3.3.0 to 3.4.0

  • Update markdown from 3.4.4 to 3.5.1

  • Update psycopg2 from 2.9.7 to 2.9.9

  • Update pygments from 2.16.1 to 2.17.2

  • Update python-gitlab from 3.15.0 to 4.1.1

  • Update uwsgi from 2.0.22 to 2.0.23

  • Update node_modules/crypto-js from 4.1.1 to 4.2.0

  • Update node_modules/ from 2.4.1 to 2.4.2

  • Update node_modules/pdfmake from 0.2.7 to 0.2.8

  • Update bug-tracker integration documentation with specifics about matches for product name

  • When searching for JIRA projects try also matching by project key

  • Fall-back to credentials from database if settings.EXTERNAL_ISSUE_RPC_CREDENTIALS override returns None


  • New migrations after upgrading django-color-field. Increases field max_length from 18 to 25

Bug fixes

  • Fix error in filtering by TestRun ID on TestCase Search page (@somenewacc)

  • Fix TestRun page to not automatically update its stop_date when marking statuses for test executions if there are more neutral executions left on the page outside of the currently filtered selection (@somenewacc)

  • Fix bug with JIRA integration not being able to find project via name

Refactoring and testing

  • Refactor calls to delete expandedExecutionIds to satisfy <>_ (@somenewacc)

  • Refactor calls to delete expandedTestCaseIds to satisfy <>_

  • Use tuple as the cache-key for IssueTrackerType.rpc_cache internally

  • Add test for collectstatic because of an upstream issue with django-prappelli

  • Improve tests for JIRA integration

  • Test against Bugzilla on Fedora 39

  • Update actions/checkout from 3 to 4

  • Update node_modules/eslint from 8.48.0 to 8.54.0

  • Update node_modules/eslint-plugin-import from 2.28.1 to 2.29.0

  • Update node_modules/eslint-plugin-n from 16.0.2 to 16.3.1

  • Update node_modules/webpack from 5.88.2 to 5.89.0

  • Update pylint-django from 2.5.3 to 2.5.5 and all of our custom linter rules

Kiwi TCMS 12.6.1 (31 Aug 2023)


This is a small release which contains several improvements, bug fixes and new translations!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ upgrade


  • Update allpairspy from 2.5.0 to 2.5.1

  • Update django from 4.2.3 to 4.2.4

  • Update mysqlclient from 2.1.1 to 2.2.0

  • Update uwsgi from 2.0.21 to 2.0.22

  • Update pygments from 2.15.1 to 2.16.1

  • Update psycopg2 from 2.9.6 to 2.9.7

  • Update node_modules/ from 2.3.6 to 2.4.1

  • Update node_modules/markdown from 3.4.3 to 3.4.4

  • Update node_modules/word-wrap from 1.2.3 to 1.2.4

  • Update documentation for JIRA integration

  • Clarify the django-ses add-on mentioned in documentation

  • Add a button to delete URLs from test executions. Fixes Issue #2936

  • Show traceback info during IssueTracker health-check to make it easier to debug problems


  • Define IssueTracker.rpc_credentials property to make it easier to override credentials for IssueTracker integrations


  • Allow overriding IssueTrackerType.rpc_credentials via the EXTERNAL_ISSUE_RPC_CREDENTIALS setting

Bug fixes

  • Hide all expanded child rows in TestPlan Search page. Fixes Issue #3245 (@somenewacc)

  • Fix wrong query parameter on DASHBOARD page (@somenewacc)

  • Fix template variable for form fields in search pages (@somenewacc)

  • Prevent multiplication of callbacks for data tables (@somenewacc)

  • Don’t fail IssueTracker health-check if we didn’t use OpenGraph

  • Reorder items under SEARCH menu for consistency with items under the TESTING menu. Fixes Issue #3315

Refactoring and testing

  • Update node_modules/eslint from 8.44.0 to 8.48.0

  • Update node_modules/eslint-plugin-import from 2.27.5 to 2.28.1

  • Update node_modules/eslint-plugin-n from 16.0.1 to 16.0.2

  • Update node_modules/webpack from 5.88.1 to 5.88.2

  • Fix exception when no history objects found in TestExecutionFactory

  • Move append items to list definition

  • Provide /usr/lib64/pkgconfig/mariadb.pc inside buildroot

  • Remove unused translation string in ar_SA locale


Kiwi TCMS 12.5 (04 Jul 2023)


This is a small release which contains security related updates, several improvements and new translations!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ upgrade


  • Update django from 4.2.2 to 4.2.3. Fixes CVE-2023-36053 - ReDoS vulnerability

  • Patch misconfigured HTTP headers allowing stored XSS execution. Fixes CVE-2023-36809

  • Sanitize test plan name in tree_view_html() function to reduce the opportunity for exploiting stored XSS vulnerabilities

  • Extend the list of file upload validators to reduce the opportunity for exploiting stored XSS vulnerabilities


  • Update django-colorfield from 0.8.0 to 0.9.0

  • Update django-extensions from 3.2.1 to 3.2.3

  • Update django-simple-captcha from 0.5.17 to 0.5.18

  • Update django-tree-queries from 0.14.0 to 0.15.0

  • Update jira from 3.5.1 to 3.5.2

  • Update python-gitlab from 3.14.0 to 3.15.0

  • Small update to HEALTHCHECK command in container

  • Replace mysql with native mariadb commands for backup/restore

Refactoring and testing

  • Update node_modules/eslint from 8.42.0 to 8.44.0

  • Update node_modules/eslint-plugin-n from 16.0.0 to 16.0.1

  • Update node_modules/webpack from 5.85.0 to 5.88.1

  • Update node_modules/webpack-cli from 5.1.3 to 5.1.4

  • Pin Selenium to 4.9.1 b/c of failures with 4.10.0

  • Add configuration for testing with reverse proxy

  • Assert that Nginx proxy doesn’t strip response headers

  • Assert on the number of Content-Type headers for attachments

  • Update how we seed GitLab API token used for testing


Kiwi TCMS 12.4 (06 Jun 2023)


This is a small release which contains security related updates, few improvements and new translations!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ upgrade


  • Improved checks when uploading potentially dangerous files. Fixes CVE-2023-33977


  • Update django from 4.2.1 to 4.2.2

  • Update jira from 3.5.0 to 3.5.1

  • Add HEALTHCHECK command for Docker container

  • Add searching by TestRun summary in Telemetry pages. Fixes Issue #3190

  • Make it more clear when email notifications trigger. Closes Issue #3212

  • Improve messaging for Issue Tracker Configuration health check. References Issue #3141, closes Issue #3191, closes Issue #34


  • Update node_modules/eslint from 8.40.0 to 8.42.0

  • Update node_modules/eslint-plugin-n from 15.7.0 to 16.0.0

  • Update node_modules/eslint-config-standard from 17.0.0 to 17.1.0

  • Update node_modules/webpack from 5.83.1 to 5.85.0

  • Update node_modules/webpack-cli from 5.1.1 to 5.1.3

  • Update GitLab test data initialization b/c the database inside the container image has changed


Kiwi TCMS 12.3 (20 May 2023)


This is a small release which contains security related updates, general improvements and new translations!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ upgrade


  • Update Django from 4.1.8 to 4.2.1 which contains a fix for CVE-2023-31047. We believe this does not affect Kiwi TCMS

  • Implement better scanning for embedded <script> tags in uploaded files

  • Force Content-Type: text/plain when serving uploaded files. Fixes CVE-2023-32686

  • Explicitly configure top-level permissions for CI jobs as read-all

  • Pass untrusted input via intermediate ENV variables in CI jobs


  • Update nginx from 1.20 to 1.22

  • Update django-grappelli from 3.0.5 to 3.0.6

  • Update pygithub from 1.58.1 to 1.58.2

  • Add Helm chart examples (Michael Abramovich)

Refactoring and testing

  • Update node_modules/webpack-cli from 5.0.1 to 5.1.1

  • Update node_modules/webpack from 5.80.0 to 5.83.1

  • Update node_modules/eslint from 8.38.0 to 8.40.0

  • Update tests/bugzilla/fedora from 37 to 38

  • Enable the checkov static linter


Kiwi TCMS 12.2 (23 Apr 2023)


This release contains security related updates, general improvements, bug fixes, some API changes and new translations!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ upgrade


  • For security reasons updating email address is no longer allowed. Fixes CVE-2023-30544

  • Block uploads of potentially harmful files. Fixes CVE-2023-30613


  • Update Django from 4.1.7 to 4.1.8

  • Update django-attachments from 1.9.1 to 1.11

  • Update psycopg2 from 2.9.5 to 2.9.6

  • Update pygments from 2.14.0 to 2.15.1

  • Update python-gitlab from 3.13.0 to 3.14.0

  • Add INFO message for User/Group pages in Admin panel which indicates whether the user is viewing records from the main tenant or from an individual tenant to avoid confusion

  • Add new Execution Dashboard telemetry report. Closes Issue #2918

  • Add column visibility button on search pages. Fixes Issue #3149

  • Add CSV, Excel, PDF and Print buttons on search pages. Fixes Issue #3150

  • Allow manually resetting TestRun.stop_date when editing page. Refs Issue #3124

  • Display child test plans on Search Test Plans page. Fixes Issue #2917

  • Display nested test plans in drop down select widget on Search Test Cases page. Fixes Issue #3134

  • Display nested test plans in drop down select widget on Telemetry pages

  • Display pagination controls for search results both at the top and bottom

  • On Search Test Runs page display start/stop timestamp columns. Closes Issue #2306

  • On Search Test Cases page display results from child test plans. Fixes Issue #3135


  • TestExecution.update() method will no longer update self.stop_date and fields when status has been changed! The appropriate behavior here should be specified by the client calling this API method. Refs Issue #3112

  • TestPlan.filter() method now returns the children_count field. Refs Issue #3134, Issue #2917

  • TestExecution.filter() method now returns status__icon & status__color fields

Bug fixes

  • Fix test case filter widget on Test Plan page. Fixes Issue #3137

  • Disable selection of inactive test plans on New Test Run page. Fixes Issue #3152

  • Add styled page for attachment upload errors. Fixes Issue #1156

  • Fix include syntax for uwsgi.override in uwsgi.conf


  • Add additional query parameters for updateTestPlanSelectFromProduct()

  • Add preProcessData callback to updateTestPlanSelectFromProduct()

  • Remove unused telemetry.css file

  • Remove unused parameter from updateTestPlanSelectFromProduct()

  • Replace hand-crafted pagination controls with the ones built into DataTables

  • Replace useless form_errors_to_list() function

  • Skip RobotFramework tests on aarch64 b/c of Selenium error, tested on x86_64

  • Update node_modules/webpack from 5.76.3 to 5.80.0

  • Update node_modules/eslint from 8.37.0 to 8.38.0


Kiwi TCMS 12.1 (29 Mar 2023)


This is a minor release which contains security related updates, general improvements, bug fixes and new translations!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ upgrade


  • Add the Content-Security-Policy header to block inline JavaScript. Fixes CVE-2023-27489

  • Add the X-Frame-Options header to deny loading Kiwi TCMS into an iframe

  • Add the X-Content-Type-Options header


  • Update django-grappelli from 3.0.4 to 3.0.5

  • Update django-simple-history from 3.2.0 to 3.3.0

  • Update jira from 3.4.1 to 3.5.0

  • Update markdown from 3.4.1 to 3.4.3

  • Update pygithub from 1.57 to 1.58.1

  • Update tzdata from 2022.7 to 2023.3

  • Do not allow last super-user to be deleted (Ivajlo Karabojkov)

  • Improve loading time on test runs pages which have large number of executions with components, parameters and/or tags (@somenewacc)

  • Expose all RPC methods in the documentation

  • Update documentation to describe transitions for TestRun statuses. Closes Issue #3124


  • Allow uWSGI configuration override via the file /Kiwi/etc/uwsgi.override


  • New API method TestRun.add_attachment (David M. Johnson)

  • New API method Environment.filter() method. Refs Issue #3034 (@somenewacc)

  • New API method Environment.create(). Closes Issue #3034 (@somenewacc)

Bug fixes

  • Fix /admin/testcases/template/ page not being able to render the text editor


  • Refactor bugtracker integration

  • Remove unnecessary onChanged function for DurationWidget

  • Refactoring to avoid inline <script> tags


Kiwi TCMS 12.0 (15 Feb 2023)


This is a new major release which contains security related updates, general improvements, bug fixes and new translations! This release also celebrates our 14th birthday!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ upgrade



  • Update bleach from 5.0.1 to 6.0.0

  • Update django-tree-queries from 0.13.0 to 0.14.0

  • Update python-gitlab from 3.12.0 to 3.13.0

  • Update python-redmine from 2.3.0 to 2.4.0

  • Update node_modules/json5 from 1.0.1 to 1.0.2

  • Switch from Apache to Nginx + uWSGI

    • uWSGI will spawn worker processes for each available CPU core

    • reduce container image by around 50 MB


    No longer support KIWI_DONT_ENFORCE_HTTPS environment variable

Bug fixes

  • Load SimpleMDE for Admin pages. Fixes Issue #3057

  • Don’t show all builds on Search Test Runs page before Product and Version fields are initialized when loading the page directly

Refactoring and testing

  • Remove deprecated setDaemon() method (Ivajlo Karabojkov)

  • Execute docker tests against localhost instead of container IP

  • Test performance baseline on certain pages with wrk

  • Conditionally execute top-level UI functions

  • Raise RuntimeError instead of Exception to satisfy newer pylint checks


Kiwi TCMS 11.7 (03 Jan 2023)


This is a small release which contains security updates, general improvements, database migrations, bug fixes and new translations!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ upgrade


  • Update bootstrap, bootstrap-select, eonasdan-bootstrap-datetimepicker, jquery and moment-timezone Node.js packages

  • Enable password validators to avoid users chosing weak passwords:

    • password can’t be too similar to other personal information

    • password must contain at least 10 characters

    • password can’t be a commonly used password

    • password can’t be entirely numeric


    Existing users are advised to reset their passwords! For more information see GHSA-496x-2jqf-hp7g


  • Update django from 4.1.3 to 4.1.5

  • Update django-colorfield from 0.7.2 to 0.8.0

  • Update django-grappelli from 3.0.3 to 3.0.4

  • Update django-simple-history from 3.0.0 to 3.2.0

  • Update django-tree-queries from 0.11.0 to 0.13.0

  • Update pygments from 2.13.0 to 2.14.0

  • Update python-gitlab from 3.11.0 to 3.12.0

  • Update tzdata from 2022.6 to 2022.7

  • Make navigation menu more compact by moving it into the header

  • Don’t install development dependencies for Node.js packages when building the container image


  • Add migrations to reflect indexing changes in django-simple-history 3.1.0

Bug fixes

  • Trigger on-change handler for Test Case Search popup. Fixes Issue #2679

  • Fix the + Build button on Bug and TestRun pages which didn’t properly select Product & Version

  • Editing TestRun page now properly saves all datetime fields instead of reverting them to None

  • Initialize planned_start and planned_stop fields when cloning a TestRun

Refactoring and testing

  • Start using webpack for JavaScript assets. Closes Issue #1262

  • Refactor duplicated setup in Telemetry pages. Closes Issue #1118

  • Add CodeQL workflow for GitHub code scanning

  • Make it possible to override attachments card title

  • Remove useless tooltip from Telemetry pages

  • Define page ID for each page that has a .ready() function

  • Replace deprecated jQuery syntax for .ready()

  • Remove duplicate populateProductVersion() function

  • Resolve all of the remaining eslint issues

  • Use more precise assert methods in tests


Kiwi TCMS 11.6 (09 Nov 2022)


This is a small release which contains security updates, general improvements, bug fixes and new translations!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ upgrade



  • Update django-extensions from 3.2.0 to 3.2.1

  • Update jira from 3.4.0 to 3.4.1

  • Update psycopg2 from 2.9.3 to 2.9.5

  • Update pygithub from 1.55 to 1.57

  • Update python-gitlab from 3.9.0 to 3.11.0

  • Update tzdata from 2022.2 to 2022.6

  • Container is now built on top of Red Hat Enteroprise Linux 9 and Python 3.9


    There is high risk of breaking downstream containers. Pay attention to bind-mounted settings files. Inspect downstream Dockerfile & docker-compose.yml files !!!

  • Unify some translation strings

  • Document add-on issue tracker integrations

  • Rename Properties to Parameters because “test case parameters” is more widely used

Bug fixes

  • JIRA.get_issue_type_from_jira() now accepts a second argument. Fixes Issue #2929 (@cmbahadir)

  • Fix typo in documentation (Christian Clauss)

  • Trim white-space after splitting parameter values. For example the inputs ‘OS=Linux’ and ‘OS = Windows ‘ will result in Key: ‘OS’, Values: [‘Linux’, ‘Windows’]

Refactoring and testing

  • Update Fedora from 32 to 36 in /tests/bugzilla

  • Remove Travis CI config b/c we don’t use it anymore

  • Add Coverity Scan as a GitHub action

  • Don’t scan devel dependencies with Coverity Scan

  • Redirect to where we came from in case posting a comment results in invalid form

  • Configure Dependabot to update Docker containers and try tightening security around docker containers used during testing

  • Use npm audit fix to automatically update some Node.js dependecies

  • Execute npm audit signatures when installing Node.js packages

  • Start using find_namespace_packages() to resolve ‘Package would be ignored’ warnings from setuptools

  • Add missing field in setup() to avoid a warning


Kiwi TCMS 11.5 (06 Sep 2022)


This is a small release which contains several improvements, bug fixes and new translations!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ upgrade


  • Update jira from 3.3.1 to 3.4.0

  • Update pygments from 2.12.0 to 2.13.0

  • Update python-gitlab from 3.7.0 to 3.9.0

  • Update tzdata from 2022.1 to 2022.2

  • Add Product drop down field in Build admin page. Closes Issue #2818

  • Add ‘prune’ argument required for Django 4.1 compatibility

  • Improve documentation around DEFAULT_GROUPS

  • Update docs about language preferences and add a Change language menu item. Closes Issue #2901, Issue #2902, Issue #2903

  • Performance improvement for Status matrix telemetry

  • Performance improvement for Execution trends telemetry

  • Display a spinner widget while telemetry data is still loading. Closes Issue #1801

Bug fixes

  • Fix error Jquery deferred: No length property of null object (@cmbahadir)

Refactoring and testing

  • Add test for AnonymousViewBackend & auth. permissions

  • Exclude auth.view_ permissions from AnonymousViewBackend

  • Specify 30 seconds timeout for internal requests via the requests library


Kiwi TCMS 11.4 (03 Aug 2022)


This is a medium sized release which contains security related updates, multiple improvements, database and API changes, new settings, bug fixes and new translations!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ upgrade



  • Update bleach from 5.0.0 to 5.0.1

  • Update django-colorfield from 0.6.3 to 0.7.2

  • Update django-extensions from 3.1.5 to 3.2.0

  • Update django-tree-queries from 0.9.0 to 0.11.0

  • Update jira from 3.2.0 to 3.3.1

  • Update markdown from 3.3.6 to 3.4.1

  • Update mysqlclient from 2.1.0 to 2.1.1

  • Update python-gitlab from 3.3.0 to 3.7.0

  • Update node_modules/marked from 4.0.14 to 4.0.18

  • Relax docutils requirement. Use latest version

  • Add template block which will allow logo customizations (Ivajlo Karabojkov)

  • Don’t show PLUGINS menu when no plugins are installed. References Issue #2729

  • Add information about Kiwi TCMS user to 1-click bug reports. Closes Issue #2591

  • Use a better icon to signify a manual test inside the user interface

  • Change UserAdmin to be permission based instead of being role-based. Fixes Issue #2496

  • Allow post-processing of automatically created issues. Closes Issue #2383

  • Allow more customization over issue type discovery for Jira. Closes Issue #2833

  • Allow more customization over project discovery for Jira

  • Allow more customization over Redmine tracker. Closes Issue #2382

  • Allow DB settings to be read from Docker Secret files. Fixes Issue #2606

  • Add filter on TestRun page to show test executions assigned to the current user. Closes Issue #333

  • Add URL for creating new TestRun from a TestPlan. The format is /runs/from-plan/<plan-id>/. Closes Issue #274

  • Add bug.Severity attribute which is fully customizeable. Closes Issue #2703

  • Update documentation around TCMS_ environment variables used by automation plugins

  • Update documentation to denote that pytest plugin is now generally available

  • Document necessary permissions for adding new users. References Issue #2496


  • New migration for bug.Severity model



  • If default_tester field is not specified for TestRun.create() method then use the currently logged-in user.

  • Return value for method TestExecution.filter() now contains fields expected_duration and actual_duration. Closes Issue #1924

  • Return value for method Bug.filter() now contains fields severity__name, severity__icon and severity__color

Bug fixes

  • Adjust field name when rendering test execution on TestRun page. Fixes Issue #2794

  • Render rich text editor preview via backend API:

    • Makes display on HTML pages and editor preview the same. Fixes Issue #2659

    • Fixes a bug with markdown rendered in JavaScript. Fixes Issue #2711

  • Stop propagation of HTML unescape which causes display issues with code snippets that contain XML values. Fixes Issue #2800

  • Show bug text only when creating new records, not when editing

  • Properly display & validate related form fields when editing bugs

  • Don’t send duplicate emails when editting bugs. Fixes Issue #2782

Refactoring and testing

  • Convert two assignment statements to augmented source code. Closes Issue #2610 (Markus Elfring)

  • Rename method IssueTrackerType.report_issue_from_testexecution():

    • Rename to _report_issue() which returns tuple of (object, str)

    • In case new issue was not created automatically and the method falls back to manual creation the return value will be (None, str)

    • report_issue_from_testexecution() will call _report_issue() internally and handle the change in return type


    • This change is backwards compatible!

    • For customized issue tracker integration you will have to apply the same changes to your custmized code if you wish new functionality, like post-processing of automatically created issues to work.

  • Add tests for backup & restore commands. Closes Issue #2695

  • Update versions of several CI tools

  • Updates around new version of pylint

  • Use codecov-action to upload coverage results

  • Remove setuptools and other workarounds in tests

  • Don’t special case dependencies which already provide wheel packages

  • Workaround an issue with setuptools_git_archive introduced by jira==3.2.0

  • Workaround the fact that django-ranged-response doesn’t provide wheels

  • Report test results via kiwitcms-django-plugin. Closes Issue #1757


Kiwi TCMS 11.3 (27 Apr 2022)


This is a small release which contains security related updates, several improvements, bug fixes and new translations!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ upgrade



  • Update bleach from 4.1.0 to 5.0.0

  • Update django-tree-queries from 0.7.0 to 0.9.0

  • Update jira from 3.1.1 to 3.2.0

  • Update pygments from 2.11.2 to 2.12.0

  • Update python-gitlab from 3.2.0 to 3.3.0

  • Update tzdata from 2021.5 to 2022.1

  • Update node_modules/marked from 4.0.12 to 4.0.14

  • Update node_modules/prismjs from 1.27.0 to 1.28.0

  • Allow overriding of Azure Boards API version. Closes Issue #2717

  • If tenant_groups is enabled then refresh_permissions command will update default tenant groups too

  • Document tenant-group permissions


  • New setting AZURE_BOARDS_API_VERSION, defaults to 6.0. Can be overriden directly in settings or via environment variable with the same name

Bug fixes

  • Patch for repositories under GitLab subgroups. Fixes Issue #2643 (@cmeissl)

  • Don’t crash if a comment user has been removed. Fixes KIWI-TCMS-HZ


  • Split Users & Groups menu items under ADMIN entry in navigation

  • [] updates

  • pylint adjustments


Kiwi TCMS 11.2 (09 Mar 2022)


This is a small release which contains several improvements, new API methods, internal refactoring and new translations!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ upgrade


  • Update django from 4.0.2 to 4.0.3

  • Update django-grappelli from 3.0.2 to 3.0.3

  • Update django-simple-captcha from 0.5.14 to 0.5.17

  • Update python-bugzilla from 3.1.0 to 3.2.0

  • Update python-gitlab from 3.1.1 to 3.2.0

  • Update node_modules/prismjs from 1.26.0 to 1.27.0

  • Add new command to perform a collection of post-upgrade tasks. Kiwi TCMS admins are advised to replace migrate with upgrade (Ivajlo Karabojkov)


  • New API method Category.create(). Fixes Issue #2705 (Erik Heeren)

  • New API method Classification.create(). Fixes Issue #2705 (Erik Heeren)

Refactoring and testing

  • Add docker build & push automation

  • Fix Bandit exclusion rule

  • Test and build on aarch64

  • Apply auto fixes fro

  • Apply auto fixes from Deepsource

  • Update versions of several GitHub Actions

  • Use the appropriate path to package.json for Dependabot

  • Remove old Telemetry link in menu to avoid confusion


Kiwi TCMS 11.1 (02 Feb 2022)


This is a small release which contains security related updates, several improvements, bug fixes and new translations!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate
./ refresh_permissions


  • Update Django from 3.2.10 to 4.0.2 to fix several fulnerabilities: CVE-2022-22818, CVE-2022-23833, CVE-2021-45115, CVE-2021-45116, CVE-2021-45452. Of those we believe that only CVE-2022-23833: Denial-of-service possibility in file uploads may directly impact Kiwi TCMS


  • Update django-contrib-comments from 2.1.0 to 2.2.0

  • Update django-uuslug from 1.2.0 to 2.0.0

  • Update python-gitlab from 3.1.0 to 3.1.1

  • Update node_modules/marked from 4.0.10 to 4.0.12


  • New migration for django-simple-captcha



  • New setting USE_CAPTCHA, defaults to True

  • The string “captcha” is added to INSTALLED_APPS

Bug fixes

  • Fix inappropriate RPC calls causing Version and Build dropdown widgets to display no values. Fixes Issue #2704

Refactoring and testing

  • Add tzdata to requirements

  • Replace django-recaptcha with django-simple-captcha

  • Adjust /init-db view to reliably detect when applying database migrations is complete and not exit prematurely


Kiwi TCMS 11.0 (24 Jan 2022)


This is a new major release which contains security related updates, several improvements, API changes, bug fixes and new translations!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate
./ refresh_permissions


  • Update Django to 3.2.11

  • Update django-colorfield from 0.4.5 to 0.6.3

  • Update django-grappelli from 2.15.3 to 3.0.2

  • Update psycopg2 from 2.9.2 to 2.9.3

  • Update pygments from 2.10.0 to 2.11.2

  • Update python-gitlab from 2.10.1 to 3.1.0

  • Update node_modules/prismjs from 1.25.0 to 1.26.0

  • Update node_modules/marked from 2.1.3 to 4.0.10

  • Admin panel now allows to view, add, edit and delete Environment records

  • Allow selection of environment when creating new TestRun and display the chosen values inside the TestRun page. Closes Issue #1344

  • Creating a TestRun will now generate test execution matrix based on the available environment and test case properties. Closes Issue #1843

  • When generating a test execution matrix the supported algorithms are “full” and “pairwise”. Closes Issue #1931

    • Feature is enabled for test runs which contain test cases. This feature is not shown when creating an empty test run

    • This feature isn’t supported when subsequently adding new test cases to test run

  • Record a random hex number under /Kiwi/uploads/installation-id


  • New model testrun.Environment

  • New model testrun.EnvironmentProperty

  • New model testrun.Property


  • Update the value of MODERNRPC_METHODS_MODULES setting to include modules with the new API methods


  • Method TestRun.add_case will now return a list.


    This breaks API compatibility with older versions and will break all plugins which rely on this method. Use plugins v11 or greater!

  • Method TestRun.add_case return value will now include a field named properties

  • New methods, Environment.add_property and Environment.remove_property

  • New method

Bug fixes

  • Send e-mail notification when adding comments to bugs. Fixes Issue #2232 (@cmbahadir)

  • Disable the “+” button when there is no related element selected. Fixes Issue #2561 (@cmbahadir)

  • When cloning test plans keep the existing test case sort order inside the resulting test plan. Fixes Issue #2218 (Nicolas Gelot)

  • Configure en_US.UTF-8 locale inside container. Allows upload of files with unicode names. Fixes Issue #2600

Refactoring and testing

  • Refresh logo design

  • Pylint fixes

  • Pin setuptools b/c of problem with django-extensions

  • Remove redundant test scenario

  • Shell script refactoring


Kiwi TCMS 10.5 (25 Nov 2021)


This is a medium sized release which contains various improvements and new features, database changes, new settings and API methods, bug-fixes, internal refactoring and updated translations.

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate
./ refresh_permissions


  • Update django from 3.2.7 to 3.2.9

  • Update django-colorfield from 0.4.3 to 0.4.5

  • Update django-extensions from 3.1.3 to 3.1.5

  • Update django-grappelli from 2.15.1 to 2.15.3

  • Update django-tree-queries from 0.6.0 to 0.7.0

  • Update jira from 3.0.1 to 3.1.1

  • Update markdown from 3.3.4 to 3.3.6

  • Update mysqlclient from 2.0.3 to 2.1.0

  • Update psycopg2 from 2.9.1 to 2.9.2

  • Display a warning if connection doesn’t use HTTPS (Ivajlo Karabojkov)

  • Account registration page can be turned on/off via settings. Fixes Issue #2500

  • TestCase Search page can now filter by TestPlan. Fixes Issue #2283

  • Allow template selection when creating new test case. Fixes Issue #957

  • TestCase page now allows specification of properties, e.g. mobile devices on which the test should be executed. This feature serves as a building block for Issue #1843, Issue #1931 and Issue #1344 but isn’t active anywhere else inside Kiwi TCMS at the moment

  • TestExecution properties will be displayed inside TestRun page if they have been specified

  • Rearrange help-text in admin page for better visibility

  • Switch to official Postgres image from Docker Hub

  • Switch to official MariaDB image from Docker Hub


For Postgres data dir changed from /var/lib/pgsql/data to /var/lib/postgres/data. Environment variables inside docker-compose file changed as well, see docker-compose.postgres.

For MariaDB data dir changed from /var/lib/mysql/data to /var/lib/mysql. MYSQL_CHARSET & MYSQL_COLLATION environment variables are no longer recognized. Instead they are present as command line options passed to the container, see docker-compose.yml. Previous workaround for these variables was also removed.

If you want to migrate from the previous centos/mariadb-103-centos7 or centos/postgresql-12-centos7 containers to mariadb:latest and postgres:latest make sure to update your container control files!


  • New setting REGISTRATION_ENABLED, default True, Can be controlled via environment variable KIWI_REGISTRATION_ENABLED. When set to False will disable account registration page


  • New model testcases.Property

  • New model testcases.Template

  • New model testruns.TestExecutionProperty

  • Remove unique_together constraint for testruns.TestExecution model. This makes it possible to add multiple executions for the same test case in the same test run


These newly added models create additional permission labels with names testcases | template | Can …. template, testcases | property | Can …. property, testruns | test execution property | Can …. test execution property

Execute refresh_permissions and/or assign them manually to users and groups if they should be able to interact with the new objects!


  • Method TestCase.filter() now returns additional fields setup_duration, testing_duration, expected_duration - all serialized in seconds. Refs Issue #1923 (Mfon Eti-mfon)

  • Method User.filter() will no longer return fields groups, user_permissions, date_joined and last_login

  • New method

  • New method

  • New method TestCase.add_property()

  • New method TestCase.remove_property()

Bug fixes

  • Unify tab size & tab indentation b/w Python & SimpleMDE. Fixes Issue #1802

  • Use sane_list extension for rendering consecutive lists in markdown. Closes Issue #2511


The visual markdown editor explicitly didn’t follow markdown syntax rules by allowing indentation with 2 spaces and treating tabs as 2 spaces as well. See “Indentation/Tab Length” at

The backend markdown rendering engine explicitly followed an undefined behavior which happens to be different from what the visual markdown editor does. See “Consecutive Lists” at

The previous 2 changes make sure the visual editor and backend rendering engine follow the same rules. This may result is “broken” display of existing text which doesn’t follow the markdown syntax rules. If you spot such text just edit to make it render the way you wish.

  • Fix broken URL and minor updates to documentation

  • Update GitLab tracker integration documentation to avoid confusion. Closes Issue #2559

  • Limit tag input length to 255 characters. Closes Issue #2176

  • Make error notifications in Admin to display with red color

  • Select only visible rows for bulk-update in TestRun page. Fixes Issue #2222

  • Remove Cache-Control header from httpd. Closes Issue #443

Refactoring and testing

  • Add permissions test for add-hyperlink-bulk menu. Closes Issue #716

  • Add explicit tests for issue tracker integration with

  • Tests teardown - remove comments & close issues on

  • Add missing rlPhaseEnd for docker tests

  • Multiple pylint and eslint fixes


Kiwi TCMS 10.4 (04 Oct 2021)


This is a small release which includes several improvements, bug fixes, internal refactoring and updated translations.

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate



  • Update bleach from 4.0.0 to 4.1.0

  • Update django from 3.2.6 to 3.2.7

  • Update django-colorfield from 0.4.2 to 0.4.3

  • Update pygithub from 1.54.1 to 1.55

  • Update pygments from 2.9.0 to 2.10.0

  • Update python-gitlab from 2.10.0 to 2.10.1

  • Allow filtering by TestRun ID in Test Case Search page

  • Update test execution prefix in list of executions on TestRun page. Now includes both TE and TC numbers before the summary link

  • Allow search by translated names on Test Run page

  • Redirect “ADMIN -> Users and groups” menu item according to tenancy

  • Allow creation of new test run from selected test cases inside existing test run. For example only select cases which are currently failing and re-test against a different build!

  • The initial_setup command will create a schema called “empty” when executed inside a multi-tenant setup. Refs Issue #127


  • Update values for MODERNRPC_HANDLERS setting

  • Rename SafeJSONRPCHandler to KiwiTCMSJsonRpcHandler

  • New RPC handler class KiwiTCMSXmlRpcHandler


If you had manipulated the value of MODERNRPC_HANDLERS make sure that you update to the new class names!


  • New migrations for altered meta options


  • TestCase.create method accepts setup_duration and testing_duration fields. Refs Issue #1923 (Mfon Eti-mfon)

  • TestCase.update method acepts setup_duration and testing_duration fields. Refs Issue #1923 (Mfon Eti-mfon)

  • New method Testing.individual_test_case_health

  • Timedelta values are serialized to float, representing seconds

Bug fixes

  • Fix wrong URL parameter passed to test cases clone page

  • Show translated execution statuses for TestRun page. Closes Issue #1966

  • Properly initialize Product value on TestRun Edit page. Closes Issue #2514

  • Clone duration fields when cloning a test case

Refactoring and testing

  • New automated test scenario for kiwi_auth.admin (Mariyan Garvanski)

  • Unify similar strings to reduce transaltions burden

  • Inside buildroot PyNaCl needs make in order to build a wheel package

  • Adjust values for parametrized test to match existing scenarios

  • Fix code smells from newer pylint

  • eslint fixes for the JavaScript files


Kiwi TCMS 10.3 (11 Aug 2021)


This is a small release which includes several improvements, bug fixes, internal refactoring and updated translations.

It is the twelveth release to include contributions via our open source bounty program!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


Bug fixes

  • Fix a bug where drop-down selectors for test plans would not show any values when product is changed. Fixes Issue #2467

Refactoring and testing


Kiwi TCMS 10.2 (11 Jul 2021)


This is a small release including upgrades to 3rd party libraries (including security related updates), several improvements and bug fixes.

It is the eleventh release to include contributions via our open source bounty program!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate

Improvements & security updates

  • Update django from 3.2.3 to 3.2.5

  • Update django-guardian from 2.3.0 to 2.4.0

  • Update django-tree-queries from 0.5.1 to 0.5.2

  • Update psycopg2 from 2.8.6 to 2.9.1

  • Update python-gitlab from 2.7.1 to 2.9.0

  • Update node_modules/marked from 2.0.3 to 2.1.3

  • Update node_modules/html5sortable from 0.11.1 to 0.13.2

  • Update node_modules/prismjs from 1.23.0 to 1.24.1

  • Multiple select for filters on Telemetry pages. Fixes Issue #1940 (Shantanu Verma + Alex Todorov)

  • Allow editting TestCase setup_duration & testing_duration fields. References Issue #1923 (@APiligrim + Alex Todorov)

  • Move several checks to Dashboard page instead of performing them on every request (Ivajlo Karabojkov)

  • Fix grammatical error in documentation (Kushal Beniwal)

  • Add health check for Issue Tracker configuration. Fixes Issue #97

  • Document API URL field for Jira integration. Closes Issue #2443


  • tcms.core.middleware.CheckSettingsMiddleware has been removed

  • tcms.core.middleware.CheckUnappliedMigrationsMiddleware has been removed


  • Method Version.filter() now returns new field called product__name

  • Method Build.filter() now returns new field called version__value

  • Methods Build.filter(), Version.filter() and TestPlan.filter() will now order their results by product/version and then id.

  • Method Telemetry.breakdown() now returns only distinct results

Bug fixes

  • Make error messages in admin forms more legible. Fixes Issue #2404

  • Large images will now fit into the available space on the screen, e.g. inside test case description cards. Fixes Issue #2220

Refactoring and testing

  • Add automated tests for missing coverage in kiwi_auth.admin References Issue #1607 (Mariyan Garvanski)

  • Apply eslint fixes (@sonyagennova + Alex Todorov)

  • Refactor TestExecution.add_link method to use ModelForm and extend tests. Closes Issue #1327 (Rosen Sasov + Alex Todorov)

  • Use context manager when opening files to make pylint happier

  • Simplify 2 UI buttons on TestRun page

  • Enable doc8 for README and CHANGELOG and fix formatting errors


Kiwi TCMS 10.1 (18 May 2021)


This release includes many improvements & security updates, database changes, new and updated API methods, bug fixes, translation updates, new tests and internal refactoring.

It is the tenth release to include contributions via our open source bounty program and collaboration with Major League Hacking!

This is the second release after Kiwi TCMS reached 400K pulls on Docker Hub!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate

Improvements & security updates

  • Upgrade from Python 3.6 to Python 3.8 inside the container

  • Upgrade Django from 3.1.7 to 3.2.3

  • Upgrade django-attachments from 1.8 to 1.9.1

  • Upgrade django-contrib-comments from 2.0.0 to 2.1.0

  • Upgrade django-extensions from 3.1.1 to 3.1.3

  • Upgrade django-grappelli from 2.14.3 to 2.15.1

  • Upgrade django-simple-history from 2.12.0 to 3.0.0

  • Upgrade django-tree-queries from 0.4.3 to 0.5.1

  • Upgrade jira from 2.0.0 to 3.0.1

  • Upgrade pygments from 2.8.0 to 2.9.0

  • Upgrade python-gitlab from 2.6.0 to 2.7.1

  • Upgrade node_modules/html5sortable from 0.10.0 to 0.11.1

  • Upgrade node_modules/marked from 2.0.1 to 2.0.3

  • Timestamp fields added to all TestRun pages. Closes Issue #1928 (Andreea Moraru)

  • Don’t set TestRun.start_date automatically. Fixes Issue #2323 (Andreea Moraru)

  • Web based database initialization for new installations. Closes Issue #1698 (Ivajlo Karabojkov)

  • Automatically active the first registered user via web UI

  • Rearrange layout of before and after fields on search pages

  • Allow TestRun creation from navigation menu. Fixes Issue #2281

  • Document hardware specs & performance baseline results. Refs Issue #721

  • Document performance for TestCase.filter/TestRun.filter methods. Closes Issue #1173

  • Update documentation around docker-compose.yml and the extra script files that it needs

  • Document some useful management commands

  • Clarify set_domain command. Closes Issue #2375


  • Change TEMP_DIR to /var/tmp which affects the location in which intermadiate files coming from migrations are saved. If /var/tmp doesn’t exist the fallback is /tmp which on modern Linux distributions is ephemeral

  • Add DEFAULT_AUTO_FIELD to hard-code expected behavior and prevent unwanted changes introduced by future versions of Django


  • Add new fields to TestCase - setup_duration, testing_duration and a calculatable expected_duration attribute (Angelina)

  • Remove unused TestRun.product_version field


  • Method TestRun.filter() return value changes field names:

    • product_version -> plan__product_version

    • product_version__value -> plan__product_version__value


    You will need to adjust your API scripts if using these fields!

  • Method Component.filter() will return only distinct results

  • New method KiwiTCMS.version()

Bug fixes

  • Remove links and icons from TestRun print styling. Fixes Issue #2263 and Issue #2264 (Gagan Deep)

  • Emails notifications are now sent into server language. Fixes Issue #1589 (Kapil Bansal)

  • Fix compatibility bug for “advanced search & add” popup windows and latest Chrome browsers. Fixes Issue #2100

  • Redirect TestPlan Admin “Add” to the correct URL

  • Fix wrong TestExecution field names in queryset & HTML template. Refs Issue #1924

  • Add default display for None fields in Test Case page

Refactoring & testing

  • Add test automation for TestExecution.actual_duration. Refs Issue #1924 (@APiligrim)

  • Add test automation for TestCase.expected_duration. Refs Issue #1923 (@APiligrim)

  • Add test automation for ReadOnlyHistoryAdmin. Fixes Issue #1604 (Kapil Bansal)

  • Add similar-string checker to kiwi_lint. Fixes Issue #1126 (@17sushmita)

  • Resolve or silence the remaining outstanding pylint issues. Closes Issue #171

  • Update isort from 5.7.0 to 5.8.0

  • Convert forms to ModelForm

  • Remove unused method parameters

  • Remove unused string_to_list(). Closes Issue #340

  • Simplify method used for progressbar in dashboard which also reduces the total number of SQL queries

  • Use existing functions, remove duplication

  • Remove unnecessary calls & definition of loadInitialTestPlans() in Telemetry pages


Kiwi TCMS 10.0 (02 March 2021)


This is a major release which includes backwards incompatible API changes, new database fields, improvements, bug fixes, translation updates, new tests and internal refactoring. It is the ninth release to include contributions via our open source bounty program.

This is the first release after Kiwi TCMS reached 400K pulls on Docker Hub!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Update node_modules/marked from 1.2.7 to 2.0.1. Also fixes SNYK-JS-MARKED-1070800

  • Update django from 3.1.5 to 3.1.7 for CVE-2021-3281 and CVE-2021-23336


  • Update bleach from 3.2.1 to 3.3.0

  • Update django-colorfield from 0.3.2 to 0.4.1

  • Update django-extensions from 3.1.0 to 3.1.1

  • Update markdown from 3.3.3 to 3.3.4

  • Update pygments from 2.7.4 to 2.8.0

  • Update python-gitlab from 2.5.0 to 2.6.0

  • Change ON/OFF button messages (Krum Petkov)

  • Automatically set test run to finished/not-finished depending on the state of all executions. Closes Issue #441

  • Allow assigning users from group admin page. Fixes Issue #1844

  • Improve documentation around setting up devel environment


  • Add TestRun.planned_start and TestRun.planned_stop fields. Refs Issue #1928 (Andreea Moraru)

  • Add TestExecution.start_date field. Refs Issue #1924 (Anastasiya Uraleva)

  • Rename field TestExecution.close_date to TestExecution.stop_date (Anastasiya Uraleva)



This release changes how Kiwi TCMS serializes API results and thus introduces multiple backwards incompatible changes.


All .filter() methods now return distinct records!

  • New method PlanType.create()

  • Method TestCase.add_component() now returns a serialized Component instead of a serialized TestCase. Refs Issue #2145

  • Methods Product.filter(), Product.create() and Product.update():

    • change input parameter classification_id to classification - type int

    • change result field classification_id to classification - type int

  • Method Category.filter() changes result field product_id to product - type int

  • Methods Component.filter(), Component.create() and Component.update():

    • change input parameter product_id to product - type int

    • change input parameter initial_owner_id to initial_owner - type int

    • change input parameter initial_qa_contact_id to initial_qa_contact - type int

    • change result field product_id to product - type int

    • change result field initial_owner_id to initial_owner - type int

    • change result field initial_qa_contact_id to initial_qa_contact - type int

    • adds result field cases - type int - a TestCase ID if this component is attached to a test case

  • Methods Version.filter() and Version.create():

    • change input parameter product_id to product - type int

    • change result field product_id to product - type int

  • Method Tag.filter() now returns additional fields: bugs, case, plan and run which causes existing queries to return similar records attached to different parent objects. Consumers of these results should be updated

  • Methods TestPlan.filter(), TestPlan.create() and TestPlan.update():

    • change input parameter author_id to author - type int

    • change input parameter parent_id to parent - type int

    • change input parameter product_id to product - type int

    • change input parameter product_version_id to product_version - type int

    • change input parameter type_id to type - type int

    • change result field author_id to author - type int

    • change result field parent_id to parent - type int

    • change result field product_id to product - type int

    • change result field product_version_id to product_version - type int

    • change result field type_id to type - type int

    • remove result fields cases, tag, default_product_version

  • Method TestPlan.filter() adds result fields product_version__value, product__name, author__username and type__name

  • Methods TestRun.filter(), TestRun.create() and TestRun.update():

    • change result field build_id to build - type int

    • change result field default_tester_id to default_tester - type int

    • change result field manager_id to manager - type int

    • change result field plan_id to plan - type int

    • change result field product_version_id to product_version - type int

    • remove result fields cc, tag

  • Method TestRun.filter() adds result fields product_version__value, plan__product, plan__name, build__name, manager__username and default_tester__username

  • Methods TestExecution.filter() and TestExecution.update():

    • change input parameter assigee_id to assignee - type int

    • change input parameter build_id to build - type int

    • change input parameter case_id to case - type int

    • change input parameter run_id to run - type int

    • change input parameter status_id to status - type int

    • change input parameter tested_by_id to tested_by - type int

    • change result field assigee_id to assignee - type int

    • change result field build_id to build - type int

    • change result field case_id to case - type int

    • change result field run_id to run - type int

    • change result field status_id to status - type int

    • change result field tested_by_id to tested_by - type int

  • Method TestExecution.filter() adds result fields assignee__username, tested_by__username, case__summary, build__name and status__name

  • Method TestExecution.get_links() change result field execution_id to execution - type int

  • Method TestRun.add_case() changes result field names similarly to TestExecution.filter() method

  • Methods TestCase.filter(), TestCase.create() and TestCase.update():

    • change input parameter author_id to author - type int

    • change input parameter case_status_id to case_status - type int

    • change input parameter category_id to category - type int

    • change input parameter default_tester_id to default_tester - type int

    • change input parameter priority_id to priority - type int

    • change input parameter reviewer_id to reviewer - type int

    • change result field author_id to author - type int

    • change result field case_status_id to case_status - type int

    • change result field category_id to category - type int

    • change result field default_tester_id to default_tester - type int

    • change result field priority_id to priority - type int

    • change result field reviewer_id to reviewer - type int

    • remove result fields component, plan, tag

  • Method TestCase.filter() adds result fields case_status__name, category__name, priority__value, author__username, default_tester__username and reviewer__username

  • Methods TestRun.get_cases() and TestPlan.add_case() change result field names similarly to TestCase.filter() method

Bug fixes

  • Fix removing a component from a test case immediately after it has been added. Fixes Issue #2145 (Gagan Deep)

  • Fix broken object navigation in navbar. Fixes Issue #991

  • Refactor search pages rendering to speed it up. Closes Issue #1014

Refactoring & testing

  • Update tests for TestRun.create() API method. Refs Issue #1928 (Andreea Moraru)

  • Add automation tests. Closes Issue #1618 (Mariyan Garvanski)

  • Add additional automation tests for Closes Issue #1610 (Gagan Deep)

  • Add additional automation tests for tcms.testcases.views.EditTestCaseView. Closes Issue #1615 (Gagan Deep)

  • Add additional automation tests for tcms.kiwi_auth.forms. Closes Issue #1609 (Kapil Bansal)

  • Change location of included HTML templates (Alexander Tsvetanov, Krum Petkov)

  • Erase unused view & templates (Alexander Tsvetanov)

  • Enable eslint. Closes Issue #1281

  • Change how beakerlib test framework is installed to avoid problems during integration tests

  • Better inspection of beakerlib test results to avoid false positive results


Kiwi TCMS 9.0.1 (14 Jan 2021)

Bug fixes

Kiwi TCMS 9.0 (12 Jan 2021)


This is a major release which includes backwards incompatible database and API changes, improvements, bug fixes, translation updates, new tests and internal refactoring. It is the eight release to include contributions via our open source bounty program.

This is the third release after Kiwi TCMS reached 200K pulls on Docker Hub!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Update django from 3.1.4 to 3.1.5

  • Update django-contrib-comments from 1.9.2 to 2.0.0

  • Update pygithub from 1.53 to 1.54.1

  • Update pygments from 2.7.3 to 2.7.4

  • Update mysqlclient from 2.0.1 to 2.0.3

  • Update node_modules/prismjs from 1.22.0 to 1.23.0

  • Update node_modules/marked from 1.2.5 to 1.2.7

  • Implement ‘Select all’ for TestCase Search page. Resolves Issue #2103 (Bryan Mutai)

  • Change ON/OFF button messages for several buttons (Krum Petkov)

  • Remove delete_selected action from admin pages

  • Show active test runs in TestPlan page

  • Hide irrelevant Version & Build selectors for Testing breakdown telemetry

  • Allow running to be passed as URL query param to TestRun Search page


  • Remove unused kiwi.rpc log handler from LOGGING setting



Contains backwards incompatible changes.

  • Replace Build.product with Build.version. Closes Issue #246. Build objects are now associated with Version objects, not with Product objects!


    After migration existing builds will point to the “unspecified” version! If you want your telemetry to be accurate you will have to update these objects manually and point them to the appropriate version value!

  • Rename related_name for TestExecution model: case_run -> executions

  • Rename related_name for TestCase model: case -> cases



Contains backwards incompatible changes.

  • Methods Build.filter, Build.create and Build.update replace the product field with a version field

Bug fixes

  • Display raw Markdown text before rendering to fix a bug where anymous users don’t see any text on the screen even if they are allowed to view an object

Refactoring & testing

  • Add tests for tcms.core.middleware. Fixes Issue #1605 (Gagan Deep)

  • Add tests for tcms.handlers. Fixes Issue #1611 (Gagan Deep)

  • Add tests for tcms.kiwi_auth.views. Fixes Issue #1608 (Abhishek Chaurasia)

  • Update pip during bugtracker integration tests to fix dependency issues

  • Reformat all files with black and isort. Closes Issue #1193

  • Refactor TestExecution.get_bugs() to use TestExecution.links()

  • Add return statement for invalid form to make pylint happy

  • Make Bug.assignee field a UserField

  • Replace deprecated ugettext_lazy with gettext_lazy

  • Fixes for Azure Boards integration tests

  • Remove CsrfDisableMiddleware. Closes Issue #297

  • Remove unused methods & left-over views


Kiwi TCMS 8.9 (07 Dec 2020)


This release includes many improvements, API changes, bug fixes, translation updates, new tests and internal refactoring. It is the seventh release to include contributions via our open source bounty program.

This is the second release after Kiwi TCMS reached 200K pulls on Docker Hub!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Update django from 3.1.3 to 3.1.4

  • Update django-extensions from 3.0.9 to 3.1.0

  • Update django-grappelli from 2.14.2 to 2.14.3

  • Update pygments from 2.7.2 to 2.7.3

  • Update python-bugzilla from 3.0.1 to 3.0.2

  • Update node_modules/marked from 1.2.3 to 1.2.5

  • Update node_modules/html5sortable from 0.9.18 to 0.10.0

  • New initial_setup command for one-stop initial setup (Ivajlo Karabojkov)

  • Bug tracker integration with BitBucket ( Fixes Issue #1916 (@cmbahadir)

  • Complete redesign and refactoring of Test Run page:

  • TestCaseStatus can now be customized. Fixes Issue #1932

  • Update documantation & screenshots


  • Setting ANONYMOUS_USER_NAME is now explicitly defined due to upstream bug in django-guardian (Abhishek Chaurasia)


  • New migrations for customizeable TestCaseStatus


  • Add TestExecution.history() meethod

  • Add TestCase.history() method

  • Add TestRun.add_cc() method

  • Add TestRun.remove_cc() method

  • Method TestExecution.update() will use build from parent test run if a build field isn’t explicitly specified in the arguments

  • Update method TestRun.add_case()

    • will return existing TestExecution if available

    • will raise if test case status is not confirmed

    • will always create new test executions with the highest sortkey

Bug fixes

  • Fixed miscellaneous bugs in tcms.rpc.testcase (Gagan Deep)

  • Disable name change in admin for the default groups. Fixes Issue #1313

Refactoring & testing

  • Add automated tests for tcms.core.views.server_error. Fixes Issue #1606 (Abhishek Chaurasia)

  • Add automated tests for tcms.rpc.api.auth. Fixes Issue #1620 (Abhishek Chaurasia)

  • Add automated test for AnonymousViewBackend.has_perm method. Fixes Issue #1905 (Abhishek Chaurasia)

  • Add automated tests for tcms.core.utils.maito. Fixes Issue #1603 (Gagan Deep)

  • Add automated tests for tcms.utils.github. Fixes Issue #1612 (Gagan Deep)

  • Add automated tests for tcms.rpc.api.testscase. Fixes Issue #1623 (Gagan Deep)

  • Add automated tests for tcms.testcases.views.NewCaseView. Fixes Issue #1614 (@rish07)

  • Add automated tests for tcms.testplans.views.NewTestPlanView. Fixes Issue #1616 (@awalvie)

  • Separate two functions one from another (Alexander Tsvetanov)

  • Disable pylint checks (Alexander Tsvetanov)

  • Upgrade to MySQL 8 in Travis CI

  • Remove unused setup in Travis CI

  • Be more robust when keeping internal state for TestPlan page


Kiwi TCMS 8.8 (07 Nov 2020, the 200K edition)


This release includes many improvements, API changes, bug fixes, translation updates, new tests and internal refactoring. It is the sixth release to include contributions via our open source bounty program.

This is also the first release after Kiwi TCMS reached 200K pulls on Docker Hub!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Update bleach from 3.1.5 to 3.2.1

  • Update django-extensions from 3.0.8 to 3.0.9

  • Update django from 3.1.1 to 3.1.3

  • Update django-simple-history from 2.11.0 to 2.12.0

  • Update markdown from 3.2.2 to 3.3.3

  • Update pygments from 2.7.0 to 2.7.2

  • Update python-bugzilla from 2.5.0 to 3.0.1

  • Update node_modules/marked from 1.1.1 to 1.2.3

  • Update node_modules/prismjs from 1.21.0 to 1.22.0

  • Add management command refresh_permission. Closes Issue #1137 (Ivajlo Karabojkov)

  • Add bug tracker integration for Azure Boards. Closes Issue #1979 (@cmbahadir)

  • Add autosave configuration to web editor. Closes Issue #1958 (Mfon Eti-mfon)

  • Change ON/OFF button messages to Yes/No for several buttons (Alexander Tsvetanov)

  • Add support for object-level permissions for TestCase, TestPlan, TestRun and Bug objects via django-guardian

  • Complete redesign of Test Plan page to match the rest of Kiwi TCMS:

    • modern look and feel using the PatternFly UI library

    • remove unused legacy code & HTML templates

    • closes Issue #663, Issue #1977

  • Enable Markdown support for strike-through text

  • Always pull latest RPMs when building container images

  • Update documentation and images


  • AUTHENTICATION_BACKENDS setting is now explicitly specified because of django-guardian. Take care to include the default backends if you override this setting. See tcms/settings/ for more information.


  • Add index to TestCase.summary field

  • Additional migrations from django-guardian around object-level permissions

  • New AnonymousUser record added by django-guardian

  • Start using django-tree-queries which improves how tree based structures are stored in the database.


    Requires PostgreSQL, sqlite3 >= 3.8.3, MariaDB >= 10.2.2 or MySQL >= 8.0 (if running without ONLY_FULL_GROUP_BY).


    Supports only trees with max. 50 levels on MySQL/MariaDB, since those databases do not support arrays and require us to provide a maximum length upfront. This means up to 50 levels of nested child-parent test plans!


  • Method TestExecution.update() will now modify field close_date depending on test execution status. Fixes Issue #1820

  • Method TestCase.add_comment() now returns the created comment

  • Method TestExecution.add_comment() now returns the created comment

  • Method TestPlan.add_case() now returns the newly added test case

  • Add method TestCase.sortkeys(). Fixes Issue #444

  • Add method Markdown.render()

  • Add method TestCase.comments()

  • Add method TestPlan.tree()

Bug fixes

  • Fix url formatting. Fixes Issue #1806 (Rosen Sasov)

  • When deleting TestExecutionStatus check that there will be at least 1 left before deleting! Closes Issue #1978

  • Update typeahead definitions for test case components, tags and for adding test plans to test cases. Fixes Issue #882

  • Add option to filter by reviewer in Test Plan page. Fixes Issue #564

  • Pass the number of disabled test cases to HTML template when creating a new test run. Fixes Issue #718

Refactoring & testing

  • New linter to warn against GenericForeignKey fields in models. Closes Issue #1303 (Bryan Mutai)

  • Add tests for assign_default_group_permissions() (Ivajlo Karabojkov)

  • Add tests for TestExecutionStatusAdmin. Refs Issue #1618 (Mariyan Garvanski)

  • Add tests for tcms.bugs.views.Search. Closes Issue #1601 (Mfon Eti-mfon)

  • Add tests for tcms.rpc.api.testrun. Closes Issue #1628 (@lcmtwn)

  • Add tests for tcms.rpc.api.classification. Closes Issue #1621 (Abhishek Chaurasia)

  • Add tests for tcms.rpc.api.priority. Closes Issue #1622 (Abhishek Chaurasia)

  • Add tests for tcms.rpc.api.testcasestatus. Closes Issue #1624 (Abhishek Chaurasia)

  • Add tests for tcms.rpc.api.attachment. Closes Issue #1619 (@awalvie)

  • Add tests for tcms.rpc.api.testexecution.remove_comment. Closes Issue #1625 (@awalvie)

  • Add tests for tcms.rpc.api.testexecutionstatus. Closes Issue #1626 (@awalvie)

  • Add tests for TestRun.add_case_run() method and rename it to TestRun.create_execution()

  • libkrb5-dev is not needed anymore in CI with newer tcms-api

  • Use Fedora 32 to build Bugzilla docker image in CI

  • Update signature for overriden class to match Django 3.1

  • Move SimpleMDE initialization to simplemde_security_overide.js

  • Move post_save.send() from bugs.views to comments.add_comment()


Kiwi TCMS 8.7 (16 Sep 2020)

IMPORTANT: this is a medium sized release which includes improvements, API changes, bug fixes, translation updates and new tests. It is the fifth release to include contributions via our open source bounty program.

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Update Django from 3.0.9 to 3.1.1

  • Update django-attachments from 1.6 to 1.8

  • Update django-extensions from 3.0.5 to 3.0.8

  • Update psycopg2 from 2.8.5 to 2.8.6

  • Update pygments from 2.6.1 to 2.7.0

  • Update python-gitlab from 2.4.0 to 2.5.0

  • Make it possible to use reCAPTCHA during registration. If you want to enable this then add the following to your settings:

    if 'captcha' not in INSTALLED_APPS:
        RECAPTCHA_PUBLIC_KEY = '......'
        RECAPTCHA_PRIVATE_KEY = '.....'
        RECAPTCHA_USE_SSL = True

    For more info see

  • Replace GlobalLoginRequiredMiddleware with tcms.kiwi_auth.backends.AnonymousViewBackend for anonymous read-only functionality. See section Anonymous read-only access in the documentation

  • Replace the ... in navigation bar with a 3 cogs icon to make the object-level menu more visible


  • Remove setting PUBLIC_VIEWS


  • Remove TestCase.get_components() in favor of Component.filter()

  • Bug.details() method will now return {} instead of failing if it can’t find an issue tracker from an URL

Bug fixes

  • Remove documentation references to non-existing environment

  • Don’t fail internal calls if Kiwi TCMS bug tracker can’t find a bug

Refactoring & testing

  • Add tests for tcms.core.templatetags. Closes Issue #1602 (Mariyan Garvanski)

  • Add tests for tcms.bugs.views.Edit. Closes Issue #1599 (Mfon Eti-mfon)

  • Add tests for tcms.bugs.views.AddComment. Closes Issue #1600 (Mfon Eti-mfon)

  • Make paths used in migrations & settings platform aware in order to enable development mode on Windows (Mfon Eti-mfon)

  • Add new linter checker to check for use of db_column argument in model field definition. Closes Issue #736 (Bryan Mutai)

  • Add tests for Bug.details API method

  • Replace deprecated ifequal/ifnotequal template tags

  • Adjust migrations_order for Django 3.1 compatibility

  • Add npm audit check in CI

  • Resolve several pylint issues


Kiwi TCMS 8.6 (23 Aug 2020)

IMPORTANT: this is a high severity security update which includes improvements, database migrations, API changes, translation updates and new tests. It is the fourth release to include contributions via our open source bounty program.

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • A high severity vulnerability which allows unprivileged data access via JSON-RPC endpoints has been fixed:

    • Affects all previous versions of Kiwi TCMS

    • Instances on public networks, such as Amazon EC2, are at higher risk

    • Instances on private networks are still vulnerable to anyone who can access the same network

    • This vulnerability has been disclosed by Michael Longmire (ShastaQA) and Stone Pack (ShastaQA)

  • Update marked from 0.8.2 to 1.1.1 for a medium severity vulnerability, see SNYK-JS-MARKED-584281


  • Update django from 3.0.8 to 3.0.9

  • Update django-attachments from 1.5 to 1.6

  • Update prismjs from 1.20.0 to 1.21.0

  • Update pygithub from 1.51 to 1.53

  • Replace deprecated bleach-whitelist with bleach-allowlist

  • Make django-extensions a production dependency because it provides many useful commands

  • Enable syntax highlight for code blocks

  • Remove file attachments when related objects are deleted

  • Add image and file upload buttons to text editor. Fixes Issue #977

  • Require auth.view_user permission when trying to view user profiles. Fixes Issue #1685

  • Multiple pages now explicitly require view permissions before displaying read-only information. This gives administrators a finer grained control:

    • /bugs/<id>/ -> bugs.view_bug

    • /bugs/search/ -> bugs.view_bug

    • /cases/search/ -> testcases.view_testcase

    • /case/<id>/ -> testcases.view_testcase

    • /plans/search/ -> testplans.view_testplan

    • /plan/<id>/* -> testplans.view_testplan

    • /runs/search/ -> testruns.view_testrun

    • /runs/<id>/ -> testruns.view_testrun

    Previously these pages only required the user to be logged in


The auth.view_user permission is not granted by default because the profile page contains personal information like names and email address, see Managing permissions.


  • Migrations which manipulate data (contain RunPython) can now be rollbacked. See ./ migrate --plan for the order in which migrations are applied (Bryan Mutai)

  • Increase size from 64 to 255 characters


  • Remove method TestExecution.create() in favor of TestRun.add_case()

  • Add method User.add_attachment()

  • Multiple API methods now explicitly require view permissions before returning read-only information. This is in-sync with the per-page changes listed above:

    • Bug.filter() -> bugs.view_bug

    • -> testruns.view_testexecution

    • Build.filter() -> management.view_build

    • Category.filter() -> testcases.view_category

    • Classification.filter() -> management.view_classification

    • Component.filter() -> management.view_component

    • PlanType.filter() -> testplans.view_plantype

    • Priority.filter() -> management.view_priority

    • Product.filter() -> management.view_product

    • Tag.filter() -> management.view_tag

    • TestCase.get_components() -> testcases.view_testcase

    • TestCase.get_notification_cc() -> testcases.view_testcase

    • TestCase.filter() -> testcases.view_testcase

    • TestCaseStatus.filter() -> testcases.view_testcasestatus

    • TestExecution.filter() -> testruns.view_testexecution

    • TestExecution.get_links() -> linkreference.view_linkreference

    • TestExecutionStatus.filter() -> testruns.view_testexecutionstatus

    • TestPlan.filter() -> testplans.view_testplan

    • TestRun.get_cases() -> testruns.view_testrun

    • TestRun.filter() -> testruns.view_testrun

    • User.filter() -> auth.view_user

    • Version.filter() -> management.view_version

Bug fixes

  • Update documentation to reflect that test cases cannot be rearranged from within a TestRun but only from a TestPlan. Fixes Issue #1805 (@Prome88)

  • Incorrect code formatting for HTML <pre> tags. Closes Issue #1300

  • Fix a bug with the history handler when importing objects with ID field set. Resolves a crash when trying to restore backup data

  • Delete comments when Bug is removed

Refactoring & testing

  • Add linter to warn about missing backwards migrations callable in RunPython and fix all pylint offenses. Fixes Issue #1774 (Bryan Mutai)

  • Teach linter to check API for @permissions_required. Fixes Issue #1089

  • Refactor NewExecutionForm to use ModelForm (Rosen Sasov)

  • Refactor UpdateExecutionForm to use ModelForm (Rosen Sasov)

  • Add tests for tcms.bugs.api. Closes Issue #1597 (Mfon Eti-mfon)

  • Add tests for tcms.bugs.views.New. Closes Issue #1598 (Mfon Eti-mfon)

  • Add tests for tcms.rpc.api.testplan. Closes Issue #1627 (@lcmtwn)

  • Add tests for percentage() function References Issue #1602 (Mariyan Garvanski)

  • Add the migrations_order command to help test rollbacks

  • Adjust code for deprecation warnings from Django 3.1

  • Use Python 3 style super() without arguments

  • Update login page to match our new website design


Kiwi TCMS 8.5 (10 Jul 2020)

IMPORTANT: this is a medium sized release which includes many improvements, database migrations, translation updates and new tests. It is the third release to include contributions via our open source bounty program.

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Update django from 3.0.7 to 3.0.8

  • Update django-colorfield from 0.3.0 to 0.3.2

  • Update django-modern-rpc from 0.12.0 to 0.12.1

  • Update django-simple-history from 2.10.0 to 2.11.0

  • Update mysqlclient from 1.4.6 to 2.0.1

  • Update python-gitlab from 2.2.0 to 2.4.0

  • Update python-bugzilla from 2.3.0 to 2.5.0

  • Add middleware to warn for unapplied migrations. Fixes Issue #1696 (Bryan Mutai)

  • Add “insert table” button to SimpleMDE toolbar. References Issue #1531 (Bryan Mutai)

  • Implement kiwitcms-django-plugin. Resolves Issue #693 (Bryan Mutai)

  • Add missing permission check for TestExecution.add_link() API method (Rosen Sasov)

  • Add missing permission check for TestExecution.remove_link() API method (Rosen Sasov)

  • Admin interface will now appear translated

  • Propagate server side API errors to the browser. Closes Issue #625, Issue #1333

  • Improvements for Status Matrix telemetry page:

    • Make the horizontal scroll bar at the bottom always visible

    • Make the header row always visible

    • Add button to show columns in reverse. Fixes Issue #1682

    • Make it possible to display TestExecutions from child TestPlans. Fixes Issue #1683


  • Update existing Bug tracker records to match the changes introduced with the new EXTERNAL_BUG_TRACKERS setting


  • Add EXTERNAL_BUG_TRACKERS setting which is a list of dotted class paths representing external bug tracker integrations. Plugins and Kiwi TCMS admins can now more easily include customized integrations

Refactoring & testing

  • Add new linter to check for label arguments in form field classes. Fixes Issue #738 (Bryan Mutai)

  • Add new linter to check if all forms inherit from ModelForm. Fixes Issue #1384 (Bryan Mutai)

  • Enable pylint plugin pylint.extensions.docparams and resolve errors. Fixes Issue #1192 (Bryan Mutai)

  • Migrate ‘test-for-missing-migrations’ from Travis CI to GitHub workflow. Fixes Issue #1553 (Bryan Mutai)

  • Add tests for tcms.bugs.api.add_tag(). References Issue #1597 (Mfon Eti-mfon)

  • Add tests for tcms.bugs.api.remove_tag(). References Issue #1597 (Mfon Eti-mfon)

  • Add test for tcms.testplans.views.Edit. References Issue #1617 (@cmbahadir)

  • Add tests for markdown2html(). Fixes Issue #1659 (Mariyan Garvanski)

  • Add test for Cyrillic support with MariaDB. References Issue #1770


Kiwi TCMS 8.4 (03 June 2020)

IMPORTANT: this is a medium sized release which includes minor security fixes, many improvements & bug-fixes and translations in several new languages. It is the second release to include contributions via our open source bounty program.


Last month we’ve also reached an important milestone - 100K+ pulls on Docker Hub !!!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Update Django from 3.0.5 to 3.0.7 - security update for functionality not used by Kiwi TCMS

  • Update bleach from 3.1.4 to 3.1.5

  • Update django-grappelli from 2.14.1 to 2.14.2

  • Update django-simple-history from 2.9.0 to 2.10.0

  • Update markdown from 3.2.1 to 3.2.2

  • Update pygithub from 1.50 to 1.51

  • Update python-redmine from 2.2.1 to 2.3.0

  • Update patternfly from 3.59.4 to 3.59.5

  • Add set_domain command to change Kiwi TCMS domain. Fixes Issue #971 (Ivajlo Karabojkov)

  • GitHub bug details now works for private issues

  • Gitlab bug details now works for private issues

  • JIRA bug details now works for private issues

  • Redmine bug details now works for private issues

  • New feature: 1-click bug report for Bugzilla

  • New feature: 1-click bug report for Gitlab

  • New feature: 1-click bug report for JIRA

  • New feature: 1-click bug report for Redmine

  • Reverting to older historical version via Admin panel now redirects to object which was reverted. Fixes Issue #1074

  • Documentation updates


Starting from v8.4 all supported bug trackers now feature 1-click bug report integration!


Some external bug trackers like Bugzilla & JIRA provide more flexibility over which fields are required for a new bug report. The current functionality should work for vanilla installations and would fall back to manual bug reporting if it can’t create a new bug automatically!


  • Force creation of missing permissions for m2m fields from the tcms.bugs app:

    • bugs.add_bug_tags

    • bugs.change_bug_tags

    • bugs.delete_bug_tags

    • bugs.view_bug_tags

    • bugs.add_bug_executions

    • bugs.change_bug_execution

    • bugs.delete_bug_execution

    • bugs.view_bug_executions


TCMS admins of existing installations will have to assign these by hand to users/groups who will be allowed to change tags on bugs!


  • Define the KIWI_DISABLE_BUGTRACKER=yes environment variable if you wish to disable the internal bug tracker. Closes Issue #1370

Bug fixes

  • Workaround missing MariaDB CHARSET/COLLATION support, see our docker-compose.yml. Fixes Issue #1700

  • Install missing /usr/bin/mysql in container

  • Warning message for unconfigured Kiwi TCMS domain does not show HTML tags in Admin anymore. Fixes Issue #964

  • Unescape the &amp; string when trying to open new windows after clicking the ‘Report bug’ button in TestExecution. Fixes Issue #1533

  • Try harder to restore the original navigation menu instead of leaving bogus menu items. Fixes Issue #991

  • Robot Framework plugin is now GA. Close Issue #984

  • Add LinkReference to TestExecution after creating bug via 1-click. The UI still needs to be refreshed which will be implemented together with the redesign of the TestRun page

  • Update documented signature for API method TestCase.add_component to match current behavior, see

Refactoring & testing

  • Migrate check-docs-source-in-git to GitHub workflows. Fixes Issue #1552 (@Prome88)

  • Migrate build-for-pypi to GitHub workflows. Fixes Issue #1554 (@lcmtwn)

  • Add tests for TestCaseAdmin (Mariyan Garvanski)

  • Add tests for BugAdmin. Fixes Issue #1596 (Mariyan Garvanski)

  • Omit utils/test from coverage reports. Fixes Issue #1631 (@cmbahadir)

  • Omit tcms/tests from coverage reports. Fixes Issue #1630 (@cmbahadir)

  • Add tests for tcms.core.forms.fields - Fixes Issue #1629 (@cmbahadir)

  • Add tests for TestExecution.update() for case_text_version field (Rosen Sasov)

  • Refactor bulk-update methods in TestRun page to use JSON-RPC. Fixes Issue #1063 (Rosen Sasov)

  • Start using _change_reason instead of changeReason field in django-simple-history

  • Remove unused StripURLField & Version.string_to_id()

  • Refactoring around TestCase and TestPlan cloning methods

  • Start testing with the internal bug tracker disabled

  • Start testing with all supported external bug trackers. Fixes Issue #1079

  • Start Codecov for coverage reports

  • Add tests for presense of mysql/psql binaries in container

  • Add APIPermissionsTestCase with example in TestVersionCreatePermissions

  • Move most test jobs away from Travis CI to GitHub workflows



Some of the translations in Chinese and German and all of the strings in Japanese and Korean have been contributed by a non-native speaker and are sub-optimal, see OpenCollective #18663. If you are a native in these languages and spot strings which don’t sit well with you we kindly ask you to contribute a better translation via the built-in translation editor!

Kiwi TCMS 8.3 (27 Apr 2020)

IMPORTANT: this is a small release which updates 3rd party libraries, provides several improvements, includes minor API changes and new translations. It is the first release to include contributions via our open source bounty program.

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Update django-colorfield from 0.2.2 to 0.3.0

  • Update django-simple-history from 2.8.0 to 2.9.0

  • Update prismjs from 1.19.0 to 1.20.0

  • Update psycopg2 from 2.8.4 to 2.8.5

  • Update pygithub from 1.47 to 1.50

  • Update python-gitlab from 2.1.2 to 2.2.0

  • It is now possible to reopen closed bugs - Fixes Issue #1152 (@cmbahadir)

  • Visual improvements for Status matrix telemetry:

    • columns now link to test runs

    • tooltips show test run summary

  • Show TOTAL in tooltip for Execution trends telemetry

  • Self-signed SSL certificate is now built more frequently and is valid for 10 years

  • Improved documentation around self-signed certificates

  • Improved documentation around e-mail backend configuration. Closes Issue #1070 (@Schwarzkrieger)


  • Methods TestPlan.create, TestPlan.update and TestRun.update now use Django’s ModelForm to properly validate input data against the model

  • Method TestCase.update now also accepts username and email values for fields author, default_tester and reviewer


  • Migrate bandit test job to GitHub workflows, Closes Issue #1550 (@lcmtwn)

  • Migrate doc8 test job to GitHub workflows. Closes Issue #1551 (@Prome88)

  • Add 2 more tests (Mariyan Garvanski)

  • Convert TP edit page to class based view

  • Convert forms to ModelForm


Kiwi TCMS 8.2 (03 Apr 2020)

IMPORTANT: this is a small release which updates 3rd party libraries, provides minor improvements, minor API changes and some new translations.

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Update bleach from 3.1.1 to 3.1.4

  • Update django from 3.0.4 to 3.0.5

  • Update django-colorfield from 0.2.1 to 0.2.2

  • Update pygithub from 1.46 to 1.47

  • Update python-gitlab from 2.0.1 to 2.1.2

  • Update marked(js) to version 0.8.2

  • Change default MariaDB charset and collation to utf8mb4. Will only affect new installations. Closes Issue #327

  • Document TCMS_PLAN_ID ENV variable supported by automation framework plugins

  • Test case Search page now allows searching for records containing the specified text. Closes #1209 @Schwarzkrieger

  • Provide ../site-packages/tcms_settings_dir/ when installing Kiwi TCMS which is an empty pkgutil-style namespace where other packages can drop their configuration

  • Hide empty values in Execution trends chart tooltips


  • Remove Auth.login_krbv() method

  • Method TestRun.update() will now accept %Y-%m-%d %H:%M:%S timestamp format. The previous format %Y-%m-%d is also supported

  • Method TestExecution.create() now defaults to first neutral status instead of searching for the hard-coded IDLE. That means newly created test executions which do not specify status will be created with the first neutral status found in the database


  • Fix pylint errors. Closes Issue #1510 (@cmbahadir)

  • Add tests for TestRunAdmin.delete_view() (Mariyan Garvanski)

  • Revert “[l10n] Add Serializer class which returns untranslated models”


Kiwi TCMS 8.1 (04 Mar 2020)

IMPORTANT: this is a small security and improvement release which also includes several bug fixes, internal refactoring and updated translations.

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • JSON-RPC handler will now HTML escape all strings. This prevents XSS attacks via tags, components or anything else which is loaded on the web page via RPC and then shown as string. Even if someone saves <script>alert(123);</script> in the database the returned result will be HTML escaped and will not be executed as JavaScript!


    This is easy to exploit but people able to do so should have accounts in your Kiwi TCMS installation and write privileges on their accounts. If they do this means they can cause a lot more damage much more easily!

  • Update Django from 3.0.3 to 3.0.4 - fixes security issue CVE-2020-9402: Potential SQL injection via tolerance parameter in GIS functions and aggregates on Oracle which we believe does not affect Kiwi TCMS


  • Update bleach from 3.1.0 to 3.1.1

  • Update django-colorfield from 0.1.15 to 0.2.1

  • Update markdown from 3.2 to 3.2.1

  • On bug creation send email to assignee. Fixes Issue #1154 (Mfon Eti-mfon)

  • Make it possible to provide override settings in a directory. Kiwi TCMS will respect:


    • local_settings_dir/*.py

    For more information see

  • Allow adding TestPlan to TestCase via UI. Fixes Issue #1021

  • Add visual representation of failures in TestCase health telemetry

  • Add helper text to TestExecutionStatus admin

  • Add link to discussion forum in Help menu


  • TestCase.create() method no longer accepts product or product_id fields which have previously been deprecated

  • API methods which receive True/False values will no longer parse yes,no,1,0 values. The only accepted values are boolean constants defined in the calling programming language which are then transmitted via XML-RPC or JSON-RPC and converted to native boolean on the backend

Bug fixes

  • The number of search results shown per page can now be controlled via DEFAULT_PAGE_SIZE setting, which is 100 by default. Fixes Issue #1210 (Ivailo Karabojkov)

  • Use comma separated display of components in bug reports. Fixes Issue #1157 (Ivailo Karabojkov)

  • Update selector for ‘Select All’ test executions in TestRun page. Fixes Issue #1404

  • Fix crash when sorting test cases in TestPlan page. Fixes Sentry #KIWI-TCMS-A6

  • Fix a TC-undefined displayed in TestCase health telemetry


  • Add test for TestRunAdmin.change_view() (Mariyan Garvanski)

  • Remove unused showCaseRunsWithSelectedStatus

  • Internal JavaScript updates


Kiwi TCMS 8.0 (12 Feb 2020)

IMPORTANT: this is a major release which includes important database and API changes, several improvements and bug fixes. Multiple API methods are now incompatible with older releases and extra caution needs to be applied when upgrading via docker-compose.yml because newer MariaDB versions are breaking direct upgrades from existing installations!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Update Django from 3.0.2 to 3.0.3

  • Update django-grappelli from 2.13.3 to 2.14.1

  • Update markdown from 3.1.1 to 3.2

  • Update python-gitlab from 1.15.0 to 2.0.1

  • Update pygithub from 1.45 to 1.46

  • Allow customization of test execution statuses via admin. For more information see Fixes Issue #236

  • Add passing rate chart to Execution trends telemetry

  • Documentation updates (@Prome88)


This release adds several migrations which alter the underlying database schema by renaming multiple columns.


  • SQLite has very poor capabilities for altering schema and it will break when run with existing database! If you had deployed Kiwi TCMS with SQLite for production purposes you will not be able to upgrade! We recommend switching to Postgres first and then upgrading!

  • docker-compose.yml has been updated from MariaDB 5.5 to MariaDB 10.3. The 10.x MariaDB containers change their datadir configuration from /var/lib/mysql to /var/lib/mysql/data! We recommend first upgrading your MariaDB version, using Kiwi TCMS 7.3 and afterwards upgrading to Kiwi TCMS 8.0:

    1. Backup existing database with:

      docker exec -it kiwi_db mysqldump -u kiwi -pYourPass kiwi > backup.sql
    2. docker-compose down

    3. docker volume rm kiwi_db_data - will remove existing data volume b/c of incompatibilities between different MariaDB versions

    4. docker-compose up - will recreate data volume with missing data. e.g. showmigrations will report that 0 migrations have been applied.

    5. Restore the data from backup:

      cat backup.sql | docker exec -u 0 -i kiwi_db /opt/rh/rh-mariadb103/root/usr/bin/mysql kiwi


      This connects to the database as the root user

    6. Proceed to upgrade your Kiwi TCMS container !

  • Remove model fields of type AutoField. They are a legacy construct and shouldn’t be specified in the source code! Django knows how to add them dynamically. These are:






  • Remove db_column attribute from model fields

  • Rename several primary key fields to id:

    • Build.build_id ->

    • TestRun.run_id ->

    • TestPlan.plan_id ->

    • TestCase.case_id ->

    • TestExecution.case_run_id ->



The database schema changes mentioned above affect multiple API methods in a backwards incompatible way! There is possibility that your API scripts will also be affected. You will have to adjust those to use the new field names where necessary!

  • Methods Build.create(), Build.filter() and Build.update() will return id instead of build_id field

  • Method TestRun.get_cases() will return execution_id instead of case_run_id field and id instead of case_id field

  • Methods TestRun.add_case(), TestExecution.create(), TestExecution.filter() and TestExecution.update() will return id instead of case_run_id field

  • Methods TestRun.create(), TestRun.filter(), TestRun.update() will return id instead of run_id field

  • Methods TestPlan.create(), TestPlan.filter() and TestPlan.update() will return id instead of plan_id field

  • Methods TestCase.add_component(), TestCase.create(), TestCase.filter() and TestCase.update() will return id instead of case_id field


Kiwi TCMS automation framework plugins have been updated to work with the newest API. At the time of Kiwi TCMS v8.0 release their versions are:

  • kiwitcms-tap-plugin v8.0.1

  • kiwitcms-junit.xml-plugin v8.0.1

  • kiwitcms-junit-plugin v8.0

Bug fixes

  • Allow displaying lists with more then 9 items when reviewing test cases. Fixes Issue #339 (Mfon Eti-mfon)

  • Make` capable of finding finding static files on Windows which enables development mode for folks not using Linux environment. See SO #55297178 (Mfon Eti-mfon)

  • Allow changing test execution status without adding comment. Fixes Issue #1261

  • Properly refresh test run progress bar when changing statuses. Fixes Issue #1326

  • Fix a bug where updating test cases from the UI was causing text and various other fields to be reset. Fixes Issue #1318


  • Extract attachments widget to new template. Fixes Issue #1124 (Rosen Sasov)

  • Rename RPC related classes. Fixes Issue #682 (Rosen Sasov)

  • Add new test (Mariyan Garvanski)

  • Start using GitHub actions, first for running flake8

  • Remove unused TestCase.get_previous_and_next()

  • Remove unused TestCaseStatus.string_to_instance()

  • Remove unused TestCase.create()

  • Remove unused json_success_refresh_page()

  • Remove unused fields from SearchPlanForm

  • Use JSON-RPC in previewPlan()

  • Remove toggleTestCaseContents(), duplicate of toggleTestExecutionPane()

  • Refactor a few more views to class-based


Kiwi TCMS 7.3 (16 Jan 2020)

IMPORTANT: this is a critical security update for CVE-2019-19844: Potential account hijack via password reset form!

Also migrates to Django 3.0 and includes several other improvement and bug-fixes!

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Update Django from 2.2.8 to 3.0.2

  • Update python-gitlab from 1.13.0 to 1.15.0

  • Update pygithub from 1.44.1 to 1.45

  • Update django-grappelli from 2.13.2 to 2.13.3

  • Bump django-uuslug from 1.1.9 to 1.2.0

  • Bump django-attachments from 1.4.1 to 1.5

  • Bump django-vinaigrette from 1.2.0 to 2.0.1

  • Update marked to version 0.8.0

  • Update prismjs to version 1.19.0

  • Generalize existing kiwitcms.telemetry.plugins handling code by renaming the entry point to kiwitcms.plugins

  • Refactor views to class based (Svetlozar Stoyanov)

  • Teach Kiwi TCMS to automatically report bugs to GitHub when the user selects such action. Fall back to opening a new browser window for manually entering the bug if something goes wrong


  • When migrating from the older Bug model to LinkReference skip bugs which are attached directly to test cases instead of test executions. See SO #59321756

  • Remove AutoField.max_length because it is ignored by Django 3


  • TestCase.update() method now allows to update the author field. Fixes Issue #630

Bug fixes

  • Modify template pass object as test_plan. Fixes Issue #1307 (Ed Oswald S. Go)

  • Enable version selection in test plan search page. Fixes Issue #1276

  • Apply percentage rounding for completed test executions. Fixes Issue #1230

  • Fix a logical bug in conditional expression when deciding whether or not reporting bugs to selected issue tracker is disabled


  • Add code of conduct. Fixes Issue #1185 (Rosen Sasov)

  • Add test for KIWI_DONT_ENFORSE_HTTPS. Closes Issue #1274

  • Replace ugettext_lazy with gettext_lazy for Django 3

  • Remove BaseCaseSearchForm.bug_id field

  • Refactor testcase edit view to class-based

  • Happy New Year pylint


Kiwi TCMS 7.2 (08 Dec 2019)

IMPORTANT: this is an improvement & bug fix release which includes new database migrations and API methods, internal refactoring and updated translations.

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Base docker image to new CentOS 8

  • Update Django from 2.2.6 to 2.2.8

  • Update django-contrib-comments from 1.9.1 to 1.9.2

  • Update django-grappelli from 2.13.1 to 2.13.2

  • Update django-modern-rpc from 0.11.1 to 0.12.0

  • Update django-simple-history from 2.7.3 to 2.8.0

  • Update mysqlclient from 1.4.4 to 1.4.6

  • Update pygithub from 1.44 to 1.44.1

  • Update python-gitlab from 1.12.1 to 1.13.0

  • Several documentation updates

Database migrations

  • Add new database fields weight, icon and color to TestExecutionStatus and adjust existing code to work with them. This is a necessary step before allowing customization of test execution statuses, see Issue #236


  • RPC method TestExecution.add_comment() now requires django_comments.add_comment permission

  • Add new RPC method TestExecution.remove_comment()

  • Add new RPC method TestCase.add_comment()

  • Add new RPC method TestCase.remove_comment()

Bug fixes

  • testplans.views.DeleteCasesView now requires testplans.change_testplan permission (Svetlomir Balevski)

  • testplans.views.ReorderCasesView now requires testplans.change_testplan permission (Svetlomir Balevski)

  • Fix counting bug in execution trends telemetry

  • Fix several telemetry queries to still show data in the corner case where test cases have been deleted from a TestPlan but test runs are still available

  • Fix broken bulk menu in TestRun page when (translated) status names are too long

  • Automatically expand TestExecution comment history if there are comments present. Fixes Issue #349 (Matt Porter)

  • Document timezone settings and show current server time in navbar. Fixes Issue #1206

  • Check for permissions in HTML template. Closes Issue #961

  • Document bug tracker integration support. Fixes Issue #698

  • Delete comments when TestCase and TestExecution are removed. Closes Issue #1028


  • Pylint fixes (Mariyan Garvanski)

  • Use instead of Closes Issue #545

  • Use JSON-RPC instead of backend views when working with comments. Resolves Issue #960

  • Remove tcms.core.contrib.comments module. Closes Issue #959

  • Remove label= attribute from form field. Fixes Issue #652

  • Move and rename XML-RPC forms. Resolves Issue #681

  • Convert testplans.views.DeleteCasesView to JSON-RPC

  • Refactor more views from function based to class based

  • Remove duplicate JavaScript


Kiwi TCMS 7.1 (29 Oct 2019)

IMPORTANT: this is a small improvement update which includes database schema and API changes, several other improvements, internal refactoring and updated translations.

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Update django from 2.2.5 to 2.2.6

  • Update python-gitlab from 1.11.0 to 1.12.1

  • Update pygithub from 1.43.8 to 1.44

  • Update psycopg2 from 2.8.3 to 2.8.4

  • Add help tooltips in all telemetry pages

  • Better styling for checkboxes in ‘Add hyperlink’ dialog, part of TestRun page

  • Add hyperlink validation. Fixes Issue #1147

Database migrations

  • Add bugs permissions to Tester group. Will make any difference only if upgrading from existing installation


  • New method Bug.remove()

Bug fixes

  • Always build with the latest versions of translations

  • Add ‘Delete’ menu item in Bugs page. Fixes Issue #1153

  • When deleting hyperlink from TestExecution hide the actual UI elements from the page

  • Fix failure to delete TCs when the number of TCs inside TP is greater than 100. Fixes Issue #1149 and Sentry KIWI-TCMS-8F


  • Rename directory xmlrpc to rpc and pylint updates. Refs Issue #682 (Matej Aleksandrov, Sinergise)

  • Remove labels from form fields, Refs Issue #652 (Azmi YÜKSEL)

  • New base class for tests around permissions (Svetlomir Balevski)

  • New “blueprint” test case around permissions to make testing in this area more robust

  • Refactor many views from function based to class based

  • Update stale tests in tcms/core/tests/ and make sure they aren’t ignored by the test runner

  • Remove empty class XMLRPCBaseCaseForm

  • Remove XMLRPCNewCaseForm, duplicate of NewCaseForm

  • Remove rpc.forms.UpdateCaseForm in favor of XMLRPCUpdateCaseForm

  • Update only English sources with new strings as a temporary workaround b/c Crowdin uses different formatting heuristics than gettext. This will minimize the number of .po format changes

  • A few pylint fixes


Kiwi TCMS 7.0 (24 Sep 2019)

IMPORTANT: this is a major release which includes security updates, significant database schema and API changes, many improvements, removed functionality, bug fixes, substantial internal refactoring and several new languages.

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • API method BugSystem.filter() has been removed (now unused) but it was possible to use this method to steal passwords or keys used for Issue Tracker integration. This vulnerability could be exploited by users logged into Kiwi TCMS and is classified as medium severity! We advise you to change your integration API keys and passwords immediately!


  • Update Django from 2.2.4 to 2.2.5

  • Update django-uuslug from 1.1.8 to 1.1.9

  • Update mysqlclient from 1.4.2.post1 to 1.4.4

  • Update python-bugzilla from 2.2.0 to 2.3.0

  • Update python-gitlab from 1.10.0 to 1.11.0

  • Update patternfly from 3.59.3 to 3.59.4

  • Reduce docker image size from 1.01 GB to 577 MB

  • Add TestCase Health telemetry

  • Add support for Redmine issue tracker. Fixes Issue #41 (Jesse C. Lin)

  • Add breathing room around HTML form’s submit buttons (Rady Madjev)

  • New TestRun page action: bulk-add hyperlinks to TestExecution(s)

  • Make it possible to disable HTTPS by specifying the KIWI_DONT_ENFORCE_HTTPS environment variable! Fixes Issue #1036 (Marco Descher)

  • Documentation updates, including internal style checker. Fixes Issue #1000 (Prome88)

  • When linking a TestExecution to a defect and choosing to update the Issue Tracker Kiwi TCMS will not add a comment pointing back to TR ID/summary/URL and TE ID/summary. This provides more detailed information about the reproducer instead of just linking to a TestCase without any specific execution details like we did in the past

  • Display additional defect information via Issue Tracker integration. On Patternfly pages which show defect URLs this is accessible via a small info icon. Fixes Issue #117

  • Add minimalistic defect tracker functionality. Fixes Issue #699

    • integrated with Issue Tracker integration layer as if it was an external system

    • when adding hyperlink to TestExecition (also via API method TestExecution.add_link()) this is special cased and the references between Bug and TestExecution are always updated

    • when clicking ‘Report bug’ from inside Test Execution the new defect is reported automatically and a new browser window opens to display the information

Database migrations

  • Tell the migration planner to apply testruns.0006_rename_test_case_run_to_test_execution after linkreference.0001_squashed. This enables subsequent migrations and new functionality to be applied without crashing.


    Django should be able to handle this automatically both for existing installations and for new ones. In any case make sure you backup your data first and make a dry-run to verify that nothing breaks!

  • Remove fields url_reg_exp, validate_reg_exp and description from BugSystem model

  • Update the following fields in LinkReference model:

    • rename test_case_run to execution

    • add indexing for created_on and url

    • add is_defect field

  • Apply LinkReference permissions to default group Tester. Fixes Issue #881


    Administrators of existing applications will need to apply these permissions by hand via the Admin section.

  • Remove testcases.Bug model, replaced with LinkReference. Closes Issue #1029 and obsoletes Issue #320.


    Linking bugs to TestExecution is now performed via URLs instead of keeping a reference to BUG-ID and trying to reconstruct the URL on the fly.


    The model named Bug which is added by subsequent migrations refers to defects reported into Kiwi TCMS minimalistic defect tracker!

  • New model bugs.Bug is now available. Permissions of type bugs | bug | Can ... will be applied to the default group named Tester only for new installations.


    Administrators of existing applications will need to apply these permissions by hand via the Admin section.


  • TestExecution.add_link() method now returns serialized LinkReference object.

  • TestExecution.remove_link() method now accepts one parameter of type dict used to filter the objects which to remove

  • TestExecution.get_links() method now accepts one parameter of type dict instead of int

  • TestExecution.add_link() method signature changed from (int, str, str) to (dict), where the single parameter holds field values for the LinkReference model

  • Remove TestExecution.add_bug() method, use TestExecution.add_link()

  • Remove TestExecution.remove_bug() method, use TestExecution.remove_link()

  • Remove TestCase.add_bug() method

  • Remove TestCase.remove_bug() method

  • Remove Bug.remove() method, use TestExecution.remove_link()

  • Remove Bug.create() method, use TestExecution.add_link()

  • Add method Bug.details() which together with the underlying IssueTracker.details() is the foundation of how Kiwi TCMS fetches extra details from the issue tracking system. The default implementation uses OpenGraph protocol to collect the data that will be shown. You may override .details() for each issue tracker (or add your own IT) to extend this functionality. Information is cached for 1 hour by default. References Issue #117

  • Add methods Bug.add_tag() and Bug.remove_tag()

  • Existing method with name Bug.filter() has changed behavior. It is now used to query objects from Kiwi TCMS minimalistic defect tracker

Removed functionality

  • Remove IssueTrackerType.all_issues_link() method. This was used in TestRun Report page to show a single link that will open all bugs in the Issue Tracker. Most trackers don’t support this and the UI portion has been rewritten

  • Remove LinkOnly issue tracker - obsolete because all defects are now added to TestExecutions via their URLs

  • Remove bulk-add/bulk-remove of bugs in TestRun page, replaced by bulk-add for hyperlinks


  • Respect the CACHES setting, see Django docs for more info. Initially this setting is used to cache defect details received via Issue Tracker integration. See Issue #117

Bug fixes

  • Don’t auto-download FontAwesome for SimpleMDE. Resolves icons disappearing on pages which have the markdown editor. Fixes Issue #905

  • Reorder HTML elements so Delete button is still visible in TestCase review comment section. Fixes Issue #1013 (Rady Madjev)

  • Remove section that displays bugs in TestExecution container. Bugs are now denoted by a small icon next to their hyperlink. Closes Issue #475

  • Cache Issue Tracker connections per base_url. Fixes Issue #290


  • Lots of refactoring from function based views to class based views (Rady Madjev)

  • Use JavaScript and the API to remove case execution instead of dedicated backend function (Rady Madjev)

  • Update pylint directives around missing permissions (Svetlomir Balevski)

  • Fix typo in identifier. Fixes CID 344186

  • Use TestExecution.add_link() and TestExecution.remove_link() in UI instead of dedicated backend function.

  • Remove unused LinkReference views, forms and tests modules


For more information check-out all supported languages. To request new language click here!

Kiwi TCMS 6.11 (02 Aug 2019)

IMPORTANT: this is a security and improvement update which updates many internal dependencies, adds 2 new Telemetry reports, updates TestPlan and TestCase cloning pages and provides several other improvements and bug fixes. Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate



  • Update python-gitlab from 1.8.0 to 1.10.0

  • Update django-grappelli from 2.12.3 to 2.13.1

  • Update django-simple-history from 2.7.2 to 2.7.3

  • Update django-attachments to 1.4.1

  • Update PyGithub from 1.43.7 to 1.43.8

  • Update patternfly to version 3.59.3

  • Update prismjs to version 1.17.0

  • Add Testing Status Matrix telemetry

  • Add Testing Execution Trends telemetry

  • Make it possible to attach files directly inside Test Plan page

  • Make it possible to attach files directly inside Test Execution widget

  • Convert Clone TestPlan page to Patternfly, greatly simplify the UI and update behavior:

    • Cloned TP author will always be set to the current user

    • Cloned TC author will always be set to the current user

    • Always keep the original default tester for test cases when cloning

    • Refactor to class based view

    • Fix a problem where Version values failed form validation b/c we’ve been trying to filter based on non-existing field product_id instead of just product

    • Fixes a problem where erroneous Version value was shown in the UI

  • Convert Clone TestCase page to Patternfly, greatly simplify the UI and update behavior. Fixes Issue #838:

    • Allow cloning into multiple test plans

    • Remove ‘Filter another plan’ option. Will be replaced by ‘Add TP to TC’, see Issue #1021

    • Always update sortkey. Cloned TC will show at the bottom of the TestPlan

    • Cloned TC author will always be set to the current user

    • Always keep the original default tester


  • First parameter of RPC method has been renamed from test_case_run_id to execution_id. This may break existing API scripts which try to pass this argument by name instead of by position!


  • Allow ENV variables KIWI_USE_TZ and KIWI_TIME_ZONE to control settings USE_TZ and TIME_ZONE. Fixes Issue #982 (Jason Yi)

Bug fixes

  • Fix wrong permission label when deleting comments. Fixes Issue #1010


  • Disable unnecessary pylint messages for missing-permission-required checker (Svetlomir Balevski)

  • Remove unnecessary from_plan URL variable making cleaner URLs

  • kiwi_lint: Don’t check nested functions for permissions

  • Remove and regroup JavaScript functions

  • Instruct pyup-bot to monitor requirements/tarballs.txt for updates


Kiwi TCMS 6.10 (18 June 2019)

IMPORTANT: this is a small security and improvement update. Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Update Django from 2.2.1 to 2.2.2 for medium severity CVE-2019-12308 (XSS), CVE-2019-11358 (jQuery). More info

  • Add missing permission checks for menus in Test run page UI template. Permission check added for TestExecution status and comment menu. References Issue #716

  • Re-enable static analysis with bandit and Coverity Scan in Travis CI (Svetlomir Balevski)


  • Update psycopg2 from 2.8.2 to 2.8.3

  • Update markdown from 3.1 to 3.1.1

  • Update patternfly to version 3.59.2

  • Override PasswordResetForm because Site.objects.get_current() didn’t produce correct results when working with kiwitcms-tenants

  • Show column is_active in user admin page


  • Add test for email_case_deletion() (Rik)

  • New linter to warn about usage of AutoField. Fixes Issue #737 (Ivo Donchev, HackSoft)

  • New linter to discover empty classed. Fixes Issue #739 (Daniel Goshev)

  • New linter to warn about usage of OneToOneField. Fixes Issue #735 (George Goranov)

  • New linter to warn about usage of function based views. Fixes Issue #734 (Yavor Lulchev, Uber)

  • New linter to discover Python files in directories without Fixes Issue #790

Kiwi TCMS 6.9 (15 May 2019)

IMPORTANT: this is a small improvement and bug-fix update which introduces our first telemetry report: testing breakdown. Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Update mysqlclient from 1.4.2 to 1.4.2.post1

  • Ship with prism.js so it can be used for syntax highlighting

  • Add Testing Breakdown telemetry

  • Mark more strings for translations

  • Add delete_user() function which can delete data across Postgre schemas (if kiwitcms-tenants add-on is installed)


  • Remove deprecated TestCaseRun. API methods. Use the new TestExecution. methods introduced in v6.7. Fixes Issue #889

Bug fixes

  • Fix typos in documentation (@Prome88)

  • Fix TemplateParseError in email templates when removing test cases. On-delete email notification is now sent properly


  • Add more tests around TestRun/TestExecution menu permissions

  • Minor pylint fixes


Kiwi TCMS 6.8 (03 May 2019)

IMPORTANT: this is a small improvement and bug-fix update. Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Update Django from 2.2 to 2.2.1

  • Update django-simple-history from 2.7.0 to 2.7.2

  • Update django-grappelli from 2.12.2 to 2.12.3

  • Update psycopg2 from 2.8 to 2.8.2

  • Update pygithub from 1.43.6 to 1.43.7

  • Upgrade pip and setuptools inside Docker image

  • Update documentation with newer screenshots and updated Tutotial. Fixes Issue #837 (@Prome88)

  • Document how to enable public read-only views

  • Remove deprecated documentation section about Bugzilla authentication

  • Install PostgreSQL libraries in Docker image which makes it easier to switch the DB backend without rebuilding the entire image

  • Remove npm, libxml2-devel and libxslt-devel from Docker image

  • Database engine configuration now respects the KIWI_DB_ENGINE environment variable which defaults to django.db.backends.mysql. This will make it easier for admins to change DB engine by updating their docker-compose.yml

Bug fixes

  • Pin bootstrap-switch to version 3.3.4 in package.json. Fixes Issue #916



  • Don’t use Site.objects.get_current() because it has an internal cache and causes email notifications from tenants to use the wrong URL

  • More changes around renaming of TestCaseRun to TestExecution

Kiwi TCMS 6.7 (06 April 2019)

IMPORTANT: this is a small improvement and bug-fix update. Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Update Django from 2.1.7 to 2.2

  • Update markdown from 3.0.1 to 3.1

  • Update psycopg2 from 2.7.7 to 2.8

  • Update pygithub from 1.43.5 to 1.43.6

  • Update bleach-whitelist from 0.0.9 to 0.0.10

  • Update marked(.js) to version 0.6.2

  • Support arbitrary depth for MENU_ITEMS setting

  • Support auto-discovery of 3rd party Telemetry plugins, see documentation

Database migrations

  • Rename TestCaseRun to TestExecution including renaming existing permissions

  • Rename TestCaseRunStatus to TestExecutionStatus


  • Rename TestCaseRun.* to TestExecution.*

  • Rename TestCaseRunStatus.* to TestExecution.*

  • This version keeps the old names for backwards compatibility reasons

Bug fixes

  • Prompt user before deleting attachments. Fixes Issue #867 (Martin Jordanov)

  • email_case_deletion() format error fixed so notifications when test cases are deleted are not sent (Rik)


  • Remove unused images

  • Install node_modules/ under tcms/ and include it inside PyPI tarball


Kiwi TCMS 6.6 (19 Mar 2019)

IMPORTANT: this is a medium severity security update, improvement and bug-fix update. Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Explicitly require marked v0.6.1 to fix medium severity ReDoS vulnerability. See SNYK-JS-MARKED-73637


  • Update python-gitlab from 1.7.0 to 1.8.0

  • Update django-contrib-comments from 1.9.0 to 1.9.1

  • More strings marked as translatable (Christophe CHAUVET)

  • When creating new TestCase you can now change notification settings. Previously this was only possible during editing

  • Document import-export approaches. Closes Issue #795

  • Document available test automation plugins

  • Improve documentation around Docker customization and SSL termination

  • Add documentation example of reverse rroxy configuration for HAProxy (Nicolas Auvray)

  • TestPlan.add_case() will now set the sortkey to highest in plan + 10 (Rik)

  • Add LinkOnly issue tracker. Fixes Issue #289

  • Use the same HTML template for both TestCase new & edit

  • New API methods for adding, removing and listing attachments. Fixes Issue #446:

    • TestPlan.add_attachment()

    • TestCase.add_attachment()

    • TestPlan.list_attachments()

    • TestCase.list_attachments()

    • Attachments.remove_attachment()

Database migrations

  • Populate missing TestCase.text history. In version 6.5 the TestCase model was updated to store the text into a single field called text instead of 4 separate fields. During that migration historical records were updated to have the new text field but values were not properly assigned.

    The “effect” of this is that in TestCaseRun records you were not able to see the actual text b/c it was None.

    This change ammends 0006_merge_text_field_into_testcase_model for installations which have not yet migrated to 6.5 or later. We also provide the data-only migration 0009_populate_missing_text_history which will inspect the current state of the DB and copy the text to the last historical record.

Removed functionality

  • Remove legacy reports. Closes Issue #657

  • Remove “Save & Continue” functionality from TestCase edit page

  • Renamed API methods:

    • TestCaseRun.add_log() -> TestCaseRun.add_link()

    • TestCaseRun.remove_log() -> TestCaseRun.remove_link()

    • TestCaseRun.get_logs() -> TestCaseRun.get_links()

    These methods work with URL links, which can be added or removed to test case runs.

Bug fixes

  • Remove hard-coded timestamp in TestCase page template, References Issue #765

  • Fix handling of ?from_plan URL parameter in TestCase page

  • Make TestCase.text occupy 100% width when rendered. Fixes Issue #798

  • Enable markdown.extensions.tables. Fixes Issue #816

  • Handle form erros and default values for TestPlan new/edit. Fixes Issue #864

  • Tests + fix for failing TestCase rendering in French

  • Show color-coded statuses on dashboard page when seen with non-English language

  • Refactor check for confirmed test cases when editting to work with translations

  • Fix form values when filtering test cases inside TestPlan. Fixes Issue #674 (@marion2016)

  • Show delete icon for attachments. Fixes Issue #847


  • Remove unused .current_user instance attribute

  • Remove EditCaseForm and use NewCaseForm instead, References Issue #708, Issue #812

  • Fix “Select All” checkbox. Fixes Issue #828 (Rady)


tcms-api 5.3 (24 Feb 2019)

  • Add plugin_helpers.Backend.add_comment() which allows plugins to add comments to test executions, for example a traceback

Kiwi TCMS 6.5.3 (11 Feb 2019)

IMPORTANT: this is a security, improvement and bug-fix update that includes new versions of Django, includes several database migrations and fixes several bugs.


  • Update Django from 2.1.5 to 2.1.7. Fixes CVE-2019-6975: Memory exhaustion in django.utils.numberformat.format()


  • Update mysqlclient from 1.4.1 to 1.4.2

  • Multiple template strings marked as translatable (Christophe CHAUVET)

Database migrations

  • Email notifications for TestPlan and TestCase now default to True

  • Remove TestPlanEmailSettings.is_active field


  • New method, References Issue #18

  • Method Bug.create() now accepts parameter auto_report=False


Bug fixes

  • Show the user who actually tested a TestCase instead of hard-coded value. Fixes Issue #765

  • Properly handle pagination button states and page numbers. Fixes Issue #767

  • Add TestCase to TestPlan if creating from inside a TestPlan. Fixes Issue #777

  • Made TestCase text more readable. Fixes Issue #764

  • Include missing templates and static files from PyPI tarball


  • Use find_packages() when building PyPI tarball

  • Install Kiwi TCMS as tarball package inside Docker image instead of copying from the source directory

  • Pylint fixes

  • Remove testcases.views.ReturnActions() which is now unused

  • Refactor New TestCase to class-based view and add tests

Kiwi TCMS 6.5 (1 Feb 2019)

We are celebrating 10 years of open source history at FOSDEM, Brussels!

IMPORTANT: this is a minor security, improvement and bug-fix update that includes new versions of Django and other dependencies, removes some database fields, includes backend API updates and fixes several bugs.

Together with this release we announce:

Both of these are implemented in Python and should work on standard TAP and junit.xml files generated by various tools!

Additionally 3 more plugins are currently under development by contributors:

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Better override of SimpleMDE markdown rendering to prevent XSS vulnerabilities in SimpleMDE


  • Update patternfly to version 3.59.1

  • Update bleach from 3.0.2 to 3.1.0

  • Update django-vinaigrette from 1.1.1 to 1.2.0

  • Update django-simple-history from 2.6.0 to 2.7.0

  • Update django-grappelli from 2.12.1 to 2.12.2

  • Update mysqlclient from 1.3.14 to 1.4.1

  • Update psycopg2 from to 2.7.7

  • Update pygithub from 1.43.4 to 1.43.5

  • Convert TestCase page to Patternfly

    • page menu is under ... in navigation bar

    • Test plans card is missing the old ‘add plan’ functionality b/c we are not at all sure if adding plans to test cases is used at all. Can bring it back upon user request!

    • Bugs card is missing the add/remove functionality for b/c we are not quite sure how that functionality is used outside test runs!

  • Convert new TestCase page to Patternfly and provide Given-When-Then text template. This prompts the author to use a BDD style definition for their scenarios. We believe this puts the tester into a frame of mind more suitable for expressing what needs to be tested

  • Add a favicon. Fixes Issue #532

  • Sort Component, Product and Version objects alphabetically. Fixes Issue #633

  • Search test case page now shows Components and Tags

  • Search test case page now allows filtering by date. Fixes Issue #715

  • Search test case page now uses radio buttons to filter by automation status

  • Small performance improvement when searching test plans and test cases

  • Search test run page now allows to filter by Product but still continue to display all Builds in the selected Product

  • Updated doc-string formatting for some tcms modules

Database migrations

Known issues: on our demo installation we have observed that permission labels were skewed after applying migrations. The symptom is that labels for removed models are still available, labels for some models may have been removed from groups/users or there could be permission labels appearing twice in the database.

This may affect only existing installations, new installations do not have this problem!

We are not certain what caused this but a quick fix is to remove all permissions from the default Tester group and re-add them again!

  • Remove TestCase.alias

  • Remove TestCaseRun.running_date

  • Remove TestCaseRun.notes

  • Remove TestCase.is_automated_proposed

  • Remove TestCaseText model, merge into TestCase.text field. Closes Issue #198

  • Remove Priority.sortkey

  • Remove Build.description

  • Remove Classification.sortkey and Classification.description

  • Convert TestCase.is_automated from int to bool

  • Rename TestCaseRun.case_run_status to status


  • New method TestCaseRunStatus.filter()

  • New method Product.create()

  • New method Classification.filter()

  • New method BugSystem.filter()

  • Changes to TestCase.add_component():

    • now accepts component name instead of id

    • now fails if trying to add components linked to another Product.

    • now returns serialized TestCase object


Bug fixes

  • Fix for missing migrations from django-simple-history, see DSH #512 and StackOverflow #54177838

  • Fix cloning of test cases by surrounding bootstrap-selectpicker call with try-catch. Fixes Issue #695

  • Fix a traceback with TestRun report page when the RPC connection to Bugzilla can’t be established


  • Remove unused form classes, methods, fields and label attributes

  • Remove unused or duplicate methods from TestCase model

  • Remove useless methods from BaseCaseForm()

  • Add test for discovering missing migrations

  • Add test for sanity checking PyPI packages which will always build tarball and wheel packages

tcms-api 5.2 (30 Jan 2019)

  • Add plugin_helpers.Backend which implements our test runner plugin specification in Python

  • Add dependency to kerberos (Aniello Barletta)

Kiwi TCMS 6.4 (7 Jan 2019)

IMPORTANT: this is a security, improvement and bug-fix update that includes new versions of Django, Patternfly and other dependencies.

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Update Django from 2.1.4 to 2.1.5, which deals with CVE-2019-3498: Content spoofing possibility in the default 404 page

  • Update Patternfly to version 3.59.0, which deals with XSS issue in bootstrap. See CVE-2018-14041

  • By default session cookies will expire after 24 hours. This can be controlled via the SESSION_COOKIE_AGE setting. Fixes Issue #556


  • Update mysqlclient from 1.3.13 to 1.3.14

  • Update python-gitlab from 1.6.0 to 1.7.0

  • Update django-simple-history from 2.5.1 to 2.6.0

  • Update pygithub from 1.43.3 to 1.43.4

  • New API method TestCase.remove(). Initially requested as SO #53844380

  • Drop down select widges in Patternfly pages are now styled with bootstrap-select giving them more consistent look and feel with the rest of the page (Anton Sankov)

  • Create new TestPlan page now includes toggles to control notifications and whether or not the test plan is active. This was previously available only in edit page (Anton Sankov)

  • By default TestPlan notification toggles are turned on. Previously they were off (Anton Sankov)

  • Create and Edit TestPlan pages now look the same (Anton Sankov)

  • Kiwi TCMS is now accepting donations via Open Collective

Removed functionality

  • Remove TestPlan page -> Run menu -> Add cases to run action. This is the same as TestRun page -> Cases menu -> Add action

  • Legacy reports will be removed after 1st March 2019. Provide your feedback in Issue #657

  • The /run/ URL path has been merged with /runs/ due to configuration refactoring. This may break your bookmarks or permalinks!

Bug fixes

  • Don’t traceback if markdown text is None. Originally reported as SO #53662887

  • Show loading spinner when searching. Fixes Issue #653

  • Quick fix: when viewing TestPlan cases make TC summary link to the test case. Previously the summary column was a link to nowhere.



  • New and updated internal linters

  • Refactor to class based view (Anton Sankov)

  • Refactor TestCase -> Bugs tab -> Remove to JSON-RPC. References Issue #18

  • Refactor removeCaseRunBug() to JSON-RPC, References Issue #18

  • Remove unused render_form() methods

  • Remove unnecessary string-to-int conversion (Ivaylo Ivanov)

  • Remove obsolete label fields. References Issue #652 (Anton Sankov)

  • Pylint fixes

  • Remove JavaScript that duplicates requestOperationUponFilteredCases()

  • Remove QuerySetIterationProxy class - not used anymore

Kiwi TCMS 6.3 (4 Dec 2018) - Heisenbug Edition

IMPORTANT: this is a medium severity security update that includes new versions of Django and Patternfly, new database migrations, lots of improvements, bug fixes and internal refactoring.

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)

After upgrade don’t forget to:

./ migrate


  • Resolve medium severity XSS vulnerability which can be exploited when previewing malicious text in Simple MDE editor. See CVE-2018-19057, SNYK-JS-SIMPLEMDE-72570

  • Use mozilla/bleach before rendering Markdown to the user as a second layer of protection against the previously mentioned XSS vulnerability.


  • Update to Django 2.1.4

  • Update to Patternfly 3.58.0

  • Make docker container restartable (Maik Opitz, Adam Hall)

  • Add GitLab issue tracker integration. Fixes Issue #176 (Filipe Arruda, Federal Institute of Pernambuco)

  • Convert Create new TestPlan page to Patternfly (Anton Sankov)

  • Upon successfull registration show the list of super-users in case new accounts must be activated manually. This can be the same or expanded version of the addresses in the ADMIN setting. Include super-users in email notifications sent via tcms.signals.notify_admins().

  • Don’t include admin/js/*.js files in templates when not necessary. Results in faster page load. Fixes Issue #209

  • Enable nl2br Markdown extension which allows newline characters to be rendered as <br> tags in HTML. Visually the rendered text will look closer to what you seen in the text editor. Fixes Issue #623

  • Use auto-complete for adding components to TestCase

Removed functionality

  • Bulk-update of Category for selected TestCase(s) inside of TestPlan

  • Bulk-update of Components for selected TestCase(s) inside of TestPlan

  • Bulk-update of automated status for selected TestCase(s) inside of TestPlan

  • Bulk-remove for TestCase Component tab

These actions have always been a bit broken and didn’t check the correct permission labels. You can still update items idividually!

  • Selection of Components when creating new TestCase. Closes Issue #565. Everywhere else Kiwi TCMS doesn’t allow selection of many-to-many relationships when creating or editing objects. Tags, Bugs, Components, TestPlans can be added via dedicated tabs once the object has been saved.

Bug fixes

  • Hide KiwiUserAdmin.password field from super-user. Fixes Issue #610

  • Don’t show inactive Priority. Fixes Issue #637

  • Don’t traceback when adding new users via Admin. Fixes Issue #642

  • Teach TestRun.update() API method to process the stop_date field. Fixes Issue #554 (Anton Sankov)

  • Previously when reporting issues to Bugzilla, directly from a TestRun, Kiwi TCMS displayed the error Enable reporting to this Issue Tracker by configuring its base_url although that has already been configured. This is now fixed. See Stack Overflow #53434949


  • Remove TestPlan.owner field, duplicates



  • Remove fmt_queries(). Fixes Issue #330 (Anton Sankov)

  • Remove unused parameter from plan_from_request_or_none(). Refers to Issue #303 (Anton Sankov)

  • Remove ComponentActions() class. Fixes Issue #20

  • Convert lots of AJAX calls to JSON-RPC

  • Remove lots of unused Python, JavaScript and templates. Both after migration to JSON RPC and other leftovers

  • Pylint fixes (Alexander Todorov, Anton Sankov)

Kiwi TCMS 6.2.1 (12 Nov 2018)

IMPORTANT: this is a small release that includes some improvements and bug-fixes

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2 (or newer)


Bug fixes

  • Fix InvalidQuery, field TestCase.default_tester cannot be both deferred and traversed using select_related at the same time. References Issue #346


  • Pylint fixes (Ivaylo Ivanov)

  • Remove JavaScript and Python functions in favor of existing JSON-RPC

  • Remove vendored-in js/lib/jquery.dataTables.js which is now replaced by the npm package (required by Patternfly)


Kiwi TCMS 6.2 (02 Nov 2018) - PiterPy Edition

IMPORTANT: this is a small release that removes squashed migrations from previous releases and includes a few improvements.

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1
6.1.1            -> 6.2



  • Remove old variants of squashed migrations from earlier releases



  • Update tcms.tests.factories.BugFactory (Ivaylo Ivanov)

  • Add test for tcms.testcases.views.group_case_bugs (Ivaylo Ivanov)

  • Pylint fixes (Ivaylo Ivanov)

  • Remove unused JavaScript and re-use the existing JSON RPC methods

Kiwi TCMS 6.1.1 (29 Oct 2018)

IMPORTANT: this release squashes database migrations and removes older migrations that have been squashed in previous releases, a few improvements and bug fixes.

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1
6.1              -> 6.1.1


  • Dashboard will now show TestRuns which have test cases assigned to current user. Fixes Issue #520

  • API method TestRun.add_case() now returns a serialized TestCaseRun object. Previously this method returned None

Bug fixes

  • Don’t show disabled Priority records in UI. Fixes Issue #334



  • Fix some pylint errors (Ivaylo Ivanov)


  • Remove old squashed migrations for management, testplans, testcases and testruns apps

  • Squash the remaining migrations for management, testplans, testcases and testruns apps

Kiwi TCMS 6.1 (20 Oct 2018)

IMPORTANT: this release introduces new database migrations, internal updates and bug fixes. It is a small release designed to minimize the number of database migrations by squashing them together.

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1
6.0.1            -> 6.1

After upgrade don’t forget to:

./ migrate


  • New middleware that will check missing settings. At the moment will only check Base URL configuration which often gets forgotten!

Bug fixes

  • Hot-fix for error caused by the API method TestRun.update. Error was initially reported on StackOverflow. This patch makes it possible to use the API without crashing however the TestRun.update method doesn’t handle the stop_date field at the moment!


  • Updated translation source strings


  • Squash migrations for management app

  • Squash migrations for testcases app

  • Squash migrations for testplans app

  • Squash migrations for testruns app

Kiwi TCMS 6.0.1 (20 Oct 2018)

IMPORTANT: this release introduces new database migrations and internal updates. It is a small release designed to minimize the number of database migrations by squashing them together.

Supported upgrade paths:

5.3   (or older) -> 5.3.1
5.3.1 (or newer) -> 6.0.1

After upgrade don’t forget to:

./ migrate




  • Fix pylint errors (Ivaylo Ivanov)

  • Remove unused TestRun.list and TestCase.list_confirmed methods

  • Remove unused plan_by_id_or_name() and is_int(). Fixes Issue #269


  • Rename tcms.core.contrib.auth to tcms.kiwi_auth

  • Remove field user from TestCaseTag, TestRunTag and TestPlanTag models

Kiwi TCMS 6.0 (04 Oct 2018)

IMPORTANT: this release introduces new database migrations, removal of environment properties in favor of tags, internal updates and bug fixes. After upgrade don’t forget to:

./ migrate


  • Update to Django 2.1.2 due to high severity security issue

  • Update to Patternfly 3.54.8

  • Tag objects are now shown in Admin panel

  • Add autocomplete when adding tags to TestRun via UI

Removed functionality

  • TestCase new and edit views no longer allow editing of tags. Tags can be added/removed from the Tags tab which also makes sure to properly account for permissions

  • Remove EnvGroup, EnvProperty and EnvValue models in favor of tags. Existing values and properties are converted into tags and automatically added to test runs!

  • Convert squashed database migrations to regular ones and remove older migrations. WARNING: upgrade from versions <= 5.3.1 to 6.0 will break without an intermediate upgrade to kiwitcms/kiwi:5.3.1 a420465852be.

  • Remove deprecated TestCase.estimated_time and TestRun.estimated_time. Fixes Issue #514

Backend API

  • No longer use product_version for TestRun.create. Fixes Issue #522

    • ‘product’ is no longer required

    • ‘product_version’ is no longer required

    • ‘manager’ and ‘default_tester’ can be usernames or IDs

  • TestCase.create no longer accepts ‘tag’ values

  • TestRun.add_tag and TestRun.remove_tag now return list of tags. Previously these methods returned None! This is the list of tags assigned to the TestRun that is being modified!

Bug fixes

  • Fix mismatched HTML tag in plan/get.html template (Oleg Kainov)

  • Don’t use |slugify filter in templates which breaks HTML links with non-ASCII TestPlan names. Fixes Sentry KIWI-TCMS-38


  • Fix pylint errors (Ivaylo Ivanov, Anton Sankov)

  • Use existing JSON-RPC methods to add/remove tags via webUI and remove specialized backend methods that handled these requests. Also make sure to obey respective permissions


Kiwi TCMS 5.3.1 (04 Sept 2018)

Visual changes

  • Add pagination controls to pages with search results

Kiwi TCMS 5.3 (04 Sept 2018)

IMPORTANT: this release brings lots of UI updates and removal of unused and/or duplicated functionality and source code. Many pages have been redesigned with the Patternfly library to have a modern look and feel.

Kiwi TCMS is now using the ‘kiwi-tcms’ tag on StackOverflow to track questions.

This will be the last release to carry around squashed migrations. In version 6.0 older migrations will be deleted and upgrades from versions <=5.2 to 6.0 will break without an intermediate upgrade to 5.3! Use kiwitcms/kiwi:5.3.1 from Docker Hub when upgrading at some point in the future!

After upgrade don’t forget to:

./ migrate


  • Update to Django 2.1.1

  • Update Patternfly version. Fixes Issue #381

  • Replace TinyMCE with SimpleMDE markdown editor. You may need to strip existing texts from HTML tags that were generated by TinyMCE

  • Allow downstream builds to customize the login templates by providing registration/custom_login.html template. It can either override the entire login page or provide additional information inside the custom_login block!

Visual changes

  • Remove breadcrumbs at the top of pages. Only admin pages still have them

  • Convert login and registration templates to Patternfly. Fixes Issue #211

  • Convert 404 and 500 templates to Patternfly

  • Convert dashboard page to Patternfly

  • Convert TestRun new, edit and clone pages to Patternfly. Fixes Issue #17

  • Convert Search Test Plans page to Patternfly

  • Convert Search Test Runs page to Patternfly

  • Convert Search Test Cases page to Patternfly

  • TestPlan view page, Runs tab now re-uses the search form for test runs which is built using Patternfly

Removed functionality

  • When creating or editing TestRun

    • field estimated_time is scheduled for removal and is not shown

    • product_version is scheduled for removal in favor of TR.plan.product_version

    • Product & Version can’t be edited anymore. Must be set on the parent TestPlan instead. Still allows to specify builds

  • Remove the ability to clone multiple TestPlans from search results

  • Remove the ability to upload TestPlan document files in favor of the existing API

  • Remove TestCase export to XML in favor of existing API

  • Remove Advanced Search functionality. Fixes Issue #448, Issue #108

  • Remove tech preview feature: Django Report Builder


Bug fixes

  • Don’t use get_full_url() where not needed. Closes Issue #380

  • Remove unused templates. Fixes Issue #114

  • Submit filter form when clicking on tag value. Fixes Issue #426

  • Update TestCaseRun.tested_by when setting status. Fixes Issue #459

  • Add tests for KiwiUserAdmin. Closes Issue #489


  • The following settings have been removed MOTD_LOGIN, WELCOME_MESSAGE and TINYMCE_DEFAULT_CONFIG


  • Fix pylint errors (Anton Sankov, Ivaylo Ivanov)

  • Remove lots of unused functions and classes

  • Remove old or unnecessary templates

  • Remove html2text dependency

  • Remove unused CSS and vendored-in JavaScript libraries

  • Add JavaScript JSON-RPC client which is now used by the front-end to communicate with the existing JSON-RPC API on the back-end. This replaces many ‘ajax’ views which are only used to render the UI and were duplicating functionality with existing API

  • Non dist/ files are no longer removed from node_modules/ when building a docker image because packages like moment.js and bootstrap-datetimepicker.js don’t ship their files in dist/

  • Convert TestPlans.TreeView to JSON RPC

Kiwi TCMS 5.2 (07 August 2018)

IMPORTANT: this release introduces new database migrations and converts the Docker image to a non-root user with uid 1001. You may have to adjust ownership/permissions on the kiwi_uploads Docker volume! After upgrade don’t forget to:

./ migrate


  • Upgrade to Django 2.1

  • Upgrade to django-report-builder 6.2.2, compatible with Django 2.1

  • Docker image now executes with uid 1001 instead of root

    • image based on centos7 image instead of centos/httpd

    • image now exposes ports 8080 and 8443

    • Apache logs now printed on Docker console

    • SSL certificates copied to /Kiwi/ssl inside Docker image instead of being bind-mounted

    • uploads dir changed to /Kiwi/uploads

    • static dir changed to /Kiwi/static

    • /Kiwi is now owned by uid 1001

    • /venv is now owned by uid 1001

    • docker-compose.yml is updated to match

  • Fix pylint errors (Ivaylo Ivanov)

  • Allow users to see other profiles via Admin

  • Use password change form from Admin instead of custom one

  • will try to import if available in the same directory. This can be used to customize settings in downstream distributions

  • Updated Slovenian translation

Bug fixes

  • Make password reset views public

  • Don’t crash when adding new users via Admin


  • Remove UserProfile model. Kiwi TCMS doesn’t needs extra information about users so we remove this part of the application. Custom installations may choose to define their own profiles if they wish

  • Remove custom DBModelBackend authentication backend

  • Remove unused tcms.core.context_processors.auth_backend_processor

  • Remove unused get_using_backend(). Fixes Issue #261

  • Remove dj_pagination. Fixes Issue #110




  • Navigation menu links are now defined in MENU_ITEMS and can be redefined


  • USER_REGISTERED_SIGNAL now doesn’t receive the backend parameter

Kiwi TCMS 5.1 (31 July 2018)

IMPORTANT: this release introduces new database migrations, an experimental reporting feature, deprecated functionality and bug fixes. After upgrade don’t forget to:

./ migrate


  • Integrate with Django Report Builder as tech-preview. This makes it possible for power users and administrators to generate tabular reports. You will have to know the existing DB schema if you want to create your own reports. See This feature is in tech-preview and it may be removed if it doesn’t work out. Please comment at: Issue #452.

  • Allow using dumpdata|loaddata|sqlflush|dbshell for backups, see blog post

  • In TestCase view page add a link to delete the current test case

  • In TestCase Admin page the + Add TestCase button now allows to create new test case

  • The version menu item in the helper menu now links to Changelog

Deprecated functionality

  • Start showing deprecation warning for Advanced search, see Issue #448

Bug fixes

  • Allows Product/Version/Build to be shown in Testing Report. Fixes Sentry KIWI-TCMS-2C

  • Default to https:// links if not running locally. Fixes Issue #450

  • Apply missing CSS class for object history table so it can be displayed nicely


  • Squash some database migrations

  • Fix a number of pylint issues

  • Remove unused testruns.views::view_caseruns(). References Issue #316

  • Remove unused template report/caserun.html

  • Handle TestRun deletion via admin not home grown code

Kiwi TCMS 5.0 (24 July 2018)

IMPORTANT: this release introduces new database migrations, object history tracking, removal of old functionality and unused code, lots of internal updates and bug fixes. After upgrade don’t forget to:

./ migrate
./ populate_history --auto


  • Remove CACHE because not used

  • Remove PLAN_EMAIL_TEMPLATE, CASE_EMAIL_TEMPLATE and CASE_DELETE_EMAIL_TEMPLATE. Templates can still be overriden if desired


  • Upgrade to Django 2.0.7

  • Allow to delete TestPlan. Fixes Issue #273

  • Don’t include username in dashboard URL

  • Copy latest TestPlan text when cloning

  • Always require users to be logged in. Anonymous users will not be allowed access by default. Read-only access to some views (e.g. get TestPlan or TestRun) can be enabled by disabling GlobalLoginRequiredMiddleware! Fixes Issue #230

  • Start tracking change history for TestPlan, TestCase, TestRun and TestCaseRun. Fixes Issue #294

  • History changes are recorded as unified diff which is a universally recognized format

  • Show the actual changes in email notifications. Fixes Issue #199

Bug fixes

  • Fix UnboundLocalError local variable 'message' referenced before assignment. Fixes Sentry KIWI-TCMS-1S

  • Make email address unique when adding users via admin panel. Fixes Issue #352 and Issue #68

  • Fix unsupported operand type(s) for +=: 'int' and 'datetime.timedelta' by initializing timedelta variable properly. Fixes Sentry KIWI-TCMS-1Y

  • Remove core.models.fields with MySQL time conversions. Fixes Issue #390

  • Fix bad JavaScript comparison. Fixes Coverity #289956

  • Remove expression with no effect. Fixes Coverity #289974

  • Rewrite request_host_link() to fix Coverity #289987

  • Fix Coverity #289923 - Typo in identifier

  • Don’t send emails for changes performed by myself. Fixes Issue #216


  • Fix pylint issues in several modules (Anton Sankov & Ivaylo Ivanov)

  • Fix wrong Plan Type template variable in advanced search form

  • Do not use Model.objects.update() because it doesn’t respect history

  • Use the standard ModelChoiceField instead of custom one

  • Use updateRunStatus() instead of deprecated updateObject()

  • Simplify JavaScript function getInfo() and use it multiple times

  • Simplify previewPlan() by removing unused parameters

  • Unify addChildPlan() and removeChildPlan()

  • Unify getInfoAndUpdateObject() with changeCaseRunAssignee()

  • Unify onTestCaseStatusChange() with changeTestCaseStatus()

  • Convert TestCaseEmailSettings.cc_list to string field

  • Merge report/caseruns_table.html with reports/caseruns.html

  • Rename model UserActivateKey to UserActivationKey. Fixes Issue #276

  • Remove cached_entities(). Fixes Issue #307

  • Remove TestPlanText.checksum field

  • Remove checksum fields for TestCaseText model

  • Remove unused and home-grown template tags

  • Remove unused fields auto_blinddown, description, sortkey from TestCaseRunStatus model. Fixes Issue #186

  • Remove Meta.db_name effectively renaming all tables. New names will use Django’s default naming scheme

  • Remove RawSQL queries. We are now 100% ORM based. Fixes Issue #36

  • Remove duplicate MultipleEmailField definition

  • Remove TCMSLog view, TCMSLogManager, TCMSLogModel

  • Remove TestPlanText model, use TestPlan.text instead

  • Remove unused JavaScript files - lib/detetmine_type.js - lib/hole.js - lib/scriptaculous-controls.js.patch - lib/validations.js - static/js/index.js

  • Remove constructPlanParentPreviewDialog()

  • Remove changeCasePriority()

  • Remove changeCaseRunOrder()

  • Remove debug_output() from JavaScript files

  • Remove deprecated /ajax/update/ end-point

  • Remove taggleSortCaseRun()

  • Remove strip_parameters()

  • Remove _InfoObjects.users()

  • Remove get_value_by_type()

  • Remove testcases.views.get_log()

  • Remove mail_scene() methods and related templates

Removed functionality

  • TestRun completion status is no longer updated automatically. You can still update the status manually via the ‘Set Finished’ or ‘Set Running’ links! Fixes Issue #367

  • Remove bookmarks functionality. There are many great bookmark manager apps and if the user is keen on bookmarks they should use one of them. Closes Issue #67 and Issue #210

  • Don’t track & display history of changes for EnvGroup model

  • Remove Disable/Enable buttons from TestPlan page. Enabling and disabling can still be done via the edit page

  • Remove changeParentPlan() and the ability to change TestPlan parents from the ‘Tree View’ tab. This can be done via the edit page

  • When viewing a TestPlan the user is no longer able to specify a sorkey for a particular TestCase. Instead they can use the Re-order cases button and move around the entire row of cases to adjust the sort order

  • When working with test case results, inside a TestRun you will not be allowed to change the order of execution. Order should be defined inside the TestPlan instead

  • Remove XmlRpcLog() model. Kiwi TCMS will no longer log RPC calls to the database. This leads to a small performance boost and can be overriden on individual basis if you need to do so.


  • More source strings marked as translatable

  • New translations for Chinese Simplified, Chinese Traditional, German and Slovenian

  • Stop keeping compiled translations under git. Fixes Issue #387

tcms-api 5.0 (24 July 2018)

  • Requires Python 3.6 or newer because it fixes bugs related to Django’s disabling of keep-alive connections. See

  • The rpc client is now accessed via TCMS().exec.<Server-Method>

  • Leave only XML-RPC transport classes! This removes the top-level interface behind the API client and the consuming side is left to work with Python dictionaries instead of objects.

  • Remove the interactive tcms script

  • Remove tcms_api.config module

  • Remove logging class

  • Remove script_examples/ directory. These were never tested and maintained

Kiwi TCMS 4.2 (23 June 2018)

IMPORTANT: this release introduces new database migrations, security updates and GDPR related changes! It is also the first release after a great deal of travelling for various conferences.



  • BUGZILLA_AUTH_CACHE_DIR is a new setting that may be specified to control where Bugzilla auth cookies are saved! It is not specified by default and Kiwi TCMS uses a temporary directory each time we try to login into Bugzilla!


  • Upgrade to Python 3.6. Fixes Issue #91

  • Upgrade to Django 2.0.6

  • Fix around 100 pylint issues (Anton Sankov)

  • Update email confirmation template for newly registered users and make the text translatable

  • Display Last login column in User admin page

  • Add tests for (Anton Sankov)

  • Remove unused CSS selectors

  • Remove unnecessary templates/comments/comments.html

Bug fixes

  • Remove unused deferred field product_version. Fixes Sentry KIWI-TCMS-1C

  • Rename left-over get_url() to get_full_url(). Fixes Sentry KIWI-TCMS-1B

  • Fix empty TestPlan url and Product fields in TestRun email notification. Fixes Issue #353 (Matt Porter, Konsulko Group)


  • Updated translations for Chinese Simplified

  • Updated translations for Chinese Traditional

  • New language and translations for Slovenian


  • Added git clone command to documentation. Fixes Issue #344 (Anton Sankov)

Models and database migrations

  • Increase checksum fields size to hold the new checksum values

  • Increase activation_key field size to 64 chars

tcms-api 4.2 (23 June 2018)

  • Remove coloring. Fixes Issue #185

  • Fix using the API client against https URLs (Adam Łoszyn, Samsung)

Kiwi TCMS 4.1.4 (April 8 2018)


  • Upgrade to Django 2.0.4

  • Enable pylint and fix around 700 issues (Anton Sankov)

  • Add pylint plugin to check docstrings for triple double quotes. Fixes Issue #296

  • Add pylint plugin to check for list comprehensions. Fixes Issue #270

  • Add pylint plugin to check for class attributes enclosed with double underscores. These are dunders and are reserved for Python!



Renamed user_registered to USER_REGISTERED_SIGNAL and post_update to POST_UPDATE_SIGNAL!

Bug fixes


  • Move Bugzilla and Kerberos backends code into their own repositories. Fixes Issue #239

  • Remove cache from TestCaseRunStatus. Fixes Issue #279

  • Rewrite UrlMixin. Fixes Issue #157 (Chenxiong Qi)

  • Remove unused split_as_option template tag

  • Internal refactoring and more tests in tcms/core/

  • Delete unused file tcms/core/forms/

  • Merge case/form/filter.html into plan/get_cases.html

  • Remove unused TestCaseStatus.id_to_string()

Kiwi TCMS 4.1.3 (Mar 15 2018)


  • Upgrade to Django 2.0.3

  • Show date_joined column for user admin

  • Expose httpd logs to the host running docker. Fixes Issue #191

Bug fixes

  • Move SSL keys under common directory in the container. Fixes Issue #231

  • Always select active builds for TestRun. Fixes Issue #245

  • Swap escape and escapejs filters. Fixes Issue #234

  • Globally disable delete_selected action in Admin, this removes the drop down selection widget! Fixes Issue #221

  • Fix error in TestCase view when from_plan is empty string. Fixes Sentry KIWI-TCMS-Z

  • Fix sorting issue when None is compared to int. Fixes Sentry KIWI-TCMS-V

  • Validate form field as integer, not char. Fixes Sentry KIWI-TCMS-W

  • [docs] Remove information about importing test cases via XML. This functionality was removed in version 3.49


  • Refactor inner class CaseActions. Fixes Issue #21 (Chenxiong Qi)

  • Only use get_cases.html template. Fixes Issue #176

  • Unify get_details_review.html and get_details.html templates

  • Remove internal Prompt.render class and replace with Django messages

  • Remove mail/delete_plan.txt template

  • Remove handle_emails_pre_plan_delete signal handler

  • Remove the Export button from TestPlan view, use Case->Export sub-menu item in the Cases tab. Also remove the export buttons from search and advanced search result templates. If you’d like to export the cases from a given plan you have to open it in a new browser window and use the menu

  • Remove the Print button from plan search form

  • Remove TestRun cloning from search results and plan details, use sub-menu

  • Remove unnecessary JavaScript handling for EnvGroup edit view


  • Remove PLAN_DELELE_EMAIL_TEMPLATE setting (not used)

Models and database migrations

  • Use Django’s own DurationField, instead of custom one. Fixes Issue #183. API clients must now send values for estimated_time which must be in a format that parse_duration() understands, for example ‘DD HH:MM:SS’! See

IMPORTANT: this release introduces new database migrations!

Kiwi TCMS 4.1.0 (Feb 21 2018)

Enhancements and bug fixes

  • Add tests for tcms.core.ajax.tag (Anton Sankov)

  • Remove unused code from tcms.core.ajax.tag (Anton Sankov)

  • Refactor tcms.core.ajax.tag to work with only one object. Fixes Issue #135 (Anton Sankov)

  • Add test for tcms_api.TestRun. Closes Issue #194

  • Send the user_registered signal when new users are registered

  • Add signal handler to notify admins on new users. Fixes Issue #205

  • Add is_superuser column to User admin. Fixes Issue #206

  • Properly pass variables to blocktrans tag. Fixes Issue #225

  • Minor documentation updates


  • Remove double thread when sending email on post_save signal

  • Remove unused EmailBackend authentication backend

  • Remove unused tcms.core.models.signals

  • Consolidate all signals and handlers in tcms.signals

  • Make use of django_messages during account registration


  • Remove LISTENING_MODEL_SIGNAL (internal setting)

  • New setting AUTO_APPROVE_NEW_USERS. Fixes Issue #203

Models and database migrations

  • Remove unused fields from Product model: disallow_new, max_vote_super_bug, vote_super_user, field votes_to_confirm, default_milestone, milestone_url

  • Remove unused Milestone model

IMPORTANT: this release introduces new database migrations!

Kiwi TCMS 4.0.0 (Feb 10 2018)

Enhancements and bug fixes

  • Upgrade to Django 2.0.2

  • Pin JIRA client version to 1.0.10. Fixes Issue #195

  • Generate api-docs for model classes

  • Updated documentation for all RPC methods

  • Use Grappelli jQuery initialization, fixes popup windows

  • Unify RPC namespaces, API client class names and server-side model names. Fixes Issue #153


  • Remove ADMIN_PREFIX setting

RPC methods refactoring


This is not compatible with older tcms-api releases!

  • Remove Build.check_build, use Build.filter

  • Remove Build.get, use Build.filter

  • Remove Build.get_caseruns, use TestCaseRun.filter

  • Remove Build.get_runs, use TestRun.filter

  • Rename Env.filter_groups, use Env.Group.filter

  • Rename Env.filter_properties, use Env.Property.filter

  • Rename Env.filter_values, use Env.Value.filter

  • Remove Product.add_component, use Component.create

  • Remove Product.add_version, use Version.create

  • Remove Product.check_category, use Category.filter

  • Remove Product.check_component, use Component.filter

  • Remove Product.check_product, use Product.filter

  • Remove Product.filter_categories, use Category.filter

  • Remove Product.filter_components, use Component.filter

  • Remove Product.filter_versions, use Version.filter

  • Remove Product.get, use Product.filter

  • Remove Product.get_builds, use Build.filter

  • Remove Product.get_cases, use TestCase.filter

  • Remove Product.get_categories, use Category.filter

  • Remove Product.get_category, use Category.filter

  • Remove Product.get_component, use Component.filter

  • Remove Product.update_component, use Component.update

  • Rename Tag.get_tags to Tag.filter

  • Remove TestCase.add_comment

  • Update signature for TestCase.add_component

  • Update signature for TestCase.add_tag

  • Remove TestCase.add_to_run, use TestRun.add_case

  • Remove TestCase.attach_bug, use Bug.create

  • Remove TestCase.calculate_average_estimated_time

  • Remove TestCase.calculate_total_estimated_time

  • Remove TestCase.check_case_status, use TestCaseStatus.filter

  • Remove TestCase.check_priority, use Priority.filter

  • Update signature for TestCase.create, no longer accepts plan, component and bug dict attributes. Instead use TestPlan.add_case, TestCase.add_component and Bug.create

  • Remove TestCase.detach_bug, use Bug.remove

  • Remove TestCase.filter_count

  • Remove TestCase.get, use TestCase.filter

  • Remove TestCase.get_bugs, use Bug.filter({'case': ?})

  • Remove TestCase.get_bug_systems

  • Remove TestCase.get_case_status, use TestCaseStatus.filter

  • Update signature for TestCase.get_components

  • Remove TestCase.get_plans, use TestPlan.filter({'case': ?})

  • Remove TestCase.get_priority, use Priority.filter

  • Remove TestCase.get_tags, use Tag.filter({'case': ?})

  • Remove TestCase.get_text, use TestCase.filter

  • Remove TestCase.link_plan, use TestPlan.add_case

  • Rename TestCase.notification_add_cc to TestCase.add_notification_cc and update signature

  • Rename TestCase.notification_get_cc_list to TestCase.get_notification_cc and update signature

  • Rename TestCase.notification_remove_cc to TestCase.remove_notification_cc and update signature

  • Update signature for TestCase.remove_component

  • Update signature for TestCase.remove_tag

  • Remove TestCase.store_text, use TestCase.update with setup, breakdown, action and effect attributes in the parameter dict

  • Remove TestCase.unlink_plan, use TestPlan.remove_case

  • Remove TestCasePlan.get

  • Remove TestCasePlan.update

  • Update TestCaseRun.add_comment to accept a single ID as first parameter

  • Remove TestCaseRun.attach_bug, use Bug.create

  • Rename TestCaseRun.attach_log to TestCaseRun.add_log

  • Remove TestCaseRun.detach_bug, use Bug.remove

  • Rename TestCaseRun.detach_log to TestCaseRun.remove_log

  • Remove TestCaseRun.get, use TestCaseRun.filter

  • Remove TestCaseRun.get_bugs, use Bug.filter({'case_run': ?})

  • Remove TestCaseRun.get_case_run_status_by_name

  • Update signature for TestCaseRun.update

  • Remove TestPlan.add_component

  • Update signature for TestPlan.add_tag

  • Remove TestPlan.check_plan_type, use PlanType.filter

  • Remove TestPlan.filter_count

  • Remove TestPlan.get, use TestPlan.filter

  • Remove TestPlan.get_all_cases_tags

  • Remove TestPlan.get_components

  • Remove TestPlan.get_env_groups, use Env.Group.filter({'testplan': ?})

  • Remove TestPlan.get_plan_type, use PlanType.filter

  • Remove TestPlan.get_product, use Product.filter({'plan': ?})

  • Remove TestPlan.get_tags, use Tag.filter({'plan': ?})

  • Remove TestPlan.get_test_cases, use TestCase.filter({'plan': ?})

  • Remove TestPlan.get_test_runs, use TestRun.filter({'plan': ?})

  • Remove TestPlan.get_text, use TestPlan.filter

  • Rename TestPlan.link_env_value to TestPlan.add_env_value and update signature

  • Remove TestPlan.remove_component

  • Update signature for TestPlan.remove_tag

  • Remove TestPlan.store_text, use TestPlan.update with a text attribute in the parameter values

  • Rename TestPlan.unlink_env_value to TestPlan.remove_env_value and update signature

  • Rename TestRun.add_cases to TestRun.add_case and update signature

  • Update signature for TestRun.add_tag

  • Update signature for TestRun.create, no longer accepts case dict attribute. Instead use TestRun.add_case

  • Remove TestRun.filter_count

  • Remove TestRun.get, use TestRun.filter

  • Remove TestRun.get_bugs

  • Remove TestRun.get_env_values, use Env.Value.filter({'testrun': ?})

  • Remove TestRun.get_tags, use Tag.filter({'run': ?})

  • Rename TestRun.get_test_cases to TestRun.get_cases

  • Remove TestRun.get_test_case_runs, use TestCaseRun.filter({'run': ?})

  • Remove TestRun.get_test_plan, use TestPlan.filter({'run': ?})[0]

  • Rename TestRun.remove_cases to TestRun.remove_case and update signature

  • Update signature for TestRun.remove_tag

  • Update signature for TestRun.update

  • Rename User.get to User.filter

  • Rename User.join to User.join_group

  • Update signature for User.update

Models and database migrations

  • Remove model TestEnvironment

  • Remove model TestEnvironmentCategory

  • Remove model TestEnvironmentElement

  • Remove model TestEnvironmentMap

  • Remove model TestEnvironmentProperty

  • Remove model TestPlanComponent

  • Remove TestPlan.get_text_with_version()

  • Remove TestRun.get_previous_or_next()

IMPORTANT: this release introduces new database migrations!

tcms-api 4.0.0 (Feb 10 2018)


This is not compatible with older XML-RPC versions!

  • Make the code compatible with Kiwi TCMS XML-RPC v4.0.0

  • Rename Status to TestCaseRunStatus

  • Rename CaseRun to TestCaseRun

  • Remove PlanStatus, use TestPlan.is_active

  • Remove RunStatus, use TestRun.finished

  • Remove TestPlan.components container

  • Update signature for TestPlan. Now accept text kwarg in constructor instead of document.

Kiwi TCMS 3.50 (Jan 24 2018)

Enhancements and bug fixes

  • Update documentation for XML-RPC and positional arguments, translations, environment groups

  • Enable translations. Fixes Issue #129

  • Register models for DB translations. Fixes Issue #182

  • New German translations (@xbln)

  • Require django-attachments>=1.3 and restore attachments count in tabs

  • Fix missing tag names in TestPlan page

  • Hide admin forms for some models not supposed to be editted by users. Fixes Issue #174

  • Use django-grappelli for the admin templates: modern look and feel and less template files overriden by Kiwi TCMS

  • Load values for default property in TestRun ‘Add Property’ dialog. Fixes Issue #142

  • Correctly find property ID when renaming environment properties. Fixes Issue #167

  • Convert request body to string. Fixes Issue #177


  • Remove batch tag Add/Remove sub-menu in TestPlan view (Anton Sankov)

  • Remove Edit tag button in Tag tab (Anton Sankov)

  • Remove template functions. Fixes Issue #107

  • Remove custom HttpJSONResponse classes

  • Remove unused and duplicate code

tcms-api 1.5.1 (Jan 24 2018)

  • [api] Fix order of TestCaseRun statuses. Fixes #184

Kiwi TCMS 3.49 (Jan 02 2018)

Enhancements and bug fixes

  • Upgrade to Django 2.0.1

  • Don’t log passwords sent via RPC

  • Log XML-RPC requests from anonymous users. Fixes Issue #126

  • Order TCMSEnvValue records by property name and value. Fixes Issue #155

  • flake8 fixes (Anton Sankov)

  • Start building source code documentation from Python doc strings

  • Properly urlencode emails in personal menu links

  • Remove test case import via XML files

  • Use django-attachments for user uploaded files. Fixes Issue #160 As part of this change we no longer copy Plan and Case attachments when cloning these objects.

    NOTE: Since django-attachments introduces new permission objects you will have to adjust default permissions for existing users! In order for them to be able to upload/delete their own files they need to have attachments.add_attachment and atachments.delete_attachment permissions.

    These same permissions are added by default to the ‘Tester’ group. If you are running an existing installation registering a new user with Kiwi TCMS will update the default permissions for this group!


  • Remove unused class EditCaseNotifyThread (Chenxiong Qi)

  • Remove model TestPlanActivity (Chenxiong Qi)

  • Remove many unused models and classes

  • Execute tests via test and drop py.test dependency

  • Remove useless TestTag.string_to_list method. Fixes Issue #106

  • Use settings.AUTH_USER_MODEL in ForeignKey definitions. Fixes Issue #143


  • Rename EMAIL_FROM to DEFAULT_FROM_EMAIL. Fixes Issue #128





Server side API

  • Migrate to django-modern-rpc and remove home-grown XML-RPC handling code. As part of this change the XML-RPC endpoint has been changed to /xml-rpc/. There’s also a new JSON-RPC endpoint at /json-rpc/!

  • Auth.login method now accepts positional parameters username, password instead of dict

  • TestCaseRun.get method now accepts a query dict as parameter

  • TestCaseRun.get_bugs method now accepts a query dict as parameter

  • Remove Build.lookup_id_by_name, Build.lookup_name_by_id RPC methods

  • Remove Product.lookup_name_by_id, Product.lookup_id_by_name RPC methods

  • Remove Product.get_components, use Product.filter_components instead

  • Remove Product.get_plans, use TestPlan.filter instead

  • Remove Product.get_runs, use TestRun.filter instead

  • Remove Product.get_tag, use Tag.get_tags instead

  • Remove Product.get_versions, use Product.filter_versions instead

  • Remove TestCaseRun.filter_count, use TestCaseRun.filter instead

  • Remove TestCaseRun.get_s, use TestCaseRun.get instead

  • Remove TestCaseRun.get_bugs_s, use TestCaseRun.get_bugs instead

  • Remove TestCaseRun.get_case_run_status, use TestCaseRun.get_case_run_status_by_name instead

  • Remove TestCaseRun.get_completion_time, TestCaseRun.get_completion_time_s RPC methods. Instead calculate them on the client side

  • Rename TestCaseRun.check_case_run_status to TestCaseRun.get_case_run_status_by_name

  • TestCaseRun.detach_log will not raise exceptions when deleting logs from non-existing TestCaseRun objects.

  • Remove User.get_me, instead use User.get without parameters

  • Remove Version. and Testopia. RPC modules

  • Update documentation for RPC methods in Auth, Build and Env namespaces. Unformatted documentation is also available for the rest of the RPC methods

IMPORTANT: this release introduces new database migrations!

tcms-api 1.5.0 (Jan 02 2018)

  • Update endpoint configuration, compatible with Kiwi TCMS 3.49

  • Drop support for Python 2

  • Remove the internal do_command method which eliminates use of eval()

  • Remove TCMSXmlrpc.get_me() and TCMSXmlrpc.build_get() methods

3.48 (Nov 28 2017)

  • Update to Django 1.11.7 (Mr. Senko)

  • Update documentation including high level information about how data is organized within Kiwi TCMS and how to work with the system. (Mr. Senko)

  • Stop caching report views. (Mr. Senko)

  • Make test execution comments optional. Fixes Issue #77. (Mr. Senko)

  • Escape special symbols when exporting JSON. Fixes Issue #78. (Mr. Senko)

  • Remove Test Run export to XML functionality in favor of API. Fixes Issue #79. (Mr. Senko)

  • Make it possible to search Test Runs via Env properties. Fixes Issue #82. (Mr. Senko)

  • Display Environment properties in Test Run search results. (Mr. Senko)

  • Allow bulk update TestCase.default_tester via email. Fixes Issue #85. (Mr. Senko)

  • Don’t crash reports when there are untested TestCaseRuns. Fixes Issue #88. (Mr. Senko)

  • Bind localhost:80 to container:80. Fixes Issue #99. (Mr. Senko)

  • Enable testing with Python 3.6 in preparation for migration. (Mr. Senko)

  • If JIRA isn’t fully configured then don’t connect. Fixes Fixes Issue #100. (Mr. Senko)

  • Pin patternfly version to 3.30 and update templates. Fixes Issue #120. (Mr. Senko)

  • Show status name rather than status id in TestCaseRun change log. (Chenxiong Qi)

  • [api] Adds a Python API client with changes that make it possible to execute on both Python 2 and Python 3. For now take a look at tcms_api/script_examples/ for examples how to use it. NOTE: API client has been initially developed as the python-nitrate project by Petr Splichal and other contributors.

  • [api] Remove experimental support for Teiid. (Mr. Senko)

  • [api] Cache level defaults to CACHE_NONE if not set. (Mr. Senko)

  • [api] Remove persistent cache, in-memory caching is still available. (Mr. Senko)

  • [api] Remove multicall support. (Mr. Senko)

IMPORTANT: this release introduces new database migrations!

3.44 (Oct 31 2017)

  • Use correct django_comment permission name. Allows non-admin users to enter comments. Fixes Issue #74. (Mr. Senko)

  • Fix 500 ISE when viewing other user profiles (Mr. Senko)

  • Add a more visible link to account registration in the MOTD section of the login page (Mr. Senko)

  • Use correct permission names when editing Test Plan Environment Group field. Fixes Issue #73 (Mr. Senko)

  • Update how we render the XMLRPC info page. Fixes Issue #80 (Mr. Senko)

  • Rename FOOTER_LINKS setting to HELP_MENU_ITEMS (Mr. Senko)

  • Update documentation with new screenshots (Mr. Senko)

  • Make documentation more clear on how to run Kiwi TCMS both in production and in local development mode. Fixes Issue #89 (Mr. Senko)

3.41 (Oct 09 2017, released on

  • Upon registration assign default group permissions if none set. Also by default make all users have the is_staff permission so they can add Products, Builds, Versions, etc. via the ADMIN menu (Mr. Senko)

  • Add docker-compose.yml file (Mr. Senko)

  • Update documentation (Mr. Senko)

  • Remove unused plugins_support/ directory (Mr. Senko)

  • Remove unused models in tcms.profiles. The Profiles, Groups and UserGroupMap models are removed because they are not used (Mr. Senko)

  • Remove max_length=30 limitation for EmailField in RegistrationForm. Fixes Issue #71 (Mr. Senko)

  • Display error messages on login form (Mr. Senko)

  • Update main navigation to indicate login is required before creating Test Plan (Mr. Senko)


MariaDB defaults are to use latin1 as the default character set and collation. This will lead to 500 internal server errors when trying to save data which does not use ASCII characters. This is a limitation with the underlying CentOS/MariaDB docker image and a solution has been proposed upstream.

You can manually update your existing databases by using the following instructions:

bash-4.2$ mysql -u root -p
Enter password:

MariaDB [(none)]> ALTER DATABASE kiwi CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Query OK, 1 row affected (0.00 sec)

bash-4.2$ mysql -D kiwi -u root -p -B -N -e "SHOW TABLES" | awk '{print "ALTER TABLE", $1, "CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;"}' > /tmp/alter_charset.txt
Enter password:

bash-4.2$ cat /tmp/alter_charset.txt | mysql -D kiwi -u root -p
Enter password:

You can use the SHOW TABLE STATUS; query to see the current settings for your tables!

IMPORTANT: this release introduces new database migrations!

3.39 (Sep 27 2017, released on

  • Introduce modern UI elements using Patternfly library! Main navigation, login and password reset pages are currently implemented. NOTE: main navigation is placed inside an iframe to workaround issues with the legacy JavaScript on other pages. These will be fixed in the future and the iframe will be removed! (Mr. Senko)

  • Piwik integration has been removed together with the following settings ENABLE_PIWIK_TRACKING, PIWIK_SITE_ID, PIWIK_SITE_API_URL, PIWIK_SITE_JS_URL (Mr. Senko)

  • USER_GUIDE_URL setting has been removed. You can specify this configuration directly in FOOTER_LINKS (Mr. Senko)

  • Added missing templates and views for password reset functionality (Mr. Senko)

  • Makefile updates and flake8 fixes (Mr. Senko)

3.38 (Sep 20 2017, released on

  • Bug fix: Test Case EDIT and CLONE buttons are now working again (Mr. Senko)

  • More tests and better handling of input parameters when loading builds (Mr. Senko)

  • Load more of the required JavaScript and CSS files for admin forms (Mr. Senko)

3.37 (Sep 12 2017, released on

  • Migrate to Python 3. Docker container uses Python 3.5 from (Mr. Senko)

  • Docker container now uses self-signed HTTPS with options to specify custom certificates (Mr. Senko)

  • Set MySQL mode to STRICT_TRANS_TABLES (Mr. Senko)

  • Remove dependency on django-preserialize (Mr. Senko)

  • Remove explicit dependency on six (Mr. Senko)

  • Fix traceback while loading builds at test run creation (Mr. Senko)

  • Populate product version when crating new Test Plan. Fixes Issue #16 (Mr. Senko)

  • Initialize admin jQuery after jQuery has been loaded. Fixes a problem with popup windows not closing (Mr. Senko)

  • Fix traceback when loading product versions if no products were defined (Mr. Senko)

3.33 (Aug 15 2017, released on

  • Update Django to 1.11.4 (Mr. Senko)

  • Many other updates related to deprecated features in Django (Mr. Senko)

  • Fix a bug where the tab menu Bugs -> Remove didn’t remove bugs from the currently opened test run (Mr. Senko)

  • Make use of versioned static files which helps users see updates to the JavaScript and CSS files which are cached inside the browser. Fixes Issue #6 (Mr. Senko)

3.32 (Aug 8 2017, released on

  • Upgrade Django to 1.10.7 (Mr. Senko)

  • Replace unmaintained django-pagination with dj-pagination. Fixes Issue #48 (Mr. Senko)

  • When activating new accounts check the expiration date of activation keys. Previously this was not checked (Mr. Senko)

  • Fix a traceback when showing Plan -> Tree View (Mr. Senko)

  • Fixed an issue where Prompt.render was wrapped within HttpResponse causing DB connections to be closed after view functions have returned (Mr. Senko)

  • Refactored responses for AJAX calls (Chenxiong Qi)

IMPORTANT: this release introduces new database migrations!

3.30 (Jul 27 2017, released on

  • Upgrade Django to 1.9.13 (Mr. Senko)

  • Upgrade all other requirements to their latest versions (Mr. Senko)

  • Fix bug in class BlobField where database engine is not examined correctly (Mr. Senko)

  • Replace SQLExecution with ORM queries (Mr. Senko)

  • Improve test assertions so they don’t fail when database returns records in arbitrary order (Mr. Senko)

IMPORTANT: this release introduces new database migrations!

3.28 (Jul 11 2017, released on

  • Replace w3m cmd line tool with html2text. Fixes Issue #7 (Mr. Senko)

  • Disable bug reporting if Issue Tracker base_url is empty (Mr. Senko)

  • Don’t link TC to Issue Trackers if required parameters not present. By default these are api_url, api_username and api_password. For GitHub they are base_url and api_password. Fixes Issue #3 (Mr. Senko)

  • Don’t add component to testcase if component already exists. Fixes Issue #13 (Mr. Senko)

  • Add more tests (Chenxiong Qi)

  • Replace deprecated request.REQUEST (Chenxiong Qi, Mr. Senko)

3.26 (Jun 27 2017, released on

  • Multiple replacements of deprecated request.REQUEST and more tests (Chenxiong Qi)

  • Use the EMAIL_SUBJECT_PREFIX setting when sending emails (Mr. Senko)

  • Document how to use an external email provider instead of SMTP with example for Amazon SES. Fixes Issue #12 (Mr. Senko)

  • Remove the KIWI_BASE_URL configuration setting. The Administration Guide now includes a section called Configure Kiwi’s base URL which explains how to configure the base URL of your installation! (Mr. Senko)

IMPORTANT: this release introduces new database migrations!

3.24 (Jun 13 2017, released on

  • Removed dependency on Celery and django-celery. The following configuration settings have been removed: BROKER_URL, CELERY_TASK_RESULT_EXPIRES, CELERY_RESULT_BACKEND, CELERYD_TIMER_PRECISION, CELERY_IGNORE_RESULT, CELERY_MAX_CACHED_RESULTS, CELERY_DEFAULT_RATE_LIMIT (Mr. Senko)

  • Refactoring of internal email sending capabilities. The following configuration settings have been removed: EMAILS_FOR_DEBUG (replaced by ADMINS), ENABLE_ASYNC_EMAIL (Mr. Senko)

  • Removed integration with Errata System and ERRATA_URL_PREFIX setting. Fixes Issue #15 (Mr. Senko)

  • Removed dependency on qpid-python and QPID integration which has been disabled for a long time and most likely not working. This removes the ENABLE_QPID setting as well.

  • Removed dependency on kerberos with instructions how to add it back and enabled it if required (Mr. Senko)

  • Removed dependency on Kobo. Fixes Issue #5 (Mr. Senko)

  • Add missing integrations for JIRA. It is now possible to link failed Test Case(s) to JIRA Issues and Report new issues with pre-filled information from the test case! Fixes Issue #2 (Mr. Senko)

  • Add more tests (Chenxiong Qi)

  • Add integration with GitHub issues. Fixes Issue #4 (Mr. Senko)

IMPORTANT: this release introduces new database migrations!

3.23 (Jun 6 2017, released on

  • Docker compose is now hosted at with the ability to customize all settings and the Docker image itself (Mr. Senko)

  • Trimmed down the contents of the Docker image - removed unnecessary RPM packages (Mr. Senko)

3.22 (May 31 2017, released on

  • Multiple refactorings of deprecated Django features (Mr. Senko)

  • Added more tests (Chenxiong Qi)

  • Replace deprecated XML2Dict with xmltodict. Fixes Issue #10 (Mr. Senko)

  • Use mysqlclient instead of MySQL-python. Fixes Issue #14 (Mr. Senko)

  • Make TestCase changelog display state changes using their names. Fixes Issue #9 (Mr. Senko)

  • Multiple documentation improvements, including documentation of all configuration settings (Mr. Senko)

3.21.2 (May 26 2017, released on

  • Forked from as a stand-alone project

  • Future versions will be released under the name Kiwi TCMS

  • NITRATE_BASE_URL has been renamed to KIWI_BASE_URL

  • Use /tmp/.bugzilla for python-bugzilla cache to avoid 500 ISE (May 24 2017, released on

  • Rebased onto f7e2c6c

  • Includes PRs #197, #198, #199, #200, #201, #202, #204: removal of deprecated request.REQUEST and more tests (tkdchen)

  • Includes PR #203: Minor fixes (Mr. Senko)

  • Fixed failing test cases on PostgreSQL and MySQL (Mr. Senko)

  • Remove unused doctest. PR #205 (tkdchen)

  • Fixes Issue #185: Improve integrations between Nitrate and external bug tracking systems (Mr. Senko). In particular:

    • removed all hard-coded issue tracker settings

    • allow issue trackers to be configured entirely in the DB

    • re-implemented the functionality to open all bugs inside the issue tracker by clicking a single link at the bottom of the test run reports page

    • re-implemented the “Check to add test case(s) to Issue Tracker” checkbox when adding a bug to a test case run

    • re-implemented the “Report” bug functionality, which will pre-load the chosen Issue Tracker with information about the test case which was used to discover the bug.

    • NOTE: full integration is available only for Bugzilla. This version provides only reporting integration for JIRA

NOTE: this release introduces new database migrations!

NOTE: this release includes updated static files!

NOTE: this release introduces a new configuration setting called NITRATE_BASE_URL. It defines the FQDN of your Nitrate instance! This configuration is used to construct a URL linking back to test cases and test runs when reporting bugs! (May 1 2017, released on

  • Rebased onto a2363f8

  • Add default permissions to groups. PR #191 (Mr. Senko)

  • Fix Issue #186: Errata field visible when ERRATA_URL_PREFIX is empty. PR #188 (Mr. Senko)

  • Fix Issue #181: Failed to delete testplan or product. PR #182 (Mr. Senko)

  • Add link to Administration guide in footer (Mr. Senko)

  • Update MOTD displayed on login/registration form (Mr. Senko)

  • Updated RPMs inside Docker image (Mr. Senko)

  • Use bug trackers defined in the DB. PR #79 (Mr. Senko)

NOTE: this release introduces new database migrations! (Apr 24 2017, released on

  • Rebased onto a1c47ec

  • Updated removal of deprecated request.REQUEST from PR #156 (Mr. Senko)

  • Updated tests from previous merge of PR #171 (Mr. Senko)

  • Refactor SQL in testplans to ORM. PR #172 (Mr. Senko)

  • Fix Issue #174 - Error when remove tag from a plan’s cases (Mr. Senko)

  • Refactor SQL in testcases to ORM. PR #177 (Mr. Senko)

  • Improve tags search and fix hints while adding tags to selected test cases inside of a test plan. PR #178 (Mr. Senko)

  • Update documentation about installation steps for RHEL6. PR #179 (Mr. Senko)

  • Make it possible to build and run Nitrate as docker image. PR #180 (Mr. Senko) (Apr 12 2017, released on

  • Rebased onto 8f45beb

  • Remove tcms.core.migrations.0001_django_comments__object_pk (Mar 22 2017, released on

  • Rebased onto 980b07b

  • Add tests, SQL refactor and fixes for commit_unless_managed. PR #170, Issue #148 (Mr. Senko)

  • Enable testing with MySQL and Postgres on Travis-CI. PR #171, Issue #169 (Mr. Senko) (Mar 8 2017, released on

  • Rebased onto c696e62

  • Don’t use deprecated request.REQUEST. PR #156 (Mr. Senko)

  • Update tests and fix Travis CI core dump. PR #168, Issue #161 (Mr. Senko) (Feb 28 2017, released on

  • Rebased onto 7a6bc34

  • Enable the test suite. Fix #113 (Chenxiong Qi)

  • Refactor SQLs in xmlrpc (with tests). PR #159 (Mr. Senko)

  • Enable PR #160 (Mr. Senko) (Feb 21 2017, released on

  • Don’t install files under /etc/ to avoid SandboxViolation (Mr. Senko) (Feb 21 2017, released on

  • Replace hard-coded SQL statements with ORM queries in reporting app. PR #146, fix #127 (Mr. Senko) (Feb 14 2017, released on

  • Rebased onto 82625f1

  • Add documentation about installation with Apache and virtualenv. PR #137 (Mr. Senko)

  • Replace hard-coded SQL statements with ORM queries. PR #139 (Mr. Senko)

  • Use version from module, not txt file. PR #145 (Mr. Senko) (Jan 31 2017, released on

  • Rebased onto 698288e from upstream (Mr. Senko)

  • Enable internal tests

  • Drop support for Python 2.6 (Mr. Senko)

  • Update help strings of clone case form and update docs. Fix #67 (Mr. Senko)

  • Updated documentation with sections about hosting with Gunicorn, Docker and Google Cloud Engine (Mr. Senko)

  • Remove raw SQL migrations and initial schema and data

  • Add migration for django_comments

  • Upgrade Django to 1.8.14

  • Upgrade to django-tinymce 2.4.0 (Mr. Senko) (Jan 24 2017, released on

  • Don’t hard-code priorities in advanced search. PR #45, fixes RhBz #1139932 (Chenxiong Qi)

  • Update to Django 1.8.11. PR #81 (Mr. Senko)

  • Update django-tinymce to 2.4.0

  • Update link to wadofstuff-django-serializers. PR #101, fixes #99 (Mr. Senko)

  • Minor updates to documentation. PR #100 (Matthias Cavigelli)

  • Require Celery<2 for compatibility reasons. PR #102 (Mr. Senko)

  • Host static files in DEBUG mode for development. PR #103 (Mr. Senko)

  • flake8 fixes. PR #104 (Mr. Senko)

3.8.18 (Aug 21 2016)

  • Relayout indentation in urls (Chenxiong Qi)

  • Ignore .vagrant/ (Chenxiong Qi)

  • Revert “move javascript to the bottom of page” (Chenxiong Qi)

  • using DataTable to show test runs (Chenxiong Qi)

  • move javascript to the bottom of page (Chenxiong Qi)

  • i18n support (Chenxiong Qi)

  • setup dev env with Vagrant (Chenxiong Qi)

  • Better fix for traceback introduced by PR #86 (Mr. Senko)

  • fix import conflict (Chenxiong Qi)

  • Define variables in a way which works on non RPM based systems (Mr. Senko)

  • Fix flake8 ‘E731 do not assign a lambda expression, use a def’ (Mr. Senko)

  • Fix flake8 E402 module level import not at top of file (Mr. Senko)

  • Fix flake8 errors and remove a few unused methods (Mr. Senko)

  • Rename non-existing fields in queries (Mr. Senko)

  • Use STATIC_URL for a few images (Mr. Senko)

  • update document for development environment setup (Chenxiong Qi)

  • fix search_fields in management admin (Chenxiong Qi)

  • fix flake8 errors (Chenxiong Qi)

  • use Makefile to run flake8 (Chenxiong Qi)

  • Prevent from scrolling page up when show and close tip of environment group (Chenxiong Qi)

  • change file format from dos to unix (Chenxiong Qi)

  • change TCMS to Nitrate in templates (Chenxiong Qi)

  • support travis-ci (Chenxiong Qi)

3.8.17-1 (Feb 11 2015)

  • ignore empty string in white space character escape

3.8.16-1 (Feb 11 2015)

  • revert whitespace filter in run/testcaserun notes field

3.8.15-1 (Jan 23 2015)

  • add whitespace filter in plan/case/run text field

3.8.14-1 (Dec 22 2014)

  • Specify html.parser explicitly to parse HTML document

3.8.13-1 (Dec 18 2014)

  • Bug 1174111 [Test Plan]Test Plan doesn’t recognize some scripts content when edit plan to upload html files.

3.8.12-1 (Dec 4 2014)

  • Refine documents

3.8.11-1 (Oct 15 2014)

  • TCMS-689 Write unittest for testcaserun, filters, tag, version

  • TCMS-647 [Refine modulization] move app-specific code to each app-

  • TCMS-541 move javascript code of template files into js files as many as possible

  • TCMS-545 with the help of template engine(Handlebars.js), get rid of html snippets in js files

  • TCMS-663 [RFE][test run] User must click ‘show all’ link to confirm whether there are comments to a caserun in run detail page.

  • TCMS-666 [RFE][test run]When add issue_id to caserun, checked the option ‘check to add Test Cases to BZ’, system does not sync case_id to bugzilla.

  • TCMS-688 Write unit test for xmlrpc.api.testplan and QuerySetBasedSerializer

  • TCMS-704 Replace data grid with data table on search plan/run/cases page

  • TCMS-714 [TestPlan] The plan name is invisible when the name contains java script contents.

  • TCMS-702 Unit test for XMLRPC serializer method

  • TCMS-659 Remove code that has already no effective in current TCMS feature

  • TCMS-542 rewrite the js code for dom manipulation with jquery and jquery ui, remove prototype.js

  • TCMS-549 rewrite the js code for event binding with jquery, remove contorls or effects based on prototype.js

  • TCMS-184 Remove the outdate install section

  • TCMS-716 [Add cases to run]There are js errors when expanding the case details in the assign case page.

  • TCMS-717 [Search Cases]There is a js error in the console when clicking the Search Cases in the Testing tab.

  • TCMS-748 Security check via Revok test

3.8.10-2 (Aug 27 2014)

  • Bug 1133483 - Unable to clone runs in TCMS

  • Bug 1133912 - Script injection in notes field

  • Bug 1134166 - [test plan] when user remove tag at reviewing case tag in test plan detail page, system returns 500 error

3.8.10-1 (Aug 18 2014)

  • Bug 1039495 - [test run][export to xml]If a case related many bugs in a run, when export the run to xml, the file only show the latest bug for this case.

  • Bug 1129058 - [TestPlan|Add cases] The browser has no response and is in dead after selecting all the selected cases

  • Bug 1130903 - [xmlrpc]User can not filter case via estimated_time when invoke TestCase.filter_count method.

  • Bug 1130933 - [xmlrpc] User can not update estimated_time to 0s when invoke TestRun.update method.

  • Bug 1130961 - [TestPlan|Components] Can’t remove all the default components of one test plan at one time

  • Bug 1130966 - [xmlrpc][document] The format of estimated_time for related methods should be consistent.

  • Bug 1131885 - [XML-RPC] The Texts don’t trim the spaces and record them as new versions when invoking the TestCase.store_text() and TestPlan.store_text()

  • TCMS-284 [Performance] Production Apache ssl_access_log report some resources(such as css,js,pic etc) can not found(HTTP 404) (RHBZ:1035958)

  • TCMS-371 [Performance Test][Reporting Custom] The First Slow Query on the Top Slow Queries found on prod evn (2014-06-05 to 2014-06-12)

  • TCMS-425 TestRun & TestCase estimated_time modify

  • TCMS-463 [Performance]Reporting Custom Section Optimize

  • TCMS-464 [Performance]Reporting Testing Report Section Optimize

  • TCMS-478 [xmlrpc]Invoke TestCase.calculate_total_estimated_time with a invalid input, system returns total_estimated_time 00:00:00 not 400 error. (RHBZ:1102459)

  • TCMS-480 Enable system-wide cache mechanism to support caching (RHBZ:1027589)

  • TCMS-481 [xmlrpc]The result for xmlrpc method TestCase.calculate_average_estimated_time is wrong. (RHBZ:1099312)

  • TCMS-482 TestPlan.update does not support ‘owner’ update (RHBZ:1023679)

  • TCMS-484 [test run] If a run has multiple Environments, clone this run, the new run only clone the latest Environment. (RHBZ:1112561)

  • TCMS-485 [xmlrpc]when invoke TestCase.link_plan method, the 404 error message lack description. (RHBZ:1112967)

  • TCMS-486 [RFE] Suggest improve “Testing Report” generating for large data query (RHBZ:870384)

  • TCMS-487 [RFE]: Add test case to the plan by ID (number) (RHBZ:869952)

  • TCMS-488 [XMLRPC] List all the methods related to “is_active” field which all needed to be fixed (RHBZ:1108009)

  • TCMS-489 [test case]A bug belongs to Run A and Run B for the same case, remove this bug from Run A in case detail page, the bug for Run B is removed as well. (RHBZ:1094603)

  • TCMS-492 replace TestRun.is_current with front-end control, and remove operation code against TestRun.is_current in view

  • TCMS-493 fix that two requests are emit after change a case run’s status

  • TCMS-494 Build base infrastructure of unit test

  • TCMS-495 Optimize operations on test_case_texts

  • TCMS-496 rewrite the ajax style code snippets with jquery

  • TCMS-498 [TestCaseRun | Add bug] The added jira bugs don’t display in the case run but actually they are added in the xml file. (RHBZ:1119666)

  • TCMS-499 [DB] Fix errors when syncdb

  • TCMS-500 [Cache] Cache part sections of pages

  • TCMS-512 [XML-RPC] TestCase.calculate_total_estimated_time() doesn’t work (RHBZ:857831)

  • TCMS-513 [Performance] TCMS Reporting respond slowly and cause MySQL server high CPU usage (RHBZ:1029267)

  • TCMS-514 [XML-RPC] TestCase.calculate_average_estimated_time() doesn’t work (RHBZ:857830)

  • TCMS-515 [TestRun][RemoveCase]Remove case into creating test run, the test run’s estimated time didn’t sync with its cases totally estimate time (RHBZ:849066)

  • TCMS-516 [xmlrpc] Can not add cases to the runs with calling the TestRun.add_cases() method (RHBZ:1119224)

  • TCMS-551 [test run] After updating the Environment value in test run detail page, user can not remove the changed environment. (RHBZ:1124210)

  • TCMS-552 [xmlrpc][document] The example for TestRun.get_test_case_runs method still support is_current parameter. (RHBZ:1126398)

  • TCMS-553 [Testing report] Generate testing report By Case Priority, the Priority order for different builds were different. (RHBZ:1125828)

  • TCMS-554 [testing report] If all plans belongs to a product have plan tag, system display ‘untagged’ in tag list in testing report by Plan’s Tag (RHBZ:1125815)

  • TCMS-555 [Testing report] Generate testing report by Plan’s Tag Per Tag View, the caserun’s count for idle status was wrong. (RHBZ:1125214)

  • TCMS-556 [Testing report] Generate testing report By Plan’s Tag Per Tag View, the total caserun’s count statistic the duplicate caseruns. (RHBZ:1125821)

  • TCMS-557 [TCMS-495 | Texts]Texts of test case and test plan don’t support Chinese characters (RHBZ:1126790)

  • TCMS-559 [testing report] the link on Paused status in testing report generated by Case-Run Tester was wrong. (RHBZ:1126353)

  • TCMS-560 [testing report] Generate testing report by Case-Run Tester, the run’s count was wrong. (RHBZ:1126359)

  • TCMS-569 [testing report]Generate testing report By Plan’s Tag Per Tag View, click link on caserun status to access caserun list, system returns 500 error. (RHBZ:1127621)

  • TCMS-570 [TCMS-487| Add cases] Make sure the cases which had been added to the plan can’t be searched by case id (RHBZ:1127522)

  • TCMS-571 [test case]when create case without estimated_time, system can not save the case. (RHBZ:1126322)

  • TCMS-572 [xmlrpc] Do not change the content of plan’s text, invoke TestPlan.store_text twice, system will save the content twice with same checksum (RHBZ:1127194)

  • TCMS-573 [test plan] If clone case with Create a Copy Settings, system will go to 500 error page. (RHBZ:1126304)

  • TCMS-574 [xmlrpc] Invoke TestCase.get_text to get a nonexistent version, system returns 500 error. (RHBZ:1127198)

  • TCMS-575 [clone test run] The estimated time format is different with input by manual (RHBZ:1126300)

  • TCMS-585 Search cases lead memory leak in production server

  • TCMS-619 [XMLRPC] default_product_version is missed in the response from TestPlan

  • TCMS-96 [test plan][add child node]When add child note to plan with a nonexistent plan id, the submit btn in the warning form has no effect. (RHBZ:1038950)

  • TCMS-98 [test run][add bug]Add reduplicative bug to case in the run page, the content of the warning is incorrect. (RHBZ:1039408)

3.8.9-3 (Aug 11 2014)

  • Hotfix XMLPRC backward-compatibility broken

3.8.9-2 (Aug 01 2014)

  • TCMS-538 Solve inconsistent data of product_version field in production database.

3.8.7-5 (May 22 2014)

  • TCMS-326 - [XMLRPC] Optimize TestRun.get_test_cases, which generates a slow query that would affect other SQL execution on test_case_runs table

3.8.7-3 (Apr 22 2014)

  • TCMS-264 - Temp workaround to avoid updates automatically bugzilla with TCMS test case ID.

  • TCMS-240 - Convert column type, add composite index and add migrate sql for each release version.

3.8.7-2 (Apr 11 2014)

  • Bug 1083958 - [test run]In run detail page, using ‘bugs-remove’ link can remove the bug which does not belong to the current caserun.

  • Bug 1083965 - [test run]In run detail page, using ‘comment-add’ link to add comment, system does not record author.

3.8.7-1 (Apr 03 2014)

  • Bug 1034100 - [Performance] opening plan/id/chooseruns page causes Python interpreter consumes very hight, around 100%, CPU usage

  • TCMS-171 [BZ 866974] Provide TestPlan.{add,get,remove}_component

  • TCMS-177 It takes over one min to mark one case to pass in test case run.

  • TCMS-186 Too slow when create test run

  • TCMS-187 [Performance] Loading test case when expand a test case pane in Cases and Reviewing Cases tabs in a test plan page is too slow.

  • TCMS-188 [Performance] Loading test case when expand a test case pane in test run page is too slow

  • TCMS-194 [Performance] Expand a plan to display case run list in Case Runs tab in a case page

  • TCMS-195 [Performance] Expand a case run from case run list in Case Runs tab in a case page

  • Using VERSION.txt file instead of writing version into tcms module directly

3.8.6-5 (Apr 01 2014)

  • Bug 1082150 - Backward-incompatible change in TestRun.get_test_case_runs()

v3.8.4 (Sep 17 2013)

  • Fixed bug # 1005797 - [RFE] Add a column with number of comments into Case Runs table

  • Fixed bug # 921930 - Date format of attached log links is incorrect

v3.8.2 (Jul 25 2013)

  • Fixed bug # 988332 - Added one permission protected XMLRPC API to add group for a user.

v3.5 (Jul 11 2011)

  • Fixed bug # 545082 - Test case sort order is shared across plans for cloned cases

  • Fixed bug # 589633 - Not able to change author of plan

  • Fixed bug # 646325 - [FEAT]cases link doesn’t link to the special cases

  • Fixed bug # 657160 - [TCMS3.2-2][RFE]Add tips after saving the basic information in the home page (Nitrate 3.2-2)

  • Fixed bug # 658339 - [TCMS3.2-2]The “Upload” button is stealing the function of “Create test plan” button when create new test plan

  • Fixed bug # 661613 - [Test Plan]Click “Upload” button without browse the attachment will report 404 error

  • Fixed bug # 664700 - [FEAT] TCMS - NitrateXmlrpc: add method for new Product version creation

  • Fixed bug # 665937 - cancel all the runs you want to clone will turn to the err page

  • Fixed bug # 667584 - There is a Error when exporting Test Plan without choose a plan

  • Fixed bug # 668323 - add build with non-English name succeeds but warning appears

  • Fixed bug # 670996 - Sorting on test plan results page only sorts that page instead of all the results

  • Fixed bug # 671457 - [RFE] removal confirmation dialogs should contain number of removed items

  • Fixed bug # 672415 - Add a child node to a plan, input non-numbers, causing a dead loop

  • Fixed bug # 673421 - Sometimes “file a bug on bugzilla” function doesn’t work

  • Fixed bug # 675096 - [RFE] chart showing success rate of test-plan-runs

  • Fixed bug # 678052 - Tag link causes some nonsense text issues

  • Fixed bug # 678203 - [test plan]The product version is not inconsistency in test plan

  • Fixed bug # 678220 - [Basic Information]Can not save chinese name in basic information

  • Fixed bug # 678465 - [Bookmarks]The box also be checked after delete

  • Fixed bug # 678468 - [Bookmarks]There is no warning UI when delete bookmark without any choice

  • Fixed bug # 678513 - [Search Plan]there is UnicodeEncodeError when searching plan via chinese tag

  • Fixed bug # 678962 - [Component]Suggest pop-up the confirm UI when remove component

  • Fixed bug # 678975 - [tag]The link of tag list cause the filter is not correctly

  • Fixed bug # 679242 - [Test Case]Click “Upload” button without browse the attachment will report 404 error

  • Fixed bug # 679243 - [Test Plan][RFE]Suggest to add the back button when add attachment in test plan

  • Fixed bug # 679662 - [Clone Case]The “Autoproposed” can not be clone to the new case

  • Fixed bug # 679663 - [Clone case]Can not select “Use the same Plan” after save the clone case without any plan

  • Fixed bug # 679675 - [Test Run]There is a UnicodeEncodeError when add a chinese tag

  • Fixed bug # 680379 - [Reporting]Click the plan number the result is not correct

  • Fixed bug # 681328 - Filters are reset when cases are reordered

  • Fixed bug # 682077 - [Quick search]quick search run,it goes to a error page.

  • Fixed bug # 690057 - [test run]the test case detail will be auto updated without click update

  • Fixed bug # 691413 - Reporting -> Custom page starts with ‘No builds found with search condition.’

  • Fixed bug # 693281 - Web UI: drop down / list fields’ values should be sorted alphabetically

  • Fixed bug # 697252 - TCMS - nitrate xmlrpc: failed to attach bug info to TestCaseRun

  • Fixed bug # 701591 - [Test case] Suggest “update component” should be “Add component” in test case and del the “remove” button

  • Fixed bug # 701697 - Email notification has syntactical error (EN version) - new test run created

  • Fixed bug # 703718 - [Usability] improve the layout the test case-run in run

  • Fixed bug # 704101 - [Test Case] export test case without select any one will generate an error XML

  • Fixed bug # 705983 - [report] product overview tab title can’t be seen because the font is white.

  • Fixed bug # 706062 - bugs shown in testcase detail

  • Fixed bug # 707455 - [Test run]Can not re-order test cases in test run

  • Fixed bug # 708883 - Click Bug Id could not link to bugzilla

  • Fixed bug # 709764 - caserun link doesn’t focus case in run

  • Fixed bug # 710104 - Ordered list function of WYSIWYG: Numbers are not displayed.

  • Fixed bug # 711005 - Return all relevant information in xml-rpc call

  • Fixed bug # 711657 - The printable GUI can’t show correctly

  • Fixed bug # 712772 - [Test case]Export testcase without select any one

  • Fixed bug # 712789 - Cannot open attachments

  • Fixed bug # 713662 - [Extremely Urgent] Some test plans lost all|most|some test cases this afternoon.

  • Fixed bug # 715209 - 100% Completion graphical progress bar does not look 100%, it has still a gap to be filled.

  • Fixed bug # 716499 - TestPlan.update() unable to update product version

  • Fixed bug # 717521 - [test plan]spelling mistake on mouse over show

  • Fixed bug # 717683 - XMLRPC: Unable to remove tag from plan

  • Fixed bug # 717870 - problem to clone plan no. 3486

  • Fixed bug # 719253 - [UI]UI problem of the input box for adding comment

v3.4.1 (Jun 10 2011)

  • Fixed bug # 590817 - Build reports include incorrect values

  • Fixed bug # 642246 - Custom build report is incomplete

  • Fixed bug # 653919 - [FEAT] filtering case-runs according to test-plan

  • Fixed bug # 691412 - [TCMS] [Reporting] : no way to search according to case priority or plan tags

  • Fixed bug # 691695 - [TCMS] [Reporting] : generate reports per user

  • Fixed bug # 691696 - [TCMS] [Reporting] : generate reports for few build [multi selection]

  • Fixed bug # 706839 - [Advanced search]When click link “Return to homepage”, come out warning “Bad Request”

  • Fixed bug # 707243 - bug links don’t work

v3.4 (May 24 2011)

  • Fixed bug #690423 - [xmlrpc] - xmlrpc loses connection to the server after a short timeout

  • Fixed bug #593760 - xmlrpc doc doesn’t match actual behavior: TestRun.update

  • Fixed bug #593805 - xmlrpc Testcase.update fails when using certain arguments

  • Fixed bug #662885 - Product version update failed for run 15325.

  • Fixed bug #656098 - [FEAT] Relationship query

  • Fixed bug #699311 - [New Plan]There aren’t permissions to add “classification”, “products”, “versions”

  • Fixed bug #705975 - [Printable copy]Can not printable copy one/more/all plan(s) in search list

  • Fixed bug #705974 - [Export plan]Can not export one/more/all plan(s) in search list

  • Fixed bug #697577 - pattern ID pointing to wrong place

  • Fixed bug #682081 - [Test Case]Create a case with all fields,The UI is mess.

  • Fixed bug #603622 - TestCase.add_component: adding already attached component results in traceback

  • Fixed bug #637715 - TestCaseRun.update() should set tester to authenticated user

  • Fixed bug #634295 - [FEAT]Bulk status change.

  • Fixed bug #683844 - Update TinyMCE editor to recent version

  • Fixed bug #683074 - One bug listed many times

  • Fixed bug #669049 - [RFE] Editing a testrun - add a build.

  • Fixed bug #644748 - Nitrate XML-RPC Service: failed to create new TestRun using the ‘TestRun.create’ verb.

  • Fixed bug #587716 - FEAT - Need a new API call - to return a user object based on user ID’s - such as tested_by_id

  • Fixed bug #593091 - Programmatic access to TCMS via API requires user’s Kerberos username/password

  • Fixed bug #583136 - testplan.filter() returns plan objects that lack complete information

  • Fixed bug #696047 - Default font size is too small in editor.

  • Fixed bug #672124 - Default tester does not have permission to execute test run.

  • Fixed bug #678184 - [Test Run]There are error info sorting test case in test run

  • Fixed bug #680064 - [Test Run]The product version will be added to build list when Create New Test Run

  • Fixed bug #690741 - [test run]Suggest can not remove the bug from other run

  • Fixed bug #680032 - [Clone case][RFE]Add “cancel” button in mulitple clone page

  • Fixed bug #680317 - [Test Run]The update function is invalid in test case run

  • Fixed bug #680318 - [Create run]There is Warning about Data truncated when create run with more than 255 in summary

  • Fixed bug #680380 - [Reporting]The warning UI is jumbled after select without choose product

  • Fixed bug #679638 - [Test case]Print test case without choose any one is the same to choose all

  • Fixed bug #698035 - [Sentmail]the reviewer received the TCMS mail rather than stage

  • Fixed bug #593818 - Setting status=1 in TestRun.update should leave it in STOPPED state, but UI shows RUNNING

  • Fixed bug #598882 - Changing status icon to ‘start’ or ‘in progress’ (“play” icon) jumps to next test case

  • Fixed bug #663364 - [FEAT]Unable to search for multiple authors.

  • Fixed bug #665052 - [FEAT] add test-case/test-run creation/completion date search criteria

  • Fixed bug #671454 - [FEAT] search test-case by script

  • Fixed bug #684804 - service error when accessing test-case from plan it is not a member of

  • Fixed bug #615914 - [FEAT] searches with multiple products selected

  • Fixed bug #670759 - [FEAT]Add a search item “Case Id”

  • Fixed bug #680430 - [FEAT] search for test-cases from different products

  • Fixed bug #653919 - [FEAT] filtering case-runs according to test-plan

  • Fixed bug #542968 - [FEAT]Nitrate doesn’t allow group operations on test case runs

  • Fixed bug #564316 - [FEAT] tag searching - bugzilla-like categories or negative searching & regexps

v3.3-4 (Mar 3 2011)

  • Fixed bug 681156 - [Test Plan]Can not expand all the test case in test plan.

  • Fixed Bug 679677 - [Test Run]The button should be “cancel” in Property page.

  • Fixed Bug 672495 - Old test run shows updated case information but its text version is unchanged.

v3.3-3 (Feb 25 2011)

  • Fixed bug 680315 - [Reporting]Open a product will lead to the error page.

  • Fixed bug 680321 - [Test Run]Click “View My Assigned Runs” will list all runs

  • Fixed bug 627236 - s/2009/2010/ orequivalent of date in page footer

  • Fixed bug 680322 - New: [spelling mistake]”Highligt” should be “Highlight”

  • Fixed Bug 680059 - [Test Run]The total number of test case run is NULL

  • remove “running date” add “run date”

  • Fixed bug 676259 - [FEAT] Need to get a break out of manual vs auto in the tcms reporting section

  • Fixed bug 678643 - TestPlan.get_text - multiple failures

  • Fixed bug 674754 - [xmlrpc] TestRun.create() fails when list of tags provided

  • Fixed bug 676590 - In run execute page, ‘expand all’ generates tons of http requests

v3.3-2 (Feb 15 2011)

  • Fixed bug 664025 - TCMS main check box to control test cases doesn’t work

  • Fixed bug 658372 - Cannot select “Product Version” when clone multiple test plans

  • Fixed bug 667304 - Click “Build” label, it won’t be sorted by build

  • Fixed bug 654533 - [TCMS]Document Version in test plan on opera browser

  • Fixed bug 672873 - xml export can’t be parsed

  • Fixed bug 664743 - [RFE] supply existing bugs when marking test-case-run as failed

  • Fixed bug 672857 - Typo in error message when a test plan hasn’t been

  • Fixed bug 657474 [TCMS3.2-2]List the runs which have not environment

  • Fixed bug 649293 - Make the case run “notes” field visible in the run

  • Fixed bug 643324 - Provide a bit more space for the test run notes

  • Fixed bug 653815 - Unable to re-order test cases in test run

  • Fixed bug 658475 - The bug can not be deleted inside the run

  • Fixed bug 672622 - product version gets set to “unused” when editing a plan

v3.3-1 (Jan 24 2011)

  • Fixed bug 661951 - Messed-up warning message pop up when clicking Add without entering Bug ID

  • Fixed bug 665945 - run export button dosn’t work

  • Fixed bug 667293 - The first product is the default product.

  • Fixed bug 665934 - choose no plan to “Printalbe Copy”

  • Fixed Bug 654953 - [RFE] Report an expanded list of Test Cases by Tag

  • Fixed bug 664467 - TCMS: cells overlapping when using long name for test case summary

  • Fixed bug 662944 - Resort case run is broken in Firefox

  • Fixed bug 642644 - update to work with the latest xmlrpclib

  • Fixed bug 578717 - [REF] Provide filter in test run

  • Fixed bug 653812 - Filtering test case runs

  • Fixed bug 534063 - [RFE] Allow sorting / filtering test cases while executing the test run

  • Fixed bug 660234 - Add links to IDLE, PASSED, WAIVED items in report table again

  • Fixed bug 661579 - Incorrect bug counting method - Ugly code, Ugly bug

  • Completed feature #662679 - Attachments get lost when cloning test case

  • Completed feature #663520 QPID support for TCMS

  • Completed global signal processor

  • Fixed case run percent counter

  • Improve the style of filtering test case runs

v3.2-4 (Dec 1 2010)

  • Fixed #658160 - Changing case status does not work reliably

  • Fixed UI Bug #658495 - Some case run comments not displayed

  • Re-enabled assignee update notification.

v3.2-3 (Nov 30 2010)

  • Fixed UI Bug #654944 - [TCMS][RFE]Email content:Assign cases to …

  • Fixed UI Bug #656215 - Select all checkbox in search run page broken.

  • Fixed #646912 - editing TC, leaving all automated/manual/autoproposed …

  • Remove the JSCal2 DateTime? widget(no longer in use).

  • Added grappelli skin for tinyMCE

  • Fixed UI Bug #657452 - [TCMS3.2-2]put mouse on the status buttons and no tips …

  • Fixed #658385 - TCMS is spamming with “Assignee of run X has ben …

  • Fixed #658181 - TCMS xmlrpc: 403 FORBIDDEN

v3.2-2 (Nov 23 2010)

  • Fixed own username/email in user profile display without register support

  • Completed UI FEAT - Add case default tester in search plan

  • Fixed username regex like Django restrictive

  • Swap the first/last name in profile

  • Fixed the run information style

  • Fixed #652474 - Unable to update “Basic information” fields.

  • Fixed UI Bug - 652478 - Inconsistent size, font weight in Test Plan Cases tab

  • Fixed #654211 - [TCMS]search run product is not same with run detai

  • Fixed #654967 - [TCMS]Fail to add Properties to environment group and show …

  • Fixed #654955 - [TCMS]fail:Search Test Run by Manager

  • Fixed #654949 - [TCMS]Fail:Remove Case from Test Run

  • Fixed UI Bug #654213 - New: [TCMS][REF]Remove “Test” in TESTING—>Search …

  • Fixed UI Bug #654505 - [TCMS][REF]Where is Description of bookmark.

  • Fixed UI Bug #654529 - [TCMS]Unify tips about Upload file format

  • Fixed #654922 - [TCMS]Fail:Remove test cases tag

  • Fixed #589633 - Not able to change author of plan

  • Fixed UI Bug #654553 - [TCMS]Default Component

  • Fixed UI Bug #627074 - Planning: Default components “update” removes …

  • Fixed #656174 - Can’t record Case or Case-Run Log

v3.2-1 (Nov 9 2010)

  • Fixed UI Bug #635329 - [TCMS]a small spelling mistake

  • Fixed #635369 - Add a test case with tags will fail via tcms xmlrpc

  • Fixed #635931 - [TCMS]The blank row in Status’ drop-down box of Search test Runs

  • Fixed UI Bug #637471 - [TCMS][REF]The style in the home page

  • Completed Feature #637271 - Provide an XMLRPC function for adding a test case run comment

  • Makes Django 1.2 compatible

  • Add csrf to templates/admin pages for Django 1.2

  • Fixed #638639 Test run report “Finished at” field shows “Notes” content

  • Fixed UI Bug #638019 -[REF]Test Runs in the home page

  • Bug UI Bug #641252 - [TCMS][REF]”Testing Cases” to “Cases” in REPORTING

  • Refined the js, split the case to confirmed cases and reviewing cases

  • Fixed #637474 - [TCMS][REF]The sort of “Plan Type” data and the sort of “Environment Group” data in Search Plan page.

  • Fixed new admin URL

  • Fixed #634218 - Text box “Comment” is erased when timestamp expires

  • Fixed #634218 - clean_timestampe–>clean_timestamp

  • Fixed #638808 - The calendar icon broken after upgrade to django 1.2.3

  • Completed feature #634157 - Preselect product when adding new build

  • Fixed #637276 - TestCaseRun.attach_bug broken

  • Fixed #637715 - TestCaseRun.update() should set tester to authenticated user

  • Fixed UI Bug #643349 - Wrong product displayed on the test run execute page

  • Fixed #638526 - [TCMS]Refresh Page fail after “Disable Plan”

  • Fixed UI Bug #643324 - Provide a bit more space for the test run notes

  • Completed refine the test case review workflow

  • Fixed #644252 - error when modify the product name

  • Fixed UI Bug #644356 - Allow to sort test case runs

  • Fixed UI Bug #644354 - Displaying test case run details breaks layout

  • Fixed #644748 - Nitrate XML-RPC Service: failed to create new TestRun using the ‘TestRun.create’ verb

  • Completed basic info editing/viewing in profile

  • Add the title/nav/footer to 404 & 500 error page

  • Add NEED_UPDATE status to test case status

  • Fixed UI Bug #629122 - [REF] Display test case notes when expanding a test case

  • Fixed UI Bug #641790 - [TCMS] No warning after inputting “1.1” in the sort of case

  • Fixed UI Bug #643303 - [RFE] test-run report - show bugs near corresponding test-cases

  • Initial completed bookmark feature

  • Completed reviewer for case and the mail notification when update reviewer

  • Fixed #640756 - can’t remove bugs from a test-case

  • Fixed #646324 - service error display when cancel tag edit

  • Fixed #638476 - Duplicated environment group name will cause error

  • Fixed #601756 - Editing a test case erases “component” field

  • Fixed #519029 - All URLs should be linkified

  • Fixed UI Bug #648760 - The spelling mistake happened in Estimated time

  • Arranged toolbar in the way mentioned

  • Merged the index page to profile

  • Fixed default url redirect after login

  • Initial completed the clone mulitple run from plan function

  • Refine Home page

  • Initial refined the mass status/priority operation function

  • Fixed add bookmark without content_type issue

  • Fixed UI Bug #646340 - no warning is displayed when test plan is not selected

  • Changed commit style, added order to comment

  • Fixed #636813 - No direct link to comment of run

  • Fixed #646399 - In case permission are not granted, you are asked for login credentials that are never accepted.

  • Fixed redirect to review cases after case creation

  • Refined the delete comment feature

  • Fixed log display in details page

  • Fixed auto case expanding in run page

  • Fixed #637870 - The sum of the percentage of the test status categories on the overall report for a given build do not sum to 100%

  • Fixed toolbar style on Chrome and safari

  • Fixed update assignee feature

  • Completed password change feature

  • Removed the execute run link

  • Completed registration feature

  • Completed password reset feature

  • Refined the update case run text and re-order case run feature

  • Completed paginatation for case/run/plan list

  • Fixed #645631 - need item to type Test Plan id directly when clone test case

  • Fixed #648325 - When clone multiple, check ‘update manager’, it has an error

  • Linked the user linke to profile

v3.1.1-3 (Sep 17 2010)

  • Fixed global plan search issue.

v3.1.1-2 (Sep 15 2010)

  • Optimized the performance for pagination

  • Fixed #630604 - disabled test cases included in /plan/<XYZ>/printable/

  • Fixed #564258 - [REF] Ability to export/print specified cases

  • Fixed UI Bug #626276 - [TCMS]reporting:link to failed test cases not working

  • Fixed UI Bug #633618 - Tree view - text changes

  • Fixed #633681 - JS error info in “search plan” and “search case” page …

  • Fixed #634045 - Tag auto-completion failed to work.

v3.1.1-1 (Sep 8 2010)

  • improve the run report

  • Fixed UI Bug #626720 - see all link does not work

  • Fixed UI Bug #625646 - Text changes for reporting UI

  • Fixed UI Bug #626237 - Text change for Test Plan UI

  • Fixed UI Bug #626719 - When expand case, the width is wrong by default

  • Fixed custom reporting search condition

  • Fixed UI Bug #624861 - Display related bugs in customization report

  • Fixed UI Bug #626276 - Reporting:link to failed test cases not working

  • Fixed UI Bug #625789 - Add Plan input field do not control its input and …

  • Added highcharts for future reporting

  • Add pagination feature for TCMS test plans, test cases and test runs using …

  • Fixed #628421 - Cannot remove test run tags.

  • Fixed UI Bug #625797 - test case run history should display test run summaries

  • Fixed #626638 - Product version is not copied from the original when …

  • Fixed #627235 - Adding a build requires reloading page.

  • Fixed UI Bug #629977 - test-run report does not contain test-run name

  • Completed feature #542660 - TCMS: [FEAT] - allow to add sub test suite for test plan

  • Refined add plan to case feature

  • Completed add multiple plan to a case feature

  • Fixed UI Bug #629508 - [TCMS]Create button and Test Plan box are overlapping

  • Fixed UI Bug #629508 - [TCMS]Create button and Test Plan box are overlapping

  • Fixed #627236 - s/2009/2010/ in footer

  • Fixed #629617 - remove white spaces from beginnig and at the end of …

  • Added parent modify feature to XML-RPC

v3.1.0-2 (Aug 12 2010)

  • Enhanced the reporting feature.

v3.1.0-1 (Aug 12 2010)

  • Fixed #612803 - add an export feature for test case runs, can export …

  • Fixed #609777 - Tag autocomplete for “remove tag” shows all possible …

  • Completed Feature #578887 - Clone all test runs for a particular build of …

  • Fixed #618710 - Env value for test run permission checking

  • Completed feature #599313 - [REF] Mass edit test case components

  • Fixed #619247 - Cannot update test case status

  • Fixed #591823 - Sort by “completed” can work correctly.

  • Fixed #618183 and #619403 - Notification of case editing issue

  • Fixed #599448 - add upload feature while editing a plan.

  • Fixed #621777 - TCMS gives error message on screen after edit->save …

  • Fixed #598409 - “RFE: add plan creation date search criteria”, add a …

  • Completed new report with customization

v3.0.4-3 (Aug 2 2010)

  • Fixed #612797 - The Property in Environment can not be deleted

  • Fixed #616463 - Remove property doesn’t work in TCMS

v3.0.4-2 (Jul 30 2010)

  • Fixed #619247 - Cannot update test case status

v3.0.4-1 (Jul 21 2010)

  • First open sourced version.

  • Added all of docs lacked for installation/upgrading/usage.

  • Fixed #604206 - TestCase.link_plan() does not report errors

  • Completed feature #609842 - [FEAT] provide buglist link in addition to …

  • Fixed #611354 - [Text] Updates to automation options.

  • Fixed UI Bug #609760 - Add Tag text “Ok, I see” needs updating.

  • Fixed UI Bug #606730 - favicon.ico should use transparency

  • Fixed #612797 - Test run env value permission check issue

  • Fixed #612022 - Change Automation status window appears when no test …

  • Fixed #609776 - Tag autocomplete is case sensitive.

  • Fixed #612881 - The filter for ‘Automated’ ‘Manual’ ‘Autoproposed’ is …

  • Fixed #613480 - No way is provided to go back to the plan after cloning a …

  • Fixed UI Bug #610127 - show/highlight test-case-runs assigned to me when executing …

  • Fixed UI Bug #612880 - Need total number for filter out result

  • Completed feature #607844 - (RFE) Flag tests which require the IEEE Test …

  • Completed Feature #587143 - [FEAT] Have a default component when creating …

  • Move the compoent of the case to be a tab

  • Use the updateObject() function to reimplemented multiple operations.

v3.0.3-2.svn2859 (Jun 28 2010)

  • Fixed bug #604860. Modify ComponentAdmin?’s search_fields from ((‘name’,)) …

  • Update the plan list & case list & run list

  • Update the case run list

  • Change from_config()’s return value from Nitrate to NitrateXmlrpc?

  • Fixed #606751 - grammar error on dashboard

  • Fixed #605918 - Submitting larger comments fails

  • Completed edit environment in run page

  • Use updateObject() function to modify the sortkey for caserun

  • Fixed create case failed issue

  • Completed feature #604860 - further improvement Add ‘pk’ for each item under …

  • Fixed #608545 - [REF] Simplify the estimation time choosing

  • Fixed TestCase?.link_plan function returns

  • Fixed #603752 - Cannot reassign tests in this test run: …

  • Fixed #603622 - TestCase?.add_component: adding already attached component …

  • Optimized front page display

v3.0.3-1.svn2841 (Jun 12 2010)

  • Fixed UI Bug #600198 - TCMS][3.0.2-1] - Buttons not Visible in Add New Test …

  • Completed feature #588974 - Make edit work flow more efficient

  • Fixed remove case function in plan

  • Fixed #602183 - TestCase.create requires plan id

  • Fixed #602292 - TestCase.create() does not save “estimated_time”

  • Fixed #601836 - Unable to change test case category using XML-RPC

  • Completed Feature #587143 - [FEAT] Have a default component when creating …

  • Fixed UI Bug 601693 - Test case field “arguments” not available in the web …

  • Completed Feature #597094 - Edit environment of existing test run is not …

  • Completed Feature #598882 - Changing status icon to ‘start’ or ‘in …

  • Initial completed feature #595372 - Environment available through xml-rpc

  • Fixed #603127 - Quick test case search broken

  • Fixed UI Bug #591783 - The assigned run should be in my run page

  • Fixed edit env property/value name to exist name caused 500 error

v3.0.2-2.svn2819 (Jun 8 2010)

  • Fixed #598935 - strip whitespace when adding bug numbers

  • Fixed #598909 - Bugs filed from tcms contains HTML

  • Fixed UI Bug #599465 - Filtering test plans based on the author broken

  • Fixed #593091 - Programmatic access to TCMS via API requires user’s Kerberos username/password

  • Fixed tags lacked after search issue.

  • Optimized batch automated operation form

  • Fixed some UI issues.

v3.0.2-1.svn2805 (Jun 3 2010)

  • Use livepiple to replace scriptaculous and clean up the js codes.

  • Added initial data for syncdb.

  • Added unit test script.

  • Merged testplans.views.cases and testcases.views.all

  • Ability to mark test case as ‘Manual’, ‘Automated’ and ‘Autopropsed’

  • Fixed TestRun.update() XML-RPC docs.

  • Fixed #593805 - xmlrpc Testcase.update fails when using certain arguments.

  • Fixed #593664 - Misinterpreted e-mail about test run.

  • Fixed UI Bug #591819 - Icons and links made mistakes in test review.

  • Fixed UI BUg #594623 - Test run CC can not be added.

  • Completed FEAT Bug #583118 - RFE: Attachments for test-runs.

  • Fixed #594432 - tags are not imported from xml.

  • Completed FEAT #586085 - Don’t select ALL test case after changing status

  • Completed FEAT UI Bug #539077 - Provide an overall status on main test run page

  • Completed FEAT BUg #574172 - If you sort a column in a plan, the filter options …

  • Fixed Bug #567495 - Sort by category for 898 test cases results in ‘Request …

  • Completed FEAT #597705 - TCMS: Unknown user: when user name have space before or …

  • Fixed Bug #597132 - Cannot add environment properties to test run

  • Completed FEAT #578731 - Ability to view/manage all tags of case/plan.

  • Fixed Bug #595680 - TCMS: cannot disable a test plan

  • Fixed Bug #594566 - Get test case category by product is broken

v3.0.1-3.svn2748 (May 19 2010)

  • Fixed #592212 - Search for test cases covering multiple bugs

  • Fixed #543985 - sort testplans on “clone test case” page alphabetically

  • Fixed #561234 - [feature request]should filter out “the space” key in all …

  • Fixed UI Bug #577124 - [TCMS] - “Show comments” without number –remove …

  • Fixed UI Bug 592974 - Adding a test case to a plan using plan id does not …

  • Fixed report 500 service error

  • Fixed #592973 - Add cases from other plans fails with a service error

  • Fixed get_components XML-RPC typo mistake and added docs to new filter …

v3.0.1-2.svn2736 (May 13 2010)

  • Completed signal handler for mailing by a standalone threading

  • Fixed test plan link for #591819

  • Fixed 519029

  • Optimized the menu style

v3.0.1-1.svn2728 (May 11 2010)

  • Refined whole UI.

  • Optimized query count for performance.

  • Add examples to XML-RPC docs.

  • Completed following methods for XML-RPC: Product.filter(),

  • Product.filter_categories(), Product.filter_components(), Product.filter_versions(),

  • Product.get_component(), Product.get_tag(), Product.get_versions(),

  • Product.lookup_id_by_name(), TestCase.calculate_average_estimated_time(),

  • TestCase.calculate_total_estimated_time(), User.filter(), User.get(),

  • User.update().

  • Fixed UI bugs: #590647, #583908, #570351, #588970, #588565, #578828, #562110,

  • #582958, #542664.

  • Fixed app bugs: #582517, #582910, #584838, #586684, #584342, #578828

  • #577820, #583917, #562110, #580494, #570351, #589124, #577130, #561406, #586085, #588595, #560791, #584459.

v3.0-1b2.svn2665 (Apr 16 2010)

  • Fixed #582517 - remove tag doesn’t work

  • Fixed #582910 - Automatic Display of Next Test Case Not working properly.

  • Fixed #574663

  • Completed Ability to edit environment for existed test run

  • Completed change case run assignee feature

  • Completed get form ajax responder

  • Optimized get info responder

v3.0-1b1.svn2650 (Apr 14 2010)

  • Initial completed most new features, extend database schema

  • Initial completed bookmark(watch list) feature(Models added)

  • Initial completed modify run environment value feature(Backend code)

  • Extend the schema for outside bug track system(Backend code)

  • Improve run mail feature

  • Optimized XML-RPC and the docs

  • Fixed ‘Save and add another’ crash when create new case

  • Fixed Assign case to run and create new run without default tester.

  • Fixed Build.create() bug

  • Fixed TestRun.get_test_case_runs() bug

v2.3-5.svn2599 (Apr 1 2010)

  • Fixed add tag to run cause to crash issue.

v2.3-4.svn2594 (Mar 29 2010)

  • Completed create/update functions for XML-RPC.

  • Fixed web browser compatible issues.

  • Improve review case progress.

v2.3-3.svn2577 (Mar 23 2010)

  • Fixed Webkit based browser compatible issues

  • Fixed TinyMCE in Webkit based browser compatible issues

  • Fixed UI Bug: #570351

  • Fixed UI Bug: #553308

v2.3-2.svn2568 (Mar 22 2010)

  • Fixed search case without product issue(r2567)

  • Fixed create run foot UI issue(r2566)

  • Fixed update component in search case issue(r2565)

v2.3-1.svn2564 (Mar 18 2010)

  • Complete most of XML-RPC functions.

  • Complete batch operation for case including setting priority, add/remove tag.

  • Fixed most of bugs.

v2.2-4.svn2504 (Mar 17 2010)

  • Fixed version in web ui incorrect.

v2.2-3.svn2504 (Mar 12 2010)

  • HOT BUG FIXING - #572487

v2.2-2.svn2504 (Mar 4 2010)

  • Fixed UI bug: Execute link exceed the width issue

  • Fixed UI bug: CC for run page display issue

v2.2-1.svn2500 (Mar 1 2010)

  • Add a new serializer for XMLRPC serialization

  • Fixed KerbTransport authorization issue

  • Change deployment method to WSGI

  • A lot of bugs fixing for application.

  • Fixed a lot of UI bugs

v2.1-4.svn2461 (Feb 11 2010)

  • Fixed application bug #561620

  • Fixed web UI bug #529807

  • Fixed web UI bug #561610

  • Fixed web UI bug #552923

  • Fixed web UI bug #561252

  • Fixed web UI bug #553308

  • Fixed web UI bug #558955

  • Fixed web UI bug #560091

  • Fixed web UI bug #560055

v2.1-3.svn2449 (Feb 2 2010)

  • Remove product version from case search page.

  • Optimize search case form.

v2.1-2.svn2446 (Feb 2 2010)

  • Fixed the case display with the bug added directly in case page in run issue.

  • Fixed edit case component selector issue.

  • Case product link to category now, disconnect from plan.

v2.1-1.svn2443 (Feb 1 2010)

  • Rewrite get case details to ajax code, for optimize performance

  • Add tag support for test run

  • Add bug to case directly now supported.

v2.0-3.svn2403 (Jan 18 2010)

  • Fixed hot issue #556382

v2.0-2.svn2402 (Jan 18 2010)

  • Fixed auto blind down issue

  • Fixed #555702

  • Fixed #555703

  • Fixed #555707 and #554676

  • Completed add tag to case/plan when create backend function

v2.0-1.svn2394 (Jan 15 2010)

  • Fixed most of bugs

  • The component will add to new product specific in clone function

  • Use Cache backend to handle session

  • More optimization

v2.0-1RC.svn2368 (Jan 11 2010)

  • Fixed a lot of bugs

  • Optimize new comment system

  • Completed new log system

  • Add new case fiter to plan

  • Improve new review workflow

  • Update

v2.0-1beta.svn2318 (Dec 29 2009)

  • First public beta release of 2.0

  • Rewrite most components

  • Add estimated time into run

  • Add test case review workflow

  • Add XML-RPC interface

  • Use a lot Ajax to instead of render whole page

  • Redesign the interface

v1.3-3.svn2261 (Dec 18 2009)

  • Add case run changelog show in run details page feature

v1.3-2.svn2229 (Dec 8 2009)

  • Fixed #544951

  • Fixed #544229

  • Fixed #543985

  • Fixed #544951

  • Fixed reporing when plan count is null issue

  • Update overview report of product statistics SQL

v1.3-1.svn2213 (Dec 4 2009)

  • Fixed #541823

  • Fixed #541829

  • Optimize delete case/run ACL policy.

  • Initial completed Reporting feature.

  • Initial XML-RPC interface

v1.2-3.svn2167 (Nov 25 2009)

  • Made a mistake in checkout the source, so rebuild it.

v1.2-2.svn2167 (Nov 25 2009)

  • [2152] Fixed bug #530478 - Case run case_text_version is 0 cause to file bug crash

  • [2154] Fixed bug #538747

  • [2156] Use QuerySet update function to batch modify the database

  • [2158] Fixed bug #540794 - [FEAT]It should stay in the same tab/page after refreshing

  • [2162] Restore search detect in plan all page

  • [2163] Fixed bug #538849 - Test case execute comment garbled

  • [2165] Fixed bug #540371 - Where are Cloned Tests

v1.2-1.svn2143 (Nov 20 2009)

  • Fixed UI bug #530010 - clean float dialog

  • Fixed UI bug #531942 - Correct strings in system

  • Fixed UI bug #536996

  • Fixed UI bug #533866 - sort case in test case searching

  • Optimize a lot of UI and frontend permission control

  • Fixed bug #536982 - Now the run must be required with a case

  • Remove manage case page

  • Enhanced sort case feature with drag and drop in plan and run

  • Completed change multiple case status at one time

  • Completed change run status feature

  • Completed clone multiple plan feature

  • Completed upload plan document with ODT format

  • Fixed bug #533869 - “Save and add another” case button results in a traceback

  • Completed case attachment feature

v1.1-1.svn2097 (Nov 9 2009)

  • Release 1.1 version TCMS

  • Completed clone case/run feature

  • Refined the UI structure

  • Add XML-RPC interface for ATP

v1.0-9.svn2046 (Nov 9 2009)

  • Add mod_auth_kerb.patch for authorize with apache kerberos module.

v1.0-7.svn2046.RC (Oct 22 2009)

  • Improve templates

v1.0-6.svn2046.RC (Oct 22 2009)

  • Imporove test plan clone feature

  • Fixed failed case run count in run details page


v1.0-5.svn2042.RC (Oct 21 2009)

  • Realign the version to 1.0

  • Fixed most of bugs

v2.0-4.svn2006.RC (Oct 16 2009)

  • Fixed other unimportant bugs, release RC.

v2.0-3.svn1971 (Oct 14 2009)

  • Fixed most of bugs and get ready to GA.

  • KNOWN ISSUE: Search case to add to plan just complete the page design, is waiting for logic function.

v2.0-2.svn1938 (Sep 30 2009)

  • Rewrite assign case page

  • Rewrite attachment implementation

  • Search with environment is available

  • Fixed app bugs:

  • Fixed #524578 - The Product version will display after finish searching plans

  • Fixed #524568 - Cannot reset the status of test cases when the status is “Passed” or “Failed”

  • Fixed #524534 - Can’t add a new test case

  • UI Bugs:

  • Fixed #524530 - Please adjust the Next button in create new plan page

  • Fixed #525044 - The buttons are not aligned and missing some checkboxes when searching cases

  • Fixed #524568 - Cannot reset the status of test cases when the status is “Passed” or “Failed”

  • Fixed #524140 - Cannot create test plan when the uploaded plan document’s type is HTML

  • Fixed #525614 - The label that counts the number should at the same place on every ADMIN’s sub-tab

  • Fixed #524777 - [FEAT]It should have breadcrumbs on Admin tab have added breadcrumb to admin page

  • Fixed #525630 - The calendar and clock icon should be kept on the same line with date and time

  • Fixed #525830 - The same buttons aligned in different tabs should keep consistent

  • Fixed #525606 - “Is active” should be kept on the same line with its check-box

v2.0-2.svn1898 (Sep 23 2009)

  • Feature:

  • Completed environment element modfiy/delete feature in admin

  • Fixed #525039 - [FEAT]It should let users add notes and set status of test cases even when the status of the test run is “Finished”

  • UI Bugs:

  • Fixed #521327 - Test Plan Document translation not quite right

  • Fixed #524230 - can’t change the “automated” field of a test case

  • Fixed #524536 - Suggest to adjust the add new test case page width and the button “Add case”

  • Fixed #524530 - Please adjust the Next button in create new plan page

  • Fixed #518652 - can’t remove test case from a plan

  • Fixed #524774 - [FEAT]It should have a title on each of the add “Admin=>Management” webpage

  • Fixed #525044 - The buttons are not aligned and missing some checkboxes when searching cases

  • Fixed #524778 - [Admin]The add icons should be after the fields

v2.0-1.svn1863 (Sep 15 2009)

  • Remove case from plan

  • Sort case in plan

  • Fixed edit case issue

v2.0-1.svn1833 (Sep 1 2009)

  • Fixed a lot of bug.

  • Redesign the interface.

v2.0-1.svn1799 (Jul 22 2009)

  • Rewrite most of components

  • Add tables from Django

  • dump version to 2.0 (trunk development version)

v0.16-6.svn1547 (Mar 19 2009)

  • require kerberos authentication

  • svn r1547

v0.16-5.svn1525 (Mar 17 2009)

  • mark tcms/ as being a config file

  • add dependency on mod_ssl

v0.16-4.svn1525 (Mar 17 2009)

  • substitute RPM metadata into the page footer so that it always shows the exact revision of the code

  • bump to svn revision 1525

v0.16-3.svn1487 (Mar 12 2009)

  • drop the dist tag

v0.16-2.svn1487 (Mar 12 2009)

  • add build-requires on Django to try to get pylint to work (otherwise: tcms/ [E0602] Undefined variable ‘patterns’)

v0.16-1.svn1487 (Mar 12 2009)

  • 0.16

  • add build-requires on python-setuptools

v0.13-4 (Feb 24 2009)

  • fix regexp for pylint errors

v0.13-3 (Feb 24 2009)

  • add code to invoke pylint. Stop building the rpm if pylint finds a problem.

v0.13-2.svn1309 (Feb 18 2009)

  • add mod_python and python-memcached dependencies

  • move static content to below datadir

  • add apache config to correct location

v0.13-1.svn1294 (Feb 12 2009)

  • initial packaging