Kiwi TCMS 7.3

We're happy to announce Kiwi TCMS version 7.3!

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!

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  4026ee62e488    556 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 7.2

Security

  • Update Django from 2.2.8 to 3.0.2

Improvements

  • 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

Database

  • 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

API

  • 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

Refactoring

  • 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

GitHub integration

The hosted version of Kiwi TCMS ships with additional GitHub integration. See GitHub App announcement and github-app for more information!

Upcoming conferences

The next two events we are going to participate are:

If you are around come and say "Happy testing"!

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 pull kiwitcms/kiwi
docker pull centos/mariadb
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate

WHERE: docker-compose.yml has been updated from your private git repository! The file provided in our GitHub repository is an example. Not for production use!

WARNING: kiwitcms/kiwi:latest and docker-compose.yml will always point to the latest available version! If you have to upgrade in steps, e.g. between several intermediate releases, you have to modify the above workflow:

# starting from an older Kiwi TCMS version
docker-compose down
docker pull kiwitcms/kiwi:<next_upgrade_version>
edit docker-compose.yml to use kiwitcms/kiwi:<next_upgrade_version>
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate
# repeat until you have reached latest

Happy testing!

Kiwi TCMS is migrating from OAuth to GitHub App

Hello testers, Kiwi TCMS is migrating from its OAuth backend to the so called "GitHub App" backend in order to enable further integration with GitHub's PR flow as stated previously in our yearly goals. This blog post outlines the differences between the old and the new!

The old OAuth application only had access to your username, name and email for authentication purposes. Its authorization screen looked like so:

OAuth login screen

GitHub Apps on the other hand are designed for more granular access and tighter integration with the GitHub platform. This type of application still allows you to perform 1-click login into https://public.tenant.kiwitcms.org. If this is your first time logging into Kiwi TCMS after the migration you will see the following screen:

App login screen

Notice how the heading, information section and action button are slightly different! The important section is Resources on your account! We still only need your name, username and email address! Existing Kiwi TCMS accounts (from before the migration) will continue to work and they will still have access to all of their data previously created. Authorization of this new GitHub app (e.g. login only) does not give it permissions to access your repositories and act on your behalf.

To permit this GitHub App to access your repositories and/or act on your behalf you must Install it first. That is tell Kiwi TCMS GitHub integration code what kind of resources from your GitHub account it is allowed to access. You may install into your personal GitHub account or an organizational account! You may do this by following the Install & Authorize button on our home page or directly from https://github.com/apps/kiwi-tcms! The screen should look like this:

App installation screen

Initially we ask for read-only access to a few resources so Kiwi TCMS can start receiving webhooks from GitHub and synchronize information about your repositories into our database. This is documented both on the app installation screen itself (required by GitHub) and on https://github.com/kiwitcms/github-app!

Further ideas about integration between GitHub and Kiwi TCMS, including the original idea about status checks from Issue #700, can be found at https://github.com/kiwitcms/github-app/issues.

Help us grow

After this migration we're back to zero! The thousands of authorizations we've had on our legacy OAuth app can't be migrated to the new app. This also means our listing on GitHub Marketplace will be taken down and we have to qualify through the entire process from scratch.

Please help us get back on track! Here's what we ask you to do (in this order):

Thank you! Happy testing and happy new year!

Kiwi TCMS 7.2

We're happy to announce Kiwi TCMS version 7.2! This is an improvement & bug fix release which includes new database migrations and API methods, internal refactoring and updated translations. 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  f9a8a044c34e    537 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 7.1

Improvements

  • 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

API

  • 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

Refactoring

  • Pylint fixes (Mariyan Garvanski)
  • Use django.utils.timezone.now() instead of datetime.now(). 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

Important changes

Soon Kiwi TCMS will switch from OAuth to GitHub App integration type with GitHub. Login with your GitHub accounts will still be supported but you will also be able to INSTALL Kiwi TCMS into your account/organization/repositories. This will open the possibility for further integration with GitHub as expressed in our roadmap for 2019!

We are going to share more information when this becomes available.

Upcoming conferences

The next two events we are going to participate are:

If you are around come and say "Happy testing"!

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 pull kiwitcms/kiwi
docker pull centos/mariadb
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate

WHERE: docker-compose.yml has been updated from your private git repository! The file provided in our GitHub repository is an example. Not for production use!

WARNING: kiwitcms/kiwi:latest and docker-compose.yml will always point to the latest available version! If you have to upgrade in steps, e.g. between several intermediate releases, you have to modify the above workflow:

# starting from an older Kiwi TCMS version
docker-compose down
docker pull kiwitcms/kiwi:<next_upgrade_version>
edit docker-compose.yml to use kiwitcms/kiwi:<next_upgrade_version>
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate
# repeat until you have reached latest

Happy testing!

Kiwi TCMS is going to FOSDEM 2020

Stand at FOSDEM'19

Hello testers, Kiwi TCMS is going to FOSDEM 2020. This is where you can find us:

We would like to meet with all of you and talk about software testing, test management and test process organization. In case you are stuck for crazy ideas checkout our project mission for inspiration.

Picture: FOSDEM'19 with Kiwi TCMS, ReportPortal & SystemTestPortal

Happy testing!

Kiwi TCMS 7.1

We're happy to announce Kiwi TCMS version 7.1! This is a small improvement update which includes database schema and API changes, several other improvements, internal refactoring and updated translations. 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  c8cf36ac5ca5    602 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 7.0

Improvements

  • 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

API

  • New method Bug.remove()

Bug fixes

  • Always build with the latest versions of translations
  • Add 'Delete' menu item in Bugs page. Fixes #1153 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

Refactoring

  • 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

Translations

Acknowledgments

A special "thank you" goes to our friends from PyCon Balkan in Belgrade who allowed us to host an open source coding sprint in Belgrade during the conference!

A second "thank you" goes to Open Labs Hackerspace who hosted a localization sprint in Tirana and contributed to several different languages!

Thank you for being part of our community. Version 7.1 includes all of your contributions.

Website updates

We're using the opportunity to share that website is now serving via SSL courtesy of GitHub and Let's encrypt.

Our main page has also been updated to showcase some of our customers: Better (Slovenia), Minds, Inc. (USA), Musala Soft (Bulgaria). If you would like to feature your corporate logo and tell us how you use Kiwi TCMS then drop us an email!

Upcoming conferences

The next two events we are going to participate are:

If you are around come and say "Happy testing"!

Upcoming FOSDEM 2020

We are happy to announce that our team, together with SUSE and Linaro will be hosting the Testing and Automation Developer Room at FOSDEM in Brussels next February.

Call for papers is open until December 10th 2019. Anything related to software testing and open source is welcome. Apply from the link above.

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 pull kiwitcms/kiwi
docker pull centos/mariadb
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate

WHERE: docker-compose.yml has been updated from your private git repository! The file provided in our GitHub repository is an example. Not for production use!

WARNING: kiwitcms/kiwi:latest and docker-compose.yml will always point to the latest available version! If you have to upgrade in steps, e.g. between several intermediate releases, you have to modify the above workflow:

# starting from an older Kiwi TCMS version
docker-compose down
docker pull kiwitcms/kiwi:<next_upgrade_version>
edit docker-compose.yml to use kiwitcms/kiwi:<next_upgrade_version>
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate
# repeat until you have reached latest

Happy testing!

Kiwi TCMS 7.0

We're happy to announce Kiwi TCMS version 7.0! 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. You can explore everything at https://public.tenant.kiwitcms.org!

The 7.0 version number happily coincides with the fact that we've surpassed 70000 downloads from 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  d34dc6d896bf    584 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 6.11

Security

  • 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!

Improvements

  • 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 under 600 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.

    Warning

    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

    Warning

    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.

    Note

    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.

    Warning

    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.

    Warning

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

API

  • 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

Settings

  • 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

Refactoring

  • 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

Translations

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

junit.xml-plugin v0.4

A few days ago we have also released kiwitcms-junit.xml-plugin v0.4 with the following changes:

  • Update junitparser from 1.3.2 to 1.3.4
  • Also support XML files with <testsuites> root tag (Katalon Studio). Fixes Issue #9

tap-plugin v0.4

We have also released kiwitcms-tap-plugin v0.4 with the following changes:

  • Include traceback from TAP file as TestExecution comment. Fixes Issue #7 (Christophe CHAUVET)

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 pull kiwitcms/kiwi
docker pull centos/mariadb
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate

WHERE: docker-compose.yml has been updated from your private git repository! The file provided in our GitHub repository is an example. Not for production use!

WARNING: kiwitcms/kiwi:latest and docker-compose.yml will always point to the latest available version! If you have to upgrade in steps, e.g. between several intermediate releases, you have to modify the above workflow:

# starting from an older Kiwi TCMS version
docker-compose down
docker pull kiwitcms/kiwi:<next_upgrade_version>
edit docker-compose.yml to use kiwitcms/kiwi:<next_upgrade_version>
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate
# repeat until you have reached latest

Happy testing!

Open source sprints at PyCon Balkan in Belgrade

Next month our team will be at PyCon Balkan, Oct 3-5 in Belgrade. Together with presentation and a workshop we are going to host open source sprints! These will be an informal gathering where participants will be able to learn more about how open source works and go through their first contributions. This is ideal for students and less experienced people but we welcome everyone. There will be tasks ranging from easy to very hard!

Who: 4 mentors from Kiwi TCMS and you!

What: full day of peer programming and contributing to Kiwi TCMS

Where: room will be announced on the days of the conference, follow @KiwiTCMS for more info

Why: up your tech skills, build your GitHub profile and have fun together

Translate Kiwi TCMS

Difficulty: easy

We have enabled Serbian language in our translation system. To get started checkout our translation contribution page. Once strings are translated kiwitcms-bot will automatically open a pull request with the new text.

Find unused CSS classes

Difficulty: easy

This should be relatively easy. For each class/selector defined in our CSS files search (grep) if any of the HTML templates use it. If it is not in use then remove it.

Find unused JavaScript code

Difficulty: easy

Similar to the above. We're not 100% certain but there could be legacy JavaScript functions which are no longer in use. Find them and remove them! At the very least you have confirmed that all functions are in use!

CodeClimate Minor severity issues

Difficulty: easy to moderate

Check-out the list of Minor severity issues. There are many of them:

Try fixing a few to see how it goes and continue if you feel confident. Not everything may be an issue so if you have any questions ask someone from our team.

CodeClimate Major severity issues

Difficulty: moderate to hard

Check-out the list of Major severity issues. There are around 150 of them:

Most of these require some sort of refactoring, either splitting snippets of code into smaller pieces (functions or sub-modules) or using one function in several places instead of 2 very similar but different functions, etc. Ask our team members about which approach they prefer for fixing these issues to minimize the effort spent here.

CodeClimate Critical severity issues

Difficulty: hard

Check-out the list of Critical severity issues. All of these are functions with high cognitive complexity and the recommended way to deal with them is refactoring into class based views.

Improve pylint health

Difficulty: easy

Execute pylint against the latest sources and start fixing the issues. Looking at pylint logs the following items are relatively easy to work on:

Note: fixme, missing-permission-required and avoid-auto-field errors are usually harder to resolve and will require more work/refactoring. If you feel confident go ahead and fix them, if not skip to the next error message.

We also use a custom pylint checker which reports function based views. If you are looking for something harder to work on, then give it a try (see 3rd pylint line in Makefile) and refactor some of the existing view functions into class based views.

Fix 3rd party security issues discovered by Bandit

Difficulty: moderate to hard

Bandit is a static analysis tool similar to pylint. It focuses on discovering issues which may lead to security vulnerabilities. We have resolved all such issues in our own source code but we also execute Bandit against the entire Python dependency stack. There it finds thousands of issues, so much so that the reporter crashes.

In CI there are around 130 issues reported. The best course of action here is to execute Bandit locally against the offending library and then figure out what to do:

Note: inside Travis CI we have all runtime and testing dependencies which is more than what we have inside the official Docker image for Kiwi TCMS.

Work on reported issues

The following issues look suitable for a sprint and don't require lots of background knowledge. You can also find them using the PyConBalkan label on GitHub:

We hope to see you in Belgrade. Until then: Happy testing!

Kiwi TCMS conference presence, AW2019

Your favorite open source test case management system is going on tour again. During the next several months we will be at:

Feel free to ping us at @KiwiTCMS or look for the kiwi bird logo and come to say hi. Happy testing!

Kiwi TCMS 6.11

We're happy to announce Kiwi TCMS version 6.11! This is a security and improvement release which updates many internal dependencies, adds 2 new Telemetry reports, updates TestPlan and TestCase cloning pages and provides several other improvements and bug fixes. 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  6a8249d23a67    1.011 GB
kiwitcms/kiwi       6.2     7870085ad415    957.6 MB
kiwitcms/kiwi       6.1.1   49fa42ddfe4d    955.7 MB
kiwitcms/kiwi       6.1     b559123d25b0    970.2 MB
kiwitcms/kiwi       6.0.1   87b24d94197d    970.1 MB
kiwitcms/kiwi       5.3.1   a420465852be    976.8 MB

Changes since Kiwi TCMS 6.10

Security

Improvements

  • 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

API

  • First parameter of RPC method Bug.report() 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!

Settings

  • 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

Refactoring

  • 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

Translations

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 pull kiwitcms/kiwi
docker pull centos/mariadb
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate

WHERE: docker-compose.yml has been updated from your private git repository! The file provided in our GitHub repository is an example. Not for production use!

WARNING: kiwitcms/kiwi:latest and docker-compose.yml will always point to the latest available version! If you have to upgrade in steps, e.g. between several intermediate releases, you have to modify the above workflow:

# starting from an older Kiwi TCMS version
docker-compose down
docker pull kiwitcms/kiwi:<next_upgrade_version>
edit docker-compose.yml to use kiwitcms/kiwi:<next_upgrade_version>
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate
# repeat until you have reached latest

Happy testing!

Contributor profile: Aneta Petkova

Happy Monday, testers! In this series we are introducing the contributors behind Kiwi TCMS. This is our community and these are their stories.

Aneta Petkova - QA Chapter Lead at SumUp

Aneta is a software engineer navigating the complex field of QA since her first "grownup" job. She's been working in the area of test automation for web applications using different programming languages and tools. Her mission is to inspire people to think about quality from the very inception of ideas and to blur the line between developers and QA specialists.

What is your professional background

I have an engineering degree in computer science and I've spend the last 8 years in Quality Assurance. Java, TestNG and UI automation with Selenium WebDriver are my strongest technical skills but I use different programming languages and tools.

I believe languages and tools should only support an engineer and never define them.

Currently I am the QA Chapter Lead at SumUp, where I can work towards achieving my goals in an amazing team of people that do what they love.

When did you use open source for the first time

The first time I remember was in 2011, but I've probably used it before and just didn't pay attention. To me it seemed the same as proprietary, and I guess that means it was good.

Describe your contributions to the project

I created kiwitcms-junit-plugin. This is a native Java library which you can install via Maven Central. It will discover your automated test suite and publish test execution results in Kiwi TCMS. This plugin is very simple and requires only minimal configuration before it is ready to work. Check-out the example in TP-25!

editor comment: Aneta and Ivo (Kiwi TCMS) hosted the "Git crash course" workshop at HackConf 2018. Kiwi TCMS will be hosting 2 workshops this year so stay tuned!

Why did you decide to contribute to Kiwi TCMS

I had recently switched Java for Ruby and I was feeling nostalgic. Also, I had spent my entire career so far in QA and I wanted to slip on the developer shoes for at least a little bit.

Was there something which was hard for you during the contribution process

I'm used to working in a team and when I started working on this project I was the only active Java developer. Luckily for me, I live in the time of StackOverflow, so I managed to get most of my questions answered by strangers on the Internet.

I learned tons of stuff, but mostly I learned I can build software, not just test it!

Which is the best part of contributing to Kiwi TCMS

Doing something that has the potential to help others and that could be improved upon.

What is next for you in professional and open source plan

My current focus is moving slightly into DevOps direction and I am really overwhelmed by the amount of things to learn. I feel there is so much I want to experiment with. I am not really planning anything related to open source - it has never been a goal for me - but when I come across a project I feel strongly about, I'd probably be tempted to contribute.

Thank you, Aneta! Happy testing!

Contributor profile: Primož Klemen

In this new series we are going to introduce the contributors behind Kiwi TCMS. This is our community and these are their stories.

Primož Klemen - QA tester, full time dad, Manchester United F.C. supporter

Primož is an early adopter and our Slovenian translator. He's been actively engaging in GitHub issues, posted pull requests for improving documentation and follows us on StackOverflow as well.

What is your professional background

I've started working in IT as tech support for the 2nd largest Slovenian ISP at the time. Then I've been at leading software provider for fintech in the Balkans region in the same role and gradually transitioned into QA role. Currently, I'm working as a QA tester for Better (by Marand) and ensure, with help of my colleagues of course, proper quality of administration application for health care sector.

When did you use open source for the first time

If I recall correctly that would be some 14 years ago when I ditched dreaded Internet Explorer in favor of Mozilla Firefox browser. The whole Internet got better in a matter of seconds.

What are your contributions to Kiwi TCMS

I mainly contribute via translating the application into my native language, Slovenian. Currently there are 7 languages available for Kiwi TCMS so you are more than welcome to join and add another one. Translating via Crowdin is very simple and requires no additional technical skills. I've also dabbled into project documentation and proposed a few updates to it. I'm also the culprit for some 32 issues and counting, the majority of them being proposals for future application enhancements and few UX/UI bugs (déformation professionnelle :-)).

Why did you decide to contribute to Kiwi TCMS

The guys and gals from the Kiwi TCMS team provided us with an application which solved our pain about building, maintaining and running manual regression tests.

They did all of that for free in their spare time! So I've decided to give something back to the whole community. This was indeed my first contribution to the open source world but not the last. Since then I've also contributed to other projects which I use on a regular basis.

In hindsight, Kiwi TCMS converted me from an open source user to open source contributor!

Was there something which was hard for you during the contribution process

Contributing to the project, as a non-developer, is very easy and intuitive by either opening issues on GitHub or translating via Crowdin or even committing updated documentation to git repository through GitHub Desktop client. All of the aforementioned was new to me and I've learned in depth how to use these tools. I've also had the pleasure to familiarize myself with project documentation - Sphinx and reStructuredText are my two new best friends.

Which is the best part of contributing to Kiwi TCMS

Being able to actively improve an application that we use on a daily basis in our development process. Getting to know more people from all around the globe and see their insights about software quality assurance thus learning something new every day.

What is next for you in professional and open source plan

Professionally I'm 100% committed to Better (by Marand) and helping us achieve the best standard of quality for health care applications which also incorporates using the knowledge gathered by following and/or contributing to open source. I'm going to continue contributing to Kiwi TCMS and Captura and if time allows maybe involve myself with some other interesting projects.

Thank you, Primož! Happy testing!

Kiwi TCMS 6.10

We're happy to announce Kiwi TCMS version 6.10! This is a small security and improvement update. 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  bbb581d60ed1    1.005 GB
kiwitcms/kiwi       6.2     7870085ad415    957.6 MB
kiwitcms/kiwi       6.1.1   49fa42ddfe4d    955.7 MB
kiwitcms/kiwi       6.1     b559123d25b0    970.2 MB
kiwitcms/kiwi       6.0.1   87b24d94197d    970.1 MB
kiwitcms/kiwi       5.3.1   a420465852be    976.8 MB

Changes since Kiwi TCMS 6.9

Security

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

Improvements

  • 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

Refactoring

  • 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 __init__.py. Fixes Issue #790

Join us at OpenExpo in Madrid

Kiwi TCMS is exhibitor at OpenExpo Europe on June 20th in Madrid. We will be hosting an info booth and 2 technical presentations delivered by Anton Sankov and Alex Todorov.

Kiwi TCMS is also the leading finalist in the Best Tech Community category at Open Awards 2019!

Use OE19SPEAKERINVITE 100% discount code! Get your ticket here!

How to upgrade

If you are using Kiwi TCMS as a Docker container then:

cd Kiwi/
git pull
docker-compose down
docker pull kiwitcms/kiwi
docker pull centos/mariadb
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate

Don't forget to backup before upgrade!

WARNING: kiwitcms/kiwi:latest and docker-compose.yml will always point to the latest available version! If you have to upgrade in steps, e.g. between several intermediate releases, you have to modify the above workflow:

# starting from an older Kiwi TCMS version
docker-compose down
docker pull kiwitcms/kiwi:<next_upgrade_version>
edit docker-compose.yml to use kiwitcms/kiwi:<next_upgrade_version>
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate
# repeat until you have reached latest

Happy testing!

Kiwi TCMS needs your help winning OpenAwards 2019

Vote for Kiwi TCMS at OpenAwards 2019

Thanks to you, our community supporters, Anton Sankov and Alex Todorov took the lead at OpenExpo 2019 CfP votes. We need your help one more time. Our team has submitted participation in 'Best Tech Community' and 'Best Success Story' categories.

Unfortunately our submission into 'Best Success Story' has been pulled down! We used that category to share the story from a dead open source project into a thriving open source community with lots of users and contributors and to highlight some of our milestones. Here's the short version:

Please help us gain more recognition:

Thanks you & happy testing!

Kiwi TCMS 6.9

We're happy to announce Kiwi TCMS version 6.9! This is a small improvement and bug-fix update which introduces our first telemetry report: testing breakdown. 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  a01eaeddf213    1.001 GB
kiwitcms/kiwi       6.2     7870085ad415    957.6 MB
kiwitcms/kiwi       6.1.1   49fa42ddfe4d    955.7 MB
kiwitcms/kiwi       6.1     b559123d25b0    970.2 MB
kiwitcms/kiwi       6.0.1   87b24d94197d    970.1 MB
kiwitcms/kiwi       5.3.1   a420465852be    976.8 MB

Changes since Kiwi TCMS 6.8

Improvements

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

API

  • 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

Refactoring

  • Add more tests around TestRun/TestExecution menu permissions
  • Minor pylint fixes

Translations

Join us at OpenExpo in Madrid

Kiwi TCMS is exhibitor at OpenExpo Europe on June 20th in Madrid. We will be hosting an info booth and 2 technical presentations delivered by Anton Sankov and Alex Todorov.

Next week we are going to announce 100% discount tickets for our guests at the conference. If you are interested in coming subscribe to our newsletter and don't miss the announcement!

How to upgrade

If you are using Kiwi TCMS as a Docker container then:

cd Kiwi/
git pull
docker-compose down
docker pull kiwitcms/kiwi
docker pull centos/mariadb
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate

Don't forget to backup before upgrade!

WARNING: kiwitcms/kiwi:latest and docker-compose.yml will always point to the latest available version! If you have to upgrade in steps, e.g. between several intermediate releases, you have to modify the above workflow:

# starting from an older Kiwi TCMS version
docker-compose down
docker pull kiwitcms/kiwi:<next_upgrade_version>
edit docker-compose.yml to use kiwitcms/kiwi:<next_upgrade_version>
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate
# repeat until you have reached latest

Happy testing!

Kiwi TCMS 6.8

We're happy to announce Kiwi TCMS version 6.8! This is a small improvement and bug-fix update. 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  fca095f95475    994.8 MB
kiwitcms/kiwi       6.2     7870085ad415    957.6 MB
kiwitcms/kiwi       6.1.1   49fa42ddfe4d    955.7 MB
kiwitcms/kiwi       6.1     b559123d25b0    970.2 MB
kiwitcms/kiwi       6.0.1   87b24d94197d    970.1 MB
kiwitcms/kiwi       5.3.1   a420465852be    976.8 MB

Changes since Kiwi TCMS 6.7

Improvements

  • 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

Translations

Refactoring

  • 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

GitHub Marketplace

During the past week we have silently launched Kiwi TCMS on GitHub Marketplace. Free plans will be redirected to public.tenant.kiwitcms.org while paid plans will be hosted under *.tenant.kiwitcms.org sub-domains!

Our team is still working on all requirements for GitHub integration and we will issue a formal statement when ready!

How to upgrade

If you are using Kiwi TCMS as a Docker container then:

cd Kiwi/
git pull
docker-compose down
docker pull kiwitcms/kiwi
docker pull centos/mariadb
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate

Don't forget to backup before upgrade!

WARNING: kiwitcms/kiwi:latest and docker-compose.yml will always point to the latest available version! If you have to upgrade in steps, e.g. between several intermediate releases, you have to modify the above workflow:

# starting from an older Kiwi TCMS version
docker-compose down
docker pull kiwitcms/kiwi:<next_upgrade_version>
edit docker-compose.yml to use kiwitcms/kiwi:<next_upgrade_version>
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate
# repeat until you have reached latest

Happy testing!

Kiwi TCMS 6.7

We're happy to announce Kiwi TCMS version 6.7! This is a small improvement and bug-fix update. 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  702a78976de7    993.5 MB
kiwitcms/kiwi       6.2     7870085ad415    957.6 MB
kiwitcms/kiwi       6.1.1   49fa42ddfe4d    955.7 MB
kiwitcms/kiwi       6.1     b559123d25b0    970.2 MB
kiwitcms/kiwi       6.0.1   87b24d94197d    970.1 MB
kiwitcms/kiwi       5.3.1   a420465852be    976.8 MB

Changes since Kiwi TCMS 6.6

Improvements

  • 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

API

  • Rename TestCaseRun.* to TestExecution.*
  • Rename TestCaseRunStatus.* to TestExecution.*
  • This version keeps the old names for backwards compatibility reasons but they will be removed in Issue #889

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)

Refactoring

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

Translations

Native JUnit 5 plugin

Our team is happy to announce the availability of kiwitcms-junit-plugin. This is a native JUnit 5 plugin which will read the results from your automated test suite and send them back to Kiwi TCMS.

Version 1.0.3 and the latest changes in master branch are still to be considered Beta quality. They are available for early preview and feedback.

Many thanks to Aneta Petkova who is the main contributor behind this plugin!

How to upgrade

If you are using Kiwi TCMS as a Docker container then:

cd Kiwi/
git pull
docker-compose down
docker pull kiwitcms/kiwi
docker pull centos/mariadb
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate

Don't forget to backup before upgrade!

WARNING: kiwitcms/kiwi:latest and docker-compose.yml will always point to the latest available version! If you have to upgrade in steps, e.g. between several intermediate releases, you have to modify the above workflow:

# starting from an older Kiwi TCMS version
docker-compose down
docker pull kiwitcms/kiwi:<next_upgrade_version>
edit docker-compose.yml to use kiwitcms/kiwi:<next_upgrade_version>
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate
# repeat until you have reached latest

Happy testing!

Kiwi TCMS 6.6

We're happy to announce Kiwi TCMS version 6.6! This is a medium severity security update, improvement and bug-fix update. 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  c4734f98ca37    971.3 MB
kiwitcms/kiwi       6.2     7870085ad415    957.6 MB
kiwitcms/kiwi       6.1.1   49fa42ddfe4d    955.7 MB
kiwitcms/kiwi       6.1     b559123d25b0    970.2 MB
kiwitcms/kiwi       6.0.1   87b24d94197d    970.1 MB
kiwitcms/kiwi       5.3.1   a420465852be    976.8 MB

Changes since Kiwi TCMS 6.5.3

Security

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

Improvements

  • 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

Refactoring

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

Translations

How to upgrade

If you are using Kiwi TCMS as a Docker container then:

cd Kiwi/
git pull
docker-compose down
docker pull kiwitcms/kiwi
docker pull centos/mariadb
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate

Don't forget to backup before upgrade!

WARNING: kiwitcms/kiwi:latest and docker-compose.yml will always point to the latest available version! If you have to upgrade in steps, e.g. between several intermediate releases, you have to modify the above workflow:

# starting from an older Kiwi TCMS version
docker-compose down
docker pull kiwitcms/kiwi:<next_upgrade_version>
edit docker-compose.yml to use kiwitcms/kiwi:<next_upgrade_version>
docker-compose up -d
docker exec -it kiwi_web /Kiwi/manage.py migrate
# repeat until you have reached latest

Happy testing!

Taking the lead at OpenExpo Europe CfP votes

Vote for Kiwi TCMS at OpenExpo

We are happy to announce that Anton Sankov and Alex Todorov are currently taking the lead at OpenExpo Europe's CfP votes!

Going to OpenExpo will be huge boost for Kiwi TCMS so please help us make this happen! Voting is open until March 17th 2019! You can cast your vote via Facebook login but remember to confirm your email address!

Thank you & happy testing!

Legacy reports become Telemetry

As we've promised Kiwi TCMS is starting work on improving the legacy reports functionality. After analyzing your feedback in Issue #657 here's what we came up with. Note: screenshots below are mockups.

General tech specs

Feature: Rename TestCaseRun to TestExecution

Inside Kiwi TCMS the term "test case" is used to refer to specific scenario of testing steps. A "test run" is the collection of multiple "test cases" which will be executed against a particular product build and environment.

The specific results are kept into what is now called "test case run". This will be renamed to "test execution" (internally TestExecution class) to make it more clear and easier to distinguish among other artifacts.

Feature: Better color coding for test execution status

As a webUI user I want to easily distinguish between PASSED, FAILED and other statuses when looking at charts and graphical visualizations.

TestRun progress

This feature request comes from the TestRun progress bar. Other charts should use the same 4 status categories and color coding standards:

Here the percent value will continue to mean percent completed, aka non-IDLE.

Implementation wise the TestCaseRunStatus class defines methods for the actual icons to be used. The same can be done for colors and this can be used directly in the HTML templates. For color definitions see Status Palette.

Feature: Printable Test Execution Report

As a tester I want to have a nice looking TestRun execution report which I can present to my managers, stakeholders and/or customers. The page needs to be printer friendly for “Print to PDF” or print on paper!

Kiwi TCMS already has this feature. Clicking the [Report] button in the progress widget at TR-625 presents TestRun execution information in a simplified format found at TR-625/Report. In order to improve the current implementation:

Feature: Individual or team performance telemetry

As a manager I want to know what the work-load/performance of individual teams and engineers is. I can use this information either for performance review or for capacity planning of future work.

Individual/team performance

A new page will be available under TELEMETRY -> Management -> Performance which will:

The backend will query TestExecution.objects and apply the selected filters and grouping logic! The returned data is the count of how many tests this person/team was able to execute.

Further refinement: Aggregate count by statuses (executed vs. non-executed or PASSED vs. FAILED vs. OTHER). May be represented as a stacked bar chart if grouping of series is supported.

Feature: Time-tracking telemetry

As a manager I want to know how much time it took to complete previous testing activities. I can use this information for predicting future capacity.

New page under TELEMETRY -> Management -> Time tracking.

Visually this will be a line chart with one line for each user/group which have been selected. It will be very good if the existing chart libraries allow for a stacked line chart or a stacked area chart here!

Feature: Estimate TestRun completion time

As a test lead I want to know approximately when testing is expected to complete.

This feature will utilize time-tracking data from previous executions and display the approximated calculation in the web UI. The most obvious place for this is the TestRun progress widget (under the progress bar) or the Test Run page (near the Started at/Finished at fields).

Example text:

Started at: YYYY-MM-DD 10:38
Status: Running
Duration: 1.2 / 3 hrs
Estimated completion at: 13:30

Unknown: where does baseline duration come from? Either from the most recent TestRun or an average from all of the previous Test Runs. Note that cumulative TestRun duration is calculated between Start/Finish events while individual TestExecution records may sum up to a different value! This needs to be clarified.

Feature: TestCase health telemetry

As a tester and/or manager I want to be able to discover which TestCase(s) are the most common source of problems, that is they fail all the time or from time to time. This may indicate poor test design or bad practices when developing the product. This is also known as test stability or flaky tests!

Flaky tests

New page under TELEMETRY -> Testing -> Flaky tests

Feature: TestCase breakdown telemetry

As a tester and/or manager I want to see a breakdown of tests so that I have an idea how the existing tests for the product are distributed!

Test case breakdown

New page under TELEMETRY -> Testing -> Breakdown

Shows combined bar/line charts with information about test case priorities, categories, automation status and confirmed status.

Feature: Individual TestCase health widget

As a test engineer I want to be able to quickly see health information about individual test case. This can help me visually locate TCs that need improvement so I can edit them or will help me visually judge the past history of the TC I am looking at.

Individual TestCase health

This depends on the previous feature. Possible places where health status can be shown:

Feature: Execution trends telemetry

As a test manager I want to see information if Product builds are getting better or worse. In other words what is the trend in TestExecution number and status!

Build status

This is going to be a new page at TELEMETRY -> Testing -> Execution trends

You will be able to select TestRuns and/or weeks for detailed comparison.

Feature: TestRun status matrix telemetry

As a test manager I want to see detailed information about testing status for specific test run(s) or a calendar period. I also want to be able to compare the results between various weeks and/or test runs.

Compare TestRuns

This is a continuation of Execution trends telemetry but can be used on its own as well. It will be accessible from TELEMETRY -> Testing -> Status matrix

Filtering options are the same. Results are displayed in a table format where columns are the filtered (or previously selected) TestRun objects or calendar weeks. The rows are the names of individual test cases that have been executed. If a case is missing the cell will be empty.

Cells contain color coded information about status, timestamp of execution, execution duration, links to the TestExecution object, latest comment in case of failure.

Links to bugs will be shown in each cell with a summarized bug table below the charts.

Feature: Search and compare TestRuns

This is complimentary to the TestRun status matrix feature! While searching for TestRuns in SEARCH -> Test Runs the user will be able to select several rows and proceed to compare them as described above.

Happy testing!

Want to hack open source ?

Have you ever wanted to be part of an open source team? Have you ever wanted to contribute back the open source community ? Have you ever wanted to see your code used by thousands of people ?

If yes now you have the opportunity! Read on to learn how you can help Kiwi TCMS and how our team can help you.

Inexperienced Python developer(s)

It is fine not to have any experience at all! You will compensate with commitment and hard work. Initially you are going to work on refactoring, cleaning up pylint errors, removing duplicate code and other issues reported by CodeClimate.

By doing this you will have the opportunity to learn git, Python, Django, some CSS, JavaScript and Patternfly HTML of course. We are going to provide you with all the learning materials plus help and guidance from existing team members.

Everyone on the team has gone though the same training procedure and grueling tasks and so will you! Once you can demonstrate progress and learn the ropes you will continue working on more complicated tasks.

Experienced Python developer(s)

So you have some experience already, you've probably contributed code before and are now looking for more green stripes on your GitHub profile. We've got you covered!

There are many areas to choose from: issue tracker integration, GitHub integration, GitLab integration, external API library, Kiwi TCMS plugins written in Python and customized pylint linters! This is going to be where you get your hands dirty and show your strengths. Our team is here to help if necessary but we expect you to show progress by yourself.

A challenge for you will be to review pull requests from other contributors and be patient with less experienced contributors and team members. This is an excellent opportunity to work on your people skills as well.

Experienced non-Python developer(s) (with Java)

Kiwi TCMS is primarily looking for Java developers who will own our test automation plugins. Currently we have a plugin for JUnit 5 and TestNG is in planning. Maybe there will be a plugin for Jenkins as well. You are going to own these components and work solely on them. Unless you decide to learn Python and Django that would be a very easy job!

.NET, PHP, Ruby, JavaScript ? We don't have a lot of code written in these languages but you can help change this. The main thing we'd like you to know (or become familiar with) are the internals of popular test automation frameworks for these languages and how to create plugins for them.

QA engineer with Python

You are going to test a lot! You are going to write test automation a lot! Ideally you already have a medium level of experience in the software testing field and want to improve your coding skills and/or get more experience into a different application domain. We also have Linux and Docker in the mix, just for fun!

Your responsibility will be to design test scenarios for various features (new or existing), write test automation scripts and help improve overall test coverage and quality of Kiwi TCMS. You will also check-in on non-Python developers and help them with test design when necessary.

There are other things that can be tested as well, for example Kiwi TCMS performance and scalability. Here you will have to get down to the nitty-gritty stuff and do some profiling to pin-point where the root cause of the problem is.

Security freak

We've got Coverity scan and Snyk automatically inspecting our code base. We do have some other tools as well and we know they can never be enough.

You will be responsible for triaging the numerous issues being reported by these tools and help us decide if they are a real threat or a false positive. For example Coverity reports hundreds of issues mostly coming from our Python and Node.js dependency stack. We haven't had the time to classify them and work with upstream communities to fix them thus the majority of your contributions will be outside of the Kiwi TCMS code base.

Graphics designer

Your main job is going to be creating beautiful images for our website, blog posts and promotional material. All the images we use are licensed under Creative Commons which we then modify with the specific Kiwi TCMS look and feel. This is not going to change, your work will remain under a permissive license!

Marketing specialist

You will be directly responsible for driving more traffic to our website, interpreting Google Analytics metrics and coming up with creative ideas how to boost Kiwi TCMS popularity. This means, but not limited to blog posts, collaborations with other projects and/or bloggers, professional magazines, etc. You will also be in charge of events and conferences that we go to! Whenever possible you will be coming with us as well!

A challenge for you will be to learn some technical jargon and learn more about the software testing profession and software testers in general!

What's in it for you ?

You will sharpen your skills! You will use Kiwi TCMS as a platform to improve your career. You will experience the gratification of our community of users.

This blog is the medium where you can share tips and tricks and technical articles about interesting features in Kiwi TCMS. If you'd rather have your personal blog working on Kiwi TCMS will give you lots of topics to write about.

We go to conferences and meetups too. If public speaking is your thing you will have plenty of topics to talk about. We can also help you deliver your first presentation! Everyone on the team has done it!

Our existing team will help you learn and we will help you grow. Our personal time is the most expensive item we can offer to you! In return we expect you to fulfill your commitments and when you promise something will be done you will make sure it is done!

How to apply ?

You can figure this out yourself.

Happy testing!

Project news only, GDPR compliant. Subscribe here!