We're happy to announce Kiwi TCMS version 10.0!
IMPORTANT: 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 also the first release after Kiwi TCMS reached 400K pulls on Docker Hub! You can explore everything at https://public.tenant.kiwitcms.org!
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 9f23186803d5 736 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 9.0
Security
- 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
Improvements
- 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
Database
- 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)
API
Warning
This release changes how Kiwi TCMS serializes API results and thus introduces multiple backwards incompatible changes.
Important
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 tcms.management.admin. 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
Translations
- Updated Bulgarian translation
- Updated German translation
- Updated Hungarian translation
- Updated Polish translation
Kiwi TCMS Enterprise v10.0-mt
- Based on Kiwi TCMS v10.0
- Update kiwitcms-github-app from 1.2.2 to 1.2.4
- Update kiwitcms-tenants from 1.4.2 to 1.4.3
- Update django-python3-ldap from 0.11.3 to 0.11.4
Automation framework plugins
The following test automation framework plugins have been upgraded to work with Kiwi TCMS v10.0:
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