Blog

"500K banner"

We are happy to announce that Kiwi TCMS has been downloaded more than 500000 times via Docker Hub! You can check the real-time stats here.

Thank you very much and Happy Testing!


If you like what we're doing and how Kiwi TCMS supports various communities please help us!

Kiwi TCMS 10.1

We're happy to announce Kiwi TCMS version 10.1!

IMPORTANT: 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! 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  788af5c3f067    800 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 10.0

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
  • Time-stamp 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

Settings

  • Change TEMP_DIR to /var/tmp which affects the location in which intermediate 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

Database

  • Add new fields to TestCase - setup_duration, testing_duration and a calculatable expected_duration attribute (Angelina)
  • Remove unused TestRun.product_version field

API

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

    • product_version -> plan__product_version
    • product_version__value -> plan__product_version__value

    Warning

    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 progress-bar 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 Enterprise v10.1-mt

  • Based on Kiwi TCMS v10.1
  • Container image built with Python 3.8
  • Update kiwitcms-tenants from 1.4.3 to 1.4.4

IMPORTANT: monthly subscription price for Kiwi TCMS SaaS offering has been updated to 50 $/mo for new subscriptions. Existing customers will not be affected!

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!

Kiwi TCMS 10.0

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

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!

Kiwi TCMS has applied for GSoC 2021

"GSoC banner"

Dear open source hackers, we are happy to share that Kiwi TCMS has applied to Google Summer of Code 2021 as a mentoring organization!

While we're very early in the program timeline and we still don't know whether Kiwi TCMS will be accepted or not we'd like to use this opportunity and outline several areas which are good candidates for GSoC fellows to work on. Some of the tasks are also eligible for our open source bounty program. The majority of them require some knowledge of Python and Django.

Let's Encrypt SSL integration

By default Kiwi TCMS' container image comes with a self-signed SSL certificate! This is irritating because all modern browsers issue warnings for that and the majority of deployments do not have the infrastructure to distribute the self-signing Certificate Authority certificate files, e.g. make the browser trust the provided certificate.

This issue is compounded by the fact that production SSL certificates, issues by a well-known authority must be introduced from the outside. While this is documented there are fair amount of testers who do not have sufficient proficiency with Docker to do so.

The result is that we see many Kiwi TCMS deployments in the wild which completely disable HTTPS and users struggling to configure their SSL certificates.

An integration with Let's Encrypt would be a good choice. We've tried a proof of concept but had troubles running their official client on our container image.

The challenge will be to use a Let's Encrypt client that is supported on the CentOS Linux distribution (that's what we use) or a frequently maintained distribution independent package. Another challenge will be that the ACME protocol used needs to be able to talk back to the system asking for a new certificate. In most cases Kiwi TCMS will be deployed behind a firewall and initial certificate request/renewal requests may be able to go one way only.

Securing 3rd party dependencies

Kiwi TCMS itself uses services and tools like Snyk, npm audit, Coverity and Bandit against our own and against 3rd party source code. On the other hand some of our components (e.g. PatternFly) do not perform any kind of security testing. The starting point to unravel this is Issue #871.

As a minimum all issues reported by bandit & coverity against 3rd party dependencies must be sorted out:

  • Figure out if we execute our tools in the appropriate way as to not report unnecessary issues
  • Dissect all of the issues, especially ones from Bandit, report them to their upstream community, discuss and decide how to fix or ignore the issue and send a pull request to upstream
  • Figure out how to keep track/dashboard whether or not all of our runtime dependencies are using the same tools as we are (they are either open source or free to use for open source projects) since they seem to be good tools
  • Work with any upstream (2nd, 3rd, 4th, etc level dependencies) communities to adopt said tools and fix issues as they are discovered

All of this will ultimately benefit a broader community than Kiwi TCMS alone.

Integration with GitHub Actions and GitLab pipelines

As part of our continuing integration with GitHub we need to have an action which would report the results to Kiwi TCMS similar to how our automation framework plugins do!

You should start with GitHub because this is what Kiwi TCMS uses and we can immediately eat our own dog food. Originally proposed in Issue #817 then moved to github-app #10 with a slightly different focus.

Next (or in parallel) would be similar functionality for GitLab pipelines, proposed in Issue #1421

Java hacking

Kiwi TCMS does have a native junit-plugin but we are no experts in Java. In the testing world however Java is a very popular language and we need help building on top of the existing library and developing several other tools:

C# and Objective-C hacking

  • Issue #2020 - reporting plugin for NUnit, similar to other existing automation framework plugins. We're not sure how popular NUnit vs other test runners in the C# world is but it could be a good basis for developing future plugins. The challenge here is mostly for us since we're a Linux based team
  • Issue #1316 - reporting plugin for Kiwi-bdd a simple BDD for iOS. Again the challenge here would be on us since we don't have experience building and testing applications on iOS

Migration to Patternfly v4, possibly with React JS

The visual component library that Kiwi TCMS uses is called PatternFly. First it is a standard describing visual design, widget behavior and development hints for enterprise applications. Then it provides an actual implementation of their standards.

Kiwi TCMS is built with PatternFly v3 using raw HTML + CSS. This approach allowed us to get started quickly and gradually migrate from our legacy UI. It also works very well with Django which is structured around rendering HTML templates.

A major task is switching over to PatternFly v4 where there could be some differences in component syntax.

Since Kiwi TCMS v8.8 and v8.9 we have completely redesigned the TestPlan and TestRun pages. As they are the ones with the most possible interactivity and functionality we have hit the need to keep internal state on the front-end. This is rather cumbersome to manage by hand and calls for a more modern solution using React. There is PatternFly implementation as React components too.

The starting point is Issue #1323.

The volume of work is a challenge because all pages need to be migrated and we're not sure if this can be done and released in steps or all pages should be migrated and released together. In other words we don't know if shipping UI based on both PatternFly v3 and v4 will work.

The next challenge is refactoring the TestRun and TestPlan pages with React, keeping all existing functionality intact. A challenge here will also be the transactional nature of Django where it receives a browser request and sends a response, usually rendered HTML content! Lots of functionality happens both on the backend as well as in the HTML templates themselves - for example translations and permission checks.

JavaScript hacking

  • Issue #1281 - start using ESLint against our code base and clean-up all related issues
  • Issue #1910 - replace SimpleMDE with EasyMDE. Ideally we would like to depend on other active open source libraries and the rich text editor what we use looks like it needs replacement. We've got a few extra features hooked into the editor like syntax highlighting with dynamic loading of language definitions, support for inline attachments and a security override. All of these need to be kept in place.
  • Issue #1919 - reconsider using MomentJS. Well it looks like its original authors encourage everyone to actually stop using it and we should consider doing so as well. As it stands MomentJS is not widely used inside Kiwi TCMS except for timezone conversions in the browser. Should be relatively easy to replace, preferably with a vanilla JavaScript implementation. Either way we first need to know what actually has to be done.

Remaining telemetry

Testing Telemetry is one of our cool features and since we've started to redesign the legacy report feature testers are very happy with it. There are still some bits and pieces that are missing: Issue #616, Issue #1923, Issue #1924, Issue #1925, Issue #1926, Issue #1927, Issue #1928, Issue #1929, Issue #1940.

These generally depend on having the ability to record execution times in our database and afterwards the features are similar but relatively independent of one another.

Web hooks

Kiwi TCMS should be able to better integrate with 3rd party systems. This feature will allow users to configure custom URL to which Kiwi TCMS will send HTTP POST requests on certain events. It looks like we can base the implementation on top of django-rest-hooks and pair it up with RestrictedPython for further flexibility.

This feature is being tracked in Issue #1080 and Issue #913 but needs a more detailed definition.

Anything else

All of the proposals above are items which we have in our backlog and need help with. However participation in the Google Summer of Code program is not limited only to them. You are free to propose any other ideas/projects on which you would like to work during the summer. We would be happy to accept your contributions if we make it into the program.

Happy Testing!


If you like what we're doing and how Kiwi TCMS supports various communities please help us!

Project roadmap 2021

Hello testers, this blog post outlines Kiwi TCMS roadmap for 2021 and what we feel is important to us!

roadmap image 2021

Project sustainability

The big goal towards which we are striving is to turn Kiwi TCMS into a sustainable open source project. For now this means three key areas:

1) Team
2) Technical
3) Community & Adoption

Team

Right now we have a core team with 3 members, 3 more members on-boarding and 2 interns. In the past year we weren't successful into turning more people into core-team members. I have seen several problems and core-team will significantly reconsider how we approach & recruit people to join the team, how we on-board and help them so that they can become productive and fully fledged team members.

Long term focus is improving and strengthening core-team which also implies a level of responsibility and performance criteria which core-team members must meet.

Goal: 1 PR/week/person as broad measure of individual performance so that we can operate with a predictable capacity.

Goal: (re)structure internal team processes around candidates and newcomers! Note: These are not public at the moment.

Technical

The areas shown on the picture above will receive more priority.

Goal: complete remaining Telemetry features.

Goal: complete remaining refactoring with major focus in pylint issues, migration to Patternfly v4 and eslint issues.

Goal: improve SSL configuration with strong bias towards Let's Encrypt being configured by default.

Goal: provide support for web hooks so that Kiwi TCMS can be integrated more easily/flexibly with 3rd party systems. We're aiming for Kiwi TCMS to be able to POST webhooks to external URLs and inform them about events in the system.

Community & Adoption

Last year Kiwi TCMS had massive success despite not visiting many events. The open source community spirit is important to us both in terms of technical collaborations and in terms of features & exposure which drives further adoption of Kiwi TCMS downstream.

Goal: complete bug-tracker integration milestone.

Goal: extended GitHub integration via GitHub actions which will report results into our database. We do have other ideas as stretch goals.

Goal: similar to GitHub actions we're looking towards GitLab pipelines and similar integration with GitLab.

Goal: continue our collaboration with Major League Hacking Fellowship program.

Goal: apply for the Google Summer of Code program and work with students if selected.


If you like what we're doing and how Kiwi TCMS supports various communities please help us!

Kiwi TCMS 9.0

We're happy to announce Kiwi TCMS version 9.0!

IMPORTANT: 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!

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  f98908772a2a    695 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.9

Improvements

  • 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

Settings

  • Remove unused kiwi.rpc log handler from LOGGING setting

Database

Warning: 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!

    Warning:

    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

API

Warning: 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 anonymous 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 Enterprise v9.0-mt

  • Based on Kiwi TCMS v9.0
  • Update kiwitcms-github-app from 1.2.1 to 1.2.2
  • Update kiwitcms-tenants from 1.3.1 to 1.4.2

For more info see https://github.com/kiwitcms/enterprise#v90-mt-12-jan-2021

Automation framework plugins

The following test automation framework plugins have been upgraded to work with Kiwi TCMS v9.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!

Roadmap status report for 2020

Another year rolls out and despite all difficulties it is by far the strongest one for Kiwi TCMS!

Stats

  • 2 physical events and a few virtual ones
  • 12 releases
  • 24 language translations
  • 683 PRs, most of them closed & merged
  • Reached Issue/PR number 2000
  • Reached 5000 commits
  • Reached 8000 registrations via https://public.tenant.kiwitcms.org
  • Reached 270K downloads via Docker Hub

Status update

From the 2020 roadmap we've established 3 main areas to work on. Their completeness scores are:

1) Team - 30%
2) Technical - 70%
3) Community - 100%

Average score is 65% completion!

Team

Overall the team has stalled its growth and improvement. Contributors which started onboarding a year ago are still under-productive and do not meet our criteria to become core-team members. The average team productivity is far beyond the goal of 1PR/week/person. This is largely due to contributors not being active on their items, very long periods between pull requests and longer than average time for closing pull requests.

The only positive side in this area is that core-team has improved its internal processes, is meeting regularly, discusses issues with members when they arise and relatively quickly spots problems and acts on them.

Technical

The dominating effort this year was refactoring the remaining legacy UI and converting everything to PatternFly. The effect of this is reduced code complexity and improved CodeClimate score/technical debt, removed vendored-in JavaScript dependencies and lots of unused code in favor of using the existing API.

Additional work has been done on closing bugs, implementing some features, integration with new bug tracking systems and improvements around the telemetry feature.

However there is still a lot of work to be done until all telemetry pages are complete. There are also around 30 pylint issues remaining which require internal refactoring and more legacy code cleanup. It's getting there but it's also getting harder.

Community

This area turned out to be our strongest one this year. We started very strong at FOSDEM 2020 and collaborated with multiple communities on plugins, code & translation contributions, adoption of Kiwi TCMS and general partnerships around open source.

Kiwi TCMS got a substantial grant from the Mozilla foundation which helped bootstrap our open source bounty program and internship program.

In May we reached 100K downloads on Docker Hub then in October we've surpassed 200K. Next month we'll reach 300K!

Summary

2020 was definitely a year full with uncertainties and hardship. It was not what we were used to and there were many ideas and lead projects that looked very promising in the beginning of the year but didn't materialize for a multitude of reasons.

Overall Kiwi TCMS, its team and its community did very well and I am confident that next year we can achieve more together!

Happy Testing and Happy New Year!


If you like what we're doing and how Kiwi TCMS supports various communities please help us!

Excellence in Innovation 2020 award for Kiwi TCMS

"Virtual show screen"

Dear testers, we are happy to share that Kiwi TCMS has been distinguished with the Excellence in Innovation 2020 award by Applied Research and Communications Fund in Bulgaria. This is also the first award that we receive locally and we're very happy about that!

Kiwi TCMS was a finalist in the Digital transformation category for the fact that leveraging the power of open source we've transformed an abandoned project (the predecessor of Kiwi TCMS) into a usable product with over 270000 downloads to date!

If you would like to checkout the awards ceremony and all of the particiants go to www.innovation.bg, we're listed under Отворени Технологии България ЕООД (the name of our parent company)! Text and video is not in English however!

Happy Testing!


If you like what we're doing and how Kiwi TCMS supports various communities please help us!

Kiwi TCMS 8.9

We're happy to announce Kiwi TCMS version 8.9!

IMPORTANT: 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. You can explore everything at https://public.tenant.kiwitcms.org! This is also 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)

Docker images:

kiwitcms/kiwi       latest  9bcfea3a532e    652 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.8

Improvements

  • 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 manage.py initial_setup command for one-stop initial setup (Ivajlo Karabojkov)
  • Bug tracker integration with BitBucket (bitbucket.org). Fixes Issue #1916 (@cmbahadir)
  • Complete redesign and refactoring of Test Run page:
  • TestCaseStatus can now be customized. Fixes Issue #1932
  • Update documentation & screenshots

Settings

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

Database

  • New migrations for customizeable TestCaseStatus

API

  • Add TestExecution.history() method
  • 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 Enterprise v8.9-mt

  • Based on Kiwi TCMS v8.9

For more info see https://github.com/kiwitcms/enterprise#v89-mt-07-dec-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!

"Cfp banner"

Attention open source testers: Testing and Automation devroom at FOSDEM'21 is happening next year! Call for participation is now open. Checkout https://fosdem-testingautomation.github.io/ for more information!

Happy Testing!


If you like what we're doing and how Kiwi TCMS supports various communities please help us!

Kiwi TCMS 8.8

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()

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!

Kiwi TCMS celebrates 200K+ downloads

"200K banner"

We are happy to announce that Kiwi TCMS has been downloaded more than 200000 times via Docker Hub! You can check the real-time stats here. To celebrate with us subscribe for a SaaS and/or Enterprise subscriptions using coupon code 200KOFF at checkout!

Thank you very much and Happy Testing!


If you like what we're doing and how Kiwi TCMS supports various communities please help us!

Hello testers, recently we had a chat with Gjore Zaharchev, a QA manager at Seavus and Testing Coach at SEDC Software Testing Academy in Skopje. Here is their story and how they use Kiwi TCMS!

Seavus Educational and Development Center is a private company as part of the Seavus Group and a specialized training center for education of staff in the fields of programming, design, computer networks and software testing. Around 90 students pass through their software testing academy every year with 60 students enrolled thus far. The training program is 6 months and covers many basic IT skills, manual testing, ISTQB fundamentals and automation testing. SEDC is located in Skopje, North Macedonia.

Hands-On Lab Activities

The study program includes multiple individual and team projects, intermediate exams and a final project. These are intended to exercise the most commonly used test design techniques and practice writing up the test scenarios. All scenarios are written directly in Kiwi TCMS. We've even seen test plans and test cases created during Christmas and the New Year holidays last year!

The software under test is usually the programs developed by students from our Academy for Programming, says Gjore. Later in the program we use real websites in order to show some bugs in the wild, he continues. On occasion students have found interesting problems with the websites of Booking.com and WizzAir. They've also managed to find a critical issue on one of our local systems. These are the trials and tribulations of teaching & testing in the wild.

Kiwi TCMS team still remembers one of Alex's training sessions where we used the website of an actual cinema. Unfortunately they went out of business and shutdown the victimized website right in the middle of the session. ;-)

Why did you decide to use Kiwi TCMS

When searching for a TCMS platform for the academy one of the decisive factors was cost. By being open source Kiwi TCMS has the side benefit of having zero initial usage cost which was very important for us. Regardless of that Kiwi TCMS is very easy to install & setup using Docker, very easy to on-board new users and generally well received by everyone.

This is a huge benefit for students because they can experiment with Kiwi TCMS and immediately see how some items work when executing testing workflows. For example they can visualize how a regression test run looks like compared to a test run for a critical security fix; or they can simulate working in groups to cover execution of a larger test plan.

What do your students say

Overall they like the workflow and can easily navigate within the user interface. They feel very positive because there is no complexity in the system and it is very intuitive. One of the areas which often receives questions is the ability to record test automation results!

Answer: Kiwi TCMS has the ability to fetch names and test results directly, via plugins for several test automation frameworks while others are on our backlog - TestNG, Jenkins, C#/NUnit! Anyone interested is welcome to Subscribe to each GitHub issue and follow the progress. Some issues are also part of our open source bounty program so we urge students to take a look and contribute!

Anything you want to ask our team

At SEDC we'd like to know what are your plans for Kiwi TCMS in the future?

Answer: Our plans, like our software, are transparent, check-out posts tagged roadmap! For 2020 this is refactoring of the last remaining legacy bits, continue work on our Telemetry feature and more work towards integration with various bug trackers and test automation frameworks. An extension to that is tighter integration with the GitHub platform!

Help us do more

If you like what we're doing and how Kiwi TCMS supports various communities please help us!


Thanks for reading and happy testing!

Kiwi TCMS is partnering with Vola Software

We are happy to announce that Kiwi TCMS is going to partner with Vola Software to provide 2 interns with opportunities for hacking open source and bootstrapping their careers!

Vola Software is a custom software development company in one of the poorest regions of the European Union and a long-time contributor to their local ecosystem via Vratsa Software Community. They are located in Vratsa, Bulgaria.

Internship program

Alexander Tsvetanov and Vladislav Ankov are joining the Kiwi TCMS team for a 10 month adventure until the end of July 2021 with the opportunity to continue for another year afterwards!

Both Sasho and Vladi are students in the Professional Technical Gymnasium in Vratsa and are required to work part-time as junior software developers during the last 2 years of their education. Given that they have very limited practical experience and the additional red tape around hiring youngsters many software companies directly avoid such kind of relationship. This creates a catch-22 circle for both employers who are looking to hire somewhat experienced young people and youngsters who are looking to advance their practical skills.

Here's where Kiwi TCMS steps-in! What better way to improve practical knowledge than contributing to an actively used and actively maintained open source software! We are nearing the 200K downloads mark on Docker Hub so changes made by Sasho and Vladi will be visible to a very big pool of our users and customers!

Both have already started their open source adventure last week and are currently going through some training. However they were faced with real problems which resulted in bug discovery and a pull request for python-bugzilla underlined by a 20 years old issue in Python. How's that for a start ?

Administrative

Vola Software is the direct employer for Sasho and Vladi because they have the necessary permits and experience required for hiring youngsters. Kiwi TCMS is the direct technical mentor and will be acting as a customer to Vola Software!

Vola Software will be paying a minimal salary to our interns as required by law. Kiwi TCMS will reimburse the full amount while Vola Software will be covering their accounting and administrative expenses. Both Sasho and Vladi will also be eligible for our open source bounty-program as an extra stimulation!

All expenses will be fully transparent and visible via our Open Collective page!

Help us do more

If you like what we're doing and how Kiwi TCMS supports various communities please help us!


Thanks for reading and happy testing!

We are happy to announce that Kiwi TCMS is going to partner with the MLH Fellowship open source program which is a 12 week internship alternative for students interested in becoming software engineers.

Major League Hacking (MLH) is a mission-driven B-Corp focused on empowering our next generation of technologists. Every year, more than 100,000 developers, designers, and makers join the MLH community to gain hands-on experience and build their professional networks. They are headquartered in the Greater New York Area, USA but operate world-wide.

Fellowship program

The Fall 2020 cohort runs between October 5 - December 21 and we're already into the Contributing phase of the program. Fellow students will be working on open issues from our backlog with a focus on tasks from our open source bounty program but they can really work on any open task!

Once a pull request has been made it will undergo first round code review by Cory Massaro who is the dedicated MLH Python mentor. Once Cory gives the +1 each pull request will be reviewed by a member of the Kiwi TCMS core team like usual.

To minimize the risk of conflicts between contributors we are going to apply the following rules:

  • Each MLH fellow would add a comment on the issue they are interested in (applies to other contributors too);
  • The issue will be assigned to them (new);
  • The issue will be labeled with the MLH Fellowship label (new);
  • The following comment will be added: This issue/bounty has been assigned to an MLH fellow who is currently working on it. Pull requests towards the same issue from other contributors will not be considered at this time. Please pick something else to work on!

Upon successful completion of tasks all MLH fellows will be eligible to claim their bounties via our Open Collective page. This is the same process other contributors go through, there is no difference.

Kiwi TCMS commits 2 core-team members who will serve office hours on the MLH Fellowship Discord server for couple of hours per week in order to answer questions and keep the ball rolling. We also commit to having bi-weekly meetings with MLH mentor(s) during the duration of the program.

Kiwi TCMS would also like to thank our friend Eddie Jaoude for putting us in touch with MLH and helping bring this partnership to reality. Thank you Eddie!

Help us do more

If you like what we're doing and how Kiwi TCMS supports various communities please help us!


Thanks for reading and happy testing!

Hello testers, as you know our friends at Pionir are working on physical hardware which can be used for interactive training and explanation of the Black-box testing technique. The inspiration comes from James Lyndsay’s Black Box Puzzles and Claudiu Draghia.

We have the source code of 3 boxes already published at https://github.com/kiwitcms/black-boxes but still missing bill of materials, design files for 3D printing and some basic instructions how to put everything together. There was a delay in delivery of some components but most of the work is close to completion. You may subscribe to issues for each box to follow the progress! Here are some images & videos from the development process.

Wason 2-4-6 box

Wason 246 box

Peltzman effect box

Peltzman effect box

Salience bias box

Salience bias box

According to Pionir's own words: We are testing the salience box and trying to cause emotional effect of an element. Vuk made a mistake and now he can't turn it off :D. How's that for dogfooding?

Help us do more

If you like what we're doing and how Kiwi TCMS supports the various communities around us please nominate us as GitHub Stars!


Thanks for reading and happy testing!

Kiwi TCMS 8.7

We're happy to announce Kiwi TCMS version 8.7!

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. 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  1f2461b1facd    643 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.6

Improvements

  • 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:
        INSTALLED_APPS.append('captcha')
    
        RECAPTCHA_PUBLIC_KEY = '......'
        RECAPTCHA_PRIVATE_KEY = '.....'
        RECAPTCHA_USE_SSL = True
    

    For more info see https://www.google.com/recaptcha/admin/

  • 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

Settings

  • Remove setting PUBLIC_VIEWS

API

  • 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 Enterprise v8.7-mt

  • Based on Kiwi TCMS v8.7
  • Overrides for setting PUBLIC_VIEWS have been removed
  • Update django-ses from 1.0.2 to 1.0.3
  • Update kiwitcms-github-app from 1.1 to 1.2
  • Update kiwitcms-tenants from 1.2.1 to 1.3.1

For more info see https://github.com/kiwitcms/enterprise/#v87-mt-16-sep-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!

Please nominate @kiwitcms as a GitHub Star

GitHub Star nomination

After our recent success we again ask the community to support Kiwi TCMS.

Steps to reproduce:

  1. Go to https://stars.github.com/
  2. Click the Sign in button and Authorize the GitHub-Stars application
  3. Make sure you are on the Nominate page, https://stars.github.com/nominate/
  4. Type kiwitcms as the username. The @ character is provided automatically
  5. Type the following text for your reasoning: they took an abandoned project and turned it into the leading open source test management system with more than 150k downloads with users & contributors across the world!
  6. Click on the checkbox to acknowledge your nomination
  7. Click the Submit nomination button!

Expected results:

  1. You fit into the 180 characters provided for nomination
  2. Your submission is recorded by GitHub

Why are we doing this

GitHub Stars is a program that recognizes those who go above and beyond and help inspire and educate their communities which is exactly what the Kiwi TCMS team has been doing from our very start! Checkout our community blog posts for more information!

This program will give us access to cool new features on the GitHub platform and also let us showcase what we do before a larger audience!

Thank you for helping us and happy testing!

Kiwi TCMS is a finalist in the 2020 .eu Web Awards

Click here to vote for Kiwi TCMS

Kiwi TCMS is happy to announce that our website https://kiwitcms.eu is a finalist in the 2020 .eu Web Awards in the Leaders category! Big Thank You to everyone who voted for us!

Our team is also very happy that we are not the only open source finalist. Congratulations to the OpenScan project and their community!

We are still committed to keeping our earlier promise and use the award to represent the larger open source community! The decision is now in the hands of the jury. Wish us good luck!

Kiwi TCMS 8.6

We're happy to announce Kiwi TCMS version 8.6!

IMPORTANT: this is a high severity security update which includes improvements, bug fixes, database migrations, API changes, translation updates and new tests. It is the fourth release to include contributions via our open source bounty program. 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  f2c21b370cd9    639 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.5

Security

  • 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

Improvements

  • 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 manage.py 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

Warning:

The auth.view_user permission is not granted by default because the profile page contains personal information like names and email address. Administrators can grant this permission on a group or individual basis if they are OK with sharing this information.

Database

  • Migrations which manipulate data (contain RunPython) can now be rollbacked. See ./manage.py migrate --plan for the order in which migrations are applied (Bryan Mutai)
  • Increase Product.name size from 64 to 255 characters

API

  • 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
    • Bug.report() -> 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 Enterprise v8.6-mt

  • Based on Kiwi TCMS v8.6

For more info see https://github.com/kiwitcms/enterprise/#v86-mt-23-aug-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!

Page 1 / 6

Older Posts