We're happy to announce Kiwi TCMS version 8.8!
IMPORTANT: 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. You can explore everything at https://public.tenant.kiwitcms.org!
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)
Docker images:
kiwitcms/kiwi latest 4b31ecf8ab5b 654 MB kiwitcms/kiwi 6.2 7870085ad415 957 MB kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB kiwitcms/kiwi 6.1 b559123d25b0 970 MB kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB kiwitcms/kiwi 5.3.1 a420465852be 976 MB
Changes since Kiwi TCMS 8.7
Improvements
- 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 buttons 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
Settings
- 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/common.py for more information.
Database
- 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.
important:
Requires PostgreSQL, sqlite3 >= 3.8.3, MariaDB >= 10.2.2 or MySQL >= 8.0 (if running without ONLY_FULL_GROUP_BY).
warning:
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!
API
- 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()
Translations
- Updated Bulgarian translation
- Updated Chinese Simplified translation
- Updated Czech translation
- Updated French translation
- Updated Hungarian translation
- Updated Italian translation
- Updated Japanese translation
- Updated Slovenian translation
Kiwi TCMS Enterprise v8.8-mt
- Based on Kiwi TCMS v8.7
- Update kiwitcms-github-app from 1.2 to 1.2.
For more info see https://github.com/kiwitcms/enterprise#v88-mt-07-nov-2020
How to upgrade
Backup first! If you are using Kiwi TCMS as a Docker container then:
cd path/containing/docker-compose/ docker-compose down docker-compose pull docker-compose up -d docker exec -it kiwi_web /Kiwi/manage.py migrate
Refer to our documentation for more details!
Happy testing!
---
If you like what we're doing and how Kiwi TCMS supports various communities please help us!
- Give ⭐ on GitHub;
- Nominate Kiwi TCMS as GitHub Stars;
- Donate via Open Collective as low as 1 EUR;
- Join our newsletter and follow all project news;
- Become a contributor and an awesome open source hacker;
- Become a customer and we'll share our profits with the community