diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..179b4868 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +output/ +__pycache__/ +*.pyc diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..87dcde07 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,9 @@ +# See https://pre-commit.com for more information +# See https://pre-commit.com/hooks.html for more hooks +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.2.0 + hooks: + - id: end-of-file-fixer + - id: mixed-line-ending + args: [--fix=lf] diff --git a/CNAME b/CNAME deleted file mode 100644 index aafb3256..00000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -kiwitcms.org \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..fa8a6ad2 --- /dev/null +++ b/Makefile @@ -0,0 +1,124 @@ +PY?=python3 +PELICAN?=pelican +PELICANOPTS= + +BASEDIR=$(CURDIR) +INPUTDIR=$(BASEDIR)/content +OUTPUTDIR=$(BASEDIR)/output +CONFFILE=$(BASEDIR)/pelicanconf.py +PUBLISHCONF=$(BASEDIR)/publishconf.py + +FTP_HOST=localhost +FTP_USER=anonymous +FTP_TARGET_DIR=/ + +SSH_HOST=localhost +SSH_PORT=22 +SSH_USER=root +SSH_TARGET_DIR=/var/www + +S3_BUCKET=my_s3_bucket + +CLOUDFILES_USERNAME=my_rackspace_username +CLOUDFILES_API_KEY=my_rackspace_api_key +CLOUDFILES_CONTAINER=my_cloudfiles_container + +DROPBOX_DIR=~/Dropbox/Public/ + +GITHUB_PAGES_BRANCH=master + +DEBUG ?= 0 +ifeq ($(DEBUG), 1) + PELICANOPTS += -D +endif + +RELATIVE ?= 0 +ifeq ($(RELATIVE), 1) + PELICANOPTS += --relative-urls +endif + +help: + @echo 'Makefile for a pelican Web site ' + @echo ' ' + @echo 'Usage: ' + @echo ' make html (re)generate the web site ' + @echo ' make clean remove the generated files ' + @echo ' make regenerate regenerate files upon modification ' + @echo ' make publish generate using production settings ' + @echo ' make serve [PORT=8000] serve site at http://localhost:8000' + @echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 ' + @echo ' make devserver [PORT=8000] start/restart develop_server.sh ' + @echo ' make stopserver stop local server ' + @echo ' make ssh_upload upload the web site via SSH ' + @echo ' make rsync_upload upload the web site via rsync+ssh ' + @echo ' make dropbox_upload upload the web site via Dropbox ' + @echo ' make ftp_upload upload the web site via FTP ' + @echo ' make s3_upload upload the web site via S3 ' + @echo ' make cf_upload upload the web site via Cloud Files' + @echo ' make github upload the web site via gh-pages ' + @echo ' ' + @echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html ' + @echo 'Set the RELATIVE variable to 1 to enable relative urls ' + @echo ' ' + +html: + $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) + +clean: + [ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR) + +regenerate: + $(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) + +serve: +ifdef PORT + cd $(OUTPUTDIR) && $(PY) -m pelican.server $(PORT) +else + cd $(OUTPUTDIR) && $(PY) -m pelican.server +endif + +serve-global: +ifdef SERVER + cd $(OUTPUTDIR) && $(PY) -m pelican.server 80 $(SERVER) +else + cd $(OUTPUTDIR) && $(PY) -m pelican.server 80 0.0.0.0 +endif + + +devserver: +ifdef PORT + $(BASEDIR)/develop_server.sh restart $(PORT) +else + $(BASEDIR)/develop_server.sh restart +endif + +stopserver: + $(BASEDIR)/develop_server.sh stop + @echo 'Stopped Pelican and SimpleHTTPServer processes running in background.' + +publish: + $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS) + +ssh_upload: publish + scp -P $(SSH_PORT) -r $(OUTPUTDIR)/* $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR) + +rsync_upload: publish + rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --delete $(OUTPUTDIR)/ $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR) --cvs-exclude + +dropbox_upload: publish + cp -r $(OUTPUTDIR)/* $(DROPBOX_DIR) + +ftp_upload: publish + lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit" + +s3_upload: publish + s3cmd sync $(OUTPUTDIR)/ s3://$(S3_BUCKET) --acl-public --delete-removed --guess-mime-type --no-mime-magic --no-preserve + +cf_upload: publish + cd $(OUTPUTDIR) && swift -v -A https://auth.api.rackspacecloud.com/v1.0 -U $(CLOUDFILES_USERNAME) -K $(CLOUDFILES_API_KEY) upload -c $(CLOUDFILES_CONTAINER) . + +github: publish + ghp-import -m "Generate Pelican site" -b $(GITHUB_PAGES_BRANCH) $(OUTPUTDIR) + git push origin $(GITHUB_PAGES_BRANCH) + +.PHONY: html help clean regenerate serve serve-global devserver stopserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload cf_upload github diff --git a/content/2017-11-03-testing-testing.markdown b/content/2017-11-03-testing-testing.markdown new file mode 100644 index 00000000..c660532b --- /dev/null +++ b/content/2017-11-03-testing-testing.markdown @@ -0,0 +1,18 @@ +Title: Testing, testing. It works! +date: 2017-11-03 11:15 +comments: true + +Welcome to the official website and blog of Kiwi TCMS. +We are happy to finally be online! + +This website was built with the help of +[Kaloyan Krastev](https://github.com/koksyncho), +[Tsvetoslav Garkov](https://github.com/FreshyMc) and +[Ivaylo Ivanov](https://github.com/ivo0126) +who will be joining the project a bit later as well. + +In this blog you can expect various news and progress reports around the project, +announcement of new releases and future plans. We would love to hear your +feedback so please use the comments form below. + +Happy testing! diff --git a/content/2017-11-28-version-3.48.markdown b/content/2017-11-28-version-3.48.markdown new file mode 100644 index 00000000..d4b189e9 --- /dev/null +++ b/content/2017-11-28-version-3.48.markdown @@ -0,0 +1,80 @@ +Title: Kiwi TCMS version 3.48 +headline: API client and bug fixes +date: 2017-11-28 22:00 +comments: true +tags: releases + +We're proud to announce Kiwi TCMS version 3.48! +This is the first release to be announced on our blog and it is also an +important one! + +Kiwi TCMS 3.48 introduces new versions of Django and Patternfly, +a Python API client library, many bug-fixes and updated documentation. + + +Changes since KiwiTCMS 3.44 +--------------------------- + +- Update to Django 1.11.7 (Mr. Senko) +- Update documentation including high level information + about how data is organized within Kiwi TCMS and how to work + with the system. (Mr. Senko) +- Stop caching report views. (Mr. Senko) +- Make test execution comments optional. Fixes + [Issue #77](https://github.com/MrSenko/Kiwi/issues/77). (Mr. Senko) +- Escape special symbols when exporting JSON. + Fixes [Issue #78](https://github.com/MrSenko/Kiwi/issues/78). (Mr. Senko) +- Remove Test Run export to XML functionality in favor of API. + Fixes [Issue #79](https://github.com/MrSenko/Kiwi/issues/79). (Mr. Senko) +- Make it possible to search Test Runs via Env properties. + Fixes [Issue #82](https://github.com/MrSenko/Kiwi/issues/82). (Mr. Senko) +- Display Environment properties in Test Run search results. (Mr. Senko) +- Allow bulk update TestCase.default_tester via email. + Fixes [Issue #85](https://github.com/MrSenko/Kiwi/issues/85). (Mr. Senko) +- Don't crash reports when there are untested TestCaseRuns. + Fixes [Issue #88](https://github.com/MrSenko/Kiwi/issues/88). (Mr. Senko) +- Bind localhost:80 to container:80. + Fixes [Issue #99](https://github.com/MrSenko/Kiwi/issues/99). (Mr. Senko) +- Enable testing with Python 3.6 in preparation for migration. (Mr. Senko) +- If JIRA isn't fully configured then don't connect. Fixes + Fixes [Issue #100](https://github.com/MrSenko/Kiwi/issues/100). (Mr. Senko) +- Pin patternfly version to 3.30 and update templates. + Fixes [Issue #120](https://github.com/MrSenko/Kiwi/issues/120). (Mr. Senko) +- Show status name rather than status id in TestCaseRun change log. (Chenxiong Qi) +- [api] Adds a Python API client with changes that make it possible to + execute on both Python 2 and Python 3. For now take a look at + `tcms_api/script_examples/` for examples how to use it. +- [api] Remove experimental support for Teiid. (Mr. Senko) +- [api] Cache level defaults to `CACHE_NONE` if not set. (Mr. Senko) +- [api] Remove persistent cache, in-memory caching is still available. (Mr. Senko) +- [api] Remove multicall support. (Mr. Senko) + + +**IMPORTANT:** this release introduces new database migrations! + + +*NOTE:* the API client has been initially developed as the *python-nitrate* +project by Petr Splichal and other contributors! We've decided to fork their +code base into Kiwi's repository and continue further development in a central +place. This makes it easier testing the API server and client together and +allows us to move more rapidly! + +As of now there isn't a lot of documentation +and examples on how to use the API client but we are looking to improve this. +Additional documentation and examples will be published in the project's +repository or on this blog! + + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then + + cd Kiwi/ + docker-compose down + make docker-image + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Happy testing! diff --git a/content/2017-12-08-tcms-api.markdown b/content/2017-12-08-tcms-api.markdown new file mode 100644 index 00000000..65cda16a --- /dev/null +++ b/content/2017-12-08-tcms-api.markdown @@ -0,0 +1,37 @@ +Title: Kiwi TCMS Python API client +headline: version 1.4.0 +date: 2017-12-08 15:20 +comments: true +tags: releases + +We are happy to announce the first official release of the +[tcms-api](https://pypi.org/project/tcms-api/) package! +This is a Python client for Kiwi TCMS. + +There are couple of main distinctions in this module: + +* mutable vs. immutable types of objects +* high-level class interface vs. low-level XML-RPC interface + +For more information you should check-out the documentation +and the `script_examples/` directory. + +At the moment the API client is both Python2 and Python3 compatible, +however it is tested only under Python3! + +A bit of history +---------------- + +The original API client, like Kiwi TCMS itself began its origin under a +different name and was created primarily by Petr Splichal. Since then +Kiwi TCMS has evolved and we've decided that the API module needs to evolve +as well. At the moment the tcms-api module is a bit rough around the edges, +its documentation is not really the best one and it's currently advisable +to spend some time reading the code to figure out how everything works. + +We're going to improve on all of these areas and we need help from the community +to do so! Please download the `tcms-api` module, check it out, write and contribute +example scripts (you can use the demo site for this), send us bug reports, suggestions +and pull requests! + +Happy testing! diff --git a/content/2018-01-02-version-3.49.markdown b/content/2018-01-02-version-3.49.markdown new file mode 100644 index 00000000..033922c4 --- /dev/null +++ b/content/2018-01-02-version-3.49.markdown @@ -0,0 +1,121 @@ +Title: Kiwi TCMS version 3.49 +headline: Django 2.0.1 and many XML-RPC updates +date: 2018-01-02 15:30 +comments: true +tags: releases + +Happy New Year to everyone. We're happy to announce Kiwi TCMS version 3.49 +and the corresponding tcms-api version 1.5.0! This release includes a fair +amount of bug fixes and many changes related to Kiwi's RPC layer! + +Most importantly Kiwi is updated to Django 2.0.1, the API client no longer +supports Python 2 and many RPC methods have been removed or updated. +[https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/) +has also been updated so you can explore the new version. + + +Changes since Kiwi TCMS 3.48 +--------------------------- + +### Enhancements and bug fixes + +- Upgrade to Django 2.0.1 +- Don't log passwords sent via RPC +- Log XML-RPC requests from anonymous users. Fixes + [Issue #126](https://github.com/kiwitcms/Kiwi/issues/126) +- Order `TCMSEnvValue` records by property name and value. Fixes + [Issue #155](https://github.com/kiwitcms/Kiwi/issues/155) +- flake8 fixes (Anton Sankov) +- Start building source code documentation from Python doc strings +- Properly urlencode emails in personal menu links +- Remove test case import via XML files +- Use django-attachments for user uploaded files. Fixes + [Issue #160](https://github.com/kiwitcms/Kiwi/issues/160) + As part of this change we no longer copy Plan and Case attachments when + cloning these objects. + + NOTE: Since django-attachments introduces new permission objects + you will have to adjust default permissions for existing users! + In order for them to be able to upload/delete their own files they + need to have `attachments.add_attachment` and `atachments.delete_attachment` + permissions. + + These same permissions are added by default to the 'Tester' group. + If you are running an existing installation registering a new user + with Kiwi TCMS will update the default permissions for this group! + +### Refactoring + +- Remove unused class EditCaseNotifyThread (Chenxiong Qi) +- Remove model TestPlanActivity (Chenxiong Qi) +- Remove many unused models and classes +- Execute tests via `manage.py test` and drop py.test dependency +- Remove useless `TestTag.string_to_list` method. Fixes + [Issue #106](https://github.com/kiwitcms/Kiwi/issues/106) +- Use `settings.AUTH_USER_MODEL` in ForeignKey definitions. Fixes + [Issue #143](https://github.com/kiwitcms/Kiwi/issues/143) + +#### Settings + +- Rename `EMAIL_FROM` to `DEFAULT_FROM_EMAIL`. Fixes + [Issue #128](https://github.com/kiwitcms/Kiwi/issues/128) +- Rename `FILE_UPLOAD_DIR` to `MEDIA_ROOT` +- Rename `MAX_UPLOAD_SIZE` to `FILE_UPLOAD_MAX_SIZE` +- New setting `DELETE_ATTACHMENTS_FROM_DISK` +- Remove unused `XMLRPC_TEMPLATE` and `TESTOPIA_XML_VERSION` + +### Server side API + +- Migrate to `django-modern-rpc` and remove home-grown XML-RPC handling code. + As part of this change the XML-RPC endpoint has been changed to `/xml-rpc/`. + There's also a new JSON-RPC endpoint at `/json-rpc/`! +- `Auth.login` method now accepts positional parameters `username, password` + instead of dict +- `TestCaseRun.get` method now accepts a query dict as parameter +- `TestCaseRun.get_bugs` method now accepts a query dict as parameter +- Remove `Build.lookup_id_by_name`, `Build.lookup_name_by_id` RPC methods +- Remove `Product.lookup_name_by_id`, `Product.lookup_id_by_name` RPC methods +- Remove `Product.get_components`, use `Product.filter_components` instead +- Remove `Product.get_plans`, use `TestPlan.filter` instead +- Remove `Product.get_runs`, use `TestRun.filter` instead +- Remove `Product.get_tag`, use `Tag.get_tags` instead +- Remove `Product.get_versions`, use `Product.filter_versions` instead +- Remove `TestCaseRun.filter_count`, use `TestCaseRun.filter` instead +- Remove `TestCaseRun.get_s`, use `TestCaseRun.get` instead +- Remove `TestCaseRun.get_bugs_s`, use `TestCaseRun.get_bugs` instead +- Remove `TestCaseRun.get_case_run_status`, use + `TestCaseRun.get_case_run_status_by_name` instead +- Remove `TestCaseRun.get_completion_time`, `TestCaseRun.get_completion_time_s` + RPC methods. Instead calculate them on the client side +- Rename `TestCaseRun.check_case_run_status` to `TestCaseRun.get_case_run_status_by_name` +- `TestCaseRun.detach_log` will not raise exceptions when deleting logs from + non-existing TestCaseRun objects. +- Remove `User.get_me`, instead use `User.get` without parameters +- Remove `Version.` and `Testopia.` RPC modules +- Update documentation for RPC methods in `Auth`, `Build` and `Env` namespaces. + Unformatted documentation is also available for the rest of the RPC methods + +tcms-api changes since 1.4.0 +---------------------------- + +- Update endpoint configuration, compatible with Kiwi TCMS 3.49 +- Drop support for Python 2 +- Remove the internal `do_command` method which eliminates use of `eval()` +- Remove `TCMSXmlrpc.get_me()` and `TCMSXmlrpc.build_get()` methods + + +**IMPORTANT:** this release introduces new database migrations! + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then + + cd Kiwi/ + docker-compose down + make docker-image + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Happy testing! diff --git a/content/2018-01-22-milestones.markdown b/content/2018-01-22-milestones.markdown new file mode 100644 index 00000000..2ac6c3a5 --- /dev/null +++ b/content/2018-01-22-milestones.markdown @@ -0,0 +1,165 @@ +Title: Kiwi TCMS roadmap for 2018 +Headline: cleaner code, improved UI/UX and more tests +date: 2018-01-22 12:10 +comments: true +og_image: images/roadmap.jpg +twitter_image: images/roadmap.jpg +tags: community, roadmap + +Hello everyone. As you know Kiwi TCMS has been around for a while and it has +gone through some big changes in the last year! It started as an abandoned +Django 1.6 project with broken test suite and is now currently running on the +latest Django 2.0.1 with Python 3.5! It is clearly a legacy code base! + +We, the Kiwi TCMS team, have learned a lot more about the project and this +blog post describes our roadmap for 2018 in terms of technical work and community +engagement. The general technical direction is cleaner/simpler code, +improved UI/UX and more tests! + + +Make code easier to maintain +---------------------------- + +The current code is a bunch of very large modules and functions and classes +bundled together. It is also old and sometimes looks like spaghetti code. +[CodeClimate](https://codeclimate.com/github/kiwitcms/Kiwi) gives us a "D" rating +for maintainability with a 1 year estimated effort to fix that. There are 600+ +code smells and 600+ duplications detected by CodeClimate. Our goal is to get this +number down to zero! + + +Use pylint and pylint-django +---------------------------- + +pylint is the standard static analyzer for Python and currently it reports over +4000 errors and warnings when executed against Kiwi TCMS. This is a huge number and +it needs to become zero! We've also identified interesting patterns that will +make it into pylint and pylint-django plugins! + + +Render HTML, return JSON +------------------------ + +The current state of affairs is a mix and match of everything. There are views that +render HTML, others which return pure JSON, other which return HTML encoded as JSON string +and probably everything in between. Views that render pages need to do just that +and views that are used with AJAX calls from the UI need to return pure JSON! +A lot of these are hiding in plain sight and will come to light when we start +overhauling the user interface. + + +Submit forms, post JSON, GET clean URLs +--------------------------------------- + +There are lots of forms in Kiwi TCMS. Sometimes they are submitted by the user and +other times they are serialized and POSTed by some JavaScript code. This isn't +very easy to understand plus this entire home-grown utility code doesn't bring +anything useful to the project. All of these need to be identified and cleaned up. +JavaScript code needs to send or consume JSON, nothing else! + +There are also lots of places where Kiwi issues GET requests with a number of +query parameters. Our goal is to minimize these and where possible have the +parameters as part of the Django urls scheme, not as query strings. + + +API layer +--------- + +The current API module is a bit disorganized. API namespaces don't match the +names of the underlying DB models and the API client classes don't match any +of the other two! The way we pass parameters and what these parameters are +named should match between the client, the RPC method and the underlying model! + +In earlier releases we've removed duplicate or similar RPC methods and we +think there are more of these that need our love. + + +Documentation +------------- + +We've started producing documentation from doc-strings and most of the RPC +methods have such. However it is unformatted and barely readable, sometimes +even inaccurate. Previous releases made progress on this but there's a lot +more to cover. + +All RPC methods should be documented first and then the rest of Kiwi's +internals to make development easier! + + +No vendored JavaScript libraries +-------------------------------- + +There are 11 vendored-in JavaScript files that we carry around in Kiwi TCMS. +Most notable are jQuery plus a few addons and Handlebars.js. To the extent possible +our goal is to use jQuery provided by Django or installed via NPM dependencies! + + +Less HTML templates with better organization +-------------------------------------------- + +There are over 100 HTML templates in Kiwi TCMS. There are also email and even +JavaScript templates. For example there are `get_cases.html` and `get_review_cases.html` +which are essentially the same. This is kind of also true for templates used in +new and edit views! Such templates should be unified! + +Those JavaScript templates need to be totally gone! + +All templates are stuffed together in a single directory and their names +are not very predictable. They need to be split per application and follow +some kind of naming convention. + + +Modern interface with Patternfly +-------------------------------- + +The UI already uses the Patternfly library for some of its widgets. Most notably +the main navigation header. Our goal is for the entire UI to be ported to Patternfly +by updating widgets HTML and CSS where needed. +This will also help clean things up a lot. At the same time we'll be rethinking how +information is organized on screen and how the person interacts with it! Usability +suggestions are very welcome! + +This move will also help us get rid of the Handlebars dependency which is now +used for pop-up dialogs. + + +JavaScript updates and front-end testing +---------------------------------------- + +There's lots of JavaScript code on the front-end and honestly we don't quite know +what it does or how it is organized. There are also no tests on the front-end +whatsoever! + +It is our goal for this to change with the intention to not overdo the JavaScript +part and keep things very minimal. At the moment we're thinking about vanilla jQuery +that will act as a proxy between the browser and the back-end! + + +Community efforts +------------------ + +A year ago hardly anybody knew what Kiwi TCMS was, the project didn't even have +this name, there was 1 active contributor and hardly any users! Now the community +has started to slowly revitalize, we're seeing some contributions from our +junior team members (more on this in another blog post) and also seeing +folks installing and using Kiwi TCMS and reporting interesting bugs and feature +requests around it! + +For the upcoming year our goal is to seek active engagement with other open source +projects that could make use of Kiwi TCMS and work with them. Kudos to +openSUSE for being the first +[to propose such integration](https://github.com/openSUSE/mentoring/issues/95)! +We're also planning couple of appearances at a few conferences but there's +nothing confirmed yet. + +Every other contribution in terms of bug reports, new users and feature requests +is of course welcome but we're very conscious of the fact that there's tons +of work to be done and the team is still very small! + + +Team wise we'd like to get the existing team members up to speed and tackle +the above tasks with priority. This will also help us introduce bug fixes +and new features more quickly! + + +Happy testing! diff --git a/content/2018-01-25-version-3.50.markdown b/content/2018-01-25-version-3.50.markdown new file mode 100644 index 00000000..c448fbc2 --- /dev/null +++ b/content/2018-01-25-version-3.50.markdown @@ -0,0 +1,71 @@ +Title: Kiwi TCMS version 3.50 +headline: and tcms-api version 1.5.1 +date: 2018-01-25 11:30 +comments: true +tags: releases + +We're happy to announce Kiwi TCMS version 3.50 +and the corresponding tcms-api version 1.5.1! This is a bug-fix and +enhancement release and we advise you to upgrade as soon as possible! + + +Changes since Kiwi TCMS 3.49 +---------------------------- + +### Enhancements and bug fixes + + +- Update documentation for XML-RPC and positional arguments, translations, + environment groups +- Enable translations. Fixes + [Issue #129](https://github.com/kiwitcms/Kiwi/issues/129) +- Register models for DB translations. Fixes + [Issue #182](https://github.com/kiwitcms/Kiwi/issues/182) +- New German translations (@xbln) +- Require django-attachments>=1.3 and restore attachments count in tabs +- Fix missing tag names in TestPlan page +- Hide admin forms for some models not supposed to be edited by users. Fixes + [Issue #174](https://github.com/kiwitcms/Kiwi/issues/174) +- Use django-grappelli for the admin templates: modern look and feel and + less template files overridden by Kiwi TCMS +- Load values for default property in TestRun 'Add Property' dialog. Fixes + [Issue #142](https://github.com/kiwitcms/Kiwi/issues/142) +- Correctly find property ID when renaming environment properties. Fixes + [Issue #167](https://github.com/kiwitcms/Kiwi/issues/167) +- Convert request body to string. Fixes + [Issue #177](https://github.com/kiwitcms/Kiwi/issues/177) + +### Refactoring + +- Remove batch tag Add/Remove sub-menu in TestPlan view (Anton Sankov) +- Remove Edit tag button in Tag tab (Anton Sankov) +- Remove template functions. Fixes + [Issue #107](https://github.com/kiwitcms/Kiwi/issues/107) +- Remove custom HttpJSONResponse classes +- Remove unused and duplicate code + + +tcms-api changes since 1.5.0 +---------------------------- + + +- Fix order of TestCaseRun statuses. Fixes + [Issue #184](https://github.com/kiwitcms/Kiwi/issues/184) + + + +**IMPORTANT:** this release introduces new database migrations! + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then + + cd Kiwi/ + docker-compose down + make docker-image + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Happy testing! diff --git a/content/2018-02-10-version-4.0.0.markdown b/content/2018-02-10-version-4.0.0.markdown new file mode 100644 index 00000000..76c2b20e --- /dev/null +++ b/content/2018-02-10-version-4.0.0.markdown @@ -0,0 +1,207 @@ +Title: Kiwi TCMS & tcms-api version 4.0.0 +headline: updated XML-RPC interface and API client +date: 2018-02-10 15:30 +comments: true +og_image: images/kiwi_v400.jpg +twitter_image: images/kiwi_v400.jpg +tags: releases + +We're happy to announce Kiwi TCMS version 4.0.0 +and the corresponding tcms-api version 4.0.0! This is a very big release +which introduces tons of backwards incompatible changes to the RPC layer +as well as several bug-fixes and enhancements! + +With this release Kiwi TCMS meets one of our +[milestones for 2018]({filename}2018-01-22-milestones.markdown)! All XML-RPC +namespaces now match DB model names and the API client class names. Lots of +similar and duplicate methods were removed and existing ones were simplified. +We've also reduced code duplication and technical debth by 1 month +according to stats by [CodeClimate](https://codeclimate.com/github/kiwitcms/Kiwi). + +**IMPORTANT:** this is also the first release to officially publish the +`pub.kiwitcms.eu/kiwitcms/kiwi` container image! + +**WARNING:** upgrading to Kiwi TCMS 4.0.0 means you will have to upgrade +the tcms-api client as well. None of the 4.x releases is compatible with +older releases due to the massive ammount of changes in the RPC layer. + + +Changes since Kiwi TCMS 3.50 +---------------------------- + +### Enhancements and bug fixes + +- Upgrade to Django 2.0.2 which patches a security issue +- Pin JIRA client version to 1.0.10. Fixes + [Issue #195](https://github.com/kiwitcms/Kiwi/issues/195) +- Generate api-docs for model classes +- Updated documentation for all RPC methods +- Use Grappelli jQuery initialization, fixes popup windows +- Unify RPC namespaces, API client class names and server-side model names. + Fixes [Issue #153](https://github.com/kiwitcms/Kiwi/issues/153) + +### Settings + +- Remove `ADMIN_PREFIX` setting + +### RPC methods refactoring + +- Remove `Build.check_build`, use `Build.filter` +- Remove `Build.get`, use `Build.filter` +- Remove `Build.get_caseruns`, use `TestCaseRun.filter` +- Remove `Build.get_runs`, use `TestRun.filter` + +- Rename `Env.filter_groups`, use `Env.Group.filter` +- Rename `Env.filter_properties`, use `Env.Property.filter` +- Rename `Env.filter_values`, use `Env.Value.filter` + +- Remove `Product.add_component`, use `Component.create` +- Remove `Product.add_version`, use `Version.create` +- Remove `Product.check_category`, use `Category.filter` +- Remove `Product.check_component`, use `Component.filter` +- Remove `Product.check_product`, use `Product.filter` +- Remove `Product.filter_categories`, use `Category.filter` +- Remove `Product.filter_components`, use `Component.filter` +- Remove `Product.filter_versions`, use `Version.filter` +- Remove `Product.get`, use `Product.filter` +- Remove `Product.get_builds`, use `Build.filter` +- Remove `Product.get_cases`, use `TestCase.filter` +- Remove `Product.get_categories`, use `Category.filter` +- Remove `Product.get_category`, use `Category.filter` +- Remove `Product.get_component`, use `Component.filter` +- Remove `Product.update_component`, use `Component.update` + +- Rename `Tag.get_tags` to `Tag.filter` + +- Remove `TestCase.add_comment` +- Update signature for `TestCase.add_component` +- Update signature for `TestCase.add_tag` +- Remove `TestCase.add_to_run`, use `TestRun.add_case` +- Remove `TestCase.attach_bug`, use `Bug.create` +- Remove `TestCase.calculate_average_estimated_time` +- Remove `TestCase.calculate_total_estimated_time` +- Remove `TestCase.check_case_status`, use `TestCaseStatus.filter` +- Remove `TestCase.check_priority`, use `Priority.filter` +- Update signature for `TestCase.create`, no longer accepts `plan`, + `component` and `bug` dict attributes. Instead use + `TestPlan.add_case`, `TestCase.add_component` and `Bug.create` +- Remove `TestCase.detach_bug`, use `Bug.remove` +- Remove `TestCase.filter_count` +- Remove `TestCase.get`, use `TestCase.filter` +- Remove `TestCase.get_bugs`, use `Bug.filter({'case': ?})` +- Remove `TestCase.get_bug_systems` +- Remove `TestCase.get_case_status`, use `TestCaseStatus.filter` +- Update signature for `TestCase.get_components` +- Remove `TestCase.get_plans`, use `TestPlan.filter({'case': ?})` +- Remove `TestCase.get_priority`, use `Priority.filter` +- Remove `TestCase.get_tags`, use `Tag.filter({'case': ?})` +- Remove `TestCase.get_text`, use `TestCase.filter` +- Remove `TestCase.link_plan`, use `TestPlan.add_case` +- Rename `TestCase.notification_add_cc` to `TestCase.add_notification_cc` + and update signature +- Rename `TestCase.notification_get_cc_list` to `TestCase.get_notification_cc` + and update signature +- Rename `TestCase.notification_remove_cc` to `TestCase.remove_notification_cc` + and update signature +- Update signature for `TestCase.remove_component` +- Update signature for `TestCase.remove_tag` +- Remove `TestCase.store_text`, use `TestCase.update` with + `setup`, `breakdown`, `action` and `effect` attributes in the parameter dict +- Remove `TestCase.unlink_plan`, use `TestPlan.remove_case` + +- Remove `TestCasePlan.get` +- Remove `TestCasePlan.update` + +- Update `TestCaseRun.add_comment` to accept a single ID as first parameter +- Remove `TestCaseRun.attach_bug`, use `Bug.create` +- Rename `TestCaseRun.attach_log` to `TestCaseRun.add_log` +- Remove `TestCaseRun.detach_bug`, use `Bug.remove` +- Rename `TestCaseRun.detach_log` to `TestCaseRun.remove_log` +- Remove `TestCaseRun.get`, use `TestCaseRun.filter` +- Remove `TestCaseRun.get_bugs`, use `Bug.filter({'case_run': ?})` +- Remove `TestCaseRun.get_case_run_status_by_name` +- Update signature for `TestCaseRun.update` + +- Remove `TestPlan.add_component` +- Update signature for `TestPlan.add_tag` +- Remove `TestPlan.check_plan_type`, use `PlanType.filter` +- Remove `TestPlan.filter_count` +- Remove `TestPlan.get`, use `TestPlan.filter` +- Remove `TestPlan.get_all_cases_tags` +- Remove `TestPlan.get_components` +- Remove `TestPlan.get_env_groups`, use `Env.Group.filter({'testplan': ?})` +- Remove `TestPlan.get_plan_type`, use `PlanType.filter` +- Remove `TestPlan.get_product`, use `Product.filter({'plan': ?})` +- Remove `TestPlan.get_tags`, use `Tag.filter({'plan': ?})` +- Remove `TestPlan.get_test_cases`, use `TestCase.filter({'plan': ?})` +- Remove `TestPlan.get_test_runs`, use `TestRun.filter({'plan': ?})` +- Remove `TestPlan.get_text`, use `TestPlan.filter` +- Rename `TestPlan.link_env_value` to `TestPlan.add_env_value` + and update signature +- Remove `TestPlan.remove_component` +- Update signature for `TestPlan.remove_tag` +- Remove `TestPlan.store_text`, use `TestPlan.update` with + a `text` attribute in the parameter values +- Rename `TestPlan.unlink_env_value` to `TestPlan.remove_env_value` + and update signature + +- Rename `TestRun.add_cases` to `TestRun.add_case` and update signature +- Update signature for `TestRun.add_tag` +- Update signature for `TestRun.create`, no longer accepts `case` + dict attribute. Instead use `TestRun.add_case` +- Remove `TestRun.filter_count` +- Remove `TestRun.get`, use `TestRun.filter` +- Remove `TestRun.get_bugs` +- Remove `TestRun.get_env_values`, use `Env.Value.filter({'testrun': ?})` +- Remove `TestRun.get_tags`, use `Tag.filter({'run': ?})` +- Rename `TestRun.get_test_cases` to `TestRun.get_cases` +- Remove `TestRun.get_test_case_runs`, use `TestCaseRun.filter({'run': ?})` +- Remove `TestRun.get_test_plan`, use `TestPlan.filter({'run': ?})[0]` +- Rename `TestRun.remove_cases` to `TestRun.remove_case` and update signature +- Update signature for `TestRun.remove_tag` +- Update signature for `TestRun.update` + +- Rename `User.get` to `User.filter` +- Rename `User.join` to `User.join_group` +- Update signature for `User.update` + + +### Models and database migrations + +- Remove model `TestEnvironment` +- Remove model `TestEnvironmentCategory` +- Remove model `TestEnvironmentElement` +- Remove model `TestEnvironmentMap` +- Remove model `TestEnvironmentProperty` +- Remove model `TestPlanComponent` +- Remove `TestPlan.get_text_with_version()` +- Remove `TestRun.get_previous_or_next()` + +**IMPORTANT:** this release introduces new database migrations! + + +tcms-api changes since 1.5.1 +---------------------------- + +- **Make the code compatible with Kiwi TCMS XML-RPC v4.0.0** +- Rename `Status` to `TestCaseRunStatus` +- Rename `CaseRun` to `TestCaseRun` +- Remove `PlanStatus`, use `TestPlan.is_active` +- Remove `RunStatus`, use `TestRun.finished` +- Remove `TestPlan.components` container +- Update signature for `TestPlan`. Now accept `text` kwarg in constructor + instead of `document`. + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then + + cd Kiwi/ + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Happy testing! diff --git a/content/2018-02-21-version-4.1.markdown b/content/2018-02-21-version-4.1.markdown new file mode 100644 index 00000000..98bf84c8 --- /dev/null +++ b/content/2018-02-21-version-4.1.markdown @@ -0,0 +1,80 @@ +Title: Kiwi TCMS 4.1.0 +headline: bug-fix and enhancement update +date: 2018-02-21 22:45 +comments: true +tags: releases + +We're happy to announce Kiwi TCMS version 4.1.0! +This is a bug-fix and enhancement update centered around providing more +flexibility for administrators to configure the user approval process. +Refer to the documentation for more information about +[signals handling](http://kiwitcms.readthedocs.io/en/latest/modules/tcms.signals.html) +in Kiwi TCMS. + + +Changes since Kiwi TCMS 4.0.0 +------------------------------ + +### Enhancements and bug fixes + +- Add tests for `tcms.core.ajax.tag` (Anton Sankov) +- Remove unused code from `tcms.core.ajax.tag` (Anton Sankov) +- Refactor `tcms.core.ajax.tag` to work with only one object. Fixes + [Issue #135](https://github.com/kiwitcms/Kiwi/issues/135) (Anton Sankov) +- Add test for tcms_api.TestRun. Closes + [Issue #194](https://github.com/kiwitcms/Kiwi/issues/194) +- Send the `user_registered` signal when new users are registered +- Add signal handler to notify admins on new users. Fixes + [Issue #205](https://github.com/kiwitcms/Kiwi/issues/205) +- Add `is_superuser` column to User admin. Fixes + [Issue #206](https://github.com/kiwitcms/Kiwi/issues/206) +- Properly pass variables to blocktrans tag. Fixes + [Issue #225](https://github.com/kiwitcms/Kiwi/issues/225) +- Minor documentation updates + +### Refactoring + +- Remove double thread when sending email on `post_save` signal +- Remove unused `EmailBackend` authentication backend +- Remove unused `tcms.core.models.signals` module +- Consolidate all signals and handlers in `tcms.signals` +- Make use of `django_messages` during account registration + +### Settings + +- Remove `LISTENING_MODEL_SIGNAL` (internal setting) +- New setting `AUTO_APPROVE_NEW_USERS`. Fixes + [Issue #203](https://github.com/kiwitcms/Kiwi/issues/203) + + +### Models and database migrations + +- Remove unused fields from `Product` model: + `disallow_new`, `max_vote_super_bug`, `vote_super_user`, + `field votes_to_confirm`, `default_milestone`, `milestone_url` +- Remove unused `Milestone` model + + +**IMPORTANT:** this release introduces new database migrations! + +### Translations + +There are new translatable strings introduced with this release, +including translations of a few email templates! At this moment +translating Kiwi TCMS in languages other than English is purely a +community effort. If you'd like to help consult our +[translations contribution page](http://kiwitcms.readthedocs.io/en/latest/contribution.html#translation). + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then + + cd Kiwi/ + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Happy testing! diff --git a/content/2018-03-16-version-4.1.3.markdown b/content/2018-03-16-version-4.1.3.markdown new file mode 100644 index 00000000..75309032 --- /dev/null +++ b/content/2018-03-16-version-4.1.3.markdown @@ -0,0 +1,126 @@ +Title: Kiwi TCMS 4.1.3 +headline: Django 2.0.3, bug-fix and enhancement update +date: 2018-03-16 10:45 +comments: true +tags: releases + +We're happy to announce Kiwi TCMS version 4.1.3! +This is a bug-fix and enhancement update which upgrades to the latest Django +version, provides easier way for Docker administrators to override SSL certificates +and access httpd log files and resolves several issues. This release also includes +lots of internal code refactoring which removes code duplication and brings down +[CodeClimate](https://codeclimate.com/github/kiwitcms/Kiwi) metrics +to 26.9% of technical debt or 10 months to fix. + +We've pushed the new `pub.kiwitcms.eu/kiwitcms/kiwi` container image and updated the +demo instance at +[https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/). +Starting forward the demo will use +the `info-at-kiwitcms.org` email address for all communication sent. There are real +people behind this address so if you write to us we will reply! + + +Changes since Kiwi TCMS 4.1.0 +------------------------------ + +### Enhancements + +- Upgrade to [Django 2.0.3](https://docs.djangoproject.com/en/2.0/releases/2.0.3/) +- Show `date_joined` column for user admin +- Expose httpd logs to the host running docker. Fixes + [Issue #191](https://github.com/kiwitcms/Kiwi/issues/191) + + +### Bug fixes + +- Move SSL keys under common directory in the container. Fixes + [Issue #231](https://github.com/kiwitcms/Kiwi/issues/231) +- Always select active builds for TestRun. Fixes + [Issue #245](https://github.com/kiwitcms/Kiwi/issues/245) +- Swap `escape` and `escapejs` filters. Fixes + [Issue #234](https://github.com/kiwitcms/Kiwi/issues/234) +- Globally disable `delete_selected` action in Admin, this removes the + drop down selection widget! Fixes + [Issue #221](https://github.com/kiwitcms/Kiwi/issues/221) +- Fix error in TestCase view when `from_plan` is empty string. Fixes + [Sentry KIWI-TCMS-Z](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/474369640/) +- Fix sorting issue when None is compared to int. Fixes + [Sentry KIWI-TCMS-V](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/473996504/) +- Validate form field as integer, not char. Fixes + [Sentry KIWI-TCMS-W](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/474058623/) +- [docs] Remove information about importing test cases via XML. This functionality + was removed in version 3.49 + + +### Refactoring + +- Refactor inner class `CaseActions`. Fixes + [Issue #21](https://github.com/kiwitcms/Kiwi/issues/21) (Chenxiong Qi) +- Only use `get_cases.html` template. Fixes + [Issue #176](https://github.com/kiwitcms/Kiwi/issues/176) +- Unify `get_details_review.html` and `get_details.html` templates +- Remove internal `Prompt.render` class and replace with Django messages +- Remove `mail/delete_plan.txt` template +- Remove `handle_emails_pre_plan_delete` signal handler +- Remove the `Export` button from TestPlan view, use Case->Export sub-menu + item in the Cases tab. Also remove the export buttons from search and advanced + search result templates. If you'd like to export the cases from a given + plan you have to open it in a new browser window and use the menu +- Remove the `Print` button from plan search form +- Remove TestRun cloning from search results and plan details, use sub-menu +- Remove unnecessary JavaScript handling for `EnvGroup` edit view + + +### Settings + +- Remove `PLAN_DELELE_EMAIL_TEMPLATE` setting (not used) + + +### Models and database migrations + +- Use Django's own `DurationField`, instead of custom one. Fixes + [Issue #183](https://github.com/kiwitcms/Kiwi/issues/183) + +API clients must now send values for `estimated_time` which must be in a +format that `parse_duration()` understands, for example 'DD HH:MM:SS'! See + + + +**IMPORTANT:** this release introduces new database migrations! + +### Translations + +There are new translatable strings introduced with this release! At this moment +translating Kiwi TCMS in languages other than English is purely a +community effort. If you'd like to help consult our +[translations contribution page](http://kiwitcms.readthedocs.io/en/latest/contribution.html#translation). + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then + + cd Kiwi/ + git pull + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + + +Help us make Kiwi TCMS better +----------------------------- + +According to [our 2018 roadmap]({filename}2018-01-22-milestones.markdown) the +Kiwi TCMS team is investing a great deal of our time to make the code base more +maintainable! For the past few releases we've been balancing code refactoring +with bug-fixing and minor enhancements and we have lots of ideas down the line. + +We want to hear your voice! Tell us how you use Kiwi TCMS inside your organization. +We want to know what works for you and what doesn't so we can make it better. Feel +free to comment below, file GitHub issues or send us an email. + + +Happy testing! diff --git a/content/2018-04-10-version-4.1.4.markdown b/content/2018-04-10-version-4.1.4.markdown new file mode 100644 index 00000000..c1a2635b --- /dev/null +++ b/content/2018-04-10-version-4.1.4.markdown @@ -0,0 +1,99 @@ +Title: Kiwi TCMS 4.1.4 +headline: Django 2.0.4, bug-fix and enhancement update +date: 2018-04-10 21:45 +comments: true +tags: releases + +We're happy to announce Kiwi TCMS version 4.1.4! +This is a bug-fix and enhancement update which upgrades to the latest Django +version, resolves several issues and includes lots of internal code updates. + +We've pushed new `pub.kiwitcms.eu/kiwitcms/kiwi` container image and updated the +demo instance at +[https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/)! + + +Changes since Kiwi TCMS 4.1.3 +------------------------------ + +### Enhancements + +- Upgrade to [Django 2.0.4](https://docs.djangoproject.com/en/2.0/releases/2.0.4/) +- Enable pylint and fix around 700 issues (Anton Sankov) +- Add pylint plugin to check docstrings for triple double quotes. Fixes + [Issue #296](https://github.com/kiwitcms/Kiwi/issues/296) +- Add pylint plugin to check for list comprehensions. Fixes + [Issue #270](https://github.com/kiwitcms/Kiwi/issues/270) +- Add pylint plugin to check for class attributes enclosed with double underscores. + These are dunders and are reserved for Python! + + +### Signals + +**BREAKING CHANGES**: + +- Renamed `user_registered` to `USER_REGISTERED_SIGNAL` and + `post_update` to `POST_UPDATE_SIGNAL`! + + +### Bug fixes + +- Change util function to default to https. Fixes + [Issue #220](https://github.com/kiwitcms/Kiwi/issues/220) +- Fix + [Sentry KIWI-TCMS-17](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/495015101/) +- Cast iterator to list. Fixes + [Sentry KIWI-TCMS-19](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/501200394/) +- Don't crash in Custom Report. Fixes + [Sentry KIWI-TCMS-18](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/499389305/) +- Better handling of TestPlan documents. Fixes + [Sentry KIWI-TCMS-1A](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/501695244/) +- Fix sorting of entries in TestPlan -> Runs tab. Fixes + [Sentry KIWI-TCMS-E](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/472757670/) + + +### Refactoring + +- Move Bugzilla and Kerberos backends code into their own repositories. Fixes + [Issue #239](https://github.com/kiwitcms/Kiwi/issues/239) +- Remove cache from TestCaseRunStatus. Fixes + [Issue #279](https://github.com/kiwitcms/Kiwi/issues/279) +- Rewrite `UrlMixin`. Fixes + [Issue #157](https://github.com/kiwitcms/Kiwi/issues/157) (Chenxiong Qi) +- Remove unused `split_as_option` template tag +- Internal refactoring and more tests in `tcms/core/ajax.py` +- Delete unused file `tcms/core/forms/widgets.py` +- Merge `case/form/filter.html` into `plan/get_cases.html` +- Remove unused `TestCaseStatus.id_to_string()` + + + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then + + cd Kiwi/ + git pull + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + + +Help us make Kiwi TCMS better +----------------------------- + +According to [our 2018 roadmap]({filename}2018-01-22-milestones.markdown) the +Kiwi TCMS team is investing a great deal of our time to make the code base more +maintainable! For the past few releases we've been balancing code refactoring +with bug-fixing and minor enhancements and we have lots of ideas down the line. + +We want to hear your voice! Tell us how you use Kiwi TCMS inside your organization. +We want to know what works for you and what doesn't so we can make it better. Feel +free to comment below, file GitHub issues or send us an email. + + +Happy testing! diff --git a/content/2018-04-11-summer-conferences.markdown b/content/2018-04-11-summer-conferences.markdown new file mode 100644 index 00000000..1e4ee541 --- /dev/null +++ b/content/2018-04-11-summer-conferences.markdown @@ -0,0 +1,24 @@ +Title: Kiwi TCMS conference presence +headline: Bulgaria Web Summit, OSCAL, DjangoCon Europe +date: 2018-04-11 15:35 +comments: true +og_image: images/roadtrip.png +twitter_image: images/roadtrip.png +tags: community, events + +Kiwi TCMS is going on a small conference tour. This is where you can find us +in the next couple of months: + +* [Bulgaria Web Summit](http://bulgariawebsummit.com/) - 14 April, Sofia +* [OSCAL](https://oscal.openlabs.cc/) - 19 & 20 May, Tirana +* [DjangoCon Europe](https://2018.djangocon.eu/) - 23-27 May, Heidelberg + +For all of the 3 conferences we're going to have a project presence. In addition +to that you can catch-up with Alex Todorov, Kiwi's project lead at: +[TestCon Moscow](https://testconf.ru/)(17-19 April, Moscow), +[Romanian Testing Conference](https://romaniatesting.ro/)(9-11 May, Cluj-Napoca), +[PyCon CZ](https://cz.pycon.org/2018/)(1-3 June, Prague) and +[DEVit](https://devitconf.org/)(10-11 June, Thessaloniki). + +If you can ping us at [@KiwiTCMS](https://twitter.com/KiwiTCMS) or look for the +kiwi bird logo and come to say hi! diff --git a/content/2018-06-24-version-4.2.markdown b/content/2018-06-24-version-4.2.markdown new file mode 100644 index 00000000..e3704dd3 --- /dev/null +++ b/content/2018-06-24-version-4.2.markdown @@ -0,0 +1,155 @@ +Title: Kiwi TCMS 4.2 +headline: Python 3.6, Django 2.0.6 and security updates +date: 2018-06-24 17:05 +comments: true +tags: releases + +We're happy to announce Kiwi TCMS and tcms-api version 4.2! +This is a security, bug-fix and enhancement update which upgrades to the latest +Django version under Python 3.6. +We've pushed new `pub.kiwitcms.eu/kiwitcms/kiwi` container image and updated the +demo instance at [https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/)! + +This version also includes GDPR related changes which affect our project. Read below +for the details. + + +Changes since Kiwi TCMS 4.1.4 +------------------------------ + +**IMPORTANT:** this release introduces new database migrations + +### Security + +- Enable testing with Badit. Fixes + [Issue #237](https://github.com/kiwitcms/Kiwi/issues/237) +- Enable testing with + [Coverity Scan](https://scan.coverity.com/projects/kiwitcms-kiwi) +- Enable testing with + [pyup.io](https://pyup.io/repos/github/kiwitcms/Kiwi/) +- Enable testing with + [Snyk](https://snyk.io/test/github/kiwitcms/Kiwi) +- Use SHA256 instead of MD5 and SHA1 +- Use the `secrets` module for activation keys +- Remove unnecessary AJAX view that had remote code execution vulnerability +- Don't use hard-coded temporary directories +- Upgrade to + [Patternfly 3.36.0](https://github.com/patternfly/patternfly/releases/tag/v3.36.0) + which fixes the following vulnerabilities: + - + - + +### Settings + +- `BUGZILLA_AUTH_CACHE_DIR` is a new setting that may be specified to control + where Bugzilla auth cookies are saved! It is not specified by default and + Kiwi TCMS uses a temporary directory each time we try to login into Bugzilla! + +### Enhancements + +- Upgrade to Python 3.6. Fixes + [Issue #91](https://github.com/kiwitcms/Kiwi/issues/91) +- Upgrade to [Django 2.0.6](https://docs.djangoproject.com/en/2.0/releases/2.0.6/) +- Fix around 100 pylint issues (Anton Sankov) +- Update email confirmation template for newly registered users and make the + text translatable +- Display `Last login` column in User admin page +- Add tests for `tcms.management.views` (Anton Sankov) +- Remove unused CSS selectors +- Remove unnecessary `templates/comments/comments.html` + +### Bug fixes + +- Remove unused deferred field `product_version`. Fixes + [Sentry KIWI-TCMS-1C](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/523948048/) +- Rename left-over `get_url()` to `get_full_url()`. Fixes + [Sentry KIWI-TCMS-1B](https://sentry.io/open-technologies-bulgaria-ltd/kiwi-tcms/issues/523855781/) +- Fix empty TestPlan url and Product fields in TestRun email notification. Fixes + [Issue #353](https://github.com/kiwitcms/Kiwi/issues/353) (Matt Porter, Konsulko Group) + + +### Translations + +- Updated translations for Chinese Simplified +- Updated translations for Chinese Traditional +- New language and translations for Slovenian + +### Documentation + +- Added `git clone` command to documentation. Fixes + [Issue #344](https://github.com/kiwitcms/Kiwi/issues/344) (Anton Sankov) + +### Models and database migrations + +- Increase checksum fields size to hold the new checksum values +- Increase `activation_key` field size to 64 chars + +### GDPR related + +- Allow users to delete their accounts. Link is present on `My profile` page. + This will also delete any related objects using cascade delete +- Try not to be so obvious when it comes to displaying email addresses across + the web interface. Instead show username and link to profile + +In addition the following changes were deployed to our infrastructure: + +- On our website the `Subscribe to our newsletter` is now a link, instead of + embedded form because embedded forms can't display GDPR compliance fields. + If you wish to receive email from Kiwi TCMS you need to select the `Email` + checkbox when signing up for the newsletter. +- Double opt-in is now enabled when subscribing to our newsletter +- All newsletter addresses that have been unsubscribed have been deleted +- Upon registration for [https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/) + you are no longer subscribed + to the newsletter. Now we send a welcome email with a link to the newsletter + so you can subscribe if you want +- [https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/) + now runs a cron job which deletes inactive accounts + and all of their related data. The cron job runs weekly + + +We're trying to be respectful to your private data and not expose that to any +3rd parties or use it for means other than making Kiwi TCMS better open source +software. If you spot areas for improvement please +[report an issue](https://github.com/kiwitcms/Kiwi/issues/new) so we can take +a look at it! + + + +tcms-api changes since 4.0.0 +---------------------------- + +- Remove coloring. Fixes + [Issue #185](https://github.com/kiwitcms/Kiwi/issues/185) +- Fix using the API client against `https://` URLs (Adam Ɓoszyn, Samsung) + + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then + + cd Kiwi/ + git pull + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + + +Help us make Kiwi TCMS better +----------------------------- + +According to [our 2018 roadmap]({filename}2018-01-22-milestones.markdown) the +Kiwi TCMS team is investing a great deal of our time to make the code base more +maintainable! For the past few releases we've been balancing code refactoring +with bug-fixing and minor enhancements and we have lots of ideas down the line. + +We want to hear your voice! Tell us how you use Kiwi TCMS inside your organization. +We want to know what works for you and what doesn't so we can make it better. Feel +free to comment below, file GitHub issues or send us an email. + + +Happy testing! diff --git a/content/2018-07-24-version-5.0.rst b/content/2018-07-24-version-5.0.rst new file mode 100644 index 00000000..66d929b7 --- /dev/null +++ b/content/2018-07-24-version-5.0.rst @@ -0,0 +1,194 @@ +Kiwi TCMS 5.0 +############# + +:headline: object history tracking and lots of updates +:date: 2018-07-24 16:30 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS and tcms-api version 5.0! This release +introduces object history tracking, removal of old functionality and unused code, +lots of internal updates and bug fixes. + +The new ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` docker image has Image ID ``468de0abe8a8``. +`https://public.tenant.kiwitcms.org `_ has also been updated! + + +Changes since Kiwi TCMS 4.2 +--------------------------- + +Settings +~~~~~~~~ + +- Remove ``CACHE`` because not used +- Remove ``PLAN_EMAIL_TEMPLATE``, ``CASE_EMAIL_TEMPLATE`` and + ``CASE_DELETE_EMAIL_TEMPLATE``. Templates can still be overridden if desired + +Enhancements +~~~~~~~~~~~~ + +- Upgrade to `Django 2.0.7 `_ +- Allow to delete TestPlan. Fixes + `Issue #273 `_ +- Don't include username in dashboard URL +- Copy latest TestPlan text when cloning +- Always require users to be logged in. Anonymous users will not be allowed + access by default. Read-only access to some views (e.g. get TestPlan or TestRun) + can be enabled by disabling ``GlobalLoginRequiredMiddleware``! Fixes + `Issue #230 `_ +- Start tracking change history for TestPlan, TestCase, TestRun and TestCaseRun. + Fixes `Issue #294 `_ +- History changes are recorded as unified diff which is a universally recognized format +- Show the actual changes in email notifications. Fixes + `Issue #199 `_ + +Bug fixes +~~~~~~~~~ + +- Fix ``UnboundLocalError local variable 'message' referenced before assignment``. Fixes + `Sentry KIWI-TCMS-1S `_ +- Make email address unique when adding users via admin panel. Fixes + `Issue #352 `_ and + `Issue #68 `_ +- Fix ``unsupported operand type(s) for +=: 'int' and 'datetime.timedelta'`` by + initializing timedelta variable properly. Fixes + `Sentry KIWI-TCMS-1Y `_ +- Remove ``core.models.fields`` with MySQL time conversions. Fixes + `Issue #390 `_ +- Fix bad JavaScript comparison. Fixes Coverity #289956 +- Remove expression with no effect. Fixes Coverity #289974 +- Rewrite ``request_host_link()`` to fix Coverity #289987 +- Fix Coverity #289923 - Typo in identifier +- Don't send emails for changes performed by myself. Fixes + `Issue #216 `_ + +Refactoring +~~~~~~~~~~~ + +- Fix pylint issues in several modules (Anton Sankov & Ivaylo Ivanov) +- Fix wrong Plan Type template variable in advanced search form +- Do not use ``Model.objects.update()`` because it doesn't respect history +- Use the standard ``ModelChoiceField`` instead of custom one +- Use ``updateRunStatus()`` instead of deprecated ``updateObject()`` +- Simplify JavaScript function ``getInfo()`` and use it multiple times +- Simplify ``previewPlan()`` by removing unused parameters +- Unify ``addChildPlan()`` and ``removeChildPlan()`` +- Unify ``getInfoAndUpdateObject()`` with ``changeCaseRunAssignee()`` +- Unify ``onTestCaseStatusChange()`` with ``changeTestCaseStatus()`` +- Convert ``TestCaseEmailSettings.cc_list`` to string field +- Merge ``report/caseruns_table.html`` with ``reports/caseruns.html`` +- Rename model ``UserActivateKey`` to ``UserActivationKey``. Fixes + `Issue #276 `_ +- Remove ``cached_entities()``. Fixes + `Issue #307 `_ +- Remove ``TestPlanText.checksum`` field +- Remove checksum fields for ``TestCaseText`` model +- Remove unused and home-grown template tags +- Remove unused fields ``auto_blinddown``, ``description``, ``sortkey`` from + ``TestCaseRunStatus`` model. Fixes + `Issue #186 `_ +- Remove ``Meta.db_name`` effectively renaming all tables. New names will use + Django's default naming scheme +- Remove RawSQL queries. We are now 100% ORM based. Fixes + `Issue #36 `_ +- Remove duplicate ``MultipleEmailField`` definition +- Remove ``TCMSLog`` view, ``TCMSLogManager``, ``TCMSLogModel`` +- Remove ``TestPlanText`` model, use ``TestPlan.text`` instead +- Remove unused JavaScript files + - ``lib/detetmine_type.js`` + - ``lib/hole.js`` + - ``lib/scriptaculous-controls.js.patch`` + - ``lib/validations.js`` + - ``static/js/index.js`` +- Remove ``constructPlanParentPreviewDialog()`` +- Remove ``changeCasePriority()`` +- Remove ``changeCaseRunOrder()`` +- Remove ``debug_output()`` from JavaScript files +- Remove deprecated ``/ajax/update/`` end-point +- Remove ``taggleSortCaseRun()`` +- Remove ``strip_parameters()`` +- Remove ``_InfoObjects.users()`` +- Remove ``get_value_by_type()`` +- Remove ``testcases.views.get_log()`` +- Remove ``mail_scene()`` methods and related templates + + +Removed functionality +~~~~~~~~~~~~~~~~~~~~~ + +- TestRun completion status is no longer updated automatically. You can still + update the status manually via the 'Set Finished' or 'Set Running' links! + Fixes `Issue #367 `_ +- Remove bookmarks functionality. There are many great bookmark manager apps + and if the user is keen on bookmarks they should use one of them. Closes + `Issue #67 `_ and + `Issue #210 `_ +- Don't track & display history of changes for ``EnvGroup`` model +- Remove Disable/Enable buttons from TestPlan page. Enabling and disabling + can still be done via the edit page +- Remove ``changeParentPlan()`` and the ability to change TestPlan parents + from the 'Tree View' tab. This can be done via the edit page +- When viewing a TestPlan the user is no longer able to specify a sorkey for a + particular TestCase. Instead they can use the ``Re-order cases`` button and + move around the entire row of cases to adjust the sort order +- When working with test case results, inside a TestRun you will not be allowed + to change the order of execution. Order should be defined inside the TestPlan + instead +- Remove ``XmlRpcLog()`` model. Kiwi TCMS will no longer log RPC calls to the + database. This leads to a small performance boost and can be overridden on + individual basis if you need to do so. + +Translations +~~~~~~~~~~~~ + +- More source strings marked as translatable +- New translations for Chinese Simplified, Chinese Traditional, German and Slovenian +- Stop keeping compiled translations under git. Fixes + `Issue #387 `_ + + +tcms-api changes since 4.2 +-------------------------- + +- Requires Python 3.6 or newer because it fixes bugs related to Django's + disabling of keep-alive connections. See https://bugs.python.org/issue26402 +- The rpc client is now accessed via ``TCMS().exec.`` +- Leave only XML-RPC transport classes! This removes the top-level interface + behind the API client and the consuming side is left to work with Python + dictionaries instead of objects. +- Remove the interactive ``tcms`` script +- Remove ``tcms_api.config`` module +- Remove logging class +- Remove ``script_examples/`` directory. These were never tested and maintained + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then:: + + cd Kiwi/ + git pull + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + docker exec -it kiwi_web /Kiwi/manage.py populate_history --auto + + +Help us make Kiwi TCMS better +----------------------------- + +According to `our 2018 roadmap <{filename}2018-01-22-milestones.markdown>`_ the +Kiwi TCMS team is investing a great deal of our time to make the code base more +maintainable! For the past few releases we've been balancing code refactoring +with bug-fixing and minor enhancements and we have lots of ideas down the line. + +We want to hear your voice! Tell us how you use Kiwi TCMS inside your organization. +We want to know what works for you and what doesn't so we can make it better. Feel +free to comment below, file GitHub issues or send us an email. + + +Happy testing! diff --git a/content/2018-07-25-roadmap-update.markdown b/content/2018-07-25-roadmap-update.markdown new file mode 100644 index 00000000..536e4caa --- /dev/null +++ b/content/2018-07-25-roadmap-update.markdown @@ -0,0 +1,134 @@ +Title: Mid-year roadmap status report +date: 2018-07-25 16:30 +comments: true +og_image: images/roadmap.jpg +twitter_image: images/roadmap.jpg +author: Alexander Todorov +tags: community, roadmap + +Hello everyone, in this article I will outline the progress that the Kiwi TCMS +team has made towards achieving the goals on our +[roadmap]({filename}2018-01-22-milestones.markdown). + + +Make code easier to maintain +---------------------------- + +*Status: moderate progress* + +Initially [CodeClimate](https://codeclimate.com/github/kiwitcms/Kiwi) reported +a "D" rating with a 1 year estimated effort. Now it is still on "D" rating with +a 7 months estimated effort to bring the project back in shape. +Code smells have dropped from 600+ to 418, duplications have been reduced from 600+ to 359! +At the same time technical debt ratio has been decreased from 32,5% to 21,6% and +little over 10000 lines of code have been removed from the source code. +Checkout +[the stats](https://codeclimate.com/github/kiwitcms/Kiwi/trends/technical_debt) +for more info! + + + +Use pylint and pylint-django +---------------------------- + +*Status: good progress* + +Both pylint and pylint-django have been integrated into our CI workflow. There are even +a few custom built plugins that we use. The number of issues reported is down to around 900 +from 4000+ initially. The cleanup has been lead by [Anton Sankov](https://github.com/asankov) +with help from [Ivaylo Ivanov](https://github.com/ivo0126) and myself. + + +Render HTML, return JSON +------------------------ + +*Status: no progress* + +Several views were probably modified to return pure JSON in the meantime but we've not +done any targeted work to resolve this issue. + + +Submit forms, post JSON, GET clean URLs +--------------------------------------- + +*Status: no progress* + +Same as above, not much has been done in this area. + + + +API layer +--------- + +*Status: complete* + +After Kiwi TCMS v4.0 the server side API has been reorganized and updated +to follow the model/method names used internally. + +After the recent version 5.0 the client side API library has been stripped +to its most basic form so that you can work directly with the responses from +the server. + +There is no more duplication and ambiguity in names because there isn't +a lot of code left! + + +Documentation +------------- + +*Status: moderate progress, dropped* + +All RPC methods have been documented! The rest of the internals will be documented +as we go along. + + +No vendored JavaScript libraries +-------------------------------- + +*Status: moderate progress* + +Several JavaScript libraries have been removed but we still carry around jQuery +and Handlebars.js. No work has been done to convert Kiwi TCMS to use the jQuery +version provided with Django. + + +Less HTML templates with better organization +-------------------------------------------- + +*Status: minimal progress* + + +There are still over 100 HTML templates in Kiwi TCMS. Some of the HTML templates +have been merged together, some email templates have been refactored and marked +as translatable but the majority of them have not been updated for a long time. + + +Modern interface with Patternfly +-------------------------------- + +*Status: no progress* + + +JavaScript updates and front-end testing +---------------------------------------- + +*Status: small progress* + +A number of JavaScript functions have been refactored and removed during the +past few releases but there are still thousands of lines of code left to deal with. + + +Community efforts +------------------ + +*Status: moderate progress* + +We are seeing a steady stream of new users registered on +[https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/) and +there are several active contributors (issues, translations). + +Kiwi TCMS was represented at OSCAL Tirana, DjangoCon Heidelberg and PyCon Prague! +We're planning to attend HackConf and OpenFest in Sofia by the end of the year. + + +Happy testing! diff --git a/content/2018-07-30-docker-backup.markdown b/content/2018-07-30-docker-backup.markdown new file mode 100644 index 00000000..38c29a9a --- /dev/null +++ b/content/2018-07-30-docker-backup.markdown @@ -0,0 +1,121 @@ +Title: How to backup Docker volumes for Kiwi TCMS +date: 2018-07-30 00:25 +comments: true +og_image: images/backup.png +twitter_image: images/backup.png +author: Alexander Todorov +tags: customization + + +When you start Kiwi TCMS by running `docker-compose up` +(see [here](http://kiwitcms.readthedocs.io/en/latest/installing_docker.html#start-docker-compose)) +it will automatically create 2 volumes: `kiwi_db_data` and `kiwi_uploads`. +This blog post will outline how to backup these docker volumes. + +**Note:** in the instructions below `kiwi_db` is the container name and `kiwi` is the +database name used inside the `docker-compose.yml` file! + + +MariaDB/MySQL database +---------------------- + +To export all contents from the docker container execute the command: + + docker exec -i kiwi_db mysqldump --user --password kiwi > backup.sql + +This will create a file named `backup.sql` in the current directory, outside of the running container! + +You can restore the database contents by using the following command: + + cat backup.sql | docker exec kiwi_db mysql --user --password -v kiwi + +**Notes:** + +1. Depending on your scenario you may want to remove the existing volume + (`docker-compose down && docker volume rm kiwi_db_data`) before restoring the database! + + +Postgres database +----------------- + +To export all contents from the docker container execute the command: + + docker exec -i kiwi_db pg_dump -U --dbname=kiwi -F c > backup.bak + +This will create a file named `backup.bak` in the current directory, outside of the running container. +This is a PostgreSQL custom database dump format which contains all data and schema definitions. +That is a binary file which can be read with the `pg_restore` command! + +To drop and restore the entire database execute: + + docker exec -i kiwi_db psql -c "DROP DATABASE IF EXISTS kiwi;" + cat backup.bak | docker exec -i kiwi_db pg_restore -U --dbname=template1 -vcC + + +Multi-tenant database +--------------------- + +The [kiwitcms-tenant](https://github.com/kiwitcms/tenants) add-on and/or +[Kiwi TCMS Enterprise](https://github.com/kiwitcms/enterprise) work only on +Postgres! Each tenant (aka name-space) uses a separate database schema. +The first schema name is `public`. + +The backup and restore instructions shown above operate on all tenants together! +If you want to [drop and] restore an individual tenant then use the commands: + + docker exec -it kiwi_db psql --dbname=kiwi + + kiwi=> DROP SCHEMA $tenant_name CASCADE; + .... + DROP SCHEMA + kiwi=> CREATE SCHEMA $tenant_name; + CREATE SCHEMA + kiwi=>Ctrl+D + + cat backup.bak | docker exec -i kiwi_db pg_restore -U --dbname=kiwi -v --schema $tenant_name + + +Backing up file uploads +----------------------- + +Uploaded files can easily be backed up with: + + docker exec -i kiwi_web /bin/tar -cP /Kiwi/uploads > uploads.tar + +and then restored with: + + cat uploads.tar | docker exec -i kiwi_web /bin/tar -x + +You may also try the `rsync` command but be aware that it is not installed +by default! + +**Note:** +the same approach may be used to backup `/var/lib/mysql/` or `/var/lib/pgsql/data` +from the `kiwi_db` container. + + +Backing up multi-tenant uploads +------------------------------- + +By default multi-tenant file uploads are stored under `/Kiwi/uploads/tenant/$tenant_name`. +You can archive all contents with the same procedure above. If you wish to restore +files per tenant you will have to upload the `$tenant_name` directory into the +docker volume. + + +Alternatives +------------ + +By default both docker volumes created for Kiwi TCMS use the `local` driver +and are available under `/var/lib/docker/volumes/` on the host +running your containers. You can try backing them up from there as well. + +Another alternative is to use the +[docker-lvm-plugin](https://www.projectatomic.io/blog/2016/05/docker-lvm-plugin/) +and create these volumes as LVM2 block devices. Then use +`lvcreate -s` command to create a snapshot volume. For more information see +[chapter 2.3.5. Snapshot Volumes](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html-single/logical_volume_manager_administration/index#snapshot_volumes) +from the LVM Administrator Guide for Red Hat Enterprise Linux 7. + + +Happy testing! diff --git a/content/2018-07-31-version-5.1.rst b/content/2018-07-31-version-5.1.rst new file mode 100644 index 00000000..6f660087 --- /dev/null +++ b/content/2018-07-31-version-5.1.rst @@ -0,0 +1,101 @@ +Kiwi TCMS 5.1 +############# + +:headline: tech-preview: Django Report Builder +:date: 2018-07-31 12:00 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 5.1! This release +introduces new database migrations, an experimental reporting feature, +deprecated functionality and bug fixes. + +The new ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` docker image has Image ID ``cc9b55aa664d``. +`https://public.tenant.kiwitcms.org `_ +has also been updated! + + +Changes since Kiwi TCMS 5.0 +--------------------------- + +Enhancements +~~~~~~~~~~~~ + +- Integrate with Django Report Builder as tech-preview. This makes it possible + for power users and administrators to generate + `tabular reports `_. + You will have to know the existing DB schema if you want to create your own reports. + See http://kiwitcms.readthedocs.io/en/latest/db.html. This feature is in + tech-preview and it may be removed if it doesn't work out. Please comment at: + `Issue #452 `_. +- Allow using ``manage.py dumpdata|loaddata|sqlflush|dbshell`` for backups, see + `blog post <{filename}2018-07-30-docker-backup.markdown>`_ +- In TestCase view page add a link to delete the current test case +- In TestCase Admin page the ``+ Add TestCase`` button now allows to create new + test case +- The version menu item in the helper menu now links to + `Changelog `_ + + +Deprecated functionality +~~~~~~~~~~~~~~~~~~~~~~~~ + +- Start showing deprecation warning for Advanced search, see + `Issue #448 `_ + + +Bug fixes +~~~~~~~~~ + +- Allows Product/Version/Build to be shown in Testing Report. Fixes + `Sentry KIWI-TCMS-2C `_ +- Default to ``https://`` links if not running locally. Fixes + `Issue #450 `_ +- Apply missing CSS class for object history table so it can be displayed nicely + + +Refactoring +~~~~~~~~~~~ + +- Squash some database migrations +- Fix a number of pylint issues +- Remove unused ``testruns.views::view_caseruns()``. References + `Issue #316 `_ +- Remove unused template ``report/caserun.html`` +- Handle TestRun deletion via admin not home grown code + + + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then:: + + cd Kiwi/ + git pull + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_ +before upgrade! + + +Help us make Kiwi TCMS better +----------------------------- + +According to `our 2018 roadmap update <{filename}2018-07-25-roadmap-update.markdown>`_ +the Kiwi TCMS team is investing a great deal of our time to make the code base more +maintainable! For the past few releases we've been balancing code refactoring +with bug-fixing and enhancements and we have lots of ideas down the line. + +We want to hear your voice! Tell us how you use Kiwi TCMS inside your organization. +We want to know what works for you and what doesn't so we can make it better. Feel +free to comment below, file GitHub issues or send us an email. + + +Happy testing! diff --git a/content/2018-08-06-override-templates.markdown b/content/2018-08-06-override-templates.markdown new file mode 100644 index 00000000..947d75ea --- /dev/null +++ b/content/2018-08-06-override-templates.markdown @@ -0,0 +1,74 @@ +Title: How to override templates for Kiwi TCMS +date: 2018-08-06 11:40 +comments: true +og_image: images/customization.png +twitter_image: images/customization.png +author: Alexander Todorov +tags: customization + + +This is the first publication in our customization series. It will show you +how to override any template used by Kiwi TCMS. As an example we will override +the email template that is used when registering new account. By default the +email text looks like this: + + Welcome {{ user }}, + thank you for signing up for an {{ site_domain }} account! + + To activate your account, click this link: + {{ confirm_url }} + + + +[https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/) +runs a custom Docker image based on +`pub.kiwitcms.eu/kiwitcms/kiwi`. For this image the confirmation email looks like this + + Welcome {{ user }}, + thank you for signing up for our Kiwi TCMS demo! + + To activate your account, click this link: + {{ confirm_url }} + + GDPR no longer allows us to automatically subscribe you to + our newsletter. If you wish to keep in touch and receive emails + with news and updates around Kiwi TCMS please subscribe at: + https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581 + + -- + Happy testing! + The Kiwi TCMS team + http://kiwitcms.org + + +The file that we want to override is `tcms/templates/email/confirm_registration.txt`. + +Create a local directory (git repository) which will hold customization configuration +and create a file named `templates.d/email/confirm_registration.txt` with your text! + +Next you want to make this file available inside your docker image so your `Dockerfile` +should look like this: + + FROM pub.kiwitcms.eu/kiwitcms/kiwi + + COPY ./templates.d/ /venv/lib64/python3.6/site-packages/tcms/overridden_templates/ + COPY local_settings.py /venv/lib64/python3.6/site-packages/tcms/settings/ + +where `local_settings.py` contains + + import os + from django.conf import settings + + settings.TEMPLATES[0]['DIRS'].insert(0, os.path.join(settings.TCMS_ROOT_PATH, 'overridden_templates')) + + +The following code states *instruct Django to look into `overridden_templates` first and +use any templates it finds there; also make my files available in that specific location +inside the docker image*. + +This approach can be used for all templates that you wish to override. Take into +account that file names must match (Django searches templates by directory path). +Now build your customized Docker image and use that for deployment! + + +Happy testing! diff --git a/content/2018-08-07-version-5.2.rst b/content/2018-08-07-version-5.2.rst new file mode 100644 index 00000000..1b9e94f7 --- /dev/null +++ b/content/2018-08-07-version-5.2.rst @@ -0,0 +1,98 @@ +Kiwi TCMS 5.2 +############# + +:headline: non-root Docker image +:date: 2018-08-07 22:45 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 5.2! This release +introduces new database migrations and converts +the Docker image to a non-root user with uid 1001. You may have to adjust +ownership/permissions on the ``kiwi_uploads`` Docker volume! + + +The new ``pub.kiwitcms.eu/kiwitcms/kiwi:latest`` docker image has Image ID ``6bc4e3124fd4``. +`https://public.tenant.kiwitcms.org `_ +has also been updated! + + +Changes since Kiwi TCMS 5.1 +--------------------------- + +Enhancements +~~~~~~~~~~~~ + +- Upgrade to `Django 2.1 `_ +- Upgrade to ``django-report-builder 6.2.2``, compatible with Django 2.1 +- Docker image now executes with uid 1001 instead of root + + - image based on ``centos7`` image instead of ``centos/httpd`` + - image now exposes ports 8080 and 8443 + - Apache logs now printed on Docker console + - SSL certificates copied to ``/Kiwi/ssl`` inside Docker image instead of being bind-mounted + - uploads dir changed to ``/Kiwi/uploads`` + - static dir changed to ``/Kiwi/static`` + - ``/Kiwi`` is now owned by uid 1001 + - ``/venv`` is now owned by uid 1001 + - ``docker-compose.yml`` is updated to match +- Fix pylint errors (Ivaylo Ivanov) +- Allow users to see other profiles via Admin +- Use password change form from Admin instead of custom one +- ``product.py`` will try to import ``local_settings.py`` if available in the + same directory. This can be used to customize settings in downstream + distributions +- Updated `Slovenian translation `_ + + +Bug fixes +~~~~~~~~~ + +- Make password reset views public +- Don't crash when adding new users via Admin + + +Refactoring +~~~~~~~~~~~ + +- Remove ``UserProfile`` model. Kiwi TCMS doesn't needs extra information + about users so we remove this part of the application. Custom installations + may choose to define their own profiles if they wish +- Remove custom ``DBModelBackend`` authentication backend +- Remove unused ``tcms.core.context_processors.auth_backend_processor`` +- Remove unused ``get_using_backend()``. Fixes + `Issue #261 `_ +- Remove ``dj_pagination``. Fixes + `Issue #110 `_ + + +Settings +~~~~~~~~~ + +- ``AUTHENTICATION_BACKENDS`` is removed +- ``PAGINATION_DEFAULT_PAGINATION`` is removed +- Navigation menu links are now defined in ``MENU_ITEMS`` and can be redefined + + +Signals +~~~~~~~ + +- ``USER_REGISTERED_SIGNAL`` now doesn't receive the ``backend`` parameter + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then:: + + cd Kiwi/ + git pull + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_ +before upgrade! diff --git a/content/2018-09-04-version-5.3.rst b/content/2018-09-04-version-5.3.rst new file mode 100644 index 00000000..65827e4c --- /dev/null +++ b/content/2018-09-04-version-5.3.rst @@ -0,0 +1,207 @@ +Kiwi TCMS 5.3.1 +############### + +:headline: UI updates, subscriptions and deprecations +:date: 2018-09-04 23:00 +:comments: true +:tags: releases + +We're happy to announce Kiwi TCMS version 5.3.1! This release +brings lots of UI updates and removal of unused +and/or duplicated functionality and source code. Many pages have been redesigned +with the Patternfly library to have a modern look and feel which you can +experience at `https://public.tenant.kiwitcms.org `_. + + +This will be the last release to carry around squashed migrations. In version +6.0 older migrations will be deleted and replaced with their squashed equivalents. +Upgrades from versions < 5.3 to 6.0 will break without an intermediate upgrade to 5.3.1! + +Use ``pub.kiwitcms.eu/kiwitcms/kiwi:5.3.1`` from Docker Hub when upgrading at some point in the future! + +Docker images:: + + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB + pub.kiwitcms.eu/kiwitcms/kiwi latest a420465852be 976.8 MB + + +Changes since Kiwi TCMS 5.2 +--------------------------- + + +Improvements +~~~~~~~~~~~~ + +- Update to `Django 2.1.1 `_ +- Update Patternfly version. Fixes + `Issue #381 `_ +- Replace TinyMCE with SimpleMDE markdown editor. Used for TestPlan text and + TestCase action, setup, breakdown, effect fields +- Allow downstream builds to customize the login templates by + providing ``registration/custom_login.html`` template. It can either + override the entire login page or provide additional information inside + the ``custom_login`` block! + +Known issues +~~~~~~~~~~~~ + +- You may need to strip existing texts from HTML tags that were generated by + TinyMCE. Either do this manually as you go along and use/edit records or in bulk via + the API and tools like `html2text `_. + We strongly advise you to `backup <{filename}2018-07-30-docker-backup.markdown>`_ + your database before attempting to automatically edit text fields! + + +Visual changes +~~~~~~~~~~~~~~ + +- Remove breadcrumbs at the top of pages. Only admin pages still have them +- Convert login and registration templates to Patternfly. Fixes + `Issue #211 `_ +- Convert 404 and 500 templates to Patternfly +- Convert dashboard page to Patternfly +- Convert TestRun new, edit and clone pages to Patternfly. Fixes + `Issue #17 `_ +- Convert Search Test Plans page to Patternfly +- Convert Search Test Runs page to Patternfly +- Convert Search Test Cases page to Patternfly +- TestPlan view page, Runs tab now re-uses the search form for test runs + which is built using Patternfly +- Added pagination controls to pages with search results + + +Removed functionality +~~~~~~~~~~~~~~~~~~~~~ + +- When creating or editing TestRun + + - field ``estimated_time`` is scheduled for removal and is not shown + - ``product_version`` is scheduled for removal in favor of + ``TR.plan.product_version`` + - Product & Version can't be edited anymore. Must be set on the parent + TestPlan instead. Still allows to specify builds + +- Remove the ability to clone multiple TestPlans from search results +- Remove the ability to upload TestPlan document files in favor of + the existing API +- Remove TestCase export to XML in favor of existing API +- Remove Advanced Search functionality. Fixes + `Issue #448 `_, + `Issue #108 `_ +- Remove tech preview feature: Django Report Builder + + +Translations +~~~~~~~~~~~~ + +- Updated `German translation `_ +- Updated `Slovenian translation `_ +- Marked more strings as translatable + + +Bug fixes +~~~~~~~~~ + +- Don't use ``get_full_url()`` where not needed. Closes + `Issue #380 `_ +- Remove unused templates. Fixes + `Issue #114 `_ +- Submit filter form when clicking on tag value. Fixes + `Issue #426 `_ +- Update ``TestCaseRun.tested_by`` when setting status. Fixes + `Issue #459 `_ +- Add tests for ``KiwiUserAdmin``. Closes + `Issue #489 `_ + + +Settings +~~~~~~~~ + +- The following settings have been removed ``MOTD_LOGIN``, ``WELCOME_MESSAGE`` + and ``TINYMCE_DEFAULT_CONFIG`` + + +Refactoring +~~~~~~~~~~~ + +- Fix pylint errors (Anton Sankov, Ivaylo Ivanov) +- Remove lots of unused functions and classes +- Remove old or unnecessary templates +- Remove ``html2text`` dependency +- Remove unused CSS and vendored-in JavaScript libraries +- Add JavaScript JSON-RPC client which is now used by the front-end to + communicate with the existing JSON-RPC API on the back-end. This + replaces many 'ajax' views which are only used to render the UI and were + duplicating functionality with existing API +- Non ``dist/`` files are no longer removed from ``node_modules/`` when building + a docker image because packages like ``moment.js`` and ``bootstrap-datetimepicker.js`` + don't ship their files in ``dist/`` +- Convert TestPlans.TreeView to JSON RPC + + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then:: + + cd Kiwi/ + git pull + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_ +before upgrade! + + +Ask your questions on StackOverflow +----------------------------------- + +Kiwi TCMS is now using the +`'kiwi-tcms' `_ +tag on StackOverflow to track questions. Please submit your support requests +and general questions to +`StackOverflow `_ tagged +with the 'kiwi-tcms' tag! Support requests via GitHub or email will not be answered +anymore (GitHub issues are for bugs or feature discussions only)! + + +Subscription based online service +--------------------------------- + +We are planning to convert +`https://public.tenant.kiwitcms.org `_ into +a subscription based service for people who don't want to bother installing +Kiwi TCMS on their own systems and just want to use it for test collaboration +with their team. + +The income from this service will go towards covering operating costs and +supporting the +`development team `_. Watch this +blog for further announcements about this. Meanwhile you may share your +thoughts via +`Issue #515 `_. + + +Plans to remove deprecated functionality +---------------------------------------- + +``TestRun.product_version`` will be removed from the database schema in favor of +``TestRun.plan.product_version``! With the latest web interface it is not possible +to select a product version different than the one selected in the Test Plan. +Test runs should only be able to select product builds (after +`Issue #246 `_ is fixed). + +``TestRun.estimated_time`` is scheduled for removal if not used. Objections +and use-cases must be shared via +`Issue #514 `_. + +``EnvGroup`` and ``EnvProperty`` models are scheduled for removal in favor +of ``Tag``. Internally tags are referenced in more places inside Kiwi TCMS' +source code and they appear to be more fully developed. On the other hand +while environment appears very similar to tags it is not exactly the same. +Ongoing discussion is happening via +`Issue #484 `_. diff --git a/content/2018-09-07-xmlrpc-logging.markdown b/content/2018-09-07-xmlrpc-logging.markdown new file mode 100644 index 00000000..4a6a7a4b --- /dev/null +++ b/content/2018-09-07-xmlrpc-logging.markdown @@ -0,0 +1,124 @@ +Title: How to add API logging for Kiwi TCMS +date: 2018-09-07 22:00 +comments: true +og_image: images/customization.png +twitter_image: images/customization.png +author: Alexander Todorov +tags: customization + + +In this blog post I will show more ways to customize Kiwi TCMS by adding +logging capabilities to the API backend. Indeed this is a feature that +our team deemed not required for upstream and was removed in +[PR #436](https://github.com/kiwitcms/Kiwi/pull/436). + +Start by creating the following directory structure: + + api_logging/ + __init__.py + handlers.py + models.py + +This is a small Django application that will log every call to the API backend. +Each file looks like this: + + :::python + # models.py contains DB schema for your new table + from django.db import models + from django.conf import settings + + class ApiCallLog(models.Model): + executed_at = models.DateTimeField(auto_now_add=True) + user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True, + on_delete=models.CASCADE) + method = models.CharField(max_length=255) + args = models.TextField(blank=True) + + def __str__(self): + return "%s: %s" % (self.user, self.method) + +Then + + :::python + # handlers.py overrides the RPC handlers coming from django-modernrpc + from modernrpc import handlers + + from django.conf import settings + from django.contrib.auth import get_user_model + + from .models import ApiCallLog + + def log_call(request, method_name, args): + """ Log an RPC call to the database or stdout in DEBUG mode. """ + request_user = request.user + if not request_user.is_authenticated: + # create an anonymous user object for logging purposes + request_user, _ = get_user_model().objects.get_or_create( + username='Anonymous', + is_active=False) + + if method_name is None: + method_name = '--- method_name missing ---' + + if settings.DEBUG: + print('API call:: user: {0}, method: {1}, args: {2}'.format( + request_user, + method_name, + args)) + else: + ApiCallLog.objects.create( + user=request_user, + method=method_name, + args=str(args)) + + class XMLRPCHandler(handlers.XMLRPCHandler): + def process_request(self): + encoding = self.request.encoding or 'utf-8' + data = self.request.body.decode(encoding) + params, method_name = self.loads(data) + + log_call(self.request, method_name, params) + return super().process_request() + + class JSONRPCHandler(handlers.JSONRPCHandler): + def process_single_request(self, payload): + method_name = payload.get('method', None) + params = payload.get('params') + + log_call(self.request, method_name, params) + return super().process_single_request(payload) + + +**NOTE:** +You will have to execute `./manage.py makemigrations api_logging` to create the +initial migration for Django. This could be easier if you place the above directory +into existing Django application or craft the migration file by hand! + +The last thing you want to do is create a `local_settings.py` file which will override +Kiwi TCMS defaults: + + :::python + # local_settings.py + from django.conf import settings + + settings.INSTALLED_APPS += [ + 'api_logging', + ] + + MODERNRPC_HANDLERS = ['api_logging.handlers.XMLRPCHandler', + 'api_logging.handlers.JSONRPCHandler'] + + +Then place everything in `Dockerfile` like so: + + ::: + FROM pub.kiwitcms.eu/kiwitcms/kiwi + + COPY ./api_logging/ /venv/lib64/python3.6/site-packages/api_logging/ + COPY local_settings.py /venv/lib64/python3.6/site-packages/tcms/settings/ + + +Kiwi TCMS will import your `local_settings.py` and enable the logging application. +Now build your customized Docker image and use it for deployment! + +Happy testing! diff --git a/content/2018-09-13-1-year.markdown b/content/2018-09-13-1-year.markdown new file mode 100644 index 00000000..53a0a868 --- /dev/null +++ b/content/2018-09-13-1-year.markdown @@ -0,0 +1,8 @@ +Title: Happy birthday Kiwi TCMS +date: 2018-09-13 13:50 +comments: true +og_image: images/1year_infographic.png +twitter_image: images/1year_infographic.png +tags: community + +![1 year infographic](/images/1year_infographic.png "1 year infographic") diff --git a/content/2018-10-04-version-6.0.rst b/content/2018-10-04-version-6.0.rst new file mode 100644 index 00000000..fa12564d --- /dev/null +++ b/content/2018-10-04-version-6.0.rst @@ -0,0 +1,136 @@ +Kiwi TCMS 6.0 +############# + +:headline: security upgrade and removal of environment properties +:date: 2018-10-04 12:45 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 6.0! This release +introduces new database migrations, removal of +environment properties in favor of tags, internal updates and bug fixes. +You can explore everything at +`https://public.tenant.kiwitcms.org `_. + + +This release removes squashed migrations. Direct upgrades from versions +< 5.3.1 to 6.0 will break without an intermediate upgrade to 5.3.1! + +Docker images:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest cd087297f349 991.3 MB + + +Changes since Kiwi TCMS 5.3.1 +----------------------------- + + +Improvements +~~~~~~~~~~~~ + +- Update to `Django 2.1.2 `_ + due to high severity security issue +- Update to `Patternfly 3.54.8 `_ +- ``Tag`` objects are now shown in Admin panel +- Add autocomplete when adding tags to ``TestRun`` via UI + + +Removed functionality +~~~~~~~~~~~~~~~~~~~~~ + +- TestCase new and edit views no longer allow editing of tags. Tags can be + added/removed from the Tags tab which also makes sure to properly account + for permissions +- Remove ``EnvGroup``, ``EnvProperty`` and ``EnvValue`` models in favor of tags. + Existing values and properties are converted into tags and automatically added + to test runs! +- Convert squashed database migrations to regular ones and remove older migrations. + **WARNING:** upgrade from versions <= 5.3.1 to 6.0 will break without an intermediate + upgrade to ``pub.kiwitcms.eu/kiwitcms/kiwi:5.3.1 a420465852be``. +- Remove deprecated ``TestCase.estimated_time`` and ``TestRun.estimated_time``. Fixes + `Issue #514 `_ + + +Backend API +----------- + +- No longer use ``product_version`` for ``TestRun.create``. Fixes + `Issue #522 `_ + + - 'product' is no longer required + - 'product_version' is no longer required + - 'manager' and 'default_tester' can be usernames or IDs + +- ``TestCase.create`` no longer accepts 'tag' values +- ``TestRun.add_tag`` and ``TestRun.remove_tag`` now return list of tags. + Previously these methods returned ``None``! + This is the list of tags assigned to the TestRun that is being modified! + + +Bug fixes +~~~~~~~~~ + +- Fix mismatched HTML tag in ``plan/get.html`` template (Oleg Kainov) +- Don't use ``|slugify`` filter in templates which breaks HTML links with non-ASCII + TestPlan names. Fixes + `Sentry KIWI-TCMS-38 `_ + + +Refactoring +~~~~~~~~~~~ + +- Fix pylint errors (Ivaylo Ivanov, Anton Sankov) +- Use existing JSON-RPC methods to add/remove tags via webUI and remove specialized + backend methods that handled these requests. Also make sure to obey respective + permissions + + +Translations +~~~~~~~~~~~~ + +- Updated `Slovenian translation `_ + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then:: + + cd Kiwi/ + git pull + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_ +before upgrade! + + +Subscription based online service +--------------------------------- + +We are planning to convert +`https://public.tenant.kiwitcms.org `_ into +a subscription based service for people who don't want to bother installing +Kiwi TCMS on their own systems and just want to use it for test collaboration +with their team. + +The income from this service will go towards covering operating costs and +supporting the +`development team `_. Watch this +blog for further announcements about this. Meanwhile you may share your +thoughts via +`Issue #515 `_. + + +Plans to remove deprecated functionality +---------------------------------------- + +``TestRun.product_version`` will be removed from the database schema in favor of +``TestRun.plan.product_version``! With the latest web interface it is not possible +to select a product version different than the one selected in the Test Plan. +Test runs should only be able to select product builds (after +`Issue #246 `_ is fixed). diff --git a/content/2018-10-11-winter-conferences.markdown b/content/2018-10-11-winter-conferences.markdown new file mode 100644 index 00000000..47b04c2a --- /dev/null +++ b/content/2018-10-11-winter-conferences.markdown @@ -0,0 +1,57 @@ +Title: Kiwi TCMS winter conference presence +headline: OpenFest, PiterPy and Heisenbug +date: 2018-10-11 11:53 +comments: true +og_image: images/openfest2018_banner.png +twitter_image: images/openfest2018_banner.png +tags: community, events + +We are happy to announce that [OpenFest](http://www.openfest.org) - the biggest +open source conference in Bulgaria has provided an info booth for our project. +This year the event will be held on 3rd and 4th of November at Sofia Tech Park! + +Last time the team went to a conference together we had a lot of fun! Join us +at OpenFest to learn more about Kiwi TCMS and have fun with us! + + + + + + + +In case you are unable to visit Sofia, which you totally should, you can catch up with +us in Russia until the end of the year: + +* [PiterPy, 2nd-3rd November, St. Petersburg](https://piterpy.com/materials/2440) - + where Alex Todorov will talk about pylint plugins and how we use them inside + Kiwi TCMS +* [Heisenbug, 6th-7th December, Moscow](https://heisenbug-moscow.ru/2018/msk/talks/3vjkn0micguu6sqgu2kkyu/) - + where Alex will talk about tools and methods that we use to make Kiwi TCMS more + secure + +Feel free to ping us at [@KiwiTCMS](https://twitter.com/KiwiTCMS) or look for the +kiwi bird logo and come to say hi. Happy testing! diff --git a/content/2018-10-12-team-updates.markdown b/content/2018-10-12-team-updates.markdown new file mode 100644 index 00000000..795920f1 --- /dev/null +++ b/content/2018-10-12-team-updates.markdown @@ -0,0 +1,106 @@ +Title: Kiwi TCMS team updates +headline: new team coach, team progress and internship program +date: 2018-10-12 11:10 +comments: true +author: Alexander Todorov +og_image: images/team/banner.png +twitter_image: images/team/banner.png +tags: community, team + +I am happy to announce that [our team]({filename}pages/team.html) is steadily growing! +As we work through our [roadmap]({filename}2018-01-22-milestones.markdown), +[status update here]({filename}2018-07-25-roadmap-update.markdown), and +on-board new team members I start to feel the need for a bit more structure +and organization behind the scenes. I also wish for consistent contributions +to the project (commit early, commit often) so I can better estimate the resources +that we have! + +I am also actively discussing Kiwi TCMS with lots of people at various conferences +and generate many ideas for the future. The latest SEETEST in Belgrade was particularly +fruitful. Some of these ideas are pulling into different directions and I need help +to keep them under control! + +Development-wise sometimes I lose track of what's going on and who's doing what between +working on Kiwi TCMS, preparing for conferences and venues to promote the project, +doing code review of other team members, trying not to forget to check-in on +progress (especially by interns), recruiting fresh blood and thinking about +the overall future of the project. Our user base is growing and there are days +where I feel like everything is happening at once or that something +needs to be implemented ASAP (which is usually true anyway)! + + + + +Meet Rayna Stankova in the role of our team coach! +Reny is a director for Women Who Code Sofia, senior QA engineer at VMware, +mentor with CoderDojo Bulgaria and a long-time friend of mine. +Although she is an experienced QA in her own right she will be contributing +to the people side of Kiwi TCMS and less so technically! + +Her working areas will be planning and organization: + +* help us (re)define the project vision and goals +* work with us on roadmaps and action plans so we can meet + the project goals faster +* help us (self) organize so that we are more efficient, + including checking progress and blockers (aka enforcer) and + meet the aforementioned consistency point +* serve as our professional coach, motivator and somebody who will + take care of team health (yes I really suck at motivating others) + +and generally serving as another very experienced member of the team! + + +We did a quick brainstorming yesterday and started to produce results +(#smileyface)! We do have a team docs space to share information +(non-public for now, will open it gradually as we grow) and came up +with the idea to use Kiwi TCMS as a check-list for our on-boarding/internship +process! + +I don't know how it will play out but I do expect from the +team to self-improve, be inspired, become more focused and more productive! +**All of this also applies to myself, even more so!** + + +Existing team members progress +------------------------------ + +Last year we started with 2 existing team members (Tony and myself) and 3 +new interns (Ivo, Kaloyan and Tseko) who built this website! + + +Tony is the #4 contributor to Kiwi TCMS in +terms of [number of commits](https://github.com/kiwitcms/Kiwi/graphs/contributors) +and is on track to surpass one of the original authors (before Kiwi TCMS was forked)! +He's been working mostly on internal refactoring and resolving the thousands +of pylint errors that we had (down to around 500 I think). This summer Tony and I +visited the OSCAL conference in Tirana and hosted an info booth for the project. + + +Ivo is the #5 contributor in terms of numbers of commits. He did learn very +quickly and is working on getting rid of the remaining pylint errors. His ability +to adapt and learn is quite impressive actually. Last month he co-hosted a +git workshop at HackConf, a 1000+ people IT event in Sofia. + +Kaloyan did most of the work on our website initially (IIRC). +Now he is studying in the Netherlands +and not active on the project. We are working to reboot his on-boarding +and I'm hoping he will find the time to contribute to Kiwi TCMS regularly. + +From the starting team only Tseko decided to move on to other ventures after +he contributed to the website. + + +Internship program +------------------ + +At Kiwi TCMS we have a set of training +programs that teach all the necessary technical skills before we let anyone +actively work on the project, let alone become a team member. + +Our new interns are Denitsa Uzunova and Desislava Koleva. Both of them are +coming from Vratsa Software Community and were mentors at the recently held +CodeWeek hackathon in their home city! I wish them fast learning and good luck! + + +Happy testing! diff --git a/content/2018-10-20-version-6.1.rst b/content/2018-10-20-version-6.1.rst new file mode 100644 index 00000000..57329506 --- /dev/null +++ b/content/2018-10-20-version-6.1.rst @@ -0,0 +1,132 @@ +Kiwi TCMS 6.1 +############# + +:headline: updates and database migrations +:date: 2018-10-20 14:40 +:comments: true +:tags: releases + +We're happy to announce Kiwi TCMS version 6.1! This release +introduces new database migrations, +internal updates and bug fixes. It is a small release designed +to minimize the number of database migrations by squashing them together. +You can explore everything at +`https://public.tenant.kiwitcms.org `_. + + +**NOTE:** there is the 6.0.1 release which resolves an upgrade problem +caused by non-applied migrations which have been later squashed and +released in the same release! It is best to jump through the intermediate +releases to ensure a smooth upgrade! + + +Supported upgrade paths:: + + 5.3 (or older) -> 5.3.1 + 5.3.1 (or newer) -> 6.0.1 + 6.0.1 -> 6.1 + +Docker images:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest b559123d25b0 970.2 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB + + + +Changes since Kiwi TCMS 6.0 +--------------------------- + +Improvements +~~~~~~~~~~~~ + +- Update `Jira from 1.0.10 to 2.0.0 `_ +- Update to `Patternfly 3.55.0 `_ +- Use button instead of HTML link for deleting test plan (Oleg Kainov) +- New middleware that will check missing settings. At the moment will only + check Base URL configuration which often gets forgotten! + + +Bug fixes +~~~~~~~~~ + +- Hot-fix for error caused by the API method ``TestRun.update``. Error was + initially reported on + `StackOverflow `_. + This patch makes it possible to use the API without crashing however the + ``TestRun.update`` method doesn't handle the ``stop_date`` field at the moment! + + +Translations +~~~~~~~~~~~~ + +- Updated `Slovenian translation `_ +- Updated `German translation `_ +- Updated translation source strings + + +Refactoring +~~~~~~~~~~~ + +- Fix pylint errors (Ivaylo Ivanov) +- Remove unused ``TestRun.list`` and ``TestCase.list_confirmed`` methods +- Remove unused ``plan_by_id_or_name()`` and ``is_int()``. Fixes + `Issue #269 `_ + + +Database +~~~~~~~~ + +- Rename ``tcms.core.contrib.auth`` to ``tcms.kiwi_auth`` +- Remove field ``user`` from ``TestCaseTag``, ``TestRunTag`` and ``TestPlanTag`` + models +- Squash migrations for ``management`` app +- Squash migrations for ``testcases`` app +- Squash migrations for ``testplans`` app +- Squash migrations for ``testruns`` app + + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then:: + + cd Kiwi/ + git pull + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_ +before upgrade! + + +Subscription based online service +--------------------------------- + +We are planning to convert +`https://public.tenant.kiwitcms.org `_ into +a subscription based service for people who don't want to bother installing +Kiwi TCMS on their own systems and just want to use it for test collaboration +with their team. + +The income from this service will go towards covering operating costs and +supporting the +`development team <{filename}pages/team.html>`_. Watch this +blog for further announcements about this. Meanwhile you may share your +thoughts via +`Issue #515 `_. + + +Plans to remove deprecated functionality +---------------------------------------- + +``TestRun.product_version`` will be removed from the database schema in favor of +``TestRun.plan.product_version``! With the latest web interface it is not possible +to select a product version different than the one selected in the Test Plan. +Test runs should only be able to select product builds (after +`Issue #246 `_ is fixed). diff --git a/content/2018-10-26-api-performance-baseline.markdown b/content/2018-10-26-api-performance-baseline.markdown new file mode 100644 index 00000000..02d10809 --- /dev/null +++ b/content/2018-10-26-api-performance-baseline.markdown @@ -0,0 +1,102 @@ +Title: Kiwi TCMS API performance baseline +headline: 7.5 req/sec or 130 msec/req +date: 2018-10-26 16:47 +comments: true +author: Alexander Todorov + + +A friend from Red Hat sent me an email asking about Kiwi TCMS performance so I did +an experiment to establish a baseline. +For API requests I got **7.5 req/sec or 130 msec/req** which is +1.5x [slower than GitHub](https://blog.github.com/2012-09-05-how-we-keep-github-fast/)! + +I used `perf-script` +([see here](https://github.com/kiwitcms/api-scripts/blob/master/perf-script)) +to measure that. The script takes the first 250 test cases from our test suite +and on every execution creates a new TestPlan (1 API request), then creates +new test cases (250 requests), adds cases to test plan (250 requests), +creates new product build (1 API request), creates new TestRun (1 API request), +adds test cases to test run (250 requests) and finally updates the statuses +(250 requests). + +A total of 1003 API requests are sent to Kiwi TCMS every time you start this script! +An example is available at [TR #567](https://public.tenant.kiwitcms.org/run/567/)! + +On localhost, running the development server (`./manage.py runserver`) with an +SQLite database I got: + + ::: + $ time python perf-script + + real 2m6.450s + user 0m1.069s + sys 0m0.331s + + $ time python perf-script + + real 2m7.472s + user 0m1.057s + sys 0m0.342s + + $ time python perf-script + + real 2m9.368s + user 0m1.072s + sys 0m0.351s + + $ time python perf-script + + real 2m9.197s + user 0m1.050s + sys 0m0.353s + +This measures at 120 msec/req or 7.85 req/sec! + + +[public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/) is running on an +[AWS t2.micro](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html#burstable-performance-instances-hardware) +instance (via docker-compose) with the default `centos/mariadb` image! +No extra settings or changes. I used the same computer over a WiFi +connection and a pretty standard home-speed Internet connection. Times are: + + ::: + $ time python perf-script + + real 2m18.983s + user 0m1.175s + sys 0m0.095s + + $ time python perf-script + + real 2m25.937s + user 0m1.156s + sys 0m0.108s + + $ time python perf-script + + real 2m24.120s + user 0m1.102s + sys 0m0.098s + + $ time python perf-script + + real 2m21.521s + user 0m1.154s + sys 0m0.091s + + +This measures at 140 sec/req or 7.05 req/sec! + + +Note: since I am using Python 3.6 I had to modify the file +`/opt/rh/rh-python36/root/lib64/python3.6/ssl.py` to read: + + :::python + # Used by http.client if no context is explicitly passed. + _create_default_https_context = _create_unverified_context # this disables HTTPS cert validation + +The issue has been reported in +[RHBZ #1643454](https://bugzilla.redhat.com/show_bug.cgi?id=1643454) + + +Happy testing! diff --git a/content/2018-10-29-version-6.1.1.rst b/content/2018-10-29-version-6.1.1.rst new file mode 100644 index 00000000..7d442309 --- /dev/null +++ b/content/2018-10-29-version-6.1.1.rst @@ -0,0 +1,120 @@ +Kiwi TCMS 6.1.1 +############### + +:headline: few updates and database migrations +:date: 2018-10-29 16:00 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 6.1.1! This release +squashes database migrations and removes +older migrations that have been squashed in previous releases, a few +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 + + +Docker images:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 49fa42ddfe4d 955.7 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB + + + +Changes since Kiwi TCMS 6.1 +--------------------------- + +Improvements +~~~~~~~~~~~~ + +- Dashboard will now show TestRuns which have test cases assigned to current + user. Fixes + `Issue #520 `_ +- API method ``TestRun.add_case()`` now returns a serialized TestCaseRun object. + Previously this method returned None + + +Bug fixes +~~~~~~~~~ + +- Don't show disabled Priority records in UI. Fixes + `Issue #334 `_ + + +Translations +~~~~~~~~~~~~ + +- Updated `Slovenian translation `_ + + +Refactoring +~~~~~~~~~~~ + +- Fix some pylint errors (Ivaylo Ivanov) + + +Database +~~~~~~~~ + +- Remove old squashed migrations for ``management``, ``testplans``, + ``testcases`` and ``testruns`` apps +- Squash the remaining migrations for ``management``, ``testplans``, + ``testcases`` and ``testruns`` apps + + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then:: + + cd Kiwi/ + git pull + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_ +before upgrade! + + +Subscription based online service +--------------------------------- + +We are planning to convert +`https://public.tenant.kiwitcms.org `_ into +a subscription based service for people who don't want to bother installing +Kiwi TCMS on their own systems and just want to use it for test collaboration +with their team. + +The income from this service will go towards covering operating costs and +supporting the +`development team <{filename}pages/team.html>`_. Watch this +blog for further announcements about this. Meanwhile you may share your +thoughts via +`Issue #515 `_. + + +Plans to remove deprecated functionality +---------------------------------------- + +``TestRun.product_version`` will be removed from the database schema in favor of +``TestRun.plan.product_version``! With the latest web interface it is not possible +to select a product version different than the one selected in the Test Plan. +Test runs should only be able to select product builds (after +`Issue #246 `_ is fixed). + diff --git a/content/2018-11-02-version-6.2.rst b/content/2018-11-02-version-6.2.rst new file mode 100644 index 00000000..ef1b69cf --- /dev/null +++ b/content/2018-11-02-version-6.2.rst @@ -0,0 +1,134 @@ +Kiwi TCMS 6.2 +############# + +:headline: new Django, database migrations and few improvements +:date: 2018-11-02 12:15 +:comments: true +:og_image: images/openfest2018_banner.png +:twitter_image: images/openfest2018_banner.png +:tags: releases + + +We're happy to announce Kiwi TCMS version 6.2! This is a small release +that removes squashed migrations from previous releases and includes a few +improvements. You can explore everything at +`https://public.tenant.kiwitcms.org `_ or +find our info booth at `OpenFest `_ in Sofia during +the weekend and do a live demo with the team! + +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 (latest) + + +Docker images:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 7870085ad415 957.6 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB + + + +Changes since Kiwi TCMS 6.1.1 +----------------------------- + + +Improvements +~~~~~~~~~~~~ + +- Update to `Django 2.1.3 `_ +- Update Apache config to print logs on the console. Fixes + `Issue #549 `_ +- `https://public.tenant.kiwitcms.org `_ now + allows email associations when logging via GitHub. If you have an existing + account which shares the same email address with your GitHub profile you + will be redirected to that account upon logging in via GitHub! + This also resolves a problem where existing users trying to login via GitHub + were presented with error message that their email exists in the database! + Fixes + `Issue #573 `_ + + +Database +~~~~~~~~ + +- Remove old variants of squashed migrations from earlier releases + + +Translations +~~~~~~~~~~~~ + +- Updated `German translation `_ + + +Refactoring +~~~~~~~~~~~ + +- Update ``tcms.tests.factories.BugFactory`` (Ivaylo Ivanov) +- Add test for ``tcms.testcases.views.group_case_bugs`` (Ivaylo Ivanov) +- Pylint fixes (Ivaylo Ivanov) +- Remove unused JavaScript and re-use the existing JSON RPC methods + + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then:: + + cd Kiwi/ + git pull + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_ +before upgrade! + +**WARNING:** ``pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi: + edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi: + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + # repeat until you have reached latest + + +Subscription based online service +--------------------------------- + +We are planning to convert +`https://public.tenant.kiwitcms.org `_ into +a subscription based service for people who don't want to bother installing +Kiwi TCMS on their own systems and just want to use it for test collaboration +with their team. + +The income from this service will go towards covering operating costs and +supporting the +`development team <{filename}pages/team.html>`_. Watch this +blog for further announcements about this. Meanwhile you may share your +thoughts via +`Issue #515 `_. + + +Plans to remove deprecated functionality +---------------------------------------- + +``TestRun.product_version`` will be removed from the database schema in favor of +``TestRun.plan.product_version``! With the latest web interface it is not possible +to select a product version different than the one selected in the Test Plan. +Test runs should only be able to select product builds (after +`Issue #246 `_ is fixed). diff --git a/content/2018-11-05-testrunner-plugin-spec.markdown b/content/2018-11-05-testrunner-plugin-spec.markdown new file mode 100644 index 00000000..dd7afa96 --- /dev/null +++ b/content/2018-11-05-testrunner-plugin-spec.markdown @@ -0,0 +1,180 @@ +Title: Test runner plugin specification +date: 2018-11-05 16:05 +comments: true +author: Alexander Todorov +tags: plugins + +Happy Monday testers! Kiwi TCMS needs your help! We are looking for developers who +wish to create plugins for popular test runners that will record test results +in Kiwi TCMS! Initially we are looking for plugins for Python's unittest, +[Django](https://docs.djangoproject.com/en/2.1/topics/testing/advanced/#using-different-testing-frameworks) +and [JUnit](https://junit.org/junit4/plugins.html)! + + +What is a test runner? +---------------------- + +When working with automated testing you have several components: + +* A test module (or test script), e.g. `test_models.py` which contains + tests for your software; +* A test framework, e.g. Python nose, which provides the structure + for test classes and methods and assert methods to use; +* A test runner, which knows how to discover your test scripts, load them, + execute the testing scenarios inside of them and report the results. + + +Very often all of the components above live together inside the testing framework +but don't need to. For example the standard `unittest` module in Python +provides a test runner but there are also `nose` and `py.test` and Django provides +its own test runner that knows how to work with the database. + + +Workflow organization +--------------------- + +Once you agree to writing a plugin we are going to create a separate GitHub +repository where you will be granted write privileges making you an independent +contributor to the Kiwi TCMS project! + + +Design and architecture of the plugin is up to you, following the practices +established by the testing framework in question. You will also have to create +a test suite for your plugin based on the specification below. + +You are expected to use +[public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/) while working on the +plugin and afterwards. This is known as eating your own dog food! + +For Python we provide the `tcms-api` module which already takes care of the +communications layer. For other languages you will have to create this layer or +depend on other open source libraries that provide a XML-RPC or JSON-RPC +client! + +You can use +[this gist](https://gist.github.com/atodorov/f5aed028b6f254d97bcaf93453abe8d2) +for inspiration! + + +Behavior Specification +---------------------- + + +*Please use the comments section to discuss unclear behavior and missing scenarios!* + + SUMMARY: Will use configuration file if it exists + GIVEN: the file ~/.tcms.conf exists + WHEN: plugin initializes + THEN: the plugin will log an info message, read the file and + THEN: configure TCMS_API_URL, TCMS_USERNAME, TCMS_PASSWORD + variables with the respective values + + + SUMMARY: Will use ENVIRONMENT if configuration file doesn't exist + GIVEN: the file ~/.tcms.conf does not exists + WHEN: plugin initializes + THEN: the plugin will read configuration from environment and configure + the following variables/class members: + TCMS_API_URL, TCMS_USERNAME and TCMS_PASSWORD + + + SUMMARY: Will exit if TCMS_API_URL not configured + GIVEN: TCMS_API_URL variable is empty + WHEN: plugin initializes + THEN: log a warning message and exit + AND: depending on the test runner framework set exist status 1 + + + SUMMARY: Will exit if TCMS_USERNAME not configured + GIVEN: TCMS_USERNAME is empty + WHEN: plugin initializes + THEN: log a warning message and exit + AND: depending on the test runner framework set exist status 1 + + + SUMMARY: Will exit if TCMS_PASSWORD not configured + GIVEN: TCMS_PASSWORD is empty + WHEN: plugin initializes + THEN: log a warning message and exit + AND: depending on the test runner framework set exist status 1 + + + SUMMARY: Will re-use existing TestPlan if configured + GIVEN: TCMS_RUN_ID environment variable is not empty + WHEN: plugin initializes + THEN: this will be the Current_TestRun record to which the plugin is + going to add test execution results + AND: Current_TestPlan document in which the plugin will + search for test cases becomes Current_TestRun.plan + + + SUMMARY: Will create new TestPlan & TestRun if TCMS_RUN_ID not configured + GIVEN: TCMS_RUN_ID environment variable is empty + THEN: plugin will create a new TestPlan in Kiwi TCMS with attributes: + name='Automated test plan for %(product)' + product='%(product)' + product_version='%(version)' + type='Unit' + WHERE: %(product) is a placeholder for TCMS_PRODUCT==TRAVIS_REPO_SLUG==JOB_NAME + %(version) is a placeholder for TCMS_PRODUCT_VERSION==TRAVIS_COMMIT==TRAVIS_PULL_REQUEST_SHA==GIT_COMMIT + THEN: plugin will crate a new TestRun in Kiwi TCMS with attributes: + summary='Automated test run ....' + plan=Current TestPlan + build='%(build)' + manager=TCMS_USERNAME + WHERE: %(build) is a placeholder for TCMS_BUILD==TRAVIS_BUILD_NUMBER==BUILD_NUMBER + Environment variables are specified in: + https://docs.travis-ci.com/user/environment-variables#default-environment-variables + https://wiki.jenkins.io/display/JENKINS/Building+a+software+project#Buildingasoftwareproject-belowJenkinsSetEnvironmentVariables + + SUMMARY: Will not create duplicate Product, Version & Build if they already exist + GIVEN: TCMS_RUN_ID is not configured + AND: %(product) exists + AND: %(version) exists + AND: %(build) exists + WHEN: plugin tries to auto-create TestPlan and TestRun + THEN: plugin will re-use %(product), %(version) and %(build) from the database + AND: not try to auto-create them + + + SUMMARY: Will auto-create Product, Version & Build if they don't exist + GIVEN: TCMS_RUN_ID is not configured + AND: %(product) doesn't exist + AND: %(version) doesn't exist + AND: %(build) doesn't exist + WHEN: plugin tries to auto-create TestPlan and TestRun + THEN: %(product), %(version) and %(build) be created automatically + + + SUMMARY: Unit test names are added to TestPlan + GIVEN: we have good plugin configuration + WHEN: plugin loops over unit tests emitted by the test runner + THEN: plugin will check Current_TestPlan for a TestCase with the same name + AND: if test case doesn't exist in Current_TestPlan + THEN: it will be added to Current_TestPlan + hint: it is probably best to process all unit test results at the end! + + + SUMMARY: Unit test names are added to TestRun + GIVEN: we have good plugin configuration + WHEN: plugin loops over unit tests emitted by the test runner + THEN: plugin will check Current_TestRun for a TestCaseRun object which matches + the current unit test name + hint: (or Current_TestCase object from previous scenario, depending on implementation) + AND: if such TestCaseRun doesn't exist in Current_TestRun + THEN: it will be added to Current_TestRun + hint: it is probably best to process all unit test results at the end! + + + SUMMARY: Current_TestRun is updated with unit test results + GIVEN: we have good plugin configuration + WHEN: plugin loops over unit tests emitted by the test runner + THEN: plugin will check Current_TestRun for a TestCaseRun object which matches + the current unit test name + hint: (or Current_TestCase object from previous scenario, depending on implementation) + AND: if TestCaseRun object exists in Current_TestRun + THEN: its status will be updated with the execution result coming from the test runner + hint: it is probably best to process all unit test results at the end! + + +Happy testing! diff --git a/content/2018-11-12-version-6.2.1.rst b/content/2018-11-12-version-6.2.1.rst new file mode 100644 index 00000000..52042b4a --- /dev/null +++ b/content/2018-11-12-version-6.2.1.rst @@ -0,0 +1,110 @@ +Kiwi TCMS 6.2.1 +############### + +:headline: some improvements, bug-fixes and French translation +:date: 2018-11-12 14:45 +:comments: true +:tags: releases + +We're happy to announce Kiwi TCMS version 6.2.1! This is a small release +that includes some 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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 24338088bf46 956.8 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB + + +Changes since Kiwi TCMS 6.2 +--------------------------- + + +Improvements +~~~~~~~~~~~~ + +- Update to `Patternfly 3.57.0 `_ +- Update to `psycopg2 2.7.6.1 `_ + +Bug fixes +~~~~~~~~~ + +- Fix InvalidQuery, field ``TestCase.default_tester`` cannot be both deferred and + traversed using ``select_related`` at the same time. References + `Issue #346 `_ + +Refactoring +~~~~~~~~~~~ + +- Pylint fixes (Ivaylo Ivanov) +- Remove JavaScript and Python functions in favor of existing JSON-RPC +- Remove vendored-in ``js/lib/jquery.dataTables.js`` which is now replaced by + the npm package ``datatables.net`` (required by Patternfly) + + +Translations +~~~~~~~~~~~~ + +- New `French translation `_ + (Christophe CHAUVET) + + +Misc +~~~~ + +- `https://public.tenant.kiwitcms.org `_ is + using a new SSL certificate with serial number + ``46:78:80:EA:80:A4:FC:65:17:E4:59:EC:1D:C2:27:47`` +- Version 6.2.1 has been published to + `PyPI `_ to facilitate people who want + to deploy Kiwi TCMS on Heroku. **Important**: PyPI package will be provided + as a convenience for those who know what they are doing. Valid bugs and + issues will be dealth with accordingly. As we do not deploy from a PyPI + tarball we ask you to provide all the necessary + details when reporting issues! *If you have no idea what all of this means + then stick to the official Docker images!* + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then:: + + cd Kiwi/ + git pull + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_ +before upgrade! + +**WARNING:** ``pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi: + edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi: + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + # repeat until you have reached latest + + +Happy testing! diff --git a/content/2018-12-04-version-6.3.rst b/content/2018-12-04-version-6.3.rst new file mode 100644 index 00000000..ea1e5fee --- /dev/null +++ b/content/2018-12-04-version-6.3.rst @@ -0,0 +1,172 @@ +Kiwi TCMS 6.3 +############# + +:headline: fixes XSS vulnerability, GitLab integration +:date: 2018-12-04 09:15 +:comments: true +:tags: releases + +We're happy to announce Kiwi TCMS version 6.3! This is a medium severity +security update that includes new versions of Django and Patternfly, +new database migrations, lots of improvements, bug fixes and internal +refactoring. This version also introduces integration with GitLab issue +tracker! 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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 8135624fdca2 960.3 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB + + +Changes since Kiwi TCMS 6.2.1 +----------------------------- + + +Security +~~~~~~~~ + +- Resolve medium severity XSS vulnerability which can be exploited when + previewing malicious text in Simple MDE editor. See + `CVE-2018-19057 `_, + `SNYK-JS-SIMPLEMDE-72570 `_ +- Use ``mozilla/bleach`` before rendering Markdown to the user as a second layer + of protection against the previously mentioned XSS vulnerability + + +Improvements +~~~~~~~~~~~~ + +- Update to `Django 2.1.4 `_ +- Update to `Patternfly 3.58.0 `_ +- Make docker container restartable (Maik Opitz, Adam Hall) +- Add GitLab issue tracker integration. Fixes + `Issue #176 `_ + (Filipe Arruda, Federal Institute of Pernambuco) +- Convert ``Create new TestPlan`` page to Patternfly (Anton Sankov) +- Upon successful registration show the list of super-users in case new + accounts must be activated manually. This can be the same or expanded + version of the addresses in the ``ADMIN`` setting. Include super-users + in email notifications sent via ``tcms.signals.notify_admins()``. +- Don't include ``admin/js/*.js`` files in templates when not + necessary. Results in faster page load. Fixes + `Issue #209 `_ +- Enable ``nl2br`` Markdown extension which allows newline characters + to be rendered as ``
`` tags in HTML. Visually the rendered + text will look closer to what you seen in the text editor. Fixes + `Issue #623 `_ +- Use auto-complete for adding components to TestCase + + +Removed functionality +~~~~~~~~~~~~~~~~~~~~~ + +- Bulk-update of Category for selected TestCase(s) inside of + TestPlan +- Bulk-update of Components for selected TestCase(s) inside of + TestPlan +- Bulk-update of automated status for selected TestCase(s) inside of + TestPlan +- Bulk-remove for TestCase Component tab + +These actions have always been a bit broken and didn't check the +correct permission labels. You can still update items individually! + +- Selection of Components when creating new TestCase. Closes + `Issue #565 `_. + Everywhere else Kiwi TCMS doesn't allow selection of many-to-many + relationships when creating or editing objects. Tags, Bugs, Components, + TestPlans can be added via dedicated tabs once the object has been saved. + + +Bug fixes +~~~~~~~~~ + +- Hide ``KiwiUserAdmin.password`` field from super-user. Fixes + `Issue #610 `_ +- Don't show inactive Priority. Fixes + `Issue #637 `_ +- Don't traceback when adding new users via Admin. Fixes + `Issue #642 `_ +- Teach ``TestRun.update()`` API method to process the ``stop_date`` + field. Fixes + `Issue #554 `_ (Anton Sankov) +- Previously when reporting issues to Bugzilla, directly from a TestRun, + Kiwi TCMS displayed the error ``Enable reporting to this Issue Tracker by + configuring its base_url`` although that has already been configured. + This is now fixed. See + `Stack Overflow #53434949 `_ + + +Database +~~~~~~~~ + +- Remove ``TestPlan.owner`` field, duplicates ``TestPlan.author`` + + +Translations +~~~~~~~~~~~~ + +- Updated `French translation `_ +- Updated `Slovenian translation `_ + + +Refactoring +~~~~~~~~~~~ + +- Remove ``fmt_queries()``. Fixes + `Issue #330 `_ (Anton Sankov) +- Remove unused parameter from ``plan_from_request_or_none()``. Refers to + `Issue #303 `_ (Anton Sankov) +- Remove ``ComponentActions()`` class. Fixes + `Issue #20 `_ +- Convert lots of AJAX calls to JSON-RPC +- Remove lots of unused Python, JavaScript and templates. Both after migration + to JSON RPC and other leftovers +- Pylint fixes (Alexander Todorov, Anton Sankov) + + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then:: + + cd Kiwi/ + git pull + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_ +before upgrade! + +**WARNING:** ``pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi: + edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi: + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + # repeat until you have reached latest + + +Happy testing! diff --git a/content/2018-12-17-roadmap-update.markdown b/content/2018-12-17-roadmap-update.markdown new file mode 100644 index 00000000..31361d2b --- /dev/null +++ b/content/2018-12-17-roadmap-update.markdown @@ -0,0 +1,147 @@ +Title: Roadmap status report for 2018 +headline: 62% complete, good progress on refactoring +date: 2018-12-17 15:50 +comments: true +og_image: images/roadmap.jpg +twitter_image: images/roadmap.jpg +author: Alexander Todorov +tags: community, roadmap + +Hello everyone, in this article I will outline the progress that the Kiwi TCMS +team has made towards achieving the goals in our 2018 +[roadmap]({filename}2018-01-22-milestones.markdown) +([mid-year update here]({filename}2018-07-25-roadmap-update.markdown)). +TLDR; goals are completed at 62%. Refactoring legacy code is showing good results, +less so on the front-end side and there are items still in progress! + + +Make code easier to maintain +---------------------------- + +*Status: good progress* + +Initially [CodeClimate](https://codeclimate.com/github/kiwitcms/Kiwi) reported +a "D" rating with 600+ code smells and 600+ duplications and a 1 year estimation +to resolve these. We're now down to "C" rating with 171 smells and 203 duplications. + +The level of technical debt has dropped from 32.5% down to 17.7% and we have removed +around 14000 lines of Python code and 8000 lines of JavaScript code without +losing significant functionality. + +Checkout +[the stats](https://codeclimate.com/github/kiwitcms/Kiwi/trends/technical_debt) +for more info! + + + +Use pylint and pylint-django +---------------------------- + +*Status: almost finished* + +Both pylint and pylint-django have been integrated into our CI workflow. There are even +some custom built plugins that we use. The number of issues reported is down to 100 +from 4000+ initially. These are predominantly `fixme` comments which are also in parts +of the code that are scheduled for removal and refactoring. + + +Render HTML, return JSON +------------------------ + +*Status: moderate progress* + +Several views were modified to return pure JSON but we've not +done any targeted work to resolve this issue. A number of other views have been +removed in favor of using the existing JSON-RPC layer. + +This is an internal refactoring effort which isn't very visible from the outside. +This is also one of the factors contributing to the high number of removed +source code. + + +Submit forms, post JSON, GET clean URLs +--------------------------------------- + +*Status: no progress* + +Not much has been done in this area except the occasional refactoring to +JSON-RPC. + + +API layer +--------- + +*Status: complete* + + +Documentation +------------- + +*Status: moderate progress, dropped* + +All RPC methods have been documented! The rest of the internals will be documented +as we go along. + + +No vendored JavaScript libraries +-------------------------------- + +*Status: good progress* + +We still carry around jQuery, jQuery-UI and Handlebars.js. They will be +removed once the pages using them are converted to use the Patternfly widgets +library. + + +Less HTML templates with better organization +-------------------------------------------- + +*Status: moderate progress* + + +There are still over 50 HTML templates in `tcms/templates/` that need to be +refactored into Patternfly. We've been working on them one at a time and will +focus more on this effort in the next couple of months. + + +Modern interface with Patternfly +-------------------------------- + +*Status: moderate progress* + +Some of the pages have been converted to use Patternfly. The most important pages +that still have a different look and feel are TestPlan view, TestCase view and +TestRun view. These are also the hardest to convert because they have lots of +tabs/components which pull information from various places. Our goal is to create +reusable widgets for the various components (e.g. a list of TestCases) and then +include these components into several different templates to minimize code +duplication. + + +JavaScript updates and front-end testing +---------------------------------------- + +*Status: moderate progress* + +A number of JavaScript functions have been refactored and removed during the +past few releases but there are still thousands of lines of code left to deal with. +This effort is mostly happening in parallel with the Patternfly redesign. +We still don't have anything to test front-end JavaScript functionality! + + +Community efforts +------------------ + +*Status: good progress* + +We are seeing a steady stream of new users registered on +[https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org/login/github-app/) and +there are several active contributors on GitHub. Most of our translators are +very active and keep their respective languages fresh and up to date! + +Kiwi TCMS was represented at OSCAL Tirana, DjangoCon Heidelberg, PyCon Prague, +HackConf Sofia, PiterPy St. Petersburg and OpenFest Sofia. We've also been +approved for a project stand at FOSDEM 2019 so watch this blog for more news. + + +Happy testing! diff --git a/content/2019-01-07-version-6.4.rst b/content/2019-01-07-version-6.4.rst new file mode 100644 index 00000000..4867d94d --- /dev/null +++ b/content/2019-01-07-version-6.4.rst @@ -0,0 +1,149 @@ +Kiwi TCMS 6.4 +############# + +:headline: security updates, improvements and bug fixes +:date: 2019-01-07 15:25 +:comments: true +:tags: releases + +We're happy to announce Kiwi TCMS version 6.4! This is a security, +improvement and bug-fix update that includes new versions of Django, +Patternfly and other dependencies. 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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 39fcb88182bb 963.4 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB + + +Changes since Kiwi TCMS 6.3 +--------------------------- + + +Security +~~~~~~~~ + +- Update Django from 2.1.4 to 2.1.5, which deals with CVE-2019-3498: + Content spoofing possibility in the default 404 page +- Update Patternfly to version 3.59.0, which deals with XSS issue in bootstrap. + See CVE-2018-14041 +- By default session cookies will expire after 24 hours. This can be controlled + via the ``SESSION_COOKIE_AGE`` setting. Fixes + `Issue #556 `_ + + +Improvements +~~~~~~~~~~~~ + +- Update mysqlclient from 1.3.13 to 1.3.14 +- Update python-gitlab from 1.6.0 to 1.7.0 +- Update django-simple-history from 2.5.1 to 2.6.0 +- Update pygithub from 1.43.3 to 1.43.4 +- New API method ``TestCase.remove()``. Initially requested as + `SO #53844380 `_ +- Drop down select widges in Patternfly pages are now styled with + ``bootstrap-select`` giving them more consistent look and feel with + the rest of the page (Anton Sankov) +- Create new TestPlan page now includes toggles to control notifications + and whether or not the test plan is active. This was previously available + only in edit page (Anton Sankov) +- By default TestPlan notification toggles are turned on. Previously they + were off (Anton Sankov) +- Create and Edit TestPlan pages now look the same (Anton Sankov) +- Kiwi TCMS is now accepting donations via + `Open Collective `_ + + +Removed functionality +~~~~~~~~~~~~~~~~~~~~~ + +- Remove ``TestPlan page -> Run menu -> Add cases to run`` action. + This is the same as ``TestRun page -> Cases menu -> Add`` action +- Legacy reports will be removed after 1st March 2019. Provide your + feedback in + `Issue #657 `_ +- The ``/run/`` URL path has been merged with ``/runs/`` due to configuration + refactoring. This may break your bookmarks or permalinks! + + +Bug fixes +~~~~~~~~~ + +- Don't traceback if markdown text is ``None``. Originally reported as + `SO #53662887 `_ +- Show loading spinner when searching. Fixes + `Issue #653 `_ +- Quick fix: when viewing TestPlan cases make TC summary link to the test case. + Previously the summary column was a link to nowhere. + + +Translations +~~~~~~~~~~~~ + +- Updated `Chinese Traditional translation `_ +- Updated `French translation `_ +- Updated `Slovenian translation `_ + + +Refactoring +~~~~~~~~~~~ + +- Pylint fixes +- New and updated internal linters +- Refactor ``testplans.views.new`` to class based view (Anton Sankov) +- Refactor ``TestCase -> Bugs tab -> Remove`` to JSON-RPC. References + `Issue #18 `_ +- Refactor ``removeCaseRunBug()`` to JSON-RPC, References + `Issue #18 `_ +- Remove unused ``render_form()`` methods +- Remove unnecessary string-to-int conversion (Ivaylo Ivanov) +- Remove obsolete label fields. References + `Issue #652 `_ (Anton Sankov) +- Remove JavaScript that duplicates ``requestOperationUponFilteredCases()`` +- Remove ``QuerySetIterationProxy`` class - not used anymore + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then:: + + cd Kiwi/ + git pull + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_ +before upgrade! + +**WARNING:** ``pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi: + edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi: + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + # repeat until you have reached latest + + +Happy testing! diff --git a/content/2019-01-10-2019-mission.markdown b/content/2019-01-10-2019-mission.markdown new file mode 100644 index 00000000..a0cdfde7 --- /dev/null +++ b/content/2019-01-10-2019-mission.markdown @@ -0,0 +1,303 @@ +Title: Project mission and goals for 2019 +date: 2019-01-10 10:35 +comments: true +og_image: images/roadmap.jpg +twitter_image: images/roadmap.jpg +author: Alexander Todorov +tags: community, roadmap + +Hello testers, Kiwi TCMS has taken on a brave new +mission! We would like to transform the testing process by making it more +organized, transparent & accountable for everyone on your team. Our goal +is to improve engineering productivity and participation in +testing. The following blog post outlines how we would like to achieve +this and what goals we put before ourselves for this year. + + +Complete the internal refactoring +--------------------------------- + +Last year we took on the challenge to bring a legacy code base up to modern +coding standard. We did not complete that effort but made very good progress +along the way. This is not a small task and that's why our team will continue +with it this year. + + +CodeClimate report + +* [CodeClimate](https://codeclimate.com/github/kiwitcms/Kiwi): + 0 issues, 0% technical debt, health score A +* [Scrutinizer](https://scrutinizer-ci.com/g/kiwitcms/Kiwi/): + only A and B type issues +* [Pylint](https://travis-ci.org/kiwitcms/Kiwi/jobs/475946313): 0 issues +* Remove vendored-in Handlebars, jQuery, jQuery-UI and TableDnD JavaScript + libraries in favor of existing npm dependencies +* Front-end uses the existing JSON-RPC instead of backend views that + are only used for AJAX requests. Tip: these are usually accessed via + `postToURL()` and `jQ.ajax()` on the front-end +* Inspect and classify all 3rd party issues reported from + [Coverity](https://scan.coverity.com/projects/kiwitcms-kiwi) and + [Bandit](https://travis-ci.org/kiwitcms/Kiwi/jobs/475946312). Report and fix + what we can, ignore the rest that do not affect Kiwi TCMS. + +Redesign the UI templates with the help of Patternfly +----------------------------------------------------- + +There are 59 templates remaining to be converted to a modern look and feel. +Along with them comes more refactoring and even redesign of the existing pages +and the workflow around them. Together with refactoring this will make Kiwi TCMS +easier to use and also to maintain. + + +Modernize reporting +------------------- + +We are planning to remove the existing reports feature because they are not well +designed. We will re-implement existing functionality that our community finds useful, +add new types of reports (incl. nicer graphics and UI) and make it possible for the +reporting sub-system to be more easily extendable. + +Phase out is planned to begin after 1st March 2019! Until then we are looking for your +feedback. Please comment in +[Issue #657](https://github.com/kiwitcms/Kiwi/issues/657)! + + +Plugins for 3rd party test automation frameworks +------------------------------------------------ + +These will make it easier to collect results from automated test suites into +Kiwi TCMS for later analysis. Instead of creating scripts that parse the +results and talk to our API you will only have to install an additional package +in your test environment and configure the test runner to use it! Automation +test results will then appear inside Kiwi TCMS. + +- [JUnit 5 plugin](https://github.com/kiwitcms/junit-plugin) - already in progress +- [TestNG plugin](https://github.com/kiwitcms/Kiwi/issues/692) - RFC +- [Django plugin](https://github.com/kiwitcms/Kiwi/issues/693) - RFC +- [py.test plugin](https://github.com/kiwitcms/Kiwi/issues/694) - RFC + + +If you would like to use such functionality leave your vote inside GitHub +issues! In case you would like to write a test-runner plugin you can find the +specification +[here](http://kiwitcms.org/blog/atodorov/2018/11/05/test-runner-plugin-specification/). + + +Redefine bug-tracker integration +-------------------------------- + +> Question: Does Kiwi TCMS integrate with JIRA? +> +> Answer: Well, it does. How exactly do you want to integrate? +> +> ... silence ... + +The following dialog happens every time someone asks me about bug-tracker +integration, especially with JIRA. The thing is integration is a specified +set of behavior which may or may not be desired in a particular team. As of now +Kiwi TCMS is able to open a URL to your bug-tracker with predefined field +values, add comments to bug reports and report a simple summary of bugs +inside a TestRun. + +We recognize this may not be enough and together with the community we +really need to define what bug tracker integration means! The broader domain +of application lifecycle management tools (of which TCMS is a sub-set) have an +integrated bug tracking system. We can add something like this and save you +the trouble of using JIRA, however many teams have already invested in +integrating their infrastructure or just like other tools. For example we love +GitHub issues and our team regularly makes public reports about issues that +we find internally! + + +* Goal: Redefine what bug-tracker integration means, vote in + [Issue #698](https://github.com/kiwitcms/Kiwi/issues/698) +* Goal: Bug-tracker functionality inside Kiwi TCMS, similar to + GitHub Issues. Vote in + [Issue #699](https://github.com/kiwitcms/Kiwi/issues/699) +* Goal: Integration with Redmine (per current specification), vote in + [Issue #41](https://github.com/kiwitcms/Kiwi/issues/41) +* Goal: fix existing bugs around bug-tracker integration + (per current specification). Vote in + [Issue #97](https://github.com/kiwitcms/Kiwi/issues/97), + [Issue #117](https://github.com/kiwitcms/Kiwi/issues/117), + [Issue #289](https://github.com/kiwitcms/Kiwi/issues/289), + [Issue #290](https://github.com/kiwitcms/Kiwi/issues/290), + [Issue #320](https://github.com/kiwitcms/Kiwi/issues/320), + [Issue #479](https://github.com/kiwitcms/Kiwi/issues/479) and + [Issue #530](https://github.com/kiwitcms/Kiwi/issues/530) + + +GitHub flow integration +----------------------- + +Developers have their +[GitHub PR flow](https://guides.github.com/introduction/flow/) and if they +have done the job of having unit tests then they will merge only when things +are green! This leaves additional testing efforts kind of to the side and +doesn't really help with transparency and visibility. I'm not going to mention +having an automatically deployed staging environment for every change +because very few teams actually have managed to do this effectively. + +Kiwi TCMS statuses on GitHub PR + +* Goal: Figure out how Kiwi TCMS can integrate with GitHub flow and bridge the gap. + Please share and `+1` your wildest ideas in + [Issue #700](https://github.com/kiwitcms/Kiwi/issues/700). +* Follow up: depending on the results in #700 we will follow with other goals and + sub-tasks + + +Agile integration with Trello +----------------------------- + +Speaking of modern engineering flow is your team truly agile? When and how +do you plan your testing activities ? Before the devel sprint or afterwards? +How many testers take part in refining product backlog and working on user stories? + +Similar to GitHub flow lots of teams and open source projects are using Trello +to effectively organize their development process. Testing should not be left +behind and Kiwi TCMS may be able to help. + + +* Goal: Figure out how Kiwi TCMS fits into the overall `devel-test-planning` + process for agile teams and what we can do to make this easier for testers. + Please share and `+1` your wildest ideas in + [Issue #701](https://github.com/kiwitcms/Kiwi/issues/701) +* Follow up: depending on the results in #701 we will follow with other goals and + sub-tasks + + + +Improve engineering productivity +-------------------------------- + +What makes a test engineer productive when they need to assess product risk and +new features, when mapping product requirements documents (PRD) to test plans and +test cases, when collaborating on user stories and behavior specification ? +What makes developers, product owners, designers and other professionals productive +when it comes to dealing with testing ? + + +For example consider the following workflow: + +* Company has idea for a new product +* In case this is a big product it may have its own mission, i.e. what kind + of problem is it trying to solve and for which group of customers +* Product backlog is then created which outlines features that map + to the product mission +* Then the team, together with test engineers perform example mapping + and discuss and refine the initial feature requirements. User stories + are created +* Behavior specification may also be created +* Test plans and test cases are the immediate product of BDD specs and + desired user stories + +Later we iterate through the sprints and for each sprint something like +this happens: + +* Desired product features are planned for development. They must be *complete* + at least in terms of requirements, specs and tests +* Devel writes code, maybe some unit tests, testers can also write automated tests + and/or manually verify the current state of the feature being developed +* Testing, including exploratory is performed before feature is merged +* Rinse and repeat + + +Devel is also part of testing, right? Product owners, UX and interaction +designers as well. Producing quality software product is a team effort! + + +In every step of the way Kiwi TCMS can provide notification wizards, guidelines +and/or documentation for best practices, facilitate tooling, e.g. to write user stories +and assess them or map out an exploratory testing session, etc. The list +of ideas is virtually endless. We can even go into deep learning, AI and +blockchain but honestly who knows how to use them in testing ? + +Our team is not quite sure how this goal will look like 3 months from now +but we are certain that testing needs to happen first, last and all the time +during the entire software development lifecycle. By providing the necessary +functionality and tools in Kiwi TCMS we can boost engineering productivity +and steer the testing process in your organization into a better, more productive +direction which welcomes participation from all engineering groups. + +Let's consider another point of view: testing is a creative activity +which is benefited by putting your brain into a specific state of mind! +For example Gherkin (the Given-When-Then language) has the benefit of +forcing you to think about behavior and while doing so you are vocalizing +the various roles in the system, what kind of actions are accepted and +what sort of result is expected! Many times this will help you remember or +discover missing scenarios, edge cases and raise even more questions! + + +Crazy ideas, brain dumps and `+1` as always are welcome in +[Issue #703](https://github.com/kiwitcms/Kiwi/issues/703). + + +Community +--------- + +Coding alone is not fun! Here's what you can do to help us: + +* [Become a stargazer](https://github.com/kiwitcms/Kiwi/stargazers) by clicking the + `Star` button on our GitHub repository +* [Follow @KiwiTCMS on Twitter](https://twitter.com/KiwiTCMS) +* [Subscribe to our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) - + we are GDPR compliant and we don't spam, we promise! +* Vote with a `+1` reaction on GitHub issues (top-right corner) +* Send us testimonials and feedback about using Kiwi TCMS. + We will be happy to publish them on our website +* Send us a pull request on GitHub +* [Become a sponsor](https://opencollective.com/kiwitcms)! + + +We are also looking to expand our core team and the list of occasional +contributors. The following are mostly organizational goals: + +* Goal: participate in 5 conferences with a project stand +* Goal: define how we find, recruit and onboard new team members. The + foundation is already set in + [TP-3](https://tcms.kiwitcms.org/plan/3/kiwi-tcms-team-onboarding#testcases) +* Goal: clearly mark GitHub issues which are suitable for external contributors + which don’t want to spend lots of time learning how Kiwi TCMS works under the hood. + We're going to tag all such issues with the + + GitHub help wanted + label + + +Development policy +------------------ + +Our team will be working on areas related to the goals above. A `+1` +reaction on GitHub issues will help us prioritize what we work on! + +GitHub +1 + +Bug fixes and other +issues will be occasionally slipped into the stream and pull requests from +non-team contributors will be reviewed and merged in a timely fashion. + +There is at least 1 full day of work that goes behind the scenes when +a new version is officially released: compile changelog, build images and +upload them, create blog post and newsletter announcement, share on social +media, etc. We also deploy on our own Kiwi TCMS instance as a stop-gap +measure before making everything public! + +New PyPI tarballs and Docker images will be released every few weeks as +we see fit, this has been our standard process. We try to align releases +with Django's release schedule and try to cut a new version when there are known +security vulnerabilities fixed. However we can't guarantee this will always +be the case! + +If you are in a hurry and need something quickly the best option is to +send a pull request, build your own Docker image from source and +maybe consider +[sponsoring us via Open Collective](https://opencollective.com/kiwitcms)! + + + +Happy testing! diff --git a/content/2019-01-18-2019-fosdem.markdown b/content/2019-01-18-2019-fosdem.markdown new file mode 100644 index 00000000..4684c304 --- /dev/null +++ b/content/2019-01-18-2019-fosdem.markdown @@ -0,0 +1,53 @@ +Title: Kiwi TCMS is going to FOSDEM 2019 +date: 2019-01-17 17:30 +comments: true +og_image: images/kiwi_socks.jpg +twitter_image: images/kiwi_socks.jpg +tags: community, events + +Hello testers, Kiwi TCMS is going to [FOSDEM](http://fosdem.org/) this year. +This is where you can find us: + +Kiwi TCMS sticker + +* Fri Feb 1st: [after 18:00 @ Delirium CafĂ©](https://fosdem.org/2019/beerevent/) - + we are taking part of the FOSDEM Beer Event where all participants are invited. + `Shout out with #KiwiTCMS` on Twitter if you can't find us in the crowd +* Both days: [Building K, Level 2, Stand 10](https://fosdem.org/2019/stands/). + We will be together with our friends from ReportPortal and SystemTestPortal at + the Open Source Test Management stand +* Sat Feb 2nd: + [18:00 @ Room H.2215 (Lightning Talks)](https://fosdem.org/2019/schedule/track/lightning_talks/) - + [10 years of open source test case management *with Kiwi TCMS*](https://fosdem.org/2019/schedule/event/test_case_management/) + lightning talk +* Sun Feb 3rd: + [10:00 @ UD2.120 (Python devroom)](https://fosdem.org/2019/schedule/track/python/) - + [How to write pylint plugins](https://fosdem.org/2019/schedule/event/python_write_pylint_plugins/) + presentation with examples of plugins which our team uses to make Kiwi TCMS better + +We would like to meet with all of you and talk about test management and +test process organization. In case you are stuck for crazy ideas checkout +[our project mission]({filename}2019-01-10-2019-mission.markdown) for inspiration. + +Be part of the community +------------------------ + +We are turning 10 years old and we have presents for you! You will have to perform +a small challenge and you can get your hands(errr, feet) on a pair of these: + +Kiwi TCMS socks + +Here's what else you can do to help us: + +* [Become a stargazer](https://github.com/kiwitcms/Kiwi/stargazers) by clicking the + `Star` button on our GitHub repository +* [Follow @KiwiTCMS on Twitter](https://twitter.com/KiwiTCMS) +* [Subscribe to our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) - + we are GDPR compliant and we don't spam, we promise! +* Send us testimonials and feedback about using Kiwi TCMS. + We will be happy to publish them on our website +* [Become a sponsor](https://opencollective.com/kiwitcms)! + +Happy testing! diff --git a/content/2019-02-01-version-6.5.rst b/content/2019-02-01-version-6.5.rst new file mode 100644 index 00000000..0db6435f --- /dev/null +++ b/content/2019-02-01-version-6.5.rst @@ -0,0 +1,214 @@ +Kiwi TCMS 6.5 +############# + +:headline: improvements and bug fixes, automation plugins +:date: 2019-02-01 09:35 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 6.5! This is a minor security, +improvement and bug-fix update that includes new +versions of Django and other dependencies, removes some database fields, +includes backend API updates and fixes several bugs. +You can explore everything at +`https://public.tenant.kiwitcms.org `_! + + +Together with this release we announce: + +* `kiwitcms-tap-plugin `_ : for reading + Test Anything Protocol (TAP) files and uploading the results to Kiwi TCMS +* `kiwitcms-junit.xml-plugin `_ : + for reading junit.xml formatted files and uploading the results to Kiwi TCMS + +Both of these are implemented in Python and should work on standard TAP and +junit.xml files generated by various tools! + +Additionally 3 more plugins are currently under development by contributors: + +* Native `JUnit 5 plugin `_ written + in Java +* Native `PHPUnit `_ written + in PHP +* `py.test plugin `_ + + + +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 7ca4fda602fc 1.002 GB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB + + +Changes since Kiwi TCMS 6.4 +--------------------------- + +Security +~~~~~~~~ + +- Better override of SimpleMDE markdown rendering to prevent XSS vulnerabilities + in SimpleMDE + + +Improvements +~~~~~~~~~~~~ + +- Update patternfly to version 3.59.1 +- Update bleach from 3.0.2 to 3.1.0 +- Update django-vinaigrette from 1.1.1 to 1.2.0 +- Update django-simple-history from 2.6.0 to 2.7.0 +- Update django-grappelli from 2.12.1 to 2.12.2 +- Update mysqlclient from 1.3.14 to 1.4.1 +- Update psycopg2 from 2.7.6.1 to 2.7.7 +- Update pygithub from 1.43.4 to 1.43.5 +- Convert TestCase page to Patternfly + + - page menu is under ``...`` in navigation bar + - Test plans card is missing the old 'add plan' functionality b/c we are not + at all sure if adding plans to test cases is used at all. Can bring it back + upon user request! + - Bugs card is missing the add/remove functionality for b/c we are not + quite sure how that functionality is used outside test runs! +- Convert new TestCase page to Patternfly and provide Given-When-Then text + template. This prompts the author to use a BDD style definition for their + scenarios. We believe this puts the tester into a frame of mind more + suitable for expressing what needs to be tested +- Add a favicon. Fixes + `Issue #532 `_ +- Sort Component, Product and Version objects alphabetically. Fixes + `Issue #633 `_ +- Search test case page now shows Components and Tags +- Search test case page now allows filtering by date. Fixes + `Issue #715 `_ +- Search test case page now uses radio buttons to filter by automation status +- Small performance improvement when searching test plans and test cases +- Search test run page now allows to filter by Product but still continue to + display all Builds in the selected Product +- Updated doc-string formatting for some ``tcms`` modules + + +Database migrations +~~~~~~~~~~~~~~~~~~~ + +**Known issues:** on our demo installation we have observed that permission +labels were skewed after applying migrations. The symptom is that labels for +removed models are still available, labels for some models may have been removed +from groups/users or there could be permission labels appearing twice in the +database. + +This may affect only existing installations, new installations do not have +this problem! + +We are not certain what caused this but a quick fix is to remove all permissions +from the default *Tester* group and re-add them again! + +- Remove ``TestCase.alias`` +- Remove ``TestCaseRun.running_date`` +- Remove ``TestCaseRun.notes`` +- Remove ``TestCase.is_automated_proposed`` +- Remove ``TestCaseText`` model, merge into ``TestCase.text`` field. Closes + `Issue #198 `_ +- Remove ``Priority.sortkey`` +- Remove ``Build.description`` +- Remove ``Classification.sortkey`` and ``Classification.description`` +- Convert ``TestCase.is_automated`` from ``int`` to ``bool`` +- Rename ``TestCaseRun.case_run_status`` to ``status`` + + +API +~~~ + +- New method ``TestCaseRunStatus.filter()`` +- New method ``Product.create()`` +- New method ``Classification.filter()`` +- New method ``BugSystem.filter()`` +- Changes to ``TestCase.add_component()``: + + - now accepts component name instead of id + - now fails if trying to add components linked to another Product. + - now returns serialized ``TestCase`` object + + +Translations +~~~~~~~~~~~~ + +- Updated `French translation `_ +- Updated `Slovenian translation `_ + +Bug fixes +~~~~~~~~~ + +- Fix for missing migrations from ``django-simple-history``, see + `DSH #512 `_ and + `StackOverflow #54177838 `_ +- Fix cloning of test cases by surrounding bootstrap-selectpicker call with + ``try-catch``. Fixes + `Issue #695 `_ +- Fix a traceback with TestRun report page when the RPC connection to Bugzilla + can't be established + + +Refactoring +~~~~~~~~~~~ + +- Remove unused form classes, methods, fields and label attributes +- Remove unused or duplicate methods from ``TestCase`` model +- Remove useless methods from BaseCaseForm() +- Add test for discovering missing migrations +- Add test for sanity checking PyPI packages which will always + build tarball and wheel packages + +tcms-api 5.2 (30 Jan 2019) +-------------------------- + +- Add ``plugin_helpers.Backend`` which implements our test runner plugin + `specification `_ + in Python +- Add dependency to ``kerberos`` (Aniello Barletta) + + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then:: + + cd Kiwi/ + git pull + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_ +before upgrade! + +**WARNING:** ``pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi: + edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi: + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + # repeat until you have reached latest + + +Happy testing! diff --git a/content/2019-02-12-version-6.5.3.rst b/content/2019-02-12-version-6.5.3.rst new file mode 100644 index 00000000..64c9184b --- /dev/null +++ b/content/2019-02-12-version-6.5.3.rst @@ -0,0 +1,128 @@ +Kiwi TCMS 6.5.3 +############### + +:headline: security, improvements and bug fixes +:date: 2019-02-12 00:20 +:comments: true +:tags: releases + +We're happy to announce Kiwi TCMS version 6.5.3! This is a +security, improvement and bug-fix update that includes new +versions of Django, includes several database migrations and fixes several bugs. +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest b9355cf85833 1.039 GB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB + + +Changes since Kiwi TCMS 6.5 +--------------------------- + +Security +~~~~~~~~ + +- Update Django from 2.1.5 to 2.1.7. Fixes CVE-2019-6975: + Memory exhaustion in ``django.utils.numberformat.format()`` + + +Improvements +~~~~~~~~~~~~ + +- Update mysqlclient from 1.4.1 to 1.4.2 +- Multiple template strings marked as translatable (Christophe CHAUVET) + + +Database migrations +~~~~~~~~~~~~~~~~~~~ + +- Email notifications for TestPlan and TestCase now default to True +- Remove ``TestPlanEmailSettings.is_active`` field + + +API +~~~ + +- New method ``Bug.report()``, References + `Issue #18 `_ +- Method ``Bug.create()`` now accepts parameter ``auto_report=False`` + +Translations +~~~~~~~~~~~~ + +- Updated `German translation `_ +- Updated `French translation `_ +- Updated `Slovenian translation `_ + + +Bug fixes +~~~~~~~~~ + +- Show the user who actually tested a TestCase instead of hard-coded value. Fixes + `Issue #765 `_ +- Properly handle pagination button states and page numbers. Fixes + `Issue #767 `_ +- Add TestCase to TestPlan if creating from inside a TestPlan. Fixes + `Issue #777 `_ +- Made TestCase text more readable. Fixes + `Issue #764 `_ +- Include missing templates and static files from PyPI tarball + + +Refactoring +~~~~~~~~~~~ + +- Use ``find_packages()`` when building PyPI tarball +- Install Kiwi TCMS as tarball package inside Docker image instead of copying + from the source directory +- Pylint fixes +- Remove ``testcases.views.ReturnActions()`` which is now unused +- Refactor New TestCase to class-based view and add tests + + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then:: + + cd Kiwi/ + git pull + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_ +before upgrade! + +**WARNING:** ``pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi: + edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi: + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + # repeat until you have reached latest + + +Happy testing! diff --git a/content/2019-02-22-how-to-use-kiwitcms-plugins-pt1.markdown b/content/2019-02-22-how-to-use-kiwitcms-plugins-pt1.markdown new file mode 100644 index 00000000..cf921abe --- /dev/null +++ b/content/2019-02-22-how-to-use-kiwitcms-plugins-pt1.markdown @@ -0,0 +1,282 @@ +Title: How to use Kiwi TCMS plugins, Pt. 1 +headline: to import results from automated tests +date: 2019-02-22 15:10 +comments: true +author: Alexander Todorov +og_image: images/plugins.png +twitter_image: images/plugins.png +tags: community, plugins + +In +[release notes for v6.5]({filename}2019-02-01-version-6.5.rst) +we announced several plugins which will fetch test names and execution results +from your automated test suite. + +Plugins can be controlled via environment variables which will affect how +test results are recorded in the Kiwi TCMS database! This blog post is an introduction +how that works and what you can do with it! For this purpose I will be using the +[plugin-demo](https://github.com/kiwitcms/plugin-demo) repository, which simulates +real development work. + +*Full documentation and list of available plugins is available in chapter +[Automation Frameworks Plugins](https://kiwitcms.readthedocs.io/en/latest/plugins.html)!* + +Always create new TestRun by default +------------------------------------ + +The default behavior is always to create a new TestRun if controlling variables +are not overridden! Product name, version and build will receive default values +if tests are running in Travis CI or Jenkins. For example +[Travis Build #2](https://travis-ci.org/kiwitcms/plugin-demo/builds/496217246) for +[commit d455fb4](https://github.com/kiwitcms/plugin-demo/commit/d455fb42fb7c2aedadfd5f66de7d131109c03350) +creates [TR-12](https://tcms.kiwitcms.org/runs/12/) and +[TP-10](https://tcms.kiwitcms.org/plan/10/)! + +``` +Product=kiwitcms/plugin-demo +Version=d455fb42fb7c2aedadfd5f66de7d131109c03350 +Build=2 +``` + +Next we convert the README file from Markdown to reStructuredText which triggers +[Travis Build #3](https://travis-ci.org/kiwitcms/plugin-demo/builds/496220575) for +[commit 418b80b](https://github.com/kiwitcms/plugin-demo/commit/418b80b3bbb65a799f695dc59d488c76f560fa2b). +This build **again** creates a new TestRun and new TestPlan for it. Respectively +[TR-14](https://tcms.kiwitcms.org/runs/14/) and +[TP-12](https://tcms.kiwitcms.org/plan/12/)! + +``` +Product=kiwitcms/plugin-demo +Version=418b80b3bbb65a799f695dc59d488c76f560fa2b +Build=3 +``` + +**Important:** we can see that version is different which will affect how artifacts +are organized in Kiwi TCMS, possibly affect how you will report status to stakeholders! + + +Override ENV variables for more control +--------------------------------------- + +Let's say the QA team has decided that all test results must be reported under the +same TestPlan. This means version must be the same between various builds in Travis CI! +To control this we export `TCMS_PRODUCT_VERSION=master` in CI **before** executing +the TAP plugin! Checkout the commit on GitHub to see how it is done! + +This triggers +[Travis Build #4](https://travis-ci.org/kiwitcms/plugin-demo/builds/496223505) for +[commit e484e59](https://github.com/kiwitcms/plugin-demo/commit/e484e59023caf665e8f93341395af6f397691b93). +Because this is the first time where Version == master the plugin creates +[TP-14](https://tcms.kiwitcms.org/plan/14/) and reports the results under +[TR-16](https://tcms.kiwitcms.org/runs/16/). + +``` +Product=kiwitcms/plugin-demo +Version=master +Build=4 +``` + +Right after that I realized we can make this configuration a bit more generic +because our team is planning to support multiple versions of the product and +development will be done in separate branches! +[Travis Build #5](https://travis-ci.org/kiwitcms/plugin-demo/builds/496228021) for +[commit f1f2878](https://github.com/kiwitcms/plugin-demo/commit/f1f2878d80a7327b54c8e33d1c6d6f14153d6d12) +still ends up with Version == master because we are still working on the `master` +branch! That is to say, the product is in active mode of development. + +Results are reported in +[TR-18](https://tcms.kiwitcms.org/runs/18/) which is again part of +[TP-14](https://tcms.kiwitcms.org/plan/14/). + +``` +Product=kiwitcms/plugin-demo +Version=master +Build=5 +``` + +[Travis Build #6](https://travis-ci.org/kiwitcms/plugin-demo/builds/496229819) for +[commit df6153b](https://github.com/kiwitcms/plugin-demo/commit/df6153b2495bfc6825f25e544ae1806108aa490f) +adds the new functionality *README badges* and reports test results in +[TR-20](https://tcms.kiwitcms.org/runs/20/) which is again part of +[TP-14](https://tcms.kiwitcms.org/plan/14/). + + +More ENV overrides +------------------ + +While giving status reports back to stakeholders and developers the information that +we have in the TestRun is Build number! This follows the numbering scheme in Travis CI +(or Jenkins job number) and isn't very useful. + +Let's define `TCMS_BUILD` to be the first 7 characters of the commit hash! When QA +tells devel that something isn't working and redirects them to the TestRun they can +immediately use the Build information and git checkout the offending variant of the product +for investigation. + +This results in +[Travis Build #7](https://travis-ci.org/kiwitcms/plugin-demo/builds/496233565) for +[commit bf75d0a](https://github.com/kiwitcms/plugin-demo/commit/bf75d0abe9695e3ee3b49b8944bab9db43bb25e6), +[TR-22](https://tcms.kiwitcms.org/runs/22/), +[TP-14](https://tcms.kiwitcms.org/plan/14/). + +``` +Product=kiwitcms/plugin-demo +Version=master +Build=bf75d0a +``` + + +Report results in pre-existing TestRun +-------------------------------------- + +There are many reasons you may want to do this: + +* include both manual and automation tests for the same build; +* mix results from multiple test suites for the same build, + e.g. unit, functional, performance +* mix results from multiple but similar platforms in the same build, + e.g. cross-platform application for iOS and Android + +To do so I've created [TR-24](https://tcms.kiwitcms.org/runs/24/) beforehand and +configured `TCMS_RUN_ID=24` in my CI environment. TR-24 also contains +[TC-57: Verify we can report results from several plugins into the same TR](https://tcms.kiwitcms.org/case/57/). +this was created and added via the web interface. + +**Note:** mixing additional test cases can be done either before or after +automation results are reported with the plugin! + +**Important:** when reporting results to an existing TestRun Kiwi TCMS plugins +don't care in which TestPlan this TR is! In theory it is possible to report +the results for `Product=kiwitcms/plugin-demo` into any TP/TR pair! However we +don't want to do this crazy thing and instead I've created TR-24 inside the already +existing TP-14! + +**Note:** because I don't know what is the git commit beforehand I've configured +TR-24 with `Build=unspecified`. If I wanted I could update this with the correct value +once I know the commit hash for the related changes I am testing. + +**Important:** the plugin-demo repository uses both kiwitcms-tap-plugin and +kiwitcms-junit.xml-plugin at the same time! They differ in the way test names +are compiled! Both are reported in TR-24. See TC-57 text for information how to +distinguish between the two. + +See +[Travis Build #8](https://travis-ci.org/kiwitcms/plugin-demo/builds/496237911) for +[commit 85ad939](https://travis-ci.org/kiwitcms/plugin-demo/builds/496237911), +[TR-24](https://tcms.kiwitcms.org/runs/24/), +[TP-14](https://tcms.kiwitcms.org/plan/14/). + +``` +Product=kiwitcms/plugin-demo +Version=master +Build=unspecified +``` + +Also check-out comments in TR executions to see when and who had executed the test case. + +So far there have been some tests which were failing (although Travis reports PASS) so +I decided to fix them. +[Travis Build #9](https://travis-ci.org/kiwitcms/plugin-demo/builds/496240713) for +[commit a25b384](https://github.com/kiwitcms/plugin-demo/commit/a25b3841e656d47a7539c608e375cecbf3bed2ac) +is still configured with `TCMS_RUN_ID=24`. This means results will be reported in +TR-24, effectively overwriting previous results. + +Check-out *Change Log* under each individual execution and you will see several +time stamps when status was updated! In other words, as long as `TCMS_RUN_ID` is +pointing to an existing TestRun this TR will keep the results of the last test suite execution! + + +Continue development, restore ENV configuration +----------------------------------------------- + +[Travis Build #10](https://travis-ci.org/kiwitcms/plugin-demo/builds/496243124) for +[commit c4f1ae5](https://github.com/kiwitcms/plugin-demo/commit/c4f1ae5ecadb249d39923cedbbf53a85e50420b3) +removes `TCMS_RUN_ID`! Results are reported in +[TR-25](https://tcms.kiwitcms.org/runs/25/), +[TP-14](https://tcms.kiwitcms.org/plan/14/). + +``` +Product=kiwitcms/plugin-demo +Version=master +Build=c4f1ae5 +``` + +Branch out for an LTS version +----------------------------- + +Our team has decided to make the first LTS release of the product. We branch out into +`lts-v0` branch in git and cut the first NVR. This results in +[Travis Build #11](https://travis-ci.org/kiwitcms/plugin-demo/builds/496245067) for +[commit 9f1ef71](https://github.com/kiwitcms/plugin-demo/commit/9f1ef717e3fb248d65535ed66b5c4e61e6f85a6e) +[TR-27](https://tcms.kiwitcms.org/runs/27/), +[TP-16](https://tcms.kiwitcms.org/plan/16/). + +``` +Product=kiwitcms/plugin-demo +Version=lts-v0 +Build=9f1ef71 +``` + +Because this is the first time we are running tests for this product version +we end up with the newly created TP-16! + +**Note:** see how version was populated with the correct value for the git branch! +This is because my CI config uses `TCMS_PRODUCT_VERSION=$TRAVIS_BRANCH` and no further +changes were required! I made this change back in Travis Build #5 anticipating what +will come in the future! + + +The product is now live and customers have reported critical bugs for it: +*URLs for the badges in README are wrong*! I fix those and add more tests of course, see: +[Travis Build #12](https://travis-ci.org/kiwitcms/plugin-demo/builds/496247347) for +[commit 2d72754](https://github.com/kiwitcms/plugin-demo/commit/2d72754d3f911ef4e25287f203471f4466b95d12), +[TR-29](https://tcms.kiwitcms.org/runs/29/) for +[TP-16](https://tcms.kiwitcms.org/plan/16/). + +``` +Product=kiwitcms/plugin-demo +Version=lts-v0 +Build=2d72754 +``` + +TR-29 contains the new [TC-58](https://tcms.kiwitcms.org/case/58/)! + + +cherry-pick between branches +---------------------------- + +In the `lts-v0` branch customers have identified a serious issue. It doesn't exist on `master` +but the test is still valid so I cherry-pick it! In git you can backport or forwardport very +easily. Regardless of the direction Kiwi TCMS plugins will record the test results for you. + +See +[Travis Build #13](https://travis-ci.org/kiwitcms/plugin-demo/builds/496252529) for +[commit 31ae5b3](https://github.com/kiwitcms/plugin-demo/commit/31ae5b3358137fde7d2b5c3656b384acc7331d95), +[TR-31](https://tcms.kiwitcms.org/runs/31/) for +[TP-14](https://tcms.kiwitcms.org/plan/14/). + +We can see that TC-58, which was originally implemented on the `lts-v0` branch +is now present! + + +Summary +------- + +This is a very basic example of how you can organize collection and reporting for +your automation test suite results with Kiwi TCMS. The links here only refer to +artifacts created by `kiwitcms-tap-plugin` while in the DB we keep others as well. + +There are feature requests for more ENV variables which will allow you to control +TestPlan creation and child/parent relationship between test plans. See + and vote with a `:+1:` reaction +to help us plan for these features. + +Kiwi TCMS automation framework plugins are nothing more than result parsers +which talk back to a database. It is up to you to decide how to organize the +collection of test results and how to report on them later, when the need arises. + +Future installments in this post series will take a look at workflows with +feature branches and pull requests and discuss possible organization scenarios. +You are welcome to share your ideas in the comments below. + +Happy testing! diff --git a/content/2019-03-02-want-to-hack-open-source.markdown b/content/2019-03-02-want-to-hack-open-source.markdown new file mode 100644 index 00000000..43b1399e --- /dev/null +++ b/content/2019-03-02-want-to-hack-open-source.markdown @@ -0,0 +1,151 @@ +Title: Want to hack open source ? +headline: Kiwi TCMS is looking for contributors +date: 2019-03-02 19:40 +comments: true +og_image: images/team/hiring.png +twitter_image: images/team/hiring.png +tags: community, team + + + +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](https://codeclimate.com/github/kiwitcms/Kiwi). + +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](https://scan.coverity.com/projects/kiwitcms-kiwi) and +[Snyk](https://snyk.io/test/github/kiwitcms/Kiwi) 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! diff --git a/content/2019-03-03-telemetry.markdown b/content/2019-03-03-telemetry.markdown new file mode 100644 index 00000000..b202ea53 --- /dev/null +++ b/content/2019-03-03-telemetry.markdown @@ -0,0 +1,276 @@ +Title: Legacy reports become Telemetry +headline: here's what is going to change +date: 2019-03-03 21:27 +comments: true +og_image: images/telemetry/social_image.png +twitter_image: images/telemetry/social_image.png + +As we've [promised]({filename}2019-01-10-2019-mission.markdown) Kiwi TCMS is +starting work on improving the legacy reports functionality. +After analyzing your feedback in +[Issue #657](https://github.com/kiwitcms/Kiwi/issues/657) here's what we came up +with. *Note: screenshots below are mockups.* + + +General tech specs +------------------ + +* Once a self-contained tarball is installed inside the Docker image (or inside local virtualenv) + Kiwi TCMS will be able to find it automatically and update the menu options. Aka plugins. + No further configuration should be necessary other than providing the source code implementing + the new functionality +* Navigation menu will be able to support several layers of menus +* Where possible Telemetry pages will reuse existing HTML templates +* Telemetry data will be implemented as an RPC method that can be consumed by the front-end + via JSON-RPC +* Charts will be rendered in the browser with c3/d3, + see [Data Visualization](https://www.patternfly.org/pattern-library/data-visualization/area-chart/) + + +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: + +* IDLE - `pf-black-600` +* PASSED - `pf-green-400` +* FAILED - `pf-red-100` +* OTHER - `pf-orange-400`. This includes other statuses which are not PASSED, FAILED and IDLE. + +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](https://www.patternfly.org/styles/color-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](https://public.tenant.kiwitcms.org/runs/625/) presents +TestRun execution information in a simplified format found at +[TR-625/Report](https://public.tenant.kiwitcms.org/runs/625/report/). +In order to improve the current implementation: + +* Convert TestRun page to Patternfly which generally prints better +* Add bug list at the bottom of the page, below all test execution rows +* Keep “View all in Issue Tracker” link (supported only for some bug trackers) +* The widget for TestRun progress must be kept +* Tweak CSS classes to disable printing for visual elements that we don't need. + This will be decided after the entire page has been converted to Patternfly +* Remove the existing `testruns.views.TestRunReportView` and associated templates, + JavaScript and CSS because they will not be needed anymore + + +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: + +* Allow filtering by + * Group (multi-select) + * User (multi select, depends on Group) + * Start / Stop dates + * Product +* Show results per User or per Group (if no users are selected) +* Allow grouping per TestRun ID or calendar week number + +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. + +* Filtering will be the same as performance telemetry +* Grouping will be the same as performance telemetry +* **Unknown:** total execution time is calculated as + * the sum of duration for each TestExecution (not available ATM, + automation plugins not sending this info) or + * the total time for the entire TestRrun (not supported by automation plugins) + +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 + +* Allow filtering by + * Product + * Test plan (refined by product) + * Start / Stop dates +* Show results in table form as shown in the image above +* PASS/non-PASS stats will be calculated based on `TestExecution.objects` +* 100% failing rate will be reported in the first table as ALWAYS FAILING +* Executions where failing rate is >0% and <100% will be reported as 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 + +* Allow filtering by + * Product + * Test plan (refined by product) + * Start / Stop dates + +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: + +* Test Case page, Executions card: info per TP +* Test Run page, Test Executions table - visual icon + % to hint the user + about expected TC stability + + +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 + +* Filter by + * Product + * Version (refined by Product) + * Build (refined by Version) + * Test Plan (refined by Product) + * Start / Stop dates +* Shows total count of `TestExecution.objects` (stacked area chart) with color codes for status +* Group by TestRun ID or calendar week + +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! diff --git a/content/2019-03-13-openexpo.markdown b/content/2019-03-13-openexpo.markdown new file mode 100644 index 00000000..624cbc2f --- /dev/null +++ b/content/2019-03-13-openexpo.markdown @@ -0,0 +1,30 @@ +Title: Taking the lead at OpenExpo Europe CfP votes +headline: please vote for our presentations +date: 2019-03-13 07:27 +comments: true +og_image: images/openexpo/vote_openexpo19.jpg +twitter_image: images/openexpo/vote_openexpo19.jpg +tags: community, events + +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! + + +- Vote for Alex'es + [cyber security presentation](https://a.cstmapp.com/entries/29369/sort:votes/direction:desc) +- Vote for Anton's + [micro-services tech talk](https://a.cstmapp.com/entries/30063/sort:votes/direction:desc) +- Vote for Alex'es + [pylint plugins tech-talk](https://a.cstmapp.com/entries/30063/sort:votes/direction:desc): + currently 3rd in the Open Source Tech Talks category + + +Thank you & happy testing! diff --git a/content/2019-03-19-version-6.6.rst b/content/2019-03-19-version-6.6.rst new file mode 100644 index 00000000..8d3af761 --- /dev/null +++ b/content/2019-03-19-version-6.6.rst @@ -0,0 +1,178 @@ +Kiwi TCMS 6.6 +############# + +:headline: medium security, improvements and bug fixes +:date: 2019-03-19 22:40 +:comments: true +:tags: releases + +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest c4734f98ca37 971.3 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB + pub.kiwitcms.eu/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 +~~~~~~~~~~~~ + +- Updated `Chinese Simplified translation `_ +- Updated `Chinese Traditional translation `_ +- Updated `German translation `_ +- Updated `French translation `_ +- Updated `Slovenian translation `_ +- Changed misspelled source string ``Requirments`` -> ``Requirements`` (@Prome88) + + +How to upgrade +--------------- + +If you are using Kiwi TCMS as a Docker container then:: + + cd Kiwi/ + git pull + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_ +before upgrade! + +**WARNING:** ``pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi: + edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi: + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + # repeat until you have reached latest + +Happy testing! diff --git a/content/2019-04-06-version-6.7.rst b/content/2019-04-06-version-6.7.rst new file mode 100644 index 00000000..875862f6 --- /dev/null +++ b/content/2019-04-06-version-6.7.rst @@ -0,0 +1,132 @@ +Kiwi TCMS 6.7 +############# + +:headline: improvements and bug fixes +:date: 2019-04-06 17:15 +:comments: true +:tags: releases + +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 702a78976de7 993.5 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB + pub.kiwitcms.eu/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 +~~~~~~~~~~~~ + +- Updated `Slovenian translation `_ + + +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 pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_ +before upgrade! + +**WARNING:** ``pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi: + edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi: + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + # repeat until you have reached latest + +Happy testing! diff --git a/content/2019-05-03-version-6.8.rst b/content/2019-05-03-version-6.8.rst new file mode 100644 index 00000000..3ff1e25c --- /dev/null +++ b/content/2019-05-03-version-6.8.rst @@ -0,0 +1,122 @@ +Kiwi TCMS 6.8 +############# + +:headline: GitHub Marketplace, improvements and bug fixes +:date: 2019-05-03 13:45 +:comments: true +:tags: releases + + +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest fca095f95475 994.8 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB + pub.kiwitcms.eu/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 +~~~~~~~~~~~~ + +- Updated `French translation `_ +- Updated `Slovenian translation `_ +- New language `Russian `_ +- New language `Czech `_ + + +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 pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_ +before upgrade! + +**WARNING:** ``pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi: + edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi: + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + # repeat until you have reached latest + +Happy testing! diff --git a/content/2019-05-16-version-6.9.rst b/content/2019-05-16-version-6.9.rst new file mode 100644 index 00000000..bd1ed4e1 --- /dev/null +++ b/content/2019-05-16-version-6.9.rst @@ -0,0 +1,117 @@ +Kiwi TCMS 6.9 +############# + +:headline: testing breakdown telemetry, improvements and bug fixes +:date: 2019-05-16 16:20 +:comments: true +:tags: releases + + +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest a01eaeddf213 1.001 GB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB + pub.kiwitcms.eu/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 +~~~~~~~~~~~~ + +- Updated `French translation `_ +- Updated `Slovenian translation `_ + +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 pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_ +before upgrade! + +**WARNING:** ``pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi: + edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi: + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + # repeat until you have reached latest + +Happy testing! diff --git a/content/2019-05-25-pylint-workshop.markdown b/content/2019-05-25-pylint-workshop.markdown new file mode 100644 index 00000000..fdb91622 --- /dev/null +++ b/content/2019-05-25-pylint-workshop.markdown @@ -0,0 +1,39 @@ +Title: Pylint workshop with Django Bulgaria user group +headline: contributing more checkers for Kiwi TCMS +date: 2019-05-25 14:27 +comments: true +author: Alexander Todorov +tags: community, events +og_image: images/django_meetup.jpg +twitter_image: images/django_meetup.jpg + +On Tuesday I hosted my pylint workshop during the regular +[Django Bulgaria meetup](https://www.facebook.com/events/295673718035353/). +This edition was the first which was practice based. + +Attendance numbers were low but participation was very good. We managed to +create 4 new checkers for Kiwi TCMS: + +- [PR #949 - AutoField checker](https://github.com/kiwitcms/Kiwi/pull/949) +- [PR #950 - OneToOneField checker](https://github.com/kiwitcms/Kiwi/pull/950) +- [PR #951 - discover directories without \_\_init\_\_.py](https://github.com/kiwitcms/Kiwi/pull/951) +- [PR #952 - empty class checker](https://github.com/kiwitcms/Kiwi/pull/952) +- [PR #955 - function based view checker](https://github.com/kiwitcms/Kiwi/pull/955) + + +Many thanks to all contributors. These new checkers have discovered quite a +few new issues with Kiwi TCMS so this is an area which our team is going to improve. + +Those who missed the workshop will be able to catch up one of the next editions: + +- 26-29 August, GUADEC, Thessaloniki - TBC (presentation) +- end of September, Python meetup, Zagreb - TBA +- 03-05 October, PyCon Balkan, Belgrade - TBC +- 11-13 October, HackConf, Sofia +- 15-17 October, TestCon Europe, Vilnius - TBC (backup presentation) +- 23-25 October, Testwarez, Ossa, Poland - TBC (presentation) +- 14-15 November, Software Engineering Conference Russia, Saint-Petersburg - TBC +- 20-22 November, ConTEST, New York - TBC (workshop and/or presentation) + + +Happy testing! diff --git a/content/2019-05-27-openexpo-openawards.markdown b/content/2019-05-27-openexpo-openawards.markdown new file mode 100644 index 00000000..b9524a37 --- /dev/null +++ b/content/2019-05-27-openexpo-openawards.markdown @@ -0,0 +1,35 @@ +Title: Kiwi TCMS needs your help winning OpenAwards 2019 +headline: please vote for us +date: 2019-05-27 16:15 +comments: true +og_image: images/openexpo/openawards2019.jpg +twitter_image: images/openexpo/openawards2019.jpg +tags: community, events + +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]({filename}2019-03-13-openexpo.markdown). +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: + +- lots of technical updates and refactoring, latest everything, modern UI +- the **only** open source test case management system on GitHub Marketplace +- nearly 60000 downloads on Docker Hub +- growing and active core team +- active OSS contributors + +Please help us gain more recognition: + +- [Vote for Kiwi TCMS](https://a.cstmapp.com/voteme/31129/633186885) + in the Best Tech Community category! + + +Thanks you & happy testing! diff --git a/content/2019-06-18-version-6.10.rst b/content/2019-06-18-version-6.10.rst new file mode 100644 index 00000000..2abc05d3 --- /dev/null +++ b/content/2019-06-18-version-6.10.rst @@ -0,0 +1,122 @@ +Kiwi TCMS 6.10 +############## + +:headline: medium security updates and few improvements +:date: 2019-06-18 22:45 +:comments: true +:tags: releases + + +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest bbb581d60ed1 1.005 GB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB + pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Don't forget to `backup <{filename}2018-07-30-docker-backup.markdown>`_ +before upgrade! + +**WARNING:** ``pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi: + edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi: + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + # repeat until you have reached latest + +Happy testing! diff --git a/content/2019-06-24-openawards-winner.markdown b/content/2019-06-24-openawards-winner.markdown new file mode 100644 index 00000000..e756928b --- /dev/null +++ b/content/2019-06-24-openawards-winner.markdown @@ -0,0 +1,23 @@ +Title: Kiwi TCMS is OpenAwards 2019 Best Tech Community Winner +headline: thank you, everyone +date: 2019-06-24 13:10 +comments: true +author: Alexander Todorov +og_image: images/openexpo/award.jpg +twitter_image: images/openexpo/award.jpg +tags: community, events + +Image of the award + +Kiwi TCMS is the winner at OpenAwards'19 category Best Tech Community! +Big thanks to the jury, our contributors and core-team and the larger +open source and quality assurance communities who voted for us and supported +the project during all of those years. + +This award is the best present we could get to mark the 10th anniversary +of the project. More news of how we are progressing with current roadmap will +follow soon in a separate blog post. + +Thank you & happy testing! diff --git a/content/2019-06-28-roadmap-update.markdown b/content/2019-06-28-roadmap-update.markdown new file mode 100644 index 00000000..9c597438 --- /dev/null +++ b/content/2019-06-28-roadmap-update.markdown @@ -0,0 +1,194 @@ +Title: Mid-year roadmap status report +headline: tough progress, a bit behind schedule +date: 2019-06-28 15:50 +comments: true +og_image: images/roadmap.jpg +twitter_image: images/roadmap.jpg +author: Alexander Todorov +tags: community, roadmap + +Hello everyone, in this article I will outline the progress that the Kiwi TCMS +team has made towards achieving the goals on our +[2019 mission and roadmap]({filename}2019-01-10-2019-mission.markdown). +TL,DR: Kiwi TCMS has made progress since January, it's been tough and may not have been +very visible. I feel like we've been behind schedule till now! The greatest +positive thing has been community and team development! + + +Complete the internal refactoring +--------------------------------- + +*Status: minimal progress, needs help* + +[CodeClimate](https://codeclimate.com/github/kiwitcms/Kiwi) progress is: + +* -30 code smells +* -40 duplications +* -30 other issues +* 4% technical debt improvement +* -200 hrs remaining until issues are fixed + +This is mostly the result of code reviews and minor fixes, not targeted work. + +We have not done any targeted work to resolve other issues reported by Scrutinizer, +Pylint, remove vendored-in JavaScript libraries, JavaScript refactoring or +classification of issues in 3rd party dependencies. + +There are new people onboarding in the team right now and our plan is for +them to start grinding at these issues very soon! + + +Redesign the UI templates with the help of Patternfly +----------------------------------------------------- + +*Status: 50% done, needs help* + +There are 27 HTML templates remaining to be redesigned (from 59). That's mostly +due to internal cleanup than targeted refactoring. More work on this item +will probably follow towards the end of the year after we get more priority items out of +the way and get more of the new team members rolling! + + +Modernize reporting aka Telemetry +--------------------------------- + +*Status: in progress, a bit behind schedule* + +The specs for the new [Telemetry]({filename}2019-03-03-telemetry.markdown) system +have been defined after taking into account feedback on GitHub issues. Anton Sankov is +the leading developer for this feature. So far we have 2 telemetry reports merged: +testing break-down and status matrix. The next one will be execution trends. + +There are lots of minor issues or missing functionality in these first iterations +(compared to specification). Our plan is to have the major use-cases satisfied first +and then work to refine all of the existing telemetry pages. + + +Plugins for 3rd party test automation frameworks +------------------------------------------------ + +*Status: good, needs help* + +Until now we have released TAP, junit.xml and native JUnit 5 plugins. There's also +a PHPUnit plugin which is more or less complete but unreleased yet. Both JUnit 5 +and PHPUnit plugins are developed by external contributors! + +We often get asked for plugins for languages and frameworks we don't use or don't +even know! Given that our expertise is mostly in Python we will gladly accept your +pull requests if you decide to maintain or contribute to one of the plugins. This +will also help us get insight into what automation frameworks people are using +and how exactly you structure a test automation workflow around Kiwi TCMS. + +Checkout the +[documentation](https://kiwitcms.readthedocs.io/en/latest/plugins.html) for links +and more info. + + +Redefine bug-tracker integration +-------------------------------- + +*Status: no progress* + +Last week, right after OpenExpo, we did a check-up session and this was one of the +areas identified with zero amount of progress. I have a strong preference to work +on this feature myself but have not been able to due to various other items that +need my attention. + +The short version is that I'd prefer to remove all issue tracker specific code +and allow the tester to add arbitrary URLs to link to existing bugs. How to do +integration (even as simple as publishing a comment in the bug tracker) over +a generic interface still eludes me. In the next few weeks I will kick-off this +topic with a separate blog post/issue for everyone to comment on. + + +GitHub flow integration +----------------------- + +*Status: no progress* + +Our team spent some time making Kiwi TCMS the first open source TCMS available +on the [GitHub Marketplace](https://github.com/marketplace/kiwi-tcms). We will +continue this integration effort and flow integration will emerge from that. +There's also many things that need to be done to satisfy GitHub's . + + +Agile integration with Trello +----------------------------- + +*Status: no progress* + + +Improve engineering productivity +-------------------------------- + +*Status: no progress* + +Our mission is to transform testing in your organization by providing +the tools for that via Kiwi TCMS. It is astonishing that so far nobody has provided +any kind of feedback in [Issue #703](https://github.com/kiwitcms/Kiwi/issues/703) +wrt improving productivity in their teams! + +We have some ideas which have been blocked by lack of resources on the team and +refactoring tasks. Because we've adopted this as our mission this is an important +item for us and we'll continue working on it as resources allow. +Progress is to be expected towards the end of the year. + + +Community +--------- + +*Status: great, on track, needs work* + +This is our strongest area during the year so far. We have a strong presence in +several communities, our event schedule is busy enough and we are gaining more +recognition every day! + +- Hosted project stand at 3/5 conferences with 2 more on-track +- Won the OpenAward for [Best Tech Community](2019-06-24-openawards-winner.markdown) +- Hosted several presentations and workshops with few more on track +- Found new talent to join the core team: 2 just ready to start contributing, 5 more in training + + 1 more senior engineer as a mentor. We also have a few independent wanna-be contributors + and will be hosting qualification interviews for marketing assistant very soon +- There are contributions and pull requests coming from users of Kiwi TCMS as well. + We'd like to see more of course. +- There are a couple of open source projects and companies using Kiwi TCMS who + are friendly towards the project. We are working with them to get a public + endorsement on the website and engage in more technical work together. Of course + everyone has limited resources and is very busy :-( +- Sponsors on [OpenCollect](https://opencollective.com/kiwitcms#contributors) are just + a few but we didn't have any previously so this is a good sign. + + +This is the moment to mention that not all is honey and roses in open source land. +Kiwi TCMS suffers from the problem that many of our users can't be contributors +or simply don't want to! + +Manual testers can't program. This is a fact and a good sized chunk of our user base +actually performs manual testing. Those that can write automation and probably +code decently well may not be familiar with Python and Django. At least in Bulgaria +these two aren't very popular, definitely not among testers. That is to say this part +of the user-base simply doesn't have the necessary skills to contribute and the majority +of what we need is code contribution! + +Another (fairly big IMO) group of users are coming from proprietary companies who +view open source and Kiwi TCMS as a zero cost option. Something that they take free +of charge and use it without ever contributing back. They don't understand nor really +care about the open source culture. + +To make things worse we receive requests every single day via +our private email addresses or questions via IM despite our website clearly stating +community engagement rules. On a few occasions we have received very rude comments +of the sort "our company demands you fix this", "is this going to be ready this year" +(context implying entitlement), etc. To make things more ridiculous we've even received +support requests (via contact form) from companies and start-up +who get their return address wrong so we can't get in touch directly! + + +In short: don't demand anything from us unless you are ready to pay for it, work for it +yourself or propose a mutually beneficial scenario. We do try to keep the community +happy but more importantly follow our mission and develop our core team! + + + + +Happy testing! diff --git a/content/2019-07-05-contributor-profile-primoz.markdown b/content/2019-07-05-contributor-profile-primoz.markdown new file mode 100644 index 00000000..45dbd907 --- /dev/null +++ b/content/2019-07-05-contributor-profile-primoz.markdown @@ -0,0 +1,110 @@ +Title: Contributor profile: PrimoĆŸ Klemen +headline: Kiwi TCMS converted me from an open source user to open source contributor +date: 2019-07-05 11:10 +og_image: images/team/hiring.png +twitter_image: images/team/hiring.png +comments: true +tags: community + + +In this new [series](/blog/tags/community/) 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)](http://better.care) 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](https://crowdin.com/project/kiwitcms) for Kiwi TCMS so you are +more than welcome to join and add another one. +[Translating via Crowdin](https://kiwitcms.readthedocs.io/en/latest/contribution.html#translation) +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](https://github.com/kiwitcms/Kiwi/issues/Prome88) 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)](http://better.care) 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!* diff --git a/content/2019-07-08-contributor-profile-aneta.markdown b/content/2019-07-08-contributor-profile-aneta.markdown new file mode 100644 index 00000000..d693edaa --- /dev/null +++ b/content/2019-07-08-contributor-profile-aneta.markdown @@ -0,0 +1,112 @@ +Title: Contributor profile: Aneta Petkova +headline: I learned I can build software, not just test it +date: 2019-07-08 17:53 +og_image: images/team/hiring.png +twitter_image: images/team/hiring.png +comments: true +tags: community + + +Happy Monday, testers! +In this [series](/blog/tags/community/) 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](https://sumup.com/), +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](https://github.com/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](https://tcms.kiwitcms.org/plan/25/)! + +*editor comment:* Aneta and Ivo (Kiwi TCMS) hosted the +["Git crash course" workshop at HackConf 2018](https://www.youtube.com/watch?v=r5sp0e7LsDc). +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!* diff --git a/content/2019-08-02-version-6.11.rst b/content/2019-08-02-version-6.11.rst new file mode 100644 index 00000000..b6cb359f --- /dev/null +++ b/content/2019-08-02-version-6.11.rst @@ -0,0 +1,158 @@ +Kiwi TCMS 6.11 +############## + +:headline: security updates, new telemetry, improvements and bug-fixes +:date: 2019-08-02 09:40 +:comments: true +:tags: releases + + +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 6a8249d23a67 1.011 GB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957.6 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955.7 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970.2 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970.1 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976.8 MB + + +Changes since Kiwi TCMS 6.10 +---------------------------- + + +Security +~~~~~~~~ + +- Update Django + `from 2.2.2 to 2.2.4 `_ +- Update marked to version 0.7.0, see + `release notes `_ + + +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 +~~~~~~~~~~~~ + +- Updated `French translation `_ +- Updated `Slovenian translation `_ + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +If you are using Kiwi TCMS as a Docker container then:: + + cd path/containing/docker-compose/ + docker-compose down + docker pull pub.kiwitcms.eu/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:** ``pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi: + edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi: + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + # repeat until you have reached latest + +Happy testing! diff --git a/content/2019-08-09-autumn-conferences.markdown b/content/2019-08-09-autumn-conferences.markdown new file mode 100644 index 00000000..14cdd78b --- /dev/null +++ b/content/2019-08-09-autumn-conferences.markdown @@ -0,0 +1,45 @@ +Title: Kiwi TCMS conference presence, AW2019 +headline: 11 events, 5 countries during Aug-Nov +date: 2019-08-09 10:55 +comments: true +og_image: images/roadtrip.png +twitter_image: images/roadtrip.png +tags: community, events + +Your favorite open source test case management system is going on tour again. +During the next several months we will be at: + +* [DEV.BG All in One, Aug 24, Sofia](https://www.facebook.com/events/647230689047274/) + where we will have an info booth +* [Tabara de Testare Meetup, Sept 25, Bucharest](https://www.facebook.com/Tabara.de.Testare/) + where Alex Todorov will join a discussion panel. To be confirmed! +* [SEETEST, Sept 26-27, Bucharest](https://seetest.org/) - + where you can meet with Alex Todorov and some of our community friends and contributors +* [RuseConf, Sept 28, Ruse](https://ruseconf.com/) - + where Alex Todorov and our friend Gjore Zaharchev (Seavus, Macedonia) will host + 2 presentations +* [Testival Meetup, Oct 1-2, Zagreb](https://www.meetup.com/testival/) +* [PyCon Balkan, Oct 3-5, Belgrade](https://pyconbalkan.com/) where: + - Alex Todorov will present *Extending your static analysis for fun and profit* + - Kiwi TCMS team will host open source prints for 1 or 2 days (more info soon) +* [Quality Assurance According to Einstein, Oct 6, Kikinda](https://pionir.zamphyr.com/) + where Alex Todorov will be meeting up with the local technical community as part of our + joint work with Zamphyr +* [HackConf, Oct 11-13, Sofia](https://www.hackconf.bg/bg/) where: + - Rayna Stankova & Ivaylo Ivanov will be hosting *Git for beginners* workshop + - Anton Sankov & Alex Todorov will be hosting *Python for beginners* workshop + - you can use **KIWITCMS** discount code +* [TestCon Europe, Oct 15-17, Vilnius](https://www.testcon.lt/) + where Alex Todorov will present *Finding security issues in open source* + and *Extend your static analysis for fun and profit* (backup presentation + in case other speakers don't show up) +* [TestWarez, Oct 24-25, Ossa (near Warsaw)](https://2019.testwarez.pl/). +* [OpenFest, Nov 2-3, Sofia](http://www.openfest.org/) + where we will have an info booth +* [ISTA Conference, Nov 14-15, Sofia](https://www.istacon.org/) + where you can meet with Alex Todorov and some of our contributors and + customers + + +Feel free to ping us at [@KiwiTCMS](https://twitter.com/KiwiTCMS) or look for the +kiwi bird logo and come to say hi. Happy testing! diff --git a/content/2019-09-03-oss-sprint-belgrade.markdown b/content/2019-09-03-oss-sprint-belgrade.markdown new file mode 100644 index 00000000..4ad5f03b --- /dev/null +++ b/content/2019-09-03-oss-sprint-belgrade.markdown @@ -0,0 +1,199 @@ +Title: Open source sprints at PyCon Balkan in Belgrade +headline: join us, learn and contribute to Kiwi TCMS +date: 2019-09-03 12:46 +comments: true +tags: community, events + + +Next month our team will be at +[PyCon Balkan, Oct 3-5](https://pyconbalkan.com/) 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](https://twitter.com/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](https://kiwitcms.readthedocs.io/en/latest/contribution.html#translation) +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](https://codeclimate.com/github/kiwitcms/Kiwi/issues?severity%5B%5D=minor&status%5B%5D=&status%5B%5D=open&status%5B%5D=confirmed&engine_name%5B%5D=structure&engine_name%5B%5D=duplication&engine_name%5B%5D=bandit&engine_name%5B%5D=csslint&engine_name%5B%5D=fixme&engine_name%5B%5D=radon&engine_name%5B%5D=sonar-python). +There are many of them: + +- CSS lint issues (we suggest you start with this one) +- functions longer than 25 lines of code +- functions with bigger cognitive and cyclomatic complexity +- modules longer than 250 LOC + +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](https://codeclimate.com/github/kiwitcms/Kiwi/issues?severity%5B%5D=major&status%5B%5D=&status%5B%5D=open&status%5B%5D=confirmed&engine_name%5B%5D=structure&engine_name%5B%5D=duplication&engine_name%5B%5D=bandit&engine_name%5B%5D=csslint&engine_name%5B%5D=fixme&engine_name%5B%5D=radon&engine_name%5B%5D=sonar-python). +There are around 150 of them: + +- identical and similar code blocks +- big modules +- big functions + +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](https://codeclimate.com/github/kiwitcms/Kiwi/issues?severity%5B%5D=critical&status%5B%5D=&status%5B%5D=open&status%5B%5D=confirmed&engine_name%5B%5D=structure&engine_name%5B%5D=duplication&engine_name%5B%5D=bandit&engine_name%5B%5D=csslint&engine_name%5B%5D=fixme&engine_name%5B%5D=radon&engine_name%5B%5D=sonar-python). +All of these are functions with high cognitive complexity and +the recommended way to deal with them is refactoring into +[class based views](https://docs.djangoproject.com/en/2.2/topics/class-based-views/). + + +Improve pylint health +--------------------- + +Difficulty: easy + +Execute pylint against the latest sources and start fixing the issues. +Looking at [pylint logs](https://travis-ci.org/kiwitcms/Kiwi/jobs/579167487) the +following items are relatively easy to work on: + +- Everything in module tcms.urls +- Everything in module tcms.telemetry.api +- Everything in module tcms.testruns.tests.test_views +- Everything in module tcms.xmlrpc.forms +- Everything in module tcms.testcases.tests.test_models +- Everything in module tcms.core.forms.fields +- Everything in module tcms.settings.common +- Everything in module tcms.settings.test +- All `module-in-directory-without-init` errors reported for module tcms.tests.\_\_init\_\_ + + +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](https://travis-ci.org/kiwitcms/Kiwi/jobs/579167486) 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: + +- report an issue upstream +- send a pull request upstream +- if these are test files maybe exclude them from the package (e.g. don't ship them for production) + + +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`](https://github.com/kiwitcms/Kiwi/labels/PyConBalkan) label on +GitHub: + +- [#212](https://github.com/kiwitcms/Kiwi/issues/212) - moderate - Convert jQ to $ - + this is an easy search & rename but will require more extensive manual testing +- [#431](https://github.com/kiwitcms/Kiwi/issues/431) - moderate to hard - Remove JavaScript fireEvent() - + 17 matches in `static/js/`. Must be replaced with direct function calls +- [#652](https://github.com/kiwitcms/Kiwi/issues/652) - easy - Removal of labels from form fields - + all labels must be included in the HTML template and marked for translation +- [#681](https://github.com/kiwitcms/Kiwi/issues/681), [#682](https://github.com/kiwitcms/Kiwi/issues/682) - moderate - + Move API modules & their tests from `xmlrpc/api/.py` to `/api.py`. These have good test + coverage so you have to make sure you don't break anything +- [#971](https://github.com/kiwitcms/Kiwi/issues/971) - moderate - manage.py command for changing Site URL - + will help with automatic provisioning, e.g. Ansible. For howto see + [Django docs](https://docs.djangoproject.com/en/2.2/howto/custom-management-commands/) +- [#1021](https://github.com/kiwitcms/Kiwi/issues/1021) - moderate - Update TestCase page UI to allow adding TestPlans to cases - + use `TestPlan.add_case()` API method and refresh the widget. See how Tags and Components cards work + in the same page +- [#1070](https://github.com/kiwitcms/Kiwi/issues/1070) - moderate - manage.py command for checking email settings - + will help with troubleshooting misconfigured email. Must raise exceptions if something fails. + For howto see + [Django docs](https://docs.djangoproject.com/en/2.2/howto/custom-management-commands/) +- [#733](https://github.com/kiwitcms/Kiwi/issues/733), + [#736](https://github.com/kiwitcms/Kiwi/issues/736), + [#738](https://github.com/kiwitcms/Kiwi/issues/738), + [#883](https://github.com/kiwitcms/Kiwi/issues/883), + [#1089](https://github.com/kiwitcms/Kiwi/issues/1089) - hard to very hard - New checkers for pylint - + Kiwi TCMS uses customized pylint checkers to discover various conditions. We need a few more + of them and/or update of the existing ones + +We hope to see you in Belgrade. Until then: Happy testing! diff --git a/content/2019-09-24-version-7.0.rst b/content/2019-09-24-version-7.0.rst new file mode 100644 index 00000000..835e4532 --- /dev/null +++ b/content/2019-09-24-version-7.0.rst @@ -0,0 +1,310 @@ +Kiwi TCMS 7.0 +############# + +:headline: major release with security updates & many changes +:date: 2019-09-24 10:30 +:comments: true +:tags: releases + + +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest d34dc6d896bf 584 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/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 +~~~~~~~~~~~~ + +- Introduce a translation mode where you can translate the interface via + in-context editor. For more information see + `Translation guide `_. + Fixes `Issue #1098 `_ +- Updated `Albanian translation `_ +- Updated `Bulgarian translation `_ +- Updated `Chinese Traditional translation `_ +- Updated `French translation `_ +- Updated `Greek translation `_ +- Updated `Italian translation `_ +- Updated `Slovenian translation `_ +- Updated `Turkish translation `_ + +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 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 <{filename}2018-07-30-docker-backup.markdown>`_ first! +If you are using Kiwi TCMS as a Docker container then:: + + cd path/containing/docker-compose/ + docker-compose down + docker pull pub.kiwitcms.eu/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:** ``pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi: + edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi: + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + # repeat until you have reached latest + +Happy testing! diff --git a/content/2019-10-29-version-7.1.rst b/content/2019-10-29-version-7.1.rst new file mode 100644 index 00000000..434e3392 --- /dev/null +++ b/content/2019-10-29-version-7.1.rst @@ -0,0 +1,201 @@ +Kiwi TCMS 7.1 +############# + +:headline: improvement release with DB, API and translation changes +:date: 2019-10-29 13:40 +:comments: true +:tags: releases + + +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest c8cf36ac5ca5 602 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/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 +~~~~~~~~~~~~ + +- Updated `Albanian translation `_ - 97% +- Updated `Bulgarian translation `_ - 91% +- Updated `Chinese Simplified `_ - 71% +- Updated `Greek translation `_ - 44% +- Updated `Italian translation `_ - 97% +- Updated `Japanese translation `_ - 0% +- Updated `Macedonian translation `_ - 11% +- Updated `Russian translation `_ - 97% +- Updated `Slovenian translation `_ - 100% +- Updated `Spanish translation `_ - 96% +- Updated `Turkish translation `_ - 97% + + +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: + +* `OpenFest, Nov 2-3, Sofia `_ + where we will have an info booth +* `ISTA Conference, Nov 14-15, Sofia `_ + where you can meet with Alex Todorov and some of our contributors and + customers + +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 <{filename}2018-07-30-docker-backup.markdown>`_ first! +If you are using Kiwi TCMS as a Docker container then:: + + cd path/containing/docker-compose/ + docker-compose down + docker pull pub.kiwitcms.eu/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:** ``pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi: + edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi: + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + # repeat until you have reached latest + +Happy testing! diff --git a/content/2019-11-11-override-bug-details.markdown b/content/2019-11-11-override-bug-details.markdown new file mode 100644 index 00000000..015bed99 --- /dev/null +++ b/content/2019-11-11-override-bug-details.markdown @@ -0,0 +1,154 @@ +Title: How to override bug details in Kiwi TCMS +date: 2019-11-11 11:11 +comments: true +og_image: images/customization.png +twitter_image: images/customization.png +author: Alexander Todorov +tags: customization + + +Starting with version 7.0 Kiwi TCMS pages displaying URLs to bugs also +contain an info icon which shows additional information as tooltip. These +are designed to provide more contextual information about the bug. By default +the tooltip shows the OpenGraph metadata for that URL. This article +will explain how to override this in 2 different ways. + +bug details shown + + +Option #1: using the caching layer +---------------------------------- + +Additional bug information is cached on the application layer. The cache +key is the bug URL! By default Kiwi TCMS uses local-memory caching which +isn't accessible for external processes but can be reconfigured very easily. +This example changes the `CACHES` setting to use a directory on the +file system like so + + :::python + CACHES = { + 'default': { + 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', + 'LOCATION': '/tmp/kiwi-cache', + 'TIMEOUT': 3600, + } + } + +Then you need to poll your 3rd party bug tracker (and/or other systems) and +update the cache for each URL + + :::python + from django.core.cache import cache + from tcms.core.contrib.linkreference.models import LinkReference + + for reference in LinkReference.objects.filter(is_defect=True): + # possibly filter objects coming only from your own bug tracker + # in case there are multiple trackers in use + + # custom methods to grab more information. Must return strings + title = fetch_title_from_bug_tracker(reference.url) + description = fetch_description_from_bug_tracker(reference.url) + + # store the information in Kiwi TCMS cache + cache.set(reference, {'title': title, 'description': description}) + +Then execute the Python script above regularly. For example use the following +as your cron script + + :::shell + #!/bin/bash + export VIRTUAL_ENV=/venv + export PATH=/venv/bin:${PATH} + cat /path/to/cache_updater.py | /Kiwi/manage.py shell + + + +bug details from customized cache + + +**IMPORTANT** + +- Kiwi TCMS expires cache entries after an hour. Either change + the `TIMEOUT` setting shown above or run your script more frequently +- How to modify default Kiwi TCMS settings is documented + [here](https://kiwitcms.readthedocs.io/en/latest/installing_docker.html#customization) +- The Python + Bash scripts above don't need to be on the same system where Kiwi TCMS + is hosted. However they need the same Python 3 virtualenv and cache settings as + Kiwi TCMS does +- Information about Django's cache framework and available backends + can be found [here](https://docs.djangoproject.com/en/2.2/topics/cache/) +- `memcached` is a supported cache backend option, see + [here](https://docs.djangoproject.com/en/2.2/topics/cache/#memcached) +- [django-elasticache](https://pypi.org/project/django-elasticache/) is a + backend for Amazon ElastiCache which provides several configuration examples +- Both [django-redis](https://github.com/niwinz/django-redis) and + [django-redis-cache](https://github.com/sebleier/django-redis-cache) are good + libraries which support Redis +- Any 3rd party libraries must be `pip3 install`-ed into your own docker image + + +Option #2: extend bug tracker integration +----------------------------------------- + +Let's say you are already running a customized Docker image of Kiwi TCMS. Then +you may opt-in to extend the existing bug tracker integration code which provides +the information shown in the tooltip. In this example I've extended the +`KiwiTCMS` bug tracker implementation but you can even provide your own from +scratch + + :::python + class ExtendedBugTracker(KiwiTCMS): + def details(self, url): + result = super().details(url) + + result['title'] = 'EXTENDED: ' + result['title'] + result['description'] += '

IMPORTANT

' + + return result + +Then import the new `ExtendedBugTracker` class inside +`tcms/issuetracker/types.py` like so + + :::diff + index 9ad90ac..2c76621 100644 + --- a/tcms/issuetracker/types.py + +++ b/tcms/issuetracker/types.py + @@ -17,6 +17,9 @@ from django.conf import settings + + from tcms.issuetracker.base import IssueTrackerType + from tcms.issuetracker.kiwitcms import KiwiTCMS # noqa + +from tcms.issuetracker.kiwitcms import ExtendedBugTracker + +and change the bug tracker type, via https://tcms.example.com/admin/testcases/bugsystem/, +to *ExtendedBugTracker*. + +bug details extended internally + +**IMPORTANT** + +- *ExtendedBugTracker* may live anywhere on the filesystem but Python must be + able to import it +- It is best to bundle all of your customizations into a Python package and + `pip3 install` it into your customized docker image +- *ExtendedBugTracker* must be imported into `tcms/issuetracker/types.py` in order + for the admin interface and other functions to find it. You may also place the + import at the bottom of `tcms/issuetracker/types.py` +- API documentation for bug tracker integration can be found + [here](https://kiwitcms.readthedocs.io/en/latest/modules/tcms.issuetracker.html) +- Rebuilding the docker image is outside the scope of this article. Have a look + at this + [Dockerfile](https://github.com/MrSenko/kiwitcms-enterprise/blob/master/Dockerfile) + for inspiration + + +**NOTE:** starting with [Kiwi TCMS v8.5]({filename}2020-07-10-version-8.5.rst) +external bug tracker integration classes are listed in the `EXTERNAL_BUG_TRACKERS` +setting. If you are using v8.5 or newer instead of +importing `ExtendedBugTracker` in `tcms/issuetracker/types.py` you should +override the list of available bug tracker integrations: + + :::python + EXTERNAL_BUG_TRACKERS.append('mymodule.ExtendedBugTracker') + + +Happy testing! diff --git a/content/2019-11-26-fosdem2020.markdown b/content/2019-11-26-fosdem2020.markdown new file mode 100644 index 00000000..f485a948 --- /dev/null +++ b/content/2019-11-26-fosdem2020.markdown @@ -0,0 +1,35 @@ +Title: Kiwi TCMS is going to FOSDEM 2020 +headline: Testing and Automation devroom & Open Source Test Management stand +date: 2019-11-26 13:40 +og_image: images/fosdem/oss_tm_19_card.jpg +twitter_image: images/fosdem/oss_tm_19_card.jpg +comments: true +tags: community, events + +Stand at FOSDEM'19 + +Hello testers, Kiwi TCMS is going to [FOSDEM 2020](http://fosdem.org/). +This is where you can find us: + + +* Fri Jan 31st: [after 18:00 @ Delirium CafĂ©](https://fosdem.org/2020/beerevent/) - + we are taking part of the FOSDEM Beer Event where all participants are invited. + `Shout out with #KiwiTCMS` on Twitter if you can't find us in the crowd +* Sat Feb 1st: + [Testing and Automation devroom](https://fosdem.org/2020/schedule/track/testing_and_automation/) - + we are proud to be co-hosting this devroom together with Linaro and SUSE. + CfP is open until Dec 10th 2019. Apply [here](https://fosdem-testingautomation.github.io/)! +* Sun Feb 2nd: [Open Source Test Management stand](https://fosdem.org/2020/stands/) - + we will be together with our friends from SystemTestPortal and we are preparing + some real black-box testing for you! + +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]({filename}2019-01-10-2019-mission.markdown) for inspiration. + + +*Picture: FOSDEM'19 with Kiwi TCMS, ReportPortal & SystemTestPortal* + +Happy testing! diff --git a/content/2019-12-09-version-7.2.rst b/content/2019-12-09-version-7.2.rst new file mode 100644 index 00000000..83bac79e --- /dev/null +++ b/content/2019-12-09-version-7.2.rst @@ -0,0 +1,183 @@ +Kiwi TCMS 7.2 +############# + +:headline: improvement and bug-fix release +:date: 2019-12-09 10:25 +:comments: true +:tags: releases + + +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest f9a8a044c34e 537 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/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 + + +Translations +~~~~~~~~~~~~ + +- Updated `Bulgarian translation `_ +- Updated `Chinese Traditional translation `_ +- Updated `French translation `_ + + +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 <{filename}2019-01-10-2019-mission.markdown>`_! + +We are going to share more information when this becomes available. + + + +Upcoming conferences +-------------------- + +The next two events we are going to participate are: + +* `DevConf.CZ, Jan 24-26, Brno `_ + where Anton Sankov will be a speaker +* `FOSDEM, Feb 1-2, Brussels <{filename}2019-11-26-fosdem2020.markdown>`_ + where you can meet with the entire team + + +If you are around come and say "Happy testing"! + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +If you are using Kiwi TCMS as a Docker container then:: + + cd path/containing/docker-compose/ + docker-compose down + docker pull pub.kiwitcms.eu/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:** ``pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi: + edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi: + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + # repeat until you have reached latest + +Happy testing! diff --git a/content/2019-12-26-roadmap-update.markdown b/content/2019-12-26-roadmap-update.markdown new file mode 100644 index 00000000..1f6dd27d --- /dev/null +++ b/content/2019-12-26-roadmap-update.markdown @@ -0,0 +1,143 @@ +Title: Roadmap status report for 2019 +headline: 50-60% complete, slower pace, less visible progress +date: 2019-12-26 16:56 +comments: true +og_image: images/roadmap.jpg +twitter_image: images/roadmap.jpg +author: Alexander Todorov +tags: community, roadmap + +Hello everyone, in this article I will outline the progress that the Kiwi TCMS +team has made towards achieving the goals on our +[2019 roadmap]({filename}2019-01-10-2019-mission.markdown). +TL,DR: last year we've made lots of big and visible changes in Kiwi TCMS. +This year less so. Progress has been slower than before and not so much +visible. Community and team is growing. More contributors are welcome. + + +Complete the internal refactoring +--------------------------------- + +*Status: small progress, needs help* + +[CodeClimate](https://codeclimate.com/github/kiwitcms/Kiwi) progress is: + +* -60 code smells +* -55 duplications +* -50 other issues +* 4.4% technical debt improvement +* -240 hrs remaining until issues are fixed + +The trend is showing less issues remaining +but it has been a slow progress. As we fix the easier items the remaining ones +become harder to deal with. + +We've done minor work related to fixing issues reported by pylint. Around +150 of them still remain! + +We have not done any targeted work to resolve other issues reported by Scrutinizer, +remove vendored-in JavaScript libraries, JavaScript refactoring or +classification of issues in 3rd party dependencies. + + +Redesign the UI templates with the help of Patternfly +----------------------------------------------------- + +*Status: 60% done, needs help* + +There are 22 HTML templates remaining to be redesigned (from 59). That's mostly +due to internal cleanup and some refactoring! Test plan and Test run pages are the +two major templates that still need to be redesigned with Patternfly. + + +Modernize reporting aka Telemetry +--------------------------------- + +*Status: 60% done, in progress, behind schedule* + +The specs for the new [Telemetry]({filename}2019-03-03-telemetry.markdown) system +have been defined after taking into account feedback on GitHub issues. Anton Sankov is +the leading developer for this feature. So far we have 4 telemetry reports merged: +testing break-down, status matrix, execution trends and flaky tests. + +There are lots of minor issues or missing functionality in these first iterations +(compared to specification). Work continues on the other telemetry use-cases +and related items. + + +Plugins for 3rd party test automation frameworks +------------------------------------------------ + +*Status: good, needs help* + +*UPDATE:* no change in last 6 months. + +If you'd like to see plugins for more test automation frameworks +and/or file formats please checkout the +[documentation](https://kiwitcms.readthedocs.io/en/latest/automation-frameworks.html) +for links and more info. + + +Redefine bug-tracker integration +-------------------------------- + +*Status: 66% complete, in progress, behind schedule* + +We've been making slow progress on this milestone lately. For more info +see +[https://github.com/kiwitcms/Kiwi/milestone/1](https://github.com/kiwitcms/Kiwi/milestone/1) + + +GitHub flow integration +----------------------- + +*Status: done, awaiting deployment* + +Our team spent some time making Kiwi TCMS the first open source TCMS available +on the [GitHub Marketplace](https://github.com/marketplace/kiwi-tcms). At the end +of this year we were able to create a small application that allows further +integration and extending the testing workflow to the GitHub platform. + +This is waiting on a few more clarifications from GitHub before we deploy but +for now it can be considered as done. Future functionality will be tracked +and developed directly at +[https://github.com/kiwitcms/github-app/issues](https://github.com/kiwitcms/github-app/issues). + + +Agile integration with Trello +----------------------------- + +*Status: no progress, will drop* + +This will be dropped from roadmap for the next year until we can get more interest +from the community. + + +Improve engineering productivity +-------------------------------- + +*Status: no progress* + +Looking for external help here. This will stay as a low priority item on our +roadmap for 2020 until we can free more resources on the team. + + +Community +--------- + +*Status: great, on track, needs work* + +This is our strongest area during this year. We have a strong presence in +multiple communities, our event schedule is very busy and we are gaining more +recognition every day! Core team hit several big bumps this year and is still +recovering with a few more people onboarding. + +Kiwi TCMS suffers from the problem that many of our users can't be contributors +or simply don't want to! + +In short: it is important for us to follow our mission and develop our core team +so we can deliver on promises made in our roadmap! That requires a lot of time and +effort which reduces short-term productivity. + + +Happy testing! diff --git a/content/2020-01-12-github-app-migration.markdown b/content/2020-01-12-github-app-migration.markdown new file mode 100644 index 00000000..41b7551d --- /dev/null +++ b/content/2020-01-12-github-app-migration.markdown @@ -0,0 +1,82 @@ +Title: Kiwi TCMS is migrating from OAuth to GitHub App +headline: so we can enable tighter integration with GitHub +date: 2020-01-12 18:31 +comments: true +tags: releases + +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]({filename}2019-01-10-2019-mission.markdown). +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](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](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](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](https://github.com/kiwitcms/Kiwi/issues/700), +can be found at +[https://github.com/kiwitcms/github-app/issues](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): + +* Go to [https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org) and + click the GitHub login icon, follow through with the process; +* Go to [https://github.com/apps/kiwi-tcms](https://github.com/apps/kiwi-tcms) and + click the **Install** button, select account & repositories and complete the + process; +* Share this blog post with friends, co-workers and other testers who might be + interested to help! + + +Thank you! Happy testing and happy new year! diff --git a/content/2020-01-16-version-7.3.rst b/content/2020-01-16-version-7.3.rst new file mode 100644 index 00000000..08c21684 --- /dev/null +++ b/content/2020-01-16-version-7.3.rst @@ -0,0 +1,169 @@ +Kiwi TCMS 7.3 +############# + +:headline: critical security update +:date: 2020-01-16 01:00 +:comments: true +:tags: releases + + +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 4026ee62e488 556 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/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 + + +Translations +~~~~~~~~~~~~ + +- Updated `Chinese Simplified translation `_ +- Updated `Slovenian translation `_ +- Updated `Vietnamese translation `_ + + +GitHub integration +------------------ + +The hosted version of Kiwi TCMS ships with additional GitHub integration. See +`GitHub App announcement <{filename}2020-01-12-github-app-migration.markdown>`_ and +`github-app `_ +for more information! + + +Upcoming conferences +-------------------- + +The next two events we are going to participate are: + +* `DevConf.CZ, Jan 24-26, Brno `_ + where Anton Sankov will be a speaker +* `FOSDEM, Feb 1-2, Brussels <{filename}2019-11-26-fosdem2020.markdown>`_ + where you can meet with the entire team + + +If you are around come and say "Happy testing"! + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +If you are using Kiwi TCMS as a Docker container then:: + + cd path/containing/docker-compose/ + docker-compose down + docker pull pub.kiwitcms.eu/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:** ``pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi: + edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi: + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + # repeat until you have reached latest + +Happy testing! diff --git a/content/2020-01-17-roadmap2020.markdown b/content/2020-01-17-roadmap2020.markdown new file mode 100644 index 00000000..a9d7e2e6 --- /dev/null +++ b/content/2020-01-17-roadmap2020.markdown @@ -0,0 +1,126 @@ +Title: Project roadmap 2020 +headline: team, technical & community towards sustainability +date: 2020-01-17 19:40 +comments: true +og_image: images/roadmap.jpg +twitter_image: images/roadmap.jpg +author: Alexander Todorov +tags: community, roadmap + +Hello testers, +the Kiwi TCMS team sat down together last week and talked about what we feel +is important for us during the upcoming year. This blog post outlines our +roadmap for 2020! + +roadmap image 2020 + + +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 several key areas: + + 1) Team + 2) Technical + 3) Community + +Team +---- + +Right now we have a core team with 6 newcomers on-boarding. +Engineering performance is all over the place with some people contributing +too much while others contributing too little. More importantly there is no +consistent pace of contributions which makes planning timely completion of +technical tasks impossible. + +At the moment we do operate as a bunch of disconnected people who happen to +talk to each other from time to time. + +We are going to adjust our internal processes and how we on-board new members. +In fact we did our first "scrum-like" meeting this week and agreed to change +our existing practice and strive to become better as a team! + +**Goal:** to have a cohesive team at the end of the year which operates with +a predictable capacity. + +**Goal:** 1 PR/week/person as broad measure of individual performance. + + +Technical +--------- + +The areas shown on the picture above will receive more priority. + +**Goal:** complete remaining [Telemetry features]({filename}2019-03-03-telemetry.markdown). + +**Goal:** complete +[bug-tracker integration milestone](https://github.com/kiwitcms/Kiwi/milestone/1). + +**Goal:** all pylint issues resolved. + +**Goal:** migrate all remaining legacy templates to Patternfly UI. See +[patternfly-migration](https://github.com/kiwitcms/Kiwi/milestone/3) milestone. + +**Goal:** where FE sends AJAX requests to BE views replace with JSON RPC API instead. + +**Extra:** start tackling the JavaScript mess that we have. This depends and is related +to Patternfly migration and overall refactoring. + +**Extra:** make it easier for downstream installations to extend and override parts +of Kiwi TCMS in order for users to adjust the system to their own needs. +The system is pretty flexible as-is but there have been requests, +both online and offline, to provide some extra features! We'll start looking +into them, likely making partial progress in the next 12 months. + + +Community +--------- + +Last year Kiwi TCMS had massive success at every single conference that we've been to. +Both project and team have been well received. While we are going to continue +being part of various communities around the world we are trying to limit +extensive travel and focus on functionality and partnerships which will +increase Kiwi TCMS eco-system, make the project even more popular and +drive further adoption! + +**Goal:** extended GitHub integration via +[kiwitcms-github-app](https://github.com/kiwitcms/github-app/) plugin. + +**Goal:** release the following +[test automation framework plugins](https://kiwitcms.readthedocs.io/en/latest/plugins/automation-frameworks.html) +for Kiwi TCMS: + +- [PHPUnit plugin](https://github.com/kiwitcms/phpunit-plugin/) +- [py.test plugin](https://github.com/kiwitcms/pytest-plugin/) +- TestNG plugin +- Jenkins plugin +- Robot framework plugin +- Django plugin + +For more information see +[test-automation-plugins](https://github.com/kiwitcms/Kiwi/milestone/2) milestone. + +**Ongoing:** work with our partners from the proprietary and open source worlds. +This is hard to quantify and lots of it doesn't actually depend on the team. +However we are continuing to talk to them regularly. Expect new feedback to +become available under GitHub Issues. + +**Extra:** see what we can do about testing productivity! This has always been +part of our mission but we have not been able to produce anything worth sharing. +We do have ideas in this space but we are generally looking for partnerships and collaborations. +It is very likely that there will not be very much progress on this front +because it is hard to define it properly :-(. + + +Summary +------- + +At the end of the day most of these goals compliment each other and help drive all of +them to completion. Many of the still on-boarding people have expressed desire to +improve their Python & Django skills. Working to resolve issues in the above specific +areas will give them this opportunity! I expect they will show good progress on their respective +tasks so we can write more about them on this blog. + + +Happy testing! diff --git a/content/2020-02-04-oauth-tokens-revoked.markdown b/content/2020-02-04-oauth-tokens-revoked.markdown new file mode 100644 index 00000000..37967b9a --- /dev/null +++ b/content/2020-02-04-oauth-tokens-revoked.markdown @@ -0,0 +1,18 @@ +Title: GitHub OAuth tokens have been revoked +date: 2020-02-04 18:25 +comments: true + +Hello testers as we've +[stated previously]({filename}2020-01-12-github-app-migration.markdown) +Kiwi TCMS has migrated to a new GitHub backend. The previous OAuth +application with ID `e45b09369720518e1fc3` has been deprecated. + +OAuth tokens for this application have been revoked and you should have +received an email notification from GitHub about this. + +If you still have an active Marketplace listing we kindly ask you to +cancel it until we're able to deploy the improved integration on +GitHub Marketplace again. + + +Thank you! diff --git a/content/2020-02-11-mailchimp-deleted.markdown b/content/2020-02-11-mailchimp-deleted.markdown new file mode 100644 index 00000000..df72c49e --- /dev/null +++ b/content/2020-02-11-mailchimp-deleted.markdown @@ -0,0 +1,57 @@ +Title: I deleted our newsletter from Mailchimp ! Please re-subscribe +Headline: and no, we didn't have backup +author: Alexander Todorov +date: 2020-02-11 12:25 +comments: true + +Hello testers, +I have to admit that I made a rookie mistake and deleted the entire email database +for the Kiwi TCMS +[newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581)! +And of course we didn't have a backup of this database :-(. Please +[re-subscribe here](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) +and read below if you are interested to know what happened. + + +Last week, while exploring how to cancel active subscriptions for our +deprecated GitHub Marketplace listing I found there is no way to cancel +those programatically. So I've compiled a list of email addresses and decided +to send subscribers an email asking them to cancel their subscriptions. + +For this purpose I decided to import the contacts into Mailchimp because +it gives you a better interface to design the actual message, include images +in the message body, preview and test the message before it is sent! The import +of addresses went fine, new addresses were tagged appropriately to separate them +from the rest of the newsletter audience **but** they were not subscribed to +receive emails automatically. + +I selected "non-subscribed" option when importing as a second barrier to +accidentally emailing people who do not want to receive regular news from us! +However it turned out Mailchimp can't send messages to non-subscribed addresses! +Maybe that's part of their attempts to be GDPR compliant. + +So I decided to delete the freshly imported addresses, import them again +and this time tag + subscribe them during the import! When selecting the addresses +for deletion I am 99% confident I did filter them by tag first and then selected +**DELETE**! And the entire contacts list was gone! + +I've also contacted Mailchimp immediately to ask whether or not the addresses +can be restored. Unfortunately they are trying to be super GDPR compliant and +claim they don't have this information into their system anymore. +And in this particular case we've been relying on the vendor to keep backups +on their end so didn't even think about trying to backup this database! + +For users who have accounts at +[https://public.tenant.kiwitcms.org](https://public.tenant.kiwitcms.org) +we do have +their email addresses but we're not going to automatically re-subscribe them. +We've stopped auto-subscribing +[2 years ago]({filename}2018-06-24-version-4.2.markdown) and also there's +no way of telling which addresses were on the list in the first hand. + + +Please +[re-subscribe here](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) +and I promise we're going to start backing up the newsletter database as well. + +Thank you! diff --git a/content/2020-02-12-version-8.0.rst b/content/2020-02-12-version-8.0.rst new file mode 100644 index 00000000..f98cfd74 --- /dev/null +++ b/content/2020-02-12-version-8.0.rst @@ -0,0 +1,251 @@ +Kiwi TCMS 8.0 +############# + +:headline: major release with backwards incompatible changes +:date: 2020-02-12 23:45 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 8.0! + +**IMPORTANT:** this is a major release which includes important database and +API changes, several improvements and bug fixes. Multiple API methods are now +incompatible with older releases and extra caution needs to be applied when +upgrading via ``docker-compose.yml`` because newer MariaDB versions are +breaking direct upgrades from existing installations! + + +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 71a55e353da2 557 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB + + +Changes since Kiwi TCMS 7.3 +--------------------------- + + +Improvements +~~~~~~~~~~~~ + +- Update Django from 3.0.2 to 3.0.3 +- Update django-grappelli from 2.13.3 to 2.14.1 +- Update markdown from 3.1.1 to 3.2 +- Update python-gitlab from 1.15.0 to 2.0.1 +- Update pygithub from 1.45 to 1.46 +- Allow customization of test execution statuses via admin. + For more information see + https://kiwitcms.readthedocs.io/en/latest/admin.html#test-execution-statuses. + Fixes `Issue #236 `_ +- Add passing rate chart to Execution trends telemetry +- Documentation updates (@Prome88) + + +Database +~~~~~~~~ + +This release adds several migrations which alter the underlying database schema +by renaming multiple columns. + +**WARNINGS:** + +- SQLite has very poor capabilities for altering schema and it will break + when run with existing database! If you had deployed Kiwi TCMS with + SQLite for production purposes you will not be able to upgrade! We recommend + switching to Postgres first and then upgrading! + +- ``docker-compose.yml`` has been updated from MariaDB 5.5 to MariaDB 10.3. + The 10.x MariaDB containers change their ``datadir`` configuration from + ``/var/lib/mysql`` to ``/var/lib/mysql/data``! We recommend first upgrading + your MariaDB version, using Kiwi TCMS 7.3 and afterwards upgrading to + Kiwi TCMS 8.0: + + 1. Backup existing database with:: + + docker exec -it kiwi_db mysqldump -u kiwi -pYourPass kiwi > backup.sql + + 2. ``docker-compose down`` + 3. ``docker volume rm kiwi_db_data`` - will remove existing data volume + b/c of incompatibilities between different MariaDB versions + 4. ``docker-compose up`` - will recreate data volume with missing data. e.g. + ``manage.py showmigrations`` will report that 0 migrations have been applied. + 5. Restore the data from backup:: + + cat backup.sql | docker exec -u 0 -i kiwi_db /opt/rh/rh-mariadb103/root/usr/bin/mysql kiwi + + **note:** This connects to the database as the root user + + 6. Proceed to upgrade your Kiwi TCMS container ! + +**CHANGES:** + +- Remove model fields of type ``AutoField``. They are a legacy construct + and shouldn't be specified in the source code! Django knows how to add them + dynamically. These are: + + - ``Tag.id`` + - ``TestCaseStatus.id`` + - ``Category.id`` + - ``PlanType.id`` + - ``TestExecutionStatus.id`` + +- Remove ``db_column`` attribute from model fields +- Rename several primary key fields to ``id``: + + - ``Build.build_id`` -> ``Build.id`` + - ``TestRun.run_id`` -> ``TestRun.id`` + - ``TestPlan.plan_id`` -> ``TestPlan.id`` + - ``TestCase.case_id`` -> ``TestCase.id`` + - ``TestExecution.case_run_id`` -> ``TestExecution.id`` + + +API +~~~ + +**WARNING:** + +The database schema changes mentioned above affect multiple API methods +in a backwards incompatible way! +There is possibility that your API scripts will also be affected. You will +have to adjust those to use the new field names where necessary! + +**CHANGES:** + +- Methods ``Build.create()``, ``Build.filter()`` and ``Build.update()`` will + return ``id`` instead of ``build_id`` field +- Method ``TestRun.get_cases()`` will return ``execution_id`` instead of + ``case_run_id`` field and ``id`` instead of ``case_id`` field +- Methods ``TestRun.add_case()``, ``TestExecution.create()``, + ``TestExecution.filter()`` and ``TestExecution.update()`` will return + ``id`` instead of ``case_run_id`` field +- Methods ``TestRun.create()``, ``TestRun.filter()``, ``TestRun.update()`` will + return ``id`` instead of ``run_id`` field +- Methods ``TestPlan.create()``, ``TestPlan.filter()`` and + ``TestPlan.update()`` will return ``id`` instead of ``plan_id`` field +- Methods ``TestCase.add_component()``, ``TestCase.create()``, + ``TestCase.filter()`` and ``TestCase.update()`` will return ``id`` instead + of ``case_id`` field + +**NOTES:** + +Kiwi TCMS automation framework plugins have been updated to work with the +newest API. At the time of Kiwi TCMS v8.0 release their versions are: + +- kiwitcms-tap-plugin v8.0.1 +- kiwitcms-junit.xml-plugin v8.0.1 +- kiwitcms-junit-plugin v8.0 + + +Bug fixes +~~~~~~~~~ + +- Allow displaying lists with more then 9 items when reviewing test cases. Fixes + `Issue #339 `_ (Mfon Eti-mfon) +- Make ``tcms.tests.storage.RaiseWhenFileNotFound``` capable of finding + finding static files on Windows which enables development mode for folks + not using Linux environment. See + `SO #55297178 `_ (Mfon Eti-mfon) +- Allow changing test execution status without adding comment. Fixes + `Issue #1261 `_ +- Properly refresh test run progress bar when changing statuses. Fixes + `Issue #1326 `_ +- Fix a bug where updating test cases from the UI was causing text and various + other fields to be reset. Fixes + `Issue #1318 `_ + + +Refactoring +~~~~~~~~~~~ + +- Extract attachments widget to new template. Fixes + `Issue #1124 `_ + (Rosen Sasov) +- Rename RPC related classes. Fixes + `Issue #682 `_ + (Rosen Sasov) +- Add new test (Mariyan Garvanski) +- Start using GitHub actions, first for running flake8 +- Remove unused ``TestCase.get_previous_and_next()`` +- Remove unused ``TestCaseStatus.string_to_instance()`` +- Remove unused ``TestCase.create()`` +- Remove unused ``json_success_refresh_page()`` +- Remove unused fields from ``SearchPlanForm`` +- Use JSON-RPC in ``previewPlan()`` +- Remove ``toggleTestCaseContents()``, duplicate of ``toggleTestExecutionPane()`` +- Refactor a few more views to class-based + + +Translations +~~~~~~~~~~~~ + +- Updated `Bulgarian translation `_ +- Updated `French translation `_ +- Updated `Korean translation `_ +- Updated `Slovenian translation `_ +- Updated `Turkish translation `_ + + +GitHub Marketplace listing deprecation +-------------------------------------- + +As we've stated previously Kiwi TCMS has migrated to a new GitHub backend and +OAuth tokens for the previous backend have been revoked and the +existing listing on GitHub Marketplace is deprecated. It is a non-functioning +app at the moment! + +It is not possible for us to cancel Marketplace subscriptions programatically, +that is GitHub does not provide such API. Active subscribers please follow these +3 steps to help us clean up stale information: + +- Go to https://github.com/marketplace/kiwi-tcms +- From "Edit your plan" button at the top select your GitHub account +- Then click "Cancel this plan" link which is at the left-hand side + at the bottom of the description box! + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +If you are using Kiwi TCMS as a Docker container then:: + + cd path/containing/docker-compose/ + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb-103-centos7 + 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:** ``pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi: + edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi: + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + # repeat until you have reached latest + +Happy testing! diff --git a/content/2020-02-14-qachallenge-bug.markdown b/content/2020-02-14-qachallenge-bug.markdown new file mode 100644 index 00000000..6b41d466 --- /dev/null +++ b/content/2020-02-14-qachallenge-bug.markdown @@ -0,0 +1,51 @@ +Title: We're not participating in 'QA of the year' award +Headline: ironically because of a bug +date: 2020-02-14 14:45 +comments: true +og_image: images/award.png +twitter_image: images/award.png + +Hello testers, +this is the story of how our team is not taking part of +the "QA of the year" contest organized by the +[QA: Challenge Accepted](https://qachallengeaccepted.com/) conference despite +[being nominated by Alex](https://www.facebook.com/groups/qabulgaria/permalink/2542909712425297/). +In collaboration with Peter Sabev (organizer) we've managed to figure out what happened: + +* On Nov 17th Alex nominated the Kiwi TCMS team for the award +* Last week Alex discovered our team is not listed on the voting page +* Then Peter told us he's not seen any nomination related to + Kiwi TCMS at all which made everything feel even stranger +* We've managed to dig out browser history from November + and it clearly shows the nomination form was submitted correctly +* It was even possible to load the confirmation URL and edit the + submission +* Upon second submission the nomination was clearly visible on the + other side, Peter confirmed this + + +Then after a few days we've got word back - Peter had figured out what +happened. Apparently the same Google form has been opened on 2 different +computers and one of them overwrote the existing submissions. + +This kind of issue can be avoided by employing the following measures: + +- Make the submission results public so that everyone can verify their nomination + is indeed present on the list. It does take away anonymity and can also expose + personal information like email/phone/employer. ID, name and submission time-stamp + however will be enough +- History of edits could also be exposed publicly for extra safety +- Turn on some sort of overwrite protection similar to what you have for git + branches. At the very least have a warning before allowing data overwrite +- Turn on email confirmation - the existing form didn't have this enabled +- On our side: double check submission has been received - will put more + pressure on the organizing team + + +Sadly the issue was discovered after +the submission deadline has ended so Kiwi TCMS can't participate in this year's contest. +We wish the rest of the finalists best of luck and we're going to see you +at QA: Challenge Accepted next month. + + +Happy testing! diff --git a/content/2020-02-17-meet-kiwitcms-march.markdown b/content/2020-02-17-meet-kiwitcms-march.markdown new file mode 100644 index 00000000..0e7b09a5 --- /dev/null +++ b/content/2020-02-17-meet-kiwitcms-march.markdown @@ -0,0 +1,42 @@ +Title: Catch-up with Kiwi TCMS in Sofia, Singapore, Kiev & Moscow +headline: and get discounts and free tickets +date: 2020-02-17 15:37 +comments: true +og_image: images/roadtrip.png +twitter_image: images/roadtrip.png +tags: community, events + +Hello testers, +you can catch-up with your favorite open source test case management system +during the month of March. Here's a list of events we are going to: + +* March 14 - [QA: Challenge Accepted, Sofia](https://qachallengeaccepted.com/) + where we will have an info booth. You will get a 15% community discount if + you email **tickets@qachallengeaccepted.com** and mention this blog post +* March 19-21 - [OpenTechSummit, Singapore](https://summit.fossasia.org/) - + aka FOSS ASIA summit: + - *Kiwi TCMS exhibition booth* - 3 days + - *How to write pylint plugins for fun & profit* workshop on March 19th + - *Testing [for] security [in] open source* presentation on March 21st + + To claim a free Community Standard Ticket use code + [atodorov](https://eventyay.com/e/a74665c3?code=atodorov). First 5 tickets + only! For a 25% discount use code + [fossasia-speaker](https://eventyay.com/e/a74665c3?code=fossasia-speaker). + For a 25% discount use code + [exhibitor-friends](https://eventyay.com/e/a74665c3?code=exhibitor-friends) + - applies only to Community Standard Ticket. + +* March 27-28 - [TestingStage, Kiev](https://testingstage.com/) where Alex + will present his *Static analysis as a test tool* session. You can also claim + 15% ticket discount by using promo-code **AlexanderTodorov** +* April 1-2 - [TestCon Moscow](https://testconf.ru/) where Alex will present + the *Static analysis as a test tool* again + + +Original plan was to visit [OpenTest Con, Beijing](https://opentestcon.org/) +between March 30-31 which has now been cancelled! The new plan is to +stay 2-3 more days in Kiev and join some meetups if available. + +Feel free to ping us at [@KiwiTCMS](https://twitter.com/KiwiTCMS) or look for the +kiwi bird logo and come to say hi. Happy testing! diff --git a/content/2020-03-04-version-8.1.rst b/content/2020-03-04-version-8.1.rst new file mode 100644 index 00000000..1693b6ed --- /dev/null +++ b/content/2020-03-04-version-8.1.rst @@ -0,0 +1,173 @@ +Kiwi TCMS 8.1 +############# + +:headline: security, improvements, bug fixes +:date: 2020-03-04 15:50 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 8.1! + +**IMPORTANT:** +this is a small security and improvement release which +also includes several bug fixes, 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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest fbb363af2d90 557 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB + + +Changes since Kiwi TCMS 8.0 +--------------------------- + + +Security +~~~~~~~~ + +- JSON-RPC handler will now HTML escape all strings. This prevents XSS attacks + via tags, components or anything else which is loaded on the web page via RPC + and then shown as string. Even if someone saves ```` + in the database the returned result will be HTML escaped and will not be executed + as JavaScript! + + **Notes:** + + This is easy to exploit but people able to do so should have accounts in + your Kiwi TCMS installation and write privileges on their accounts. If they + do this means they can cause a lot more damage much more easily! + +- Update Django from 3.0.3 to 3.0.4 - fixes security issue CVE-2020-9402: + Potential SQL injection via ``tolerance`` parameter in GIS functions and aggregates + on Oracle which we believe does not affect Kiwi TCMS + + +Improvements +~~~~~~~~~~~~ + +- Update bleach from 3.1.0 to 3.1.1 +- Update django-colorfield from 0.1.15 to 0.2.1 +- Update markdown from 3.2 to 3.2.1 +- On bug creation send email to assignee. Fixes + `Issue #1154 `_ (Mfon Eti-mfon) +- Make it possible to provide override settings in a directory. Kiwi TCMS will + respect: + + - ``local_settings.py`` + - ``local_settings_dir/*.py`` + + For more information see + https://kiwitcms.readthedocs.io/en/latest/installing_docker.html#customization +- Allow adding TestPlan to TestCase via UI. Fixes + `Issue #1021 `_ +- Add visual representation of failures in TestCase health telemetry +- Add helper text to TestExecutionStatus admin +- Add link to discussion forum in Help menu + + +API +~~~ + +- ``TestCase.create()`` method no longer accepts ``product`` or ``product_id`` + fields which have previously been deprecated +- API methods which receive True/False values will no longer parse yes,no,1,0 values. + The only accepted values are boolean constants defined in the calling programming + language which are then transmitted via XML-RPC or JSON-RPC and converted to + native boolean on the backend + + +Bug fixes +~~~~~~~~~ + +- The number of search results shown per page can now be controlled via + ``DEFAULT_PAGE_SIZE`` setting, which is 100 by default. Fixes + `Issue #1210 `_ (Ivailo Karabojkov) +- Use comma separated display of components in bug reports. Fixes + `Issue #1157 `_ (Ivailo Karabojkov) +- Update selector for 'Select All' test executions in TestRun page. Fixes + `Issue #1404 `_ +- Fix crash when sorting test cases in TestPlan page. Fixes + `Sentry #KIWI-TCMS-A6 `_ +- Fix a ``TC-undefined`` displayed in TestCase health telemetry + + +Refactoring +~~~~~~~~~~~ + +- Add test for ``TestRunAdmin.change_view()`` (Mariyan Garvanski) +- Remove unused ``showCaseRunsWithSelectedStatus`` +- Internal JavaScript updates + + +Translations +~~~~~~~~~~~~ + +- Updated `Bulgarian translation `_ +- Updated `Chinese Simplified translation `_ +- Updated `French translation `_ +- Updated `Slovenian translation `_ + + +GitHub Marketplace listing deprecation +-------------------------------------- + +As we've stated previously Kiwi TCMS has migrated to a new GitHub backend and +OAuth tokens for the previous backend have been revoked and the +existing listing on GitHub Marketplace is deprecated. It is a non-functioning +app at the moment! + +It is not possible for us to cancel Marketplace subscriptions programatically, +that is GitHub does not provide such API. Active subscribers please follow these +3 steps to help us clean up stale information: + +- Go to https://github.com/marketplace/kiwi-tcms +- From "Edit your plan" button at the top select your GitHub account +- Then click "Cancel this plan" link which is at the left-hand side + at the bottom of the description box! + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +If you are using Kiwi TCMS as a Docker container then:: + + cd path/containing/docker-compose/ + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb-103-centos7 + 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:** ``pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi: + edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi: + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + # repeat until you have reached latest + +Happy testing! diff --git a/content/2020-03-27-mozilla-award-winner.markdown b/content/2020-03-27-mozilla-award-winner.markdown new file mode 100644 index 00000000..cd689906 --- /dev/null +++ b/content/2020-03-27-mozilla-award-winner.markdown @@ -0,0 +1,68 @@ +Title: Kiwi TCMS is Open Source Seed Award winner +headline: $10,000 for open source +date: 2020-03-27 10:47 +comments: true +og_image: images/mozilla_award_winner.jpg +twitter_image: images/mozilla_award_winner.jpg +tags: community + +Kiwi TCMS is the proud winner of a $10,000 award from Mozilla, Indeed, +Open Collective, Ford Foundation & Simply Secure. Read below for the full story! + +At the end of January Zahari alerted our team about the +[Open Source Speed Dating FOSDEM 2020](https://opencollective.com/open-source-speed-dating/events/open-source-speed-dating-fosdem-2020-96f78c6c) +event and Alex was very swift in filing the application form. Just as we landed +in Brussels, ready to host +[Testing and Automation devroom and the Open Source Test Management stand]({filename}2019-11-26-fosdem2020.markdown), +we got the news - Kiwi TCMS has been selected as a participant. + +What followed was a very hasty day of preparing a 5 min pitch and rehearsing it +as much as possible so we can be ready to present our project. Alex prepared the +pitch and made final review and polishing together with Anton. +For the record everything was written down on paper, +including important facts about the project and schedule - when and where is our slot, +how is Alex going to get there, when does he need to leave to be on time, etc. +We believe that preparation was key here and that's why our team always tries to +be prepared when we participate at events! It was as good +as it can get, no more changes! + +On Feb 1st all hell broke loose - it was day #1 of FOSDEM, +the Testing an Automation devroom was full with amazing speakers and packed with people, +[watch videos here](https://fosdem.org/2020/schedule/track/testing_and_automation/), +there was barely time to eat or drink water and at 5PM Alex had to rush across town to pitch +Kiwi TCMS! + +Then everything went like clockwork - weather was warm for the season, +Alex decided to walk from ULB to La Tricoterie, both so he doesn't get stuck in traffic but +also to regulate stress level and be clear minded for what comes next. He arrived just on +time to meet with new folks and have a glass of wine before taking his turn with the judges. + +Open Source Speed Dating is a format where projects pitch to a team of 3 judges who then +follow up with various questions. Their goal is to assess how suitable your project is +for the money they are giving away but also how would actually receiving an award help the project. +You do get guidance how to prepare and what sort of information the judges are looking for. +However you have no idea who the other participants are and who are you competing against! +All you have is a 15 minutes slot where you have to give the best of you and hope it is +enough. + +Afterwards we reunited together, did even more walking, played the SPACESHIP at +*Let Me Out* escape room and finished with a mandatory team dinner in the hearth of Brussels. + +Following an internal selection process and due diligence we finally received the award. +[$10,000 for open source](https://opencollective.com/kiwitcms/transactions)! + +As a side note we also got to know who the other winners are, which can be seen from +[Open Source Speed Dating records](https://opencollective.com/open-source-speed-dating/transactions): +F-Droid, ossia, MNT Research GmbH and Kiwi TCMS! + + +We’re giving all of it to our community +--------------------------------------- + +All money from the [Kiwi TCMS Collective](https://opencollective.com/kiwitcms/) +will be going towards funding development tasks. +Like Alex told the judges - this will help us enable more hands working on Kiwi TCMS +and complete pending work faster. Stay tuned for our bounty program announcement! + + +Happy testing! diff --git a/content/2020-04-03-version-8.2.rst b/content/2020-04-03-version-8.2.rst new file mode 100644 index 00000000..00defacb --- /dev/null +++ b/content/2020-04-03-version-8.2.rst @@ -0,0 +1,146 @@ +Kiwi TCMS 8.2 +############# + +:headline: update 3rd party libraries, small improvements & API changes +:date: 2020-04-03 22:25 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 8.2! + +**IMPORTANT:** +this is a small release which updates 3rd party libraries, +provides minor improvements, minor API changes and some new 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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 7c1b947b9a43 561 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB + + +Changes since Kiwi TCMS 8.1 +--------------------------- + +Improvements +~~~~~~~~~~~~ + +- Update bleach from 3.1.1 to 3.1.4 +- Update django from 3.0.4 to 3.0.5 +- Update django-colorfield from 0.2.1 to 0.2.2 +- Update pygithub from 1.46 to 1.47 +- Update python-gitlab from 2.0.1 to 2.1.2 +- Update marked(js) to version 0.8.2 +- Change default MariaDB charset and collation to utf8mb4. Will only affect + new installations. Closes + `Issue #327 `_ +- Document ``TCMS_PLAN_ID`` ENV variable supported by automation framework + plugins +- Test case Search page now allows searching for records containing the + specified text. Closes #1209 @Schwarzkrieger +- Provide ``../site-packages/tcms_settings_dir/`` when installing Kiwi TCMS + which is an empty pkgutil-style namespace where other packages can drop + their configuration +- Hide empty values in Execution trends chart tooltips + + +API +~~~ + +- Remove ``Auth.login_krbv()`` method +- Method ``TestRun.update()`` will now accept ``%Y-%m-%d %H:%M:%S`` + timestamp format. The previous format ``%Y-%m-%d`` is also supported +- Method ``TestExecution.create()`` now defaults to first neutral status + instead of searching for the hard-coded ``IDLE``. That means newly created + test executions which do not specify status will be created with the first + neutral status found in the database + + +Refactoring +~~~~~~~~~~~ + +- Fix pylint errors. Closes + `Issue #1510 `_ (@cmbahadir) +- Add tests for ``TestRunAdmin.delete_view()`` (Mariyan Garvanski) +- Revert "[l10n] Add Serializer class which returns untranslated models" + + +Translations +~~~~~~~~~~~~ + +- Updated `Bulgarian translation `_ +- Updated `Portuguese, Brazilian translation `_ + + +social-auth-kerberos v0.2.4 +--------------------------- + +A new version of our Kerberos authentication backend has been released +as well. For more info check +https://github.com/kiwitcms/python-social-auth-kerberos#changelog. +This version is included with *Kiwi TCMS Enterprise*. + + +tcms-api v8.2.0 +--------------- + +New version of our ``tcms-api`` library has been released as well. +Notable changes include the bug-fixes for Kerberos support and the +ability to use Kerberos on Windows. For more information see +https://github.com/kiwitcms/tcms-api/#changelog. + + +tap-plugin & junit.xml-plugin v8.2 +---------------------------------- + +Both plugins are now using the latest version of ``tcms-api`` library +and include additional improvements like being able to specify +existing TestPlan and setting ``stop_date`` for the automated TestRun. +For more information see https://github.com/kiwitcms/tap-plugin#changelog +and https://github.com/kiwitcms/junit.xml-plugin/#changelog + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +If you are using Kiwi TCMS as a Docker container then:: + + cd path/containing/docker-compose/ + docker-compose down + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb-103-centos7 + 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:** ``pub.kiwitcms.eu/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 pub.kiwitcms.eu/kiwitcms/kiwi: + edit docker-compose.yml to use pub.kiwitcms.eu/kiwitcms/kiwi: + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + # repeat until you have reached latest + +Happy testing! diff --git a/content/2020-04-09-eu-web-awards-vote-for-us.markdown b/content/2020-04-09-eu-web-awards-vote-for-us.markdown new file mode 100644 index 00000000..d9790738 --- /dev/null +++ b/content/2020-04-09-eu-web-awards-vote-for-us.markdown @@ -0,0 +1,36 @@ +Title: Please vote for Kiwi TCMS in 2020 .eu Web Awards +headline: and help us advertise open source at Brussels airport for FOSDEM 2021 +date: 2020-04-09 13:48 +comments: true +og_image: images/eu_web_awards_vote.png +twitter_image: images/eu_web_awards_vote.png +tags: community + + + Click here to vote for Kiwi TCMS + + +```gherkin +Scenario: Display open source advertising in Brussels airport + Given one of the prizes is a 2 month billboard advertising campaign + And the awards ceremony is on Nov 18th 2020 + When Kiwi TCMS wins + Then there is good chance this campaign coincides with FOSDEM +``` + +- Go to ; +- Point your mouse to the photo of our website and click + the Thumbs Up 👍 button; +- No email or registration required! + + +Out team promises to do everything in our power so that visitors to +[FOSDEM 2021](http://fosdem.org) start feeling the community vibe directly +at the airport! + +Please vote and share. + +Thank you! diff --git a/content/2020-04-17-bounty-program-part01.markdown b/content/2020-04-17-bounty-program-part01.markdown new file mode 100644 index 00000000..03781391 --- /dev/null +++ b/content/2020-04-17-bounty-program-part01.markdown @@ -0,0 +1,226 @@ +Title: Kiwi TCMS open source bounty program, Round 01 +headline: focus: translation & test automation plugins +date: 2020-04-17 12:53 +comments: true +og_image: images/bounty_program.png +twitter_image: images/bounty_program.png +tags: community, bounty-program + + +bounty program banner + + +Kiwi TCMS is donating € 10000 (ten thousand euro) to our community to enable more hands working +together and give an opportunity for people to get exposed to open source +contributions. You will help us complete pending tasks faster while +learning something new and receive a bonus for your efforts! +This blog post outlines the rules of our open source bounty program. + + +Who is eligible to participate +------------------------------ + +Everyone who meets the following criteria is eligible to participate: + +- Has an account on - needed to follow program updates + and request payments +- Has a bank account - needed for actual money transfer, more info below! + +If you are beginner in Python, Django or some other technology that we use +please consider available documentation, your local user group, developers forum and +StackOverflow to get help. Do not turn GitHub issues into a +"getting started in programming" discussion. + + +Engagement rules +---------------- + +- Program will be split into multiple rounds as we work to clearly define + what needs to be done and adjust priorities +- News and updates will be posted at +- You are expected to mostly work alone on issues +- Technical discussion will be happening via GitHub pull requests and/or GitHub issues + under unless indicated otherwise +- Translation related discussion will be happening via Crowdin under + when needed +- Do not contact individual team members privately, we are going to ignore such messages + + +FIFO order for code review +-------------------------- + +- Contributions will be reviewed and merged in a rolling *first-in-first-out* order, + that is we review 1 PR and while waiting for updates continue on the next in the queue +- In case of collisions, multiple contributions that try to resolve the same problem, + our team will review the first one, then the second one, etc. The pull request + which is first to pass DoD and code review will be merged and the conflicting ones closed +- Please comment on issues and work together with other community members to + split the work and avoid collisions as much as possible + + +About issues +------------ + +Our team will try to clearly describe each task and what constitutes a +successfully completed task, e.g. *definition of done* (DoD). If this isn't the case +please ask questions and seek clarification about such tasks. + +- Only Issues under the [bounty-program milestone](https://github.com/kiwitcms/Kiwi/milestone/4) + **AND** labelled with a specific monetary amount are eligible for payout! +- Unlabelled issues need further refinement before they can be accepted for bounties! + +Payout rules +------------ + +Once DoD has been met and the contribution is merged you may claim the assigned bounty. +You must perform the following steps: + +- [Submit an expense](https://opencollective.com/kiwitcms/expenses/new) to the + Kiwi TCMS Collective +- All expenses submitted to the Kiwi TCMS Collective must follow the invoicing rules + of our Fiscal Host. + [Here is an invoice template (Google Doc)](https://docs.google.com/document/d/1-unqsnko4Eaza3fSuVAUFqvhMwe-h1V8jhruTDBjrUY/copy) + you can use. Fill-in the blue parts and leave the black parts +- Invoice & expense description contains the number of issue(s) and PR(s) for which + bounty is claimed + +**Identity cross validation:** + +Once an expense has been submitted add a comment with your GitHub/Crowdin username +to it + open a +[new issue in GitHub](https://github.com/kiwitcms/Kiwi/issues/new?assignees=atodorov&labels=&template=claim_bounty.md&title=) +/new discussion in Crowdin with link to +the expense submission. This will help us cross-validate that we are talking +to the same person between platforms. + + +**Note on bank transfers** + +A message from our [Fiscal Host](https://opencollective.com/europe): + +> We currently prefer to do payouts using bank transfers. +> We used to support PayPal but fees were way too high for the collectives. +> +> About bank transfer, we do EU transfers as well as non EU (which takes more time obviously). +> +> We noticed that several collectives are now using Revolut bank accounts which is the +> easiest and cheapest way (it’s free) to receive money anywhere in the world. + + +It looks like the fastest & cheapest way to get paid is via Revolut account if you have one, +followed by standard bank transfer and PayPal account is last! + + +Bounties: translation related tasks +----------------------------------- + +- Chinese Simplified - + [#1459](https://github.com/kiwitcms/Kiwi/issues/1459), + [#1460](https://github.com/kiwitcms/Kiwi/issues/1460) + [#1461](https://github.com/kiwitcms/Kiwi/issues/1461), + [#1462](https://github.com/kiwitcms/Kiwi/issues/1462), + [#1463](https://github.com/kiwitcms/Kiwi/issues/1463) +- Hindi - + [#1464](https://github.com/kiwitcms/Kiwi/issues/1464), + [#1465](https://github.com/kiwitcms/Kiwi/issues/1465) + [#1466](https://github.com/kiwitcms/Kiwi/issues/1466), + [#1467](https://github.com/kiwitcms/Kiwi/issues/1467), + [#1468](https://github.com/kiwitcms/Kiwi/issues/1468) +- Indonesian - + [#1469](https://github.com/kiwitcms/Kiwi/issues/1469), + [#1470](https://github.com/kiwitcms/Kiwi/issues/1470) + [#1471](https://github.com/kiwitcms/Kiwi/issues/1471), + [#1472](https://github.com/kiwitcms/Kiwi/issues/1472), + [#1473](https://github.com/kiwitcms/Kiwi/issues/1473) +- Bengali - + [#1474](https://github.com/kiwitcms/Kiwi/issues/1474), + [#1475](https://github.com/kiwitcms/Kiwi/issues/1475) + [#1476](https://github.com/kiwitcms/Kiwi/issues/1476), + [#1477](https://github.com/kiwitcms/Kiwi/issues/1477), + [#1478](https://github.com/kiwitcms/Kiwi/issues/1478) +- German - + [#1505](https://github.com/kiwitcms/Kiwi/issues/1505), + [#1506](https://github.com/kiwitcms/Kiwi/issues/1506), + [#1507](https://github.com/kiwitcms/Kiwi/issues/1507), + [#1508](https://github.com/kiwitcms/Kiwi/issues/1508), + [#1509](https://github.com/kiwitcms/Kiwi/issues/1509) +- Japanese - + [#1489](https://github.com/kiwitcms/Kiwi/issues/1489), + [#1490](https://github.com/kiwitcms/Kiwi/issues/1490) + [#1491](https://github.com/kiwitcms/Kiwi/issues/1491), + [#1492](https://github.com/kiwitcms/Kiwi/issues/1492), + [#1493](https://github.com/kiwitcms/Kiwi/issues/1493) +- Swahili - + [#1494](https://github.com/kiwitcms/Kiwi/issues/1494), + [#1495](https://github.com/kiwitcms/Kiwi/issues/1495) + [#1497](https://github.com/kiwitcms/Kiwi/issues/1497), + [#1498](https://github.com/kiwitcms/Kiwi/issues/1498), + [#1499](https://github.com/kiwitcms/Kiwi/issues/1499) +- Vietnamese - + [#1484](https://github.com/kiwitcms/Kiwi/issues/1484), + [#1485](https://github.com/kiwitcms/Kiwi/issues/1485) + [#1486](https://github.com/kiwitcms/Kiwi/issues/1486), + [#1487](https://github.com/kiwitcms/Kiwi/issues/1487), + [#1488](https://github.com/kiwitcms/Kiwi/issues/1488) +- Korean - + [#1479](https://github.com/kiwitcms/Kiwi/issues/1479), + [#1480](https://github.com/kiwitcms/Kiwi/issues/1480) + [#1481](https://github.com/kiwitcms/Kiwi/issues/1481), + [#1482](https://github.com/kiwitcms/Kiwi/issues/1482), + [#1483](https://github.com/kiwitcms/Kiwi/issues/1483) + + +Bounties: test automation plugins +--------------------------------- + +- Django test runner reporting plugin - + [#693](https://github.com/kiwitcms/Kiwi/issues/693) +- py.test reporting plugin - [#1511](https://github.com/kiwitcms/Kiwi/issues/1511) +- JUnit plugin: annotation & improvement for test case mapping - + [#1512](https://github.com/kiwitcms/Kiwi/issues/1512) +- TestNG plugin - + [#692](https://github.com/kiwitcms/Kiwi/issues/692) + + +Bounties: assorted technical issues +----------------------------------- + +- pylint - + [#1192](https://github.com/kiwitcms/Kiwi/issues/1192) +- JavaScript: Add buttons for creating tables in text editor - + [#1531](https://github.com/kiwitcms/Kiwi/issues/1531) +- Migration from Travis CI to GitHub workflows - + [#1550](https://github.com/kiwitcms/Kiwi/issues/1550), + [#1551](https://github.com/kiwitcms/Kiwi/issues/1551), + [#1552](https://github.com/kiwitcms/Kiwi/issues/1552), + [#1553](https://github.com/kiwitcms/Kiwi/issues/1553), + [#1554](https://github.com/kiwitcms/Kiwi/issues/1554) + + +Call for sponsors +----------------- + +We are also calling upon teams and organizations who use Kiwi TCMS in their +testing workflows. Please consider making a one-time donation or +becoming a regular sponsor via our +[Collective](https://opencollective.com/kiwitcms#section-contribute). +You can contribute as low as € 1! The entire budget will be distributed to the community! + + +Vote for Kiwi TCMS +------------------ + +Our website has been nominated in the *2020 .eu Web Awards* and +[we've promised]({filename}2020-04-09-eu-web-awards-vote-for-us.markdown) +to do everything in our power to greet future FOSDEM visitors with +an open source billboard advertising at BRU airport. We need your help +to do that! + +- Go to ; +- Point your mouse to the photo of our website and click the Thumbs Up 👍 button; +- No email or registration required! + + +Happy bounty hunting! diff --git a/content/2020-04-27-version-8.3.rst b/content/2020-04-27-version-8.3.rst new file mode 100644 index 00000000..80b39010 --- /dev/null +++ b/content/2020-04-27-version-8.3.rst @@ -0,0 +1,140 @@ +Kiwi TCMS 8.3 +############# + +:headline: update 3rd party libraries, several improvements, API updates & translations +:date: 2020-04-27 06:50 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 8.3! + +**IMPORTANT:** this is a small release which updates 3rd party libraries, +provides several improvements, includes minor API updates and new translations. +It is the first release to include contributions via our +`open source bounty program <{filename}2020-04-17-bounty-program-part01.markdown>`_. +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest c5dbd9a7ded6 562 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB + + +Changes since Kiwi TCMS 8.2 +--------------------------- + +Improvements +~~~~~~~~~~~~ + +- Update django-colorfield from 0.2.2 to 0.3.0 +- Update django-simple-history from 2.8.0 to 2.9.0 +- Update prismjs from 1.19.0 to 1.20.0 +- Update psycopg2 from 2.8.4 to 2.8.5 +- Update pygithub from 1.47 to 1.50 +- Update python-gitlab from 2.1.2 to 2.2.0 +- It is now possible to reopen closed bugs - Fixes + `Issue #1152 `_ (@cmbahadir) +- Visual improvements for Status matrix telemetry: + + - columns now link to test runs + - tool-tips show test run summary + +- Show TOTAL in tool-tip for Execution trends telemetry +- Self-signed SSL certificate is now built more frequently and is valid + for 10 years +- Improved documentation around self-signed certificates +- Improved documentation around e-mail backend configuration. Closes + `Issue #1070 `_ + (@Schwarzkrieger) + + +API +~~~ + +- Methods ``TestPlan.create``, ``TestPlan.update`` and ``TestRun.update`` + now use Django's ModelForm to properly validate input data against the model +- Method ``TestCase.update`` now also accepts username and email values for + fields ``author``, ``default_tester`` and ``reviewer`` + + +Refactoring +~~~~~~~~~~~ + +- Migrate bandit test job to GitHub workflows, Closes + `Issue #1550 `_ (@lcmtwn) +- Migrate doc8 test job to GitHub workflows. Closes + `Issue #1551 `_ (@Prome88) +- Add 2 more tests (Mariyan Garvanski) +- Convert TP edit page to class based view +- Convert forms to ModelForm + + +Translations +~~~~~~~~~~~~ + +- Updated `Chinese Simplified translation `_ +- Updated `German translation `_ +- Updated `French translation `_ +- Updated `Portuguese, Brazilian translation `_ +- Updated `Russian translation `_ +- Updated `Slovenian translation `_ +- Updated `Vietnamese translation `_ + + +Kiwi TCMS Enterprise v8.3-mt +---------------------------- + +Includes internal refactoring and upgrades around Tenant schema names/domain names +validation and better visual hints when creating tenants. For a list of changes see +https://github.com/MrSenko/kiwitcms-enterprise/#v83-mt-27-apr-2020 + + +Vote for Kiwi TCMS +------------------ + +Our website has been nominated in the *2020 .eu Web Awards* and +`we've promised <{filename}2020-04-09-eu-web-awards-vote-for-us.markdown>`_ +to do everything in our power to greet future FOSDEM visitors with +an open source billboard advertising at BRU airport. We need your help +to do that! + +- Go to https://webawards.eurid.eu/?q=kiwitcms.eu; +- Point your mouse to the photo of our website and click the Thumbs Up 👍 button; +- No email or registration required! + + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +If you are using Kiwi TCMS as a Docker container then:: + + cd path/containing/docker-compose/ + docker-compose down + # !!! docker tag to keep older image version on the machine + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb-103-centos7 + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Refer to +`our documentation `_ +for more details! + +Happy testing! diff --git a/content/2020-05-01-bounty-program-part02.markdown b/content/2020-05-01-bounty-program-part02.markdown new file mode 100644 index 00000000..fab730d6 --- /dev/null +++ b/content/2020-05-01-bounty-program-part02.markdown @@ -0,0 +1,90 @@ +Title: Kiwi TCMS open source bounty program, Round 02 +headline: focus: customized pylint plugins and missing test automation +date: 2020-05-01 13:15 +comments: true +og_image: images/bounty_program.png +twitter_image: images/bounty_program.png +tags: community, bounty-program + + +Kiwi TCMS is donating € 10000 (ten thousand euro) to our community to enable more hands working +together and give an opportunity for people to get exposed to open source +contributions. You can read more about the rules of the program in +[Round 01]({filename}2020-04-17-bounty-program-part01.markdown)! + +Bounties announced in Round 02 +------------------------------ + +Custom pylint plugins: + +[#736](https://github.com/kiwitcms/Kiwi/issues/736), +[#738](https://github.com/kiwitcms/Kiwi/issues/738), +[#1126](https://github.com/kiwitcms/Kiwi/issues/1126), +[#1303](https://github.com/kiwitcms/Kiwi/issues/1303), +[#1384](https://github.com/kiwitcms/Kiwi/issues/1384) + + +Automation tests: + +[#1596](https://github.com/kiwitcms/Kiwi/issues/1596), +[#1597](https://github.com/kiwitcms/Kiwi/issues/1597), +[#1598](https://github.com/kiwitcms/Kiwi/issues/1598), +[#1599](https://github.com/kiwitcms/Kiwi/issues/1599), +[#1600](https://github.com/kiwitcms/Kiwi/issues/1600), +[#1601](https://github.com/kiwitcms/Kiwi/issues/1601), +[#1602](https://github.com/kiwitcms/Kiwi/issues/1602), +[#1603](https://github.com/kiwitcms/Kiwi/issues/1603), +[#1604](https://github.com/kiwitcms/Kiwi/issues/1604), +[#1605](https://github.com/kiwitcms/Kiwi/issues/1605), +[#1606](https://github.com/kiwitcms/Kiwi/issues/1606), +[#1607](https://github.com/kiwitcms/Kiwi/issues/1607), +[#1608](https://github.com/kiwitcms/Kiwi/issues/1608), +[#1609](https://github.com/kiwitcms/Kiwi/issues/1609), +[#1610](https://github.com/kiwitcms/Kiwi/issues/1610), +[#1611](https://github.com/kiwitcms/Kiwi/issues/1611), +[#1612](https://github.com/kiwitcms/Kiwi/issues/1612), +[#1613](https://github.com/kiwitcms/Kiwi/issues/1613), +[#1614](https://github.com/kiwitcms/Kiwi/issues/1614), +[#1615](https://github.com/kiwitcms/Kiwi/issues/1615), +[#1616](https://github.com/kiwitcms/Kiwi/issues/1616), +[#1617](https://github.com/kiwitcms/Kiwi/issues/1617), +[#1618](https://github.com/kiwitcms/Kiwi/issues/1618), +[#1619](https://github.com/kiwitcms/Kiwi/issues/1619), +[#1620](https://github.com/kiwitcms/Kiwi/issues/1620), +[#1621](https://github.com/kiwitcms/Kiwi/issues/1621), +[#1622](https://github.com/kiwitcms/Kiwi/issues/1622), +[#1623](https://github.com/kiwitcms/Kiwi/issues/1623), +[#1624](https://github.com/kiwitcms/Kiwi/issues/1624), +[#1625](https://github.com/kiwitcms/Kiwi/issues/1625), +[#1626](https://github.com/kiwitcms/Kiwi/issues/1626), +[#1627](https://github.com/kiwitcms/Kiwi/issues/1627), +[#1628](https://github.com/kiwitcms/Kiwi/issues/1628), +[#1629](https://github.com/kiwitcms/Kiwi/issues/1629), +[#1630](https://github.com/kiwitcms/Kiwi/issues/1630), +[#1631](https://github.com/kiwitcms/Kiwi/issues/1631) + + +Call for sponsors +----------------- + +We are also calling upon teams and organizations who use Kiwi TCMS in their +testing workflows. Please consider making a one-time donation or +becoming a regular sponsor via our +[Collective](https://opencollective.com/kiwitcms#section-contribute). +You can contribute as low as € 1! The entire budget will be distributed to the community! + + +Vote for Kiwi TCMS +------------------ + +Our website has been nominated in the *2020 .eu Web Awards* and +[we've promised]({filename}2020-04-09-eu-web-awards-vote-for-us.markdown) +to do everything in our power to greet future FOSDEM visitors with +an open source billboard advertising at BRU airport. We need your help +to do that! + +- Go to ; +- Point your mouse to the photo of our website and click the Thumbs Up 👍 button; +- No email or registration required! + +Happy testing! diff --git a/content/2020-05-06-robotframework-plugin.rst b/content/2020-05-06-robotframework-plugin.rst new file mode 100644 index 00000000..1c29b91b --- /dev/null +++ b/content/2020-05-06-robotframework-plugin.rst @@ -0,0 +1,49 @@ +Robot Framework plugin for Kiwi TCMS +#################################### + +:headline: v1.0.0 - initial release +:date: 2020-05-06 11:57 +:comments: true +:tags: releases + + +We're happy to announce the initial release of +`kiwitcms-robotframework-plugin `_! +This package allows you execute your Robot Framework test suite and report the +results into Kiwi TCMS! +This plugin is the brain child of our Luca Valentini and Aniello Barletta and has its +roots in the +`Robot Framework Milano user-group `_. + + +To install:: + + pip install kiwitcms-robotframework-plugin + + +and then make use of it like so:: + + robot --listener zealand.listener.KiwiTCMS + + +The plugin needs the ``~/.tcms.conf`` configuration file:: + + [tcms] + url = https://tcms.server/xml-rpc/ + username = your-username + password = your-password + + +and you can also specify the ``${plan_id}``, ``${product}`` and ``${build_user_email}`` variables +in your .robot files. If any of these are missing it will attempt to discover +the necessary information from your environment. The exact behavior is documented +`here `_. + +This plugin uses the upstream +`robotframework/WebDemo `_ test suite +with ``SeleniumLibrary`` in a combination with a downstream test with the +``OperatingSystem`` library. The results are reported in +`TP-290 `_. For more information checkout our +`package repository `_ on GitHub! + +Happy testing! diff --git a/content/2020-05-26-partnership-with-pionir.markdown b/content/2020-05-26-partnership-with-pionir.markdown new file mode 100644 index 00000000..7b63a96b --- /dev/null +++ b/content/2020-05-26-partnership-with-pionir.markdown @@ -0,0 +1,102 @@ +Title: Kiwi TCMS is partnering up with Pionir +headline: to develop open source hardware for testers +date: 2020-05-26 12:40 +comments: true +og_image: images/pionir_students.jpg +twitter_image: images/pionir_students.jpg +tags: community, bounty-program + + +We are happy to announce that Kiwi TCMS is going to partner with +[Pionir](https://pionir.org/) on the development of open source hardware +for testers! +Pionir is a free school focused on creating a new generation of digital leaders, +an exponential culture and solving challenges using technology. They are located +in Kikinda, Serbia. + +Pionir students + +This is not our first collaboration - the students are already +aware of the Kiwi TCMS project and last year they participated in +[presentation & workshop hosted by Alex]({filename}2019-08-09-autumn-conferences.markdown). +Zamphyr, the organization behind Pionir, is also one of the first open source projects +on our OSS program! + + +Black boxes for black-box testing +--------------------------------- + +Black-box testing is a method of software testing that examines the functionality +of the subject under test without peering into its internal structures or workings. +It is often performed by manipulating the possible inputs and examining the resulting +output. Experienced black-box testers often develop a hunch for where bugs my be +and it is not uncommon for them to discover some obscure problems nobody else thought +about. More often than not the basis for this is developing an understanding/expectation +how the SUT works by careful exploration during many iterations. Thus being able to +explore a SUT, observe its behavior, keep mental notes about possible relations +between input-behavior-output and analyzing what is happening under the hood becomes +an important skill for testers. + +The idea for having something unknown to explore & train your skills first comes +from [James Lyndsay’s Black Box Puzzles](http://blackboxpuzzles.workroomprds.com/) and +was more recently implemented by +[Claudiu Draghia](http://blog.brainforit.com/2017/02/06/black-boxes-for-black-box-testing/). +Now it's our turn! + + +Project description +------------------- + +Pionir will be developing hardware black boxes for teaching exploratory testing in +cooperation with Kiwi TCMS. We have dedicated +[€2000 from our bounty program](https://opencollective.com/kiwitcms/expenses/18960) +for students of the free school towards completing this project. + +> The goal of the project is to produce at least 3 boxes and reference designs that will +> serve as a didactic tool for teaching, but also be free and open hardware, and as such, +> available to everyone to build from source. +> +> This project will be trusted to the students of the free school who will get opportunity +> to take part in the challenging process of building a digital appliance, +> from designing the machine logic, to develop and prototype hardware. + +The project includes designing, assembling, programming, documenting and delivering this +hardware to us! Everything is expected to be open source: list of components, +assembly instructions, 3D design files, source code, documentation and instructions! +Our goal is that this will be relatively cheap and easy to build so everyone else +can build their own boxes. +During the next several months there will be new repositories created under + to host the various boxes. + +The black boxes are expected to be available in October 2020 - just in time for the +upcoming conference season where members of the larger testing and open source +communities will be able to practice with them! + + + +Call for sponsors +----------------- + +We are also calling upon teams and organizations who use Kiwi TCMS in their +testing workflows. Please consider making a one-time donation or +becoming a regular sponsor via our +[Collective](https://opencollective.com/kiwitcms#section-contribute). +You can contribute as low as € 1! The entire budget will be distributed to the community! + + +Vote for Kiwi TCMS +------------------ + +Our website has been nominated in the *2020 .eu Web Awards* and +[we've promised]({filename}2020-04-09-eu-web-awards-vote-for-us.markdown) +to do everything in our power to greet future FOSDEM visitors with +an open source billboard advertising at BRU airport. We need your help +to do that! + +- Go to ; +- Point your mouse to the photo of our website and click the Thumbs Up 👍 button; +- No email or registration required! + +Happy testing! diff --git a/content/2020-06-03-version-8.4.rst b/content/2020-06-03-version-8.4.rst new file mode 100644 index 00000000..97466db4 --- /dev/null +++ b/content/2020-06-03-version-8.4.rst @@ -0,0 +1,256 @@ +Kiwi TCMS 8.4 +############# + +:headline: update 3rd party libraries, many improvements, bug-fixes & translations +:date: 2020-06-03 23:06 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 8.4! + +**IMPORTANT:** this is a medium sized release which includes +minor security fixes, many improvements & bug-fixes and translations +in several new languages. It is the second release to include +contributions via our +`open source bounty program `_. +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 602dddcf41a7 646 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB + + +Changes since Kiwi TCMS 8.3 +--------------------------- + +Improvements +~~~~~~~~~~~~ + +- Update Django from 3.0.5 to 3.0.7 - + `security update `_ + for functionality not used by Kiwi TCMS +- Update bleach from 3.1.4 to 3.1.5 +- Update django-grappelli from 2.14.1 to 2.14.2 +- Update django-simple-history from 2.9.0 to 2.10.0 +- Update markdown from 3.2.1 to 3.2.2 +- Update pygithub from 1.50 to 1.51 +- Update python-redmine from 2.2.1 to 2.3.0 +- Update patternfly from 3.59.4 to 3.59.5 +- Add ``manage.py set_domain`` command to change Kiwi TCMS domain. Fixes + `Issue #971 `_ (Ivajlo Karabojkov) +- GitHub bug details now works for private issues +- Gitlab bug details now works for private issues +- JIRA bug details now works for private issues +- Redmine bug details now works for private issues +- New feature: 1-click bug report for Bugzilla +- New feature: 1-click bug report for Gitlab +- New feature: 1-click bug report for JIRA +- New feature: 1-click bug report for Redmine +- Reverting to older historical version via Admin panel now redirects + to object which was reverted. Fixes + `Issue #1074 `_ +- Documentation updates + +.. important:: + + Starting from v8.4 all supported bug trackers now feature + 1-click bug report integration! Here's an example of how they look like + for GitHub and JIRA: + +.. raw:: html + + + + + +
+ +.. note:: + + Some external bug trackers like Bugzilla & JIRA provide more + flexibility over which fields are required for a new bug report. + The current functionality should work for vanilla installations and would + fall back to manual bug reporting if it can't create a new bug + automatically! + + +Database +~~~~~~~~ + +- Force creation of missing permissions for m2m fields from the `tcms.bugs` app: + + - ``bugs.add_bug_tags`` + - ``bugs.change_bug_tags`` + - ``bugs.delete_bug_tags`` + - ``bugs.view_bug_tags`` + - ``bugs.add_bug_executions`` + - ``bugs.change_bug_execution`` + - ``bugs.delete_bug_execution`` + - ``bugs.view_bug_executions`` + +.. warning:: + + TCMS admins of existing installations will have to assign these by hand + to users/groups who will be allowed to change tags on bugs! + + +Settings +~~~~~~~~ + +- Define the ``KIWI_DISABLE_BUGTRACKER=yes`` environment variable if you wish + to disable the internal bug tracker. Closes + `Issue #1370 `_ + + +Bug fixes +~~~~~~~~~ + +- Workaround missing MariaDB CHARSET/COLLATION support, see our + ``docker-compose.yml``. Fixes + `Issue #1700 `_ +- Install missing ``/usr/bin/mysql`` in container +- Warning message for unconfigured Kiwi TCMS domain does not show HTML tags in + Admin anymore. Fixes + `Issue #964 `_ +- Unescape the ``&`` string when trying to open new windows after + clicking the 'Report bug' button in TestExecution. Fixes + `Issue #1533 `_ +- Try harder to restore the original navigation menu instead of + leaving bogus menu items. Fixes + `Issue #991 `_ +- Robot Framework plugin is now GA. Close + `Issue #984 `_ +- Add LinkReference to TestExecution after creating bug via 1-click. + The UI still needs to be refreshed which will be implemented together + with the redesign of the TestRun page +- Update documented signature for API method ``TestCase.add_component`` to + match current behavior, see https://stackoverflow.com/questions/61648405/ + + +Refactoring & testing +~~~~~~~~~~~~~~~~~~~~~ + +- Migrate ``check-docs-source-in-git`` to GitHub workflows. Fixes + `Issue #1552 `_ (@Prome88) +- Migrate ``build-for-pypi`` to GitHub workflows. Fixes + `Issue #1554 `_ (@lcmtwn) +- Add tests for ``TestCaseAdmin`` (Mariyan Garvanski) +- Add tests for ``BugAdmin``. Fixes + `Issue #1596 `_ (Mariyan Garvanski) +- Omit ``utils/test`` from coverage reports. Fixes + `Issue #1631 `_ (@cmbahadir) +- Omit ``tcms/tests`` from coverage reports. Fixes + `Issue #1630 `_ (@cmbahadir) +- Add tests for ``tcms.core.forms.fields`` - Fixes + `Issue #1629 `_ (@cmbahadir) +- Add tests for ``TestExecution.update()`` for ``case_text_version`` field + (Rosen Sasov) +- Refactor bulk-update methods in TestRun page to use JSON-RPC. Fixes + `Issue #1063 `_ (Rosen Sasov) +- Start using ``_change_reason`` instead of ``changeReason`` field in + django-simple-history +- Remove unused ``StripURLField`` & ``Version.string_to_id()`` +- Refactoring around TestCase and TestPlan cloning methods +- Start testing with the internal bug tracker disabled +- Start testing with all supported external bug trackers. Fixes + `Issue #1079 `_ +- Start Codecov for coverage reports +- Add tests for presence of mysql/psql binaries in container +- Add ``APIPermissionsTestCase`` with example in ``TestVersionCreatePermissions`` +- Move most test jobs away from Travis CI to GitHub workflows + + +Translations +~~~~~~~~~~~~ + +- Updated `Bengali translation `_ +- Updated `Bulgarian translation `_ +- Updated `Chinese Simplified translation `_ +- Updated `French translation `_ +- Updated `German translation `_ +- Updated `Hindi translation `_ +- Updated `Hungarian translation `_ +- Updated `Indonesian translation `_ +- Updated `Japanese translation `_ +- Updated `Korean translation `_ +- Updated `Russian translation `_ +- Updated `Slovenian translation `_ +- Updated `Spanish translation `_ +- Updated `Swahili translation `_ + +.. note:: + + Some of the translations in Chinese and German and all of the strings in + Japanese and Korean have been contributed by a non-native speaker and are + sub-optimal, see + `OpenCollective #18663 `_. + If you are a native in these languages and spot strings which don't + sit well with you we kindly ask you to + `contribute a better translation `_ + via the built-in translation editor! + + +Kiwi TCMS Enterprise v8.4-mt +---------------------------- + + +- Based on Kiwi TCMS v8.4 +- Update social-auth-app-django from 3.1.0 to 3.4.0 +- Add django-python3-ldap add-on for LDAP logins + +For more info see +https://github.com/MrSenko/kiwitcms-enterprise/#v84-mt-03-june-2020 + + +Vote for Kiwi TCMS +------------------ + +Our website has been nominated in the *2020 .eu Web Awards* and +`we've promised <{filename}2020-04-09-eu-web-awards-vote-for-us.markdown>`_ +to do everything in our power to greet future FOSDEM visitors with +an open source billboard advertising at BRU airport. We need your help +to do that! + +- Go to https://webawards.eurid.eu/?q=kiwitcms.eu; +- Point your mouse to the photo of our website and click the Thumbs Up button; +- No email or registration required! + + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +If you are using Kiwi TCMS as a Docker container then:: + + cd path/containing/docker-compose/ + docker-compose down + # !!! docker tag to keep older image version on the machine + docker pull pub.kiwitcms.eu/kiwitcms/kiwi + docker pull centos/mariadb-103-centos7 + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Refer to +`our documentation `_ +for more details! + +Happy testing! diff --git a/content/2020-06-23-versioned-kiwitcms-docker.markdown b/content/2020-06-23-versioned-kiwitcms-docker.markdown new file mode 100644 index 00000000..49145d43 --- /dev/null +++ b/content/2020-06-23-versioned-kiwitcms-docker.markdown @@ -0,0 +1,28 @@ +Title: Versioned releases of Kiwi TCMS +headline: available to enterprise customers +date: 2020-06-23 00:12 +comments: true +tags: community, releases + + +We are happy to announce that versioned releases of Kiwi TCMS container +images are now available to customers with an active +[enterprise subscription](/#subscriptions). + +For a long time our release policy has been to push only `latest` version +of our upstream `pub.kiwitcms.eu/kiwitcms/kiwi` containers. This upstream channel doesn't +carry version tags and receives versioned releases only when there are +backwards incompatible database migrations! +This proved challenging to administrators who don't upgrade +immediately to the latest version as soon as it comes out. + +For example this happens in environments where admins use the upstream images +as proof of concept and later switch to a production grade installation. +Quite often they migrate to the *Kiwi TCMS Enterprise* containers during the +same time. + +Starting today versioned releases of Kiwi TCMS (single tenant) will be available +via the `mrsenko/kiwitcms` private repository on Docker Hub. +This repository includes tagged versions of the same docker images coming from +the `pub.kiwitcms.eu/kiwitcms/kiwi` channel! +Access is granted automatically to all existing enterprise subscribers! diff --git a/content/2020-06-30-django-plugin.rst b/content/2020-06-30-django-plugin.rst new file mode 100644 index 00000000..9b569614 --- /dev/null +++ b/content/2020-06-30-django-plugin.rst @@ -0,0 +1,42 @@ +Django plugin for Kiwi TCMS +########################### + +:headline: initial release +:date: 2020-06-30 12:47 +:comments: true +:tags: releases + + +We're happy to announce the initial release of +`kiwitcms-django-plugin `_! +This package allows you execute your Django test suite and report the +results into Kiwi TCMS! +This plugin has been developed by contributor Bryan Mutai as part of our +`open source bounty program <{tag}bounty-program>`_. + + +To install:: + + pip install kiwitcms-django-plugin + + +and then in your ``settings.py`` specify:: + + TEST_RUNNER = 'tcms_django_plugin.TestRunner' + + +This plugin needs the ``~/.tcms.conf`` configuration file:: + + [tcms] + url = https://tcms.server/xml-rpc/ + username = your-username + password = your-password + + +Product information and how to report can be controlled via environment variables +which are documented +`here `_. +Example results from the plugin's own test suite are reported in +`TP-296 `_! + +Happy testing! diff --git a/content/2020-07-07-cfp-deployment-best-practices.markdown b/content/2020-07-07-cfp-deployment-best-practices.markdown new file mode 100644 index 00000000..13438324 --- /dev/null +++ b/content/2020-07-07-cfp-deployment-best-practices.markdown @@ -0,0 +1,22 @@ +Title: CfP: deployment, backup and upgrade best practices +Headline: tell us how you devops Kiwi TCMS +date: 2020-07-07 16:55 +comments: true +og_image: images/customization.png +twitter_image: images/customization.png + + +Kiwi TCMS is opening a call for proposals: **Tell us how do you deploy, backup and upgrade +your Kiwi TCMS containers? What environment do you use, how do you migrate data +or ensure the system is always up and running? How do you go about testing if a +newer version doesn't break the features that you use ? What best practices have +you identified that can help others?** + +We are going to collect your feedback and update the existing documentation. + +Please submit your responses here: +. +All fields are optional, including your email address! + + +Thank you and happy testing! diff --git a/content/2020-07-10-version-8.5.rst b/content/2020-07-10-version-8.5.rst new file mode 100644 index 00000000..9f176504 --- /dev/null +++ b/content/2020-07-10-version-8.5.rst @@ -0,0 +1,170 @@ +Kiwi TCMS 8.5 +############# + +:headline: update 3rd party libraries, improvements, tests & translations +:date: 2020-07-10 13:45 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 8.5! + +**IMPORTANT:** this is a medium sized release which includes many improvements, +database migrations, translation updates and new tests. +It is the third release to include contributions via our +`open source bounty program `_. +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 4379e2438e43 636 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB + + +Changes since Kiwi TCMS 8.4 +--------------------------- + +Improvements +~~~~~~~~~~~~ + +- Update django from 3.0.7 to 3.0.8 +- Update django-colorfield from 0.3.0 to 0.3.2 +- Update django-modern-rpc from 0.12.0 to 0.12.1 +- Update django-simple-history from 2.10.0 to 2.11.0 +- Update mysqlclient from 1.4.6 to 2.0.1 +- Update python-gitlab from 2.2.0 to 2.4.0 +- Update python-bugzilla from 2.3.0 to 2.5.0 +- Add middleware to warn for unapplied migrations. Fixes + `Issue #1696 `_ (Bryan Mutai) +- Add "insert table" button to SimpleMDE toolbar. References + `Issue #1531 `_ (Bryan Mutai) +- Implement `kiwitcms-django-plugin <{filename}2020-06-30-django-plugin.rst>`_. + Resolves `Issue #693 `_ (Bryan Mutai) +- Add missing permission check for ``TestExecution.add_link()`` API method (Rosen Sasov) +- Add missing permission check for ``TestExecution.remove_link()`` API method (Rosen Sasov) +- Admin interface will now appear translated +- Propagate server side API errors to the browser. Closes + `Issue #625 `_, + `Issue #1333 `_ +- Improvements for Status Matrix telemetry page: + + - Make the horizontal scroll bar at the bottom always visible + - Make the header row always visible + - Add button to show columns in reverse. Fixes + `Issue #1682 `_ + - Make it possible to display TestExecutions from child TestPlans. Fixes + `Issue #1683 `_ + + +Database +~~~~~~~~ + +- Update existing Bug tracker records to match the changes introduced with + the new ``EXTERNAL_BUG_TRACKERS`` setting + + +Settings +~~~~~~~~ + +- Add ``EXTERNAL_BUG_TRACKERS`` setting which is a list of dotted class paths + representing external bug tracker integrations. Plugins and Kiwi TCMS admins + can now more easily include customized integrations + + +Refactoring & testing +~~~~~~~~~~~~~~~~~~~~~ + +- Add new linter to check for label arguments in form field classes. Fixes + `Issue #738 `_ (Bryan Mutai) +- Add new linter to check if all forms inherit from ``ModelForm``. Fixes + `Issue #1384 `_ (Bryan Mutai) +- Enable pylint plugin ``pylint.extensions.docparams`` and resolve errors. Fixes + `Issue #1192 `_ (Bryan Mutai) +- Migrate 'test-for-missing-migrations' from Travis CI to GitHub workflow. Fixes + `Issue #1553 `_ (Bryan Mutai) +- Add tests for ``tcms.bugs.api.add_tag()``. References + `Issue #1597 `_ (Mfon Eti-mfon) +- Add tests for ``tcms.bugs.api.remove_tag()``. References + `Issue #1597 `_ (Mfon Eti-mfon) +- Add test for ``tcms.testplans.views.Edit``. References + `Issue #1617 `_ (@cmbahadir) +- Add tests for ``markdown2html()``. Fixes + `Issue #1659 `_ (Mariyan Garvanski) +- Add test for Cyrillic support with MariaDB. References + `Issue #1770 `_ + + +Translations +~~~~~~~~~~~~ + +- Updated `Chinese Simplified translation `_ +- Updated `Chinese Traditional translation `_ +- Updated `French translation `_ +- Updated `Hungarian translation `_ +- Updated `Indonesian translation `_ +- Updated `Japanese translation `_ +- Updated `Slovenian translation `_ +- Updated `Swahili translation `_ + + +Kiwi TCMS Enterprise v8.5-mt +---------------------------- + +- Based on Kiwi TCMS v8.5 +- Update django-ses from 0.8.14 to 1.0.1 +- Update kiwitcms-tenants from 1.1.1 to 1.2 +- Update social-auth-app-django from 3.4.0 to 4.0.0 +- Start tagging non-Enterprise images of `pub.kiwitcms.eu/kiwitcms/kiwi` - will be provided + via separate private repository for enterprise customers. See + `here <{filename}2020-06-23-versioned-kiwitcms-docker.markdown>`_ + +For more info see +https://github.com/MrSenko/kiwitcms-enterprise/#v85-mt-10-july-2020 + + +Vote for Kiwi TCMS +------------------ + +Our website has been nominated in the *2020 .eu Web Awards* and +`we've promised <{filename}2020-04-09-eu-web-awards-vote-for-us.markdown>`_ +to do everything in our power to greet future FOSDEM visitors with +an open source billboard advertising at BRU airport. We need your help +to do that! + +- Go to https://webawards.eurid.eu/?q=kiwitcms.eu; +- Point your mouse to the photo of our website and click the Thumbs Up button; +- No email or registration required! + + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ 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! diff --git a/content/2020-07-11-override-bugtracker-integration.markdown b/content/2020-07-11-override-bugtracker-integration.markdown new file mode 100644 index 00000000..f7d1e0e7 --- /dev/null +++ b/content/2020-07-11-override-bugtracker-integration.markdown @@ -0,0 +1,61 @@ +Title: Customize the information used for 1-click bug reports +date: 2020-07-11 14:20 +comments: true +og_image: images/customization.png +twitter_image: images/customization.png +author: Alexander Todorov +tags: customization + +Kiwi TCMS integration with 3rd party bug trackers supports the +*1-click bug report* feature. +However you may want to change how the initial information is structured or +even what exactly is written in the initial comment. This article +shows how to do this. + +The default text used for 1-click bug reports gets compiled based on +information present in the TestExecution - Product, Version, TestCase.text, +etc. This is encapsulated in the +`tcms.issuetracker.base.IssueTrackerType._report_comment()` method. +You may extend the existing bug tracker integration code +with your own customizations. In this example I've extended the +`KiwiTCMS` bug tracker implementation but you can provide your own from +scratch + + :::python + # filename: mymodule.py + class ExtendedBugTracker(KiwiTCMS): + def _report_comment(self, execution): + comment = super()._report_comment(execution) + + comment += "----- ADDITIONAL INFORMATION -----\n\n" + # + # fetch more info from other sources + # + comment += "----- END ADDITIONAL INFORMATION -----\n" + return comment + +Then override the `EXTERNAL_BUG_TRACKERS` setting to include your customizations: + + :::python + EXTERNAL_BUG_TRACKERS.append('mymodule.ExtendedBugTracker') + +and change the bug tracker type, via https://tcms.example.com/admin/testcases/bugsystem/, +to *mymodule.ExtendedBugTracker*. + +**IMPORTANT** + +- Information how to change settings can be found + [here](https://kiwitcms.readthedocs.io/en/latest/installing_docker.html#customization) +- `mymodule.py` may live anywhere on the filesystem but Python must be + able to import it +- It is best to bundle all of your customizations into a Python package and + `pip3 install` it into your customized docker image +- API documentation for bug tracker integration can be found + [here](https://kiwitcms.readthedocs.io/en/latest/modules/tcms.issuetracker.html) +- Rebuilding the docker image is outside the scope of this article. Have a look + at this + [Dockerfile](https://github.com/MrSenko/kiwitcms-enterprise/blob/master/Dockerfile) + for inspiration + + +Happy testing! diff --git a/content/2020-08-06-kiwitcms-enterprise-version-8.5.2.rst b/content/2020-08-06-kiwitcms-enterprise-version-8.5.2.rst new file mode 100644 index 00000000..921334a3 --- /dev/null +++ b/content/2020-08-06-kiwitcms-enterprise-version-8.5.2.rst @@ -0,0 +1,48 @@ +Kiwi TCMS Enterprise v8.5.2-mt +############################## + +:headline: and extended support hours for subscribers in America +:date: 2020-08-06 15:40 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS Enterprise version 8.5.2-mt +and extended support hours for subscribers in America. + +**Note:** this is only available to customers with an active +`Enterprise subscription `_! + +Docker images:: + + mrsenko/kiwitcms-enterprise 8.5.2-mt 633291dd5219 887MB + + +Changes since Kiwi TCMS Enterprise v8.5.1-mt +-------------------------------------------- + +- Based on Kiwi TCMS v8.5 +- Update django-ses from 1.0.1 to 1.0.2 +- Update kiwitcms-github-app from 1.0 to 1.1 + +This release includes improvements and bug-fixes for +`kiwitcms-github-app `_. + +An important change is how issues reported via our *1-click bug report* feature +are presented on GitHub. For public repositories issues reported via +`Kiwi TCMS + GitHub App integration `_ +will be opened by *@kiwitcms-bot with Kiwi TCMS* as shown below: + +.. image:: /images/kiwitcms-bot-gh-issue-reporter.png + +Extended support hours +---------------------- + +Working hours have been updated as follows: + +- 09-21 UTC/Mon-Fri with response within 24 hours for Enterprise subscribers +- 09-17 UTC/Mon-Fri with response within 72 hours for Private Tenant subscribers + + + +Happy testing! diff --git a/content/2020-08-11-qgis-kiwitcms.markdown b/content/2020-08-11-qgis-kiwitcms.markdown new file mode 100644 index 00000000..b905ad5e --- /dev/null +++ b/content/2020-08-11-qgis-kiwitcms.markdown @@ -0,0 +1,59 @@ +Title: QGIS has chosen Kiwi TCMS +date: 2020-08-11 14:00 +comments: true +og_image: images/customers/qgis+kiwitcms.png +twitter_image: images/customers/qgis+kiwitcms.png +tags: community + + +We are happy to announce that [QGIS](https://qgis.org) has chosen Kiwi TCMS +for the basis of their *Quality Assurance methodology and infrastructure* +improvement program! +Kiwi TCMS will play a central role in storing test case definitions, +organizing test cycles, and assigning and tracking test executions by testers +from the QGIS community. + + +
+ + +

+ QGIS is a free and open source geographic information system which contains + desktop, server, web and mobile applications for various operating systems. + It is an established project with very large and diverse community and also + one of the very well known open source GIS systems. +

+
+ +The proposal +[QEP#180](https://github.com/qgis/QGIS-Enhancement-Proposals/issues/180) is the +highest voted proposal in the +[2020 QGIS Grant Program](http://blog.qgis.org/2020/07/10/qgis-grant-programme-2020-results/) +and has been awarded a budget of 5000€! +This grant will allow the proponents to spend significantly more time setting up the +infrastructure and planning a methodology for manual testing. + + + +Scope of proposal +----------------- + +[QEP#180](https://github.com/qgis/QGIS-Enhancement-Proposals/issues/180) +aims to create the necessary infrastructure and methodology to organize and +encourage systematic testing before each QGIS release: + +- Setup a test management system to organize test cycles, assign and track tests execution; +- Elaborate and document a methodology to execute testing to help testers; +- Resurrect and move the tester plugin to QGIS repositories. Publish it in the QGIS official repository +- Create an initial set of relevant test cases; +- Organize and execute the initial test cases for the next releases. + +This effort will steer members & volunteers of the QGIS community towards a more systematic +and organized testing during a feature freeze period before a release. The focus here +is on integration testing, manual & semi-automated workflows for important functionality +that should never regress and is hard or impossible to cover via unit tests. + +The proposal is lead by Alexandre Neto, Giovanni Manghi and Alexander Bruy! + +
+On behalf of the Kiwi TCMS community welcome aboard and happy testing! diff --git a/content/2020-08-18-moving-containers-to-quay.markdown b/content/2020-08-18-moving-containers-to-quay.markdown new file mode 100644 index 00000000..373fc729 --- /dev/null +++ b/content/2020-08-18-moving-containers-to-quay.markdown @@ -0,0 +1,69 @@ +Title: Kiwi TCMS container images now available via Red Hat Quay.io +Headline: and changes to images from Docker Hub +date: 2020-08-18 12:23 +comments: false +og_image: images/backup.png +twitter_image: images/backup.png +tags: releases + +Hello testers, we have very important news around how container images +for Kiwi TCMS will be distributed! Recently Docker has announced +several changes in their storage plans which makes it less viable for +our team to continue using their services in full! + + +Information about official upstream container images +---------------------------------------------------- + +The official upstream Kiwi TCMS container image will continue to be +publicly available as before. +In addition new images will be available via Red Hat's Quay.io service. +These images are available as + +- `pub.kiwitcms.eu/kiwitcms/kiwi` - Docker Hub +- `hub.kiwitcms.eu/kiwitcms/kiwi` - Quay.io + +Content is exactly the same between the two registries and you may use +the one which you like best! + +**Warning:** after November 1st 2020 older versions will not be available from +Docker Hub, only from Quay.io! The reason is that Docker is enforcing a +[6 month image retention limit](https://www.docker.com/pricing/retentionfaq) +for free plans! + + +Information about private containers for subscribers +---------------------------------------------------- + +Subscribers enjoy the benefit of having read-only access to tagged versions of the +upstream Kiwi TCMS container images as well as access to tagged versions of +Kiwi TCMS Enterprise container images! Previously these containers were distributed +via Docker Hub and are now available via Quay.io: + +- `mrsenko/kiwitcms` -> `hub.kiwitcms.eu/kiwitcms/version` (version tagged upstream images) +- `mrsenko/kiwitcms-enterprise` -> `hub.kiwitcms.eu/kiwitcms/enterprise` (enterprise images) + +**Important:** existing subscribers have been notified and granted access +to these new repositories. We advise you to update your +`docker-compose.yml` files and start using the new images at your earliest convenience! + +**Warning:** existing subscribers will continue having access to private +repositories on Docker Hub until December 31st 2020! Private repositories on +Docker Hub will become unavailable after January 31st, 2021 when Docker's new +storage plans will be forced into effect! + + +Why did we chose Quay.io +------------------------ + +There are multiple container registry services available! We think Quay.io +delivers the best price/quality ratio for our own use-case. In particular +we like the billing model around number of private repositories instead the +one around the number of users in your organization. That's very similar +to how we provide access to Kiwi TCMS via our own subscriptions! + +Also it just looks cool if you employ your imagination, especially +for non-native English speakers: quay -> qu-ai -> QA! + +
+Thanks for reading and happy testing! diff --git a/content/2020-08-23-version-8.6.rst b/content/2020-08-23-version-8.6.rst new file mode 100644 index 00000000..fdeb9472 --- /dev/null +++ b/content/2020-08-23-version-8.6.rst @@ -0,0 +1,213 @@ +Kiwi TCMS 8.6 +############# + +:headline: security update, improvements and bug fixes +:date: 2020-08-23 16:00 +:comments: true +:tags: releases + + +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest f2c21b370cd9 639 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/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//`` -> ``bugs.view_bug`` + - ``/bugs/search/`` -> ``bugs.view_bug`` + - ``/cases/search/`` -> ``testcases.view_testcase`` + - ``/case//`` -> ``testcases.view_testcase`` + - ``/plans/search/`` -> ``testplans.view_testplan`` + - ``/plan//*`` -> ``testplans.view_testplan`` + - ``/runs/search/`` -> ``testruns.view_testrun`` + - ``/runs//`` -> ``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
 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
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `Chinese Simplified translation `_
+- Updated `Czech translation `_
+- Updated `French translation `_
+- Updated `German translation `_
+- Updated `Hungarian translation `_
+- Updated `Japanese translation `_
+- Updated `Portuguese, Brazilian translation `_
+- Updated `Slovenian translation `_
+
+
+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 <{filename}2018-07-30-docker-backup.markdown>`_ 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!
diff --git a/content/2020-09-01-eu-web-awards-finalist.markdown b/content/2020-09-01-eu-web-awards-finalist.markdown
new file mode 100644
index 00000000..58356a5e
--- /dev/null
+++ b/content/2020-09-01-eu-web-awards-finalist.markdown
@@ -0,0 +1,24 @@
+Title: Kiwi TCMS is a finalist in the 2020 .eu Web Awards
+headline: thank you for voting for us
+date: 2020-09-01 13:50
+comments: true
+og_image: images/eu_web_awards_2020_finalist.png
+twitter_image: images/eu_web_awards_2020_finalist.png
+tags: community
+
+Click here to vote for Kiwi TCMS
+
+Kiwi TCMS is happy to announce that our website  is a finalist
+in the [2020 .eu Web Awards](https://eurid.eu/en/news/2020-wa-finalists/)
+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]({filename}2020-04-09-eu-web-awards-vote-for-us.markdown)
+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!
diff --git a/content/2020-09-04-nominate-github-star.markdown b/content/2020-09-04-nominate-github-star.markdown
new file mode 100644
index 00000000..1bc317d8
--- /dev/null
+++ b/content/2020-09-04-nominate-github-star.markdown
@@ -0,0 +1,52 @@
+Title: Please nominate @kiwitcms as a GitHub Star
+headline: and help us showcase what we do to a bigger audience
+date: 2020-09-04 14:25
+comments: true
+og_image: images/github-star-nomination.png
+twitter_image: images/github-star-nomination.png
+tags: community
+
+GitHub Star nomination
+
+
+After our [recent success]({filename}2020-09-01-eu-web-awards-finalist.markdown)
+we again ask the community to support Kiwi TCMS.
+
+
+*Steps to reproduce:*
+
+1. Go to 
+2. Click the **Sign in** button and Authorize the GitHub-Stars application
+3. Make sure you are on the **Nominate page**, 
+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]({filename}pages/team.html) has been doing from our very start!
+Checkout our [community blog posts](/blog/tags/community/) 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!
diff --git a/content/2020-09-16-version-8.7.rst b/content/2020-09-16-version-8.7.rst
new file mode 100644
index 00000000..e0ef122e
--- /dev/null
+++ b/content/2020-09-16-version-8.7.rst
@@ -0,0 +1,152 @@
+Kiwi TCMS 8.7
+#############
+
+:headline: improvements, API changes, bug fixes, translation updates
+:date: 2020-09-16 16:30
+:comments: true
+:tags: releases
+
+
+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::
+
+    pub.kiwitcms.eu/kiwitcms/kiwi       latest  1f2461b1facd    643 MB
+    pub.kiwitcms.eu/kiwitcms/kiwi       6.2     7870085ad415    957 MB
+    pub.kiwitcms.eu/kiwitcms/kiwi       6.1.1   49fa42ddfe4d    955 MB
+    pub.kiwitcms.eu/kiwitcms/kiwi       6.1     b559123d25b0    970 MB
+    pub.kiwitcms.eu/kiwitcms/kiwi       6.0.1   87b24d94197d    970 MB
+    pub.kiwitcms.eu/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
+
+
+Translations
+~~~~~~~~~~~~
+
+- Updated `Bulgarian translation `_
+- Updated `Chinese Traditional translation `_
+- Updated `French translation `_
+- Updated `Hungarian translation `_
+- Updated `Japanese translation `_
+- Updated `Slovenian translation `_
+
+
+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 <{filename}2018-07-30-docker-backup.markdown>`_ 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!
diff --git a/content/2020-10-10-black-boxes-progress-update.markdown b/content/2020-10-10-black-boxes-progress-update.markdown
new file mode 100644
index 00000000..c5f92d13
--- /dev/null
+++ b/content/2020-10-10-black-boxes-progress-update.markdown
@@ -0,0 +1,78 @@
+Title: Progress update on open source hardware for black-box testing
+Headline: in cooperation with Pionir
+date: 2020-10-10 16:35
+comments: true
+og_image: images/black-boxes/salience_bias.png
+twitter_image: images/black-boxes/salience_bias.png
+tags: community, bounty-program
+
+
+Hello testers, as you know our
+[friends at Pionir]({filename}2020-05-26-partnership-with-pionir.markdown)
+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](http://blackboxpuzzles.workroomprds.com/) and
+[Claudiu Draghia](http://blog.brainforit.com/2017/02/06/black-boxes-for-black-box-testing/).
+
+
+We have the source code of 3 boxes already published at
+ 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](https://github.com/kiwitcms/black-boxes/issues) to follow
+the progress! Here are some images & videos from the development process.
+
+
+Wason 2-4-6 box
+---------------
+
+![Wason 246 box](/images/black-boxes/wason_246.png)
+
+
+
+
+Peltzman effect box
+-------------------
+
+![Peltzman effect box](/images/black-boxes/peltzman_effect.png)
+
+
+
+
+
+Salience bias box
+-----------------
+
+![Salience bias box](/images/black-boxes/salience_bias.png)
+
+
+
+
+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]({filename}2020-09-04-nominate-github-star.markdown)!
+
+
+Thanks for reading and happy testing! diff --git a/content/2020-10-13-partnership-mlh-fellowship.markdown b/content/2020-10-13-partnership-mlh-fellowship.markdown new file mode 100644 index 00000000..19aecd4b --- /dev/null +++ b/content/2020-10-13-partnership-mlh-fellowship.markdown @@ -0,0 +1,78 @@ +Title: Kiwi TCMS is partnering with MLH Fellowship program +Headline: for 12 weeks of open source hacking +date: 2020-10-13 12:50 +comments: true +og_image: images/mlh/partnership_banner.png +twitter_image: images/mlh/partnership_banner.png +tags: community, bounty-program + + +We are happy to announce that Kiwi TCMS is going to partner with the +[MLH Fellowship](https://fellowship.mlh.io/programs/open-source) +open source program which is a 12 week internship alternative for +students interested in becoming software engineers. + +[Major League Hacking (MLH)](https://mlh.io) 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](https://github.com/kiwitcms/Kiwi/issues) from our backlog with +a focus on tasks from our +[open source bounty program](https://github.com/kiwitcms/Kiwi/milestone/4) +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*](https://github.com/flosincapite) +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**](https://github.com/kiwitcms/Kiwi/issues?q=is%3Aopen+is%3Aissue+label%3A%22MLH+Fellowship%22) + 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](https://opencollective.com/kiwitcms). 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](https://discord.gg/w7F55kn) 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](https://twitter.com/eddiejaoude) 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! + +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Nominate Kiwi TCMS as GitHub Stars]({filename}2020-09-04-nominate-github-star.markdown); +- [Become a customer](/#subscriptions) and we'll share our profits with the community + +
+Thanks for reading and happy testing! diff --git a/content/2020-10-15-partnership-vola-software.markdown b/content/2020-10-15-partnership-vola-software.markdown new file mode 100644 index 00000000..40fdcd22 --- /dev/null +++ b/content/2020-10-15-partnership-vola-software.markdown @@ -0,0 +1,81 @@ +Title: Kiwi TCMS is partnering with Vola Software +Headline: to provide open source opportunities for youngsters +date: 2020-10-15 15:51 +comments: true +og_image: images/vola_software/partnership_banner.png +twitter_image: images/vola_software/partnership_banner.png +tags: community, bounty-program + + +We are happy to announce that Kiwi TCMS is going to partner with +[Vola Software](https://volasoftware.com/) 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](https://school.vratsasoftware.com/). +They are located in Vratsa, Bulgaria. + + +Internship program +------------------ + +[Alexander Tsvetanov](https://github.com/Allexander203) and +[Vladislav Ankov](https://github.com/vladi1337) 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](https://github.com/python-bugzilla/python-bugzilla/issues/134) +and a +[pull request](https://github.com/python-bugzilla/python-bugzilla/pull/135) for +**python-bugzilla** underlined by a +[20 years old issue in Python](https://bugs.python.org/issue41965). +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](/blog/tags/bounty-program/) as an extra stimulation! + +All expenses will be fully transparent and visible via +[our Open Collective page](https://opencollective.com/kiwitcms/expenses/)! + + +Help us do more +--------------- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Nominate Kiwi TCMS as GitHub Stars]({filename}2020-09-04-nominate-github-star.markdown); +- [Become a customer](/#subscriptions) and we'll share our profits with the community + +
+Thanks for reading and happy testing! diff --git a/content/2020-10-18-interview-sedc.markdown b/content/2020-10-18-interview-sedc.markdown new file mode 100644 index 00000000..73dfecd5 --- /dev/null +++ b/content/2020-10-18-interview-sedc.markdown @@ -0,0 +1,115 @@ +Title: SEDC Academy For Software Testing is running Kiwi TCMS +Headline: to equip future testers with practical tools and skills from the get go +date: 2020-10-18 17:25 +comments: true +og_image: images/sedc/partnership_banner.png +twitter_image: images/sedc/partnership_banner.png +tags: community + + +Hello testers, +recently we had a chat with +[Gjore Zaharchev](https://www.linkedin.com/in/gjorezaharchev/), +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](https://www.sedc.mk/) +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](https://kiwitcms.readthedocs.io/en/latest/plugins/automation-frameworks.html) +while others are on our backlog - +[TestNG](https://github.com/kiwitcms/Kiwi/issues/692), +[Jenkins](https://github.com/kiwitcms/Kiwi/issues/1072), +[C#/NUnit](https://github.com/kiwitcms/Kiwi/issues/2020)! +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]({tag}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]({tag}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! + +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) - + project news only, GDPR compliant +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Nominate Kiwi TCMS as GitHub Stars]({filename}2020-09-04-nominate-github-star.markdown); +- [Become a customer](/#subscriptions) and we'll share our profits with the community + +
+Thanks for reading and happy testing! diff --git a/content/2020-10-26-200K-celebration.markdown b/content/2020-10-26-200K-celebration.markdown new file mode 100644 index 00000000..e6a5fef6 --- /dev/null +++ b/content/2020-10-26-200K-celebration.markdown @@ -0,0 +1,34 @@ +Title: Kiwi TCMS celebrates 200K+ downloads +Headline: big thank you to our open source community +date: 2020-10-26 14:00 +comments: true +og_image: images/200K/banner.png +twitter_image: images/200K/banner.png +tags: community + + +!["200K banner"](/images/200K/banner.png "200K banner") + +We are happy to announce that Kiwi TCMS has been downloaded more than +200000 times! You can check the real-time stats +[here](https://hub.docker.com/v2/repositories/kiwitcms/kiwi/). +To celebrate with us subscribe for a +[SaaS](https://mrsenko.onfastspring.com/kiwitcms-private-tenant) and/or +[Enterprise](https://mrsenko.onfastspring.com/kiwitcms-enterprise-subscription) +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! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Nominate Kiwi TCMS as GitHub Stars]({filename}2020-09-04-nominate-github-star.markdown); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2020-11-09-version-8.8.rst b/content/2020-11-09-version-8.8.rst new file mode 100644 index 00000000..764e978e --- /dev/null +++ b/content/2020-11-09-version-8.8.rst @@ -0,0 +1,228 @@ +Kiwi TCMS 8.8 +############# + +:headline: object-level permissions, big UI updates and other improvements +:date: 2020-11-09 12:10 +:comments: true +:tags: releases + + +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 <{filename}2020-10-26-200K-celebration.markdown>`_ +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 4b31ecf8ab5b 654 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB + + +Changes since Kiwi TCMS 8.7 +--------------------------- + +Improvements +~~~~~~~~~~~~ + +- Update bleach from 3.1.5 to 3.2.1 +- Update django-extensions from 3.0.8 to 3.0.9 +- Update django from 3.1.1 to 3.1.3 +- Update django-simple-history from 2.11.0 to 2.12.0 +- Update markdown from 3.2.2 to 3.3.3 +- Update pygments from 2.7.0 to 2.7.2 +- Update python-bugzilla from 2.5.0 to 3.0.1 +- Update node_modules/marked from 1.1.1 to 1.2.3 +- Update node_modules/prismjs from 1.21.0 to 1.22.0 +- Add management command ``refresh_permission``. Closes + `Issue #1137 `_ (Ivajlo Karabojkov) +- Add bug tracker integration for Azure Boards. Closes + `Issue #1979 `_ (@cmbahadir) +- Add autosave configuration to web editor. Closes + `Issue #1958 `_ (Mfon Eti-mfon) +- Change ON/OFF buttons messages to Yes/No for several buttons (Alexander Tsvetanov) +- Add support for object-level permissions for TestCase, + TestPlan, TestRun and Bug objects via ``django-guardian`` +- Complete redesign of Test Plan page to match the rest of Kiwi TCMS: + + - modern look and feel using the PatternFly UI library + - remove unused legacy code & HTML templates + - closes + `Issue #663 `_, + `Issue #1977 `_ + +- Enable Markdown support for strike-through text +- Always pull latest RPMs when building container images +- Update documentation and images + + +Settings +~~~~~~~~ + +- ``AUTHENTICATION_BACKENDS`` setting is now explicitly specified because of + ``django-guardian``. Take care to include the default backends if you + override this setting. See ``tcms/settings/common.py`` for more information. + + +Database +~~~~~~~~ + +- Add index to ``TestCase.summary`` field +- Additional migrations from ``django-guardian`` around object-level permissions +- New ``AnonymousUser`` record added by ``django-guardian`` +- Start using ``django-tree-queries`` which improves how tree based structures + are stored in the database. + +**important:** + + Requires PostgreSQL, sqlite3 >= 3.8.3, MariaDB >= 10.2.2 or + MySQL >= 8.0 (if running without ``ONLY_FULL_GROUP_BY``). + +**warning:** + + Supports only trees with max. 50 levels on MySQL/MariaDB, since those databases + do not support arrays and require us to provide a maximum length upfront. + This means up to 50 levels of nested child-parent test plans! + + +API +~~~ + +- Method ``TestExecution.update()`` will now modify field ``close_date`` + depending on test execution status. Fixes + `Issue #1820 `_ +- Method ``TestCase.add_comment()`` now returns the created comment +- Method ``TestExecution.add_comment()`` now returns the created comment +- Method ``TestPlan.add_case()`` now returns the newly added test case +- Add method ``TestCase.sortkeys()``. Fixes + `Issue #444 `_ +- Add method ``Markdown.render()`` +- Add method ``TestCase.comments()`` +- Add method ``TestPlan.tree()`` + + +Bug fixes +~~~~~~~~~ + +- Fix url formatting. Fixes + `Issue #1806 `_ (Rosen Sasov) +- When deleting TestExecutionStatus check that there will be at least 1 left + before deleting! Closes + `Issue #1978 `_ +- Update typeahead definitions for test case components, tags and + for adding test plans to test cases. Fixes + `Issue #882 `_ +- Add option to filter by reviewer in Test Plan page. Fixes + `Issue #564 `_ +- Pass the number of disabled test cases to HTML template when + creating a new test run. Fixes + `Issue #718 `_ + + +Refactoring & testing +~~~~~~~~~~~~~~~~~~~~~ + +- New linter to warn against ``GenericForeignKey`` fields in models. Closes + `Issue #1303 `_ (Bryan Mutai) +- Add tests for ``assign_default_group_permissions()`` (Ivajlo Karabojkov) +- Add tests for ``TestExecutionStatusAdmin``. Refs + `Issue #1618 `_ (Mariyan Garvanski) +- Add tests for ``tcms.bugs.views.Search``. Closes + `Issue #1601 `_ (Mfon Eti-mfon) +- Add tests for ``tcms.rpc.api.testrun``. Closes + `Issue #1628 `_ (@lcmtwn) +- Add tests for ``tcms.rpc.api.classification``. Closes + `Issue #1621 `_ (Abhishek Chaurasia) +- Add tests for ``tcms.rpc.api.priority``. Closes + `Issue #1622 `_ (Abhishek Chaurasia) +- Add tests for ``tcms.rpc.api.testcasestatus``. Closes + `Issue #1624 `_ (Abhishek Chaurasia) +- Add tests for ``tcms.rpc.api.attachment``. Closes + `Issue #1619 `_ (@awalvie) +- Add tests for ``tcms.rpc.api.testexecution.remove_comment``. Closes + `Issue #1625 `_ (@awalvie) +- Add tests for ``tcms.rpc.api.testexecutionstatus``. Closes + `Issue #1626 `_ (@awalvie) +- Add tests for ``TestRun.add_case_run()`` method and rename it to + ``TestRun.create_execution()`` +- ``libkrb5-dev`` is not needed anymore in CI with newer ``tcms-api`` +- Use Fedora 32 to build Bugzilla docker image in CI +- Update signature for overriden class to match Django 3.1 +- Move SimpleMDE initialization to simplemde_security_overide.js +- Move ``post_save.send()`` from ``bugs.views`` to ``comments.add_comment()`` + + +Translations +~~~~~~~~~~~~ + +- Updated `Bulgarian translation `_ +- Updated `Chinese Simplified translation `_ +- Updated `Czech translation `_ +- Updated `French translation `_ +- Updated `Hungarian translation `_ +- Updated `Italian translation `_ +- Updated `Japanese translation `_ +- Updated `Slovenian translation `_ + + +Kiwi TCMS Enterprise v8.8-mt +---------------------------- + +- Based on Kiwi TCMS v8.7 +- Update kiwitcms-github-app from 1.2 to 1.2. + +For more info see +https://github.com/kiwitcms/enterprise#v88-mt-07-nov-2020 + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +If you are using Kiwi TCMS as a Docker container then:: + + cd path/containing/docker-compose/ + docker-compose down + docker-compose pull + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Refer to +`our documentation `_ +for more details! + +Happy testing! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- `Give ⭐ on GitHub `_; +- `Nominate Kiwi TCMS as GitHub Stars <{filename}2020-09-04-nominate-github-star.markdown>`_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a customer `_ and we'll share our profits with the community diff --git a/content/2020-12-02-fosdem2021.markdown b/content/2020-12-02-fosdem2021.markdown new file mode 100644 index 00000000..321e1836 --- /dev/null +++ b/content/2020-12-02-fosdem2021.markdown @@ -0,0 +1,32 @@ +Title: Call for participation: Testing and Automation devroom, FOSDEM'21 +Headline: organized by Kiwi TCMS, Linaro & SUSE +date: 2020-12-02 14:55 +comments: true +og_image: images/fosdem/2021/banner.png +twitter_image: images/fosdem/2021/banner.png +tags: community, events + + +!["Cfp banner"](/images/fosdem/2021/banner.png "Cfp banner") + +Attention open source testers: Testing and Automation devroom at FOSDEM'21 +is happening next year! Call for participation is now open. +Checkout + for more information! + + +Happy Testing! + + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Nominate Kiwi TCMS as GitHub Stars]({filename}2020-09-04-nominate-github-star.markdown); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2020-12-07-version-8.9.rst b/content/2020-12-07-version-8.9.rst new file mode 100644 index 00000000..802dadac --- /dev/null +++ b/content/2020-12-07-version-8.9.rst @@ -0,0 +1,200 @@ +Kiwi TCMS 8.9 +############# + +:headline: UI updates, new APIs and other improvements +:date: 2020-12-07 16:25 +:comments: true +:tags: releases + + +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 <{filename}2020-10-26-200K-celebration.markdown>`_ +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 9bcfea3a532e 652 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/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: + + - Closes + `Issue #189 `_, + `Issue #241 `_, + `Issue #212 `_, + `Issue #431 `_, + `Issue #1382 `_ + - Add filter by component & tag. Closes + `Issue #833 `_ + - Don't limit the user to test cases from the parent test plan like before. + Testers can add any test case for execution inside a test run, + even mix & match test cases between products. Fixes + `Issue #1934 `_ + - Add attachments to Test Run page. Fixes + `Issue #872 `_ + - Refresh execution row after reporting a bug. Closes + `Issue #479 `_ +- ``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 + + +Translations +~~~~~~~~~~~~ + +- Updated `Bulgarian translation `_ +- Updated `Chinese Simplified translation `_ +- Updated `Czech translation `_ +- Updated `French translation `_ +- Updated `Indonesian translation `_ +- Updated `Japanese translation `_ +- Updated `Russian translation `_ +- Updated `Slovenian translation `_ + + +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 <{filename}2018-07-30-docker-backup.markdown>`_ first! +If you are using Kiwi TCMS as a Docker container then:: + + cd path/containing/docker-compose/ + docker-compose down + docker-compose pull + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Refer to +`our documentation `_ +for more details! + +Happy testing! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- `Give ⭐ on GitHub `_; +- `Nominate Kiwi TCMS as GitHub Stars <{filename}2020-09-04-nominate-github-star.markdown>`_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a customer `_ and we'll share our profits with the community diff --git a/content/2020-12-26-innovation.bg.markdown b/content/2020-12-26-innovation.bg.markdown new file mode 100644 index 00000000..3e5d3aa0 --- /dev/null +++ b/content/2020-12-26-innovation.bg.markdown @@ -0,0 +1,44 @@ +Title: Excellence in Innovation 2020 award for Kiwi TCMS +Headline: finalist in Innovative Enterprise of the Year +date: 2020-12-26 17:17 +comments: true +og_image: images/banners/excellence_in_innovation_2020.png +twitter_image: images/banners/excellence_in_innovation_2020.png +tags: community + + +!["Virtual show screen"](/images/finalists_innovationbg.png "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](http://www.arcfund.net/) 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](https://www.innovation.bg/), we're listed under +*ОтĐČĐŸŃ€Đ”ĐœĐž ĐąĐ”Ń…ĐœĐŸĐ»ĐŸĐłĐžĐž Đ‘ŃŠĐ»ĐłĐ°Ń€ĐžŃ ЕООД* +(the name of our [parent company]({filename}pages/legal.markdown))! +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! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Nominate Kiwi TCMS as GitHub Stars]({filename}2020-09-04-nominate-github-star.markdown); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2020-12-31-yearly-review.markdown b/content/2020-12-31-yearly-review.markdown new file mode 100644 index 00000000..147078fb --- /dev/null +++ b/content/2020-12-31-yearly-review.markdown @@ -0,0 +1,117 @@ +Title: Roadmap status report for 2020 +Headline: goals 65% complete +date: 2020-12-31 14:07 +author: Alexander Todorov +comments: true +tags: community, roadmap + +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 +- Reached 270K downloads via Docker Hub + + +Status update +------------- + +From the [2020 roadmap]({filename}2020-01-17-roadmap2020.markdown) 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! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Nominate Kiwi TCMS as GitHub Stars]({filename}2020-09-04-nominate-github-star.markdown); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2021-01-13-version-9.0.rst b/content/2021-01-13-version-9.0.rst new file mode 100644 index 00000000..2423c518 --- /dev/null +++ b/content/2021-01-13-version-9.0.rst @@ -0,0 +1,196 @@ +Kiwi TCMS 9.0 +############# + +:headline: contains backwards incompatible changes +:date: 2021-01-13 14:20 +:comments: true +:tags: releases + + +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 <{filename}2020-10-26-200K-celebration.markdown>`_ +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest f98908772a2a 695 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/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 + + +Translations +~~~~~~~~~~~~ + +- Updated `Catalan translation `_ +- Updated `Chinese Simplified translation `_ +- Updated `French translation `_ +- Updated `Hungarian translation `_ +- Updated `Japanese translation `_ +- Updated `Slovenian translation `_ + + +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: + +- `tap-plugin `_ +- `junit.xml-plugin `_ +- `Robot Framework plugin `_ +- `Django plugin `_ + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +If you are using Kiwi TCMS as a Docker container then:: + + cd path/containing/docker-compose/ + docker-compose down + docker-compose pull + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Refer to +`our documentation `_ +for more details! + +Happy testing! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- `Give ⭐ on GitHub `_; +- `Nominate Kiwi TCMS as GitHub Stars <{filename}2020-09-04-nominate-github-star.markdown>`_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a customer `_ and we'll share our profits with the community diff --git a/content/2021-01-29-roadmap2021.markdown b/content/2021-01-29-roadmap2021.markdown new file mode 100644 index 00000000..27ba8146 --- /dev/null +++ b/content/2021-01-29-roadmap2021.markdown @@ -0,0 +1,98 @@ +Title: Project roadmap 2021 +headline: team, technical & community towards sustainability +date: 2021-01-29 15:40 +comments: true +og_image: images/roadmap.jpg +twitter_image: images/roadmap.jpg +author: Alexander Todorov +tags: community, roadmap + +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]({filename}2019-03-03-telemetry.markdown). + +**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](https://github.com/kiwitcms/Kiwi/milestone/1). + + +**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! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Nominate Kiwi TCMS as GitHub Stars]({filename}2020-09-04-nominate-github-star.markdown); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2021-01-30-google-summer-of-code.markdown b/content/2021-01-30-google-summer-of-code.markdown new file mode 100644 index 00000000..eff9bc4b --- /dev/null +++ b/content/2021-01-30-google-summer-of-code.markdown @@ -0,0 +1,265 @@ +Title: Kiwi TCMS has applied for GSoC 2021 +Headline: here are some project ideas +date: 2021-01-30 13:40 +comments: true +og_image: images/gsoc/2021/banner.png +twitter_image: images/gsoc/2021/banner.png +tags: community + + +!["GSoC banner"](/images/gsoc/2021/banner.png "GSoC banner") + +Dear open source hackers, we are happy to share that Kiwi TCMS has +applied to +[Google Summer of Code 2021](https://summerofcode.withgoogle.com/) +as a mentoring organization! + +While we're very early in the program +[timeline](https://summerofcode.withgoogle.com/how-it-works/#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]({tag}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](https://kiwitcms.readthedocs.io/en/latest/installing_docker.html#ssl-configuration) +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](https://letsencrypt.org/) 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](https://github.com/kiwitcms/Kiwi/issues/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](https://github.com/kiwitcms/Kiwi/runs/1608837125?check_suite_focus=true), + 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](https://kiwitcms.readthedocs.io/en/latest/plugins/automation-frameworks.html) +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](https://github.com/kiwitcms/Kiwi/issues/817) then moved to +[github-app #10](https://github.com/kiwitcms/github-app/issues/10) with a +slightly different focus. + +Next (or in parallel) would be similar +functionality for GitLab pipelines, proposed in +[Issue #1421](https://github.com/kiwitcms/Kiwi/issues/1421) + + +Java hacking +------------ + +Kiwi TCMS does have a native +[junit-plugin](https://github.com/kiwitcms/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: + +- [Issue #692](https://github.com/kiwitcms/Kiwi/issues/692) - TestNG plugin +- [Issue #1072](https://github.com/kiwitcms/Kiwi/issues/1072) - Jenkins plugin, + probably similar in scope to the proposed GitHub/GitLab integration above +- [Issue #1512](https://github.com/kiwitcms/Kiwi/issues/1512) - extension for the + existing junit-plugin. Similar extension will likely be necessary for the + TestNG plugin as well +- Integration with Katalon Studio proposed at + . There isn't much info to + begin with so if you have working experience with Katalon Studio it would be + a plus +- Fixing assorted + [issues in our junit plugin](https://github.com/kiwitcms/junit-plugin/issues) +- Help upgrade to junit-jupiter v5.7.0, looks like API has changed and our + plugin doesn't automatically discover the tests. + See + + +C# and Objective-C hacking +-------------------------- + +- [Issue #2020](https://github.com/kiwitcms/Kiwi/issues/2020) - reporting plugin for + NUnit, similar to other existing + [automation framework plugins](https://kiwitcms.readthedocs.io/en/latest/plugins/automation-frameworks.html). + 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](https://github.com/kiwitcms/Kiwi/issues/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](https://www.patternfly.org). 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](https://github.com/kiwitcms/Kiwi/issues/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](https://github.com/kiwitcms/Kiwi/issues/1281) - start using ESLint + against our code base and clean-up all related issues +- [Issue #1910](https://github.com/kiwitcms/Kiwi/issues/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](https://github.com/kiwitcms/Kiwi/issues/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]({filename}2019-03-03-telemetry.markdown) 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](https://github.com/kiwitcms/Kiwi/issues/616), +[Issue #1923](https://github.com/kiwitcms/Kiwi/issues/1923), +[Issue #1924](https://github.com/kiwitcms/Kiwi/issues/1924), +[Issue #1925](https://github.com/kiwitcms/Kiwi/issues/1925), +[Issue #1926](https://github.com/kiwitcms/Kiwi/issues/1926), +[Issue #1927](https://github.com/kiwitcms/Kiwi/issues/1927), +[Issue #1928](https://github.com/kiwitcms/Kiwi/issues/1928), +[Issue #1929](https://github.com/kiwitcms/Kiwi/issues/1929), +[Issue #1940](https://github.com/kiwitcms/Kiwi/issues/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](https://github.com/zapier/django-rest-hooks) and +pair it up with [RestrictedPython](https://restrictedpython.readthedocs.io/) +for further flexibility. + +This feature is being tracked in +[Issue #1080](https://github.com/kiwitcms/Kiwi/issues/1080) and +[Issue #913](https://github.com/kiwitcms/Kiwi/issues/914) 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! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Nominate Kiwi TCMS as GitHub Stars]({filename}2020-09-04-nominate-github-star.markdown); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2021-03-02-version-10.0.rst b/content/2021-03-02-version-10.0.rst new file mode 100644 index 00000000..43d3086d --- /dev/null +++ b/content/2021-03-02-version-10.0.rst @@ -0,0 +1,286 @@ +Kiwi TCMS 10.0 +############## + +:headline: major version with backwards incompatible changes +:date: 2021-03-02 15:10 +:comments: true +:tags: releases + + +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 9f23186803d5 736 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB + + +Changes since Kiwi TCMS 9.0 +--------------------------- + +Security +~~~~~~~~ + +- Update node_modules/marked from 1.2.7 to 2.0.1. Also fixes + `SNYK-JS-MARKED-1070800 `_ +- Update django from 3.1.5 to 3.1.7 for CVE-2021-3281 and CVE-2021-23336 + + +Improvements +~~~~~~~~~~~~ + +- Update bleach from 3.2.1 to 3.3.0 +- Update django-colorfield from 0.3.2 to 0.4.1 +- Update django-extensions from 3.1.0 to 3.1.1 +- Update markdown from 3.3.3 to 3.3.4 +- Update pygments from 2.7.4 to 2.8.0 +- Update python-gitlab from 2.5.0 to 2.6.0 +- Change ON/OFF button messages (Krum Petkov) +- Automatically set test run to finished/not-finished depending on + the state of all executions. Closes + `Issue #441 `_ +- Allow assigning users from group admin page. Fixes + `Issue #1844 `_ +- Improve documentation around setting up devel environment + + +Database +~~~~~~~~ + +- Add ``TestRun.planned_start`` and ``TestRun.planned_stop`` fields. Refs + `Issue #1928 `_ (Andreea Moraru) +- Add ``TestExecution.start_date`` field. Refs + `Issue #1924 `_ (Anastasiya Uraleva) +- Rename field ``TestExecution.close_date`` to ``TestExecution.stop_date`` (Anastasiya Uraleva) + + +API +~~~ + +.. warning:: + + This release changes how Kiwi TCMS serializes API results and thus + introduces multiple backwards incompatible changes. + +.. important:: + + All ``.filter()`` methods now return distinct records! + +- New method ``PlanType.create()`` +- Method ``TestCase.add_component()`` now returns a serialized ``Component`` + instead of a serialized ``TestCase``. Refs + `Issue #2145 `_ +- Methods ``Product.filter()``, ``Product.create()`` and ``Product.update()``: + + - change input parameter ``classification_id`` to ``classification`` - type int + - change result field ``classification_id`` to ``classification`` - type int +- Method ``Category.filter()`` changes result field + ``product_id`` to ``product`` - type int +- Methods ``Component.filter()``, ``Component.create()`` and ``Component.update()``: + + - change input parameter ``product_id`` to ``product`` - type int + - change input parameter ``initial_owner_id`` to ``initial_owner`` - type int + - change input parameter ``initial_qa_contact_id`` to ``initial_qa_contact`` - type int + - change result field ``product_id`` to ``product`` - type int + - change result field ``initial_owner_id`` to ``initial_owner`` - type int + - change result field ``initial_qa_contact_id`` to ``initial_qa_contact`` - type int + - adds result field ``cases`` - type int - a TestCase ID if this component is + attached to a test case +- Methods ``Version.filter()`` and ``Version.create()``: + + - change input parameter ``product_id`` to ``product`` - type int + - change result field ``product_id`` to ``product`` - type int +- Method ``Tag.filter()`` now returns additional fields: + ``bugs``, ``case``, ``plan`` and ``run`` which causes existing queries to + return similar records attached to different parent objects. Consumers of these + results should be updated +- Methods ``TestPlan.filter()``, ``TestPlan.create()`` and ``TestPlan.update()``: + + - change input parameter ``author_id`` to ``author`` - type int + - change input parameter ``parent_id`` to ``parent`` - type int + - change input parameter ``product_id`` to ``product`` - type int + - change input parameter ``product_version_id`` to ``product_version`` - type int + - change input parameter ``type_id`` to ``type`` - type int + - change result field ``author_id`` to ``author`` - type int + - change result field ``parent_id`` to ``parent`` - type int + - change result field ``product_id`` to ``product`` - type int + - change result field ``product_version_id`` to ``product_version`` - type int + - change result field ``type_id`` to ``type`` - type int + - remove result fields ``cases``, ``tag``, ``default_product_version`` +- Method ``TestPlan.filter()`` + adds result fields ``product_version__value``, ``product__name``, + ``author__username`` and ``type__name`` +- Methods ``TestRun.filter()``, ``TestRun.create()`` and ``TestRun.update()``: + + - change result field ``build_id`` to ``build`` - type int + - change result field ``default_tester_id`` to ``default_tester`` - type int + - change result field ``manager_id`` to ``manager`` - type int + - change result field ``plan_id`` to ``plan`` - type int + - change result field ``product_version_id`` to ``product_version`` - type int + - remove result fields ``cc``, ``tag`` +- Method ``TestRun.filter()`` adds result fields ``product_version__value``, + ``plan__product``, ``plan__name``, ``build__name``, ``manager__username`` and + ``default_tester__username`` +- Methods ``TestExecution.filter()`` and ``TestExecution.update()``: + + - change input parameter ``assigee_id`` to ``assignee`` - type int + - change input parameter ``build_id`` to ``build`` - type int + - change input parameter ``case_id`` to ``case`` - type int + - change input parameter ``run_id`` to ``run`` - type int + - change input parameter ``status_id`` to ``status`` - type int + - change input parameter ``tested_by_id`` to ``tested_by`` - type int + - change result field ``assigee_id`` to ``assignee`` - type int + - change result field ``build_id`` to ``build`` - type int + - change result field ``case_id`` to ``case`` - type int + - change result field ``run_id`` to ``run`` - type int + - change result field ``status_id`` to ``status`` - type int + - change result field ``tested_by_id`` to ``tested_by`` - type int +- Method ``TestExecution.filter()`` adds result fields ``assignee__username``, + ``tested_by__username``, ``case__summary``, ``build__name`` and ``status__name`` +- Method ``TestExecution.get_links()`` change result field + ``execution_id`` to ``execution`` - type int +- Method ``TestRun.add_case()`` changes result field names similarly to + ``TestExecution.filter()`` method +- Methods ``TestCase.filter()``, ``TestCase.create()`` and ``TestCase.update()``: + + - change input parameter ``author_id`` to ``author`` - type int + - change input parameter ``case_status_id`` to ``case_status`` - type int + - change input parameter ``category_id`` to ``category`` - type int + - change input parameter ``default_tester_id`` to ``default_tester`` - type int + - change input parameter ``priority_id`` to ``priority`` - type int + - change input parameter ``reviewer_id`` to ``reviewer`` - type int + - change result field ``author_id`` to ``author`` - type int + - change result field ``case_status_id`` to ``case_status`` - type int + - change result field ``category_id`` to ``category`` - type int + - change result field ``default_tester_id`` to ``default_tester`` - type int + - change result field ``priority_id`` to ``priority`` - type int + - change result field ``reviewer_id`` to ``reviewer`` - type int + - remove result fields ``component``, ``plan``, ``tag`` +- Method ``TestCase.filter()`` adds result fields ``case_status__name``, + ``category__name``, ``priority__value``, ``author__username``, + ``default_tester__username`` and ``reviewer__username`` +- Methods ``TestRun.get_cases()`` and ``TestPlan.add_case()`` change + result field names similarly to ``TestCase.filter()`` method + + +Bug fixes +~~~~~~~~~ + +- Fix removing a component from a test case immediately after it has been added. Fixes + `Issue #2145 `_ (Gagan Deep) +- Fix broken object navigation in navbar. Fixes + `Issue #991 `_ +- Refactor search pages rendering to speed it up. Closes + `Issue #1014 `_ + + +Refactoring & testing +~~~~~~~~~~~~~~~~~~~~~ + +- Update tests for ``TestRun.create()`` API method. Refs + `Issue #1928 `_ (Andreea Moraru) +- Add automation tests. Closes + `Issue #1618 `_ (Mariyan Garvanski) +- Add additional automation tests for ``tcms.management.admin``. Closes + `Issue #1610 `_ (Gagan Deep) +- Add additional automation tests for ``tcms.testcases.views.EditTestCaseView``. Closes + `Issue #1615 `_ (Gagan Deep) +- Add additional automation tests for ``tcms.kiwi_auth.forms``. Closes + `Issue #1609 `_ (Kapil Bansal) +- Change location of included HTML templates (Alexander Tsvetanov, Krum Petkov) +- Erase unused view & templates (Alexander Tsvetanov) +- Enable eslint. Closes + `Issue #1281 `_ +- Change how beakerlib test framework is installed to avoid problems + during integration tests +- Better inspection of beakerlib test results to avoid false positive results + + +Translations +~~~~~~~~~~~~ + +- Updated `Bulgarian translation `_ +- Updated `German translation `_ +- Updated `Hungarian translation `_ +- Updated `Polish translation `_ + + + +Kiwi TCMS Enterprise v10.0-mt +----------------------------- + +- Based on Kiwi TCMS v10.0 +- Update kiwitcms-github-app from 1.2.2 to 1.2.4 +- Update kiwitcms-tenants from 1.4.2 to 1.4.3 +- Update django-python3-ldap from 0.11.3 to 0.11.4 + + +Automation framework plugins +---------------------------- + +The following +`test automation framework plugins +`_ +have been upgraded to work with Kiwi TCMS v10.0: + +- `junit-plugin `_ +- `tap-plugin `_ +- `junit.xml-plugin `_ +- `Robot Framework plugin `_ +- `Django plugin `_ + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +If you are using Kiwi TCMS as a Docker container then:: + + cd path/containing/docker-compose/ + docker-compose down + docker-compose pull + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Refer to +`our documentation `_ +for more details! + +Happy testing! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- `Give ⭐ on GitHub `_; +- `Nominate Kiwi TCMS as GitHub Stars <{filename}2020-09-04-nominate-github-star.markdown>`_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a customer `_ and we'll share our profits with the community diff --git a/content/2021-05-18-version-10.1.rst b/content/2021-05-18-version-10.1.rst new file mode 100644 index 00000000..e0eacc08 --- /dev/null +++ b/content/2021-05-18-version-10.1.rst @@ -0,0 +1,211 @@ +Kiwi TCMS 10.1 +############## + +:headline: general security, improvement and bug-fix release +:date: 2021-05-18 15:00 +:comments: true +:tags: releases + + +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 <{filename}2020-10-13-partnership-mlh-fellowship.markdown>`_! + +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 788af5c3f067 800 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/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 + + +Translations +~~~~~~~~~~~~ + +- Updated `Chinese Simplified translation `_ +- Updated `French translation `_ +- Updated `Hungarian translation `_ +- Updated `Italian translation `_ +- Updated `Japanese translation `_ +- Updated `Polish translation `_ +- Updated `Portuguese, Brazilian translation `_ +- Updated `Romanian translation `_ +- Updated `Slovenian translation `_ +- Updated `Spanish translation `_ + + +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 <{filename}2018-07-30-docker-backup.markdown>`_ first! +If you are using Kiwi TCMS as a Docker container then:: + + cd path/containing/docker-compose/ + docker-compose down + docker-compose pull + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Refer to +`our documentation `_ +for more details! + +Happy testing! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- `Give ⭐ on GitHub `_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a customer `_ and help us sustain development diff --git a/content/2021-06-15-500K-milestone.markdown b/content/2021-06-15-500K-milestone.markdown new file mode 100644 index 00000000..b076e7ba --- /dev/null +++ b/content/2021-06-15-500K-milestone.markdown @@ -0,0 +1,29 @@ +Title: Thank you for downloading Kiwi TCMS 500000 times +date: 2021-06-15 14:45 +comments: true +og_image: images/500K/banner.png +twitter_image: images/500K/banner.png +tags: community + + +!["500K banner"](/images/500K/banner.png "500K banner") + +We are happy to announce that Kiwi TCMS has been downloaded more than +500000 times! +You can check the real-time stats +[here](https://hub.docker.com/v2/repositories/kiwitcms/kiwi/). + +Thank you very much and Happy Testing! + + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2021-07-01-enterprise-version-10.1.1.rst b/content/2021-07-01-enterprise-version-10.1.1.rst new file mode 100644 index 00000000..03ca6400 --- /dev/null +++ b/content/2021-07-01-enterprise-version-10.1.1.rst @@ -0,0 +1,73 @@ +Kiwi TCMS Enterprise 10.1.1-mt +############################## + +:headline: support for Keycloak authentication and publicly readable tenants +:date: 2021-07-01 16:00 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS Enterprise version 10.1.1-mt! + +**IMPORTANT:** this release includes support for authentication via +Keycloak and support for enabling read-only view of tenants data for +anonymous users. + + +Docker images:: + + hub.kiwitcms.eu/kiwitcms/enterprise 10.1.1-mt d61e243dc4f5 1.19GB + + +Changes since Kiwi TCMS Enterprise 10.1-mt +------------------------------------------ + + +- Based on Kiwi TCMS v10.1 +- Fix URL to Python Social Auth documentation +- Support read-only view on tenants for anonymous users. Contains a + database migration to rename ``on_trial`` field to ``publicly_readable`` +- Document initial configuration. Site administrators should add the + ``tenants.change_tenant`` permission to users/groups who are allowed + to make their tenants publicly visible. Fixes + `Issue #87 `_, + references + `Issue #88 `_ +- Document the build process. Fixes + `Issue #89 `_ +- Verify support for Keycloak logins. Fixes + `Issue #86 `_ +- Update kiwitcms-github-app from 1.2.4 to 1.3.0 +- Update kiwitcms-tenants from 1.5.0 to 1.6.0 + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +If you are using Kiwi TCMS as a Docker container then:: + + cd path/containing/docker-compose/ + docker-compose down + docker-compose pull + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Refer to +`our documentation `_ +for more details! + +Happy testing! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- `Give ⭐ on GitHub `_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a customer `_ and help us sustain development diff --git a/content/2021-07-12-version-10.2.rst b/content/2021-07-12-version-10.2.rst new file mode 100644 index 00000000..050e4f5f --- /dev/null +++ b/content/2021-07-12-version-10.2.rst @@ -0,0 +1,161 @@ +Kiwi TCMS 10.2 +############## + +:headline: improvement and bug-fix release +:date: 2021-07-12 11:40 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 10.2! + +**IMPORTANT:** this is a small release including upgrades to 3rd party libraries +(including security related updates), several improvements and bug fixes. +It is the eleventh release to include contributions via our +`open source bounty program `_! + +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:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 71b5c2a3dee4 972 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB + + +Changes since Kiwi TCMS 10.1 +---------------------------- + +Improvements & security updates +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Update django from 3.2.3 to 3.2.5 +- Update django-guardian from 2.3.0 to 2.4.0 +- Update django-tree-queries from 0.5.1 to 0.5.2 +- Update psycopg2 from 2.8.6 to 2.9.1 +- Update python-gitlab from 2.7.1 to 2.9.0 +- Update node_modules/marked from 2.0.3 to 2.1.3 +- Update node_modules/html5sortable from 0.11.1 to 0.13.2 +- Update node_modules/prismjs from 1.23.0 to 1.24.1 +- Multiple select for filters on Telemetry pages. Fixes + `Issue #1940 `_ + (Shantanu Verma + Alex Todorov) +- Allow editting TestCase ``setup_duration`` & ``testing_duration`` fields. + References + `Issue #1923 `_ (@APiligrim + Alex Todorov) +- Move several checks to Dashboard page instead of performing them on + every request (Ivajlo Karabojkov) +- Fix grammatical error in documentation (Kushal Beniwal) +- Add health check for Issue Tracker configuration. Fixes + `Issue #97 `_ +- Document API URL field for Jira integration. Closes + `Issue #2443 `_ + + +Settings +~~~~~~~~ + +- ``tcms.core.middleware.CheckSettingsMiddleware`` has been removed +- ``tcms.core.middleware.CheckUnappliedMigrationsMiddleware`` has been removed + + +API +~~~ + +- Method ``Version.filter()`` now returns new field called ``product__name`` +- Method ``Build.filter()`` now returns new field called ``version__value`` +- Methods ``Build.filter()``, ``Version.filter()`` and ``TestPlan.filter()`` + will now order their results by ``product``/``version`` and then ``id``. +- Method ``Telemetry.breakdown()`` now returns only distinct results + + +Bug fixes +~~~~~~~~~ + +- Make error messages in admin forms more legible. Fixes + `Issue #2404 `_ +- Large images will now fit into the available space on the screen, + e.g. inside test case description cards. Fixes + `Issue #2220 `_ + + +Refactoring and testing +~~~~~~~~~~~~~~~~~~~~~~~ + +- Add automated tests for missing coverage in ``kiwi_auth.admin`` References + `Issue #1607 `_ (Mariyan Garvanski) +- Apply eslint fixes (@sonyagennova + Alex Todorov) +- Refactor ``TestExecution.add_link`` method to use ModelForm and extend tests. Closes + `Issue #1327 `_ (Rosen Sasov + Alex Todorov) +- Use context manager when opening files to make pylint happier +- Simplify 2 UI buttons on TestRun page +- Enable ``doc8`` for README and CHANGELOG and fix formatting errors + + +Translations +~~~~~~~~~~~~ + +- Updated `Czech translation `_ +- Updated `French translation `_ +- Updated `German translation `_ +- Updated `Hungarian translation `_ +- Updated `Japanese translation `_ +- Updated `Polish translation `_ +- Updated `Russian translation `_ +- Updated `Slovenian translation `_ + + +Kiwi TCMS Enterprise v10.2-mt +----------------------------- + +- Based on Kiwi TCMS v10.2 +- Update django-ses from 2.0.0 to 2.1.1 +- Update django-python3-ldap from 0.11.4 to 0.12.0 +- Update documentation around initial config + +**IMPORTANT:** Kiwi TCMS Enterprise container images are available only to subscribers! + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +If you are using Kiwi TCMS as a Docker container then:: + + cd path/containing/docker-compose/ + docker-compose down + docker-compose pull + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Refer to +`our documentation `_ +for more details! + +Happy testing! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- `Give ⭐ on GitHub `_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a customer `_ and help us sustain development diff --git a/content/2021-08-11-version-10.3.rst b/content/2021-08-11-version-10.3.rst new file mode 100644 index 00000000..127c5e27 --- /dev/null +++ b/content/2021-08-11-version-10.3.rst @@ -0,0 +1,144 @@ +Kiwi TCMS 10.3 +############## + +:headline: small improvement and bug-fix release +:date: 2021-08-11 16:05 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 10.3! + +**IMPORTANT:** this is a small release which includes several improvements, +bug fixes, internal refactoring and updated translations. +It is the twelveth release to include contributions via our +`open source bounty program `_! + +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) + +Container images:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest bd28c4b064f5 579 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB + + +Changes since Kiwi TCMS 10.2 +---------------------------- + +Improvements +~~~~~~~~~~~~ + +- Update bleach from 3.3.0 to 4.0.0 +- Update django from 3.2.5 to 3.2.6 +- Update django-colorfield from 0.4.1 to 0.4.2 +- Update django-tree-queries from 0.5.2 to 0.6.0 +- Update python-bugzilla from 3.0.2 to 3.1.0 +- Update python-gitlab from 2.9.0 to 2.10.0 +- Update node_modules/html5sortable from 0.13.2 to 0.13.3 +- Docker image is now based on Red Hat's Universal Base Image instead of + CentOS 8. See https://www.redhat.com/en/blog/introducing-red-hat-universal-base-image and + https://catalog.redhat.com/software/containers/ubi8/ubi-minimal/5c359a62bed8bd75a2c3fba8. + + **Important:** + + The ``mysql`` and ``psql`` binaries in the container image are not available anymore! + Backup and restore instructions have been updated accordingly, see + https://kiwitcms.org/blog/atodorov/2018/07/30/how-to-backup-docker-volumes-for-kiwi-tcms/. + +- Use ``initial_setup`` command to create public tenant in case we're running a multi-tenant + instance. References + `Enterprise #88 `_ (Ivajlo Karabojkov) +- Document that for Jira integration we use API tokens + + +Bug fixes +~~~~~~~~~ + +- Fix a bug where drop-down selectors for test plans would not show any values when + product is changed. Fixes + `Issue #2467 `_ + + +Refactoring and testing +~~~~~~~~~~~~~~~~~~~~~~~ + +- Add tests for missing coverage in ``kiwi_auth.admin``. References + `Issue #1607 `_ + (Mariyan Garvanski) +- Fix some eslint issues and formatting in ``testcases/js/get.js`` +- Use shorter URL when cloning test cases from TP page. References + `Issue #1054 `_ +- Limit URI size to 10KiB. This alone should allow for more than 1000 PKs + specified for cloning. In addition Django itself limits the maximum number of + GET/POST fields to 1000 via the ``DATA_UPLOAD_MAX_NUMBER_FIELDS`` setting, + see https://docs.djangoproject.com/en/3.2/ref/settings/#data-upload-max-number-fields. + Closes + `Issue #1054 `_ + + +Translations +~~~~~~~~~~~~ + +- Updated `Chinese Simplified translation `_ +- Updated `German translation `_ +- Updated `Hungarian translation `_ +- Updated `Portuguese, Brazilian translation `_ +- Updated `Slovenian translation `_ + + +Kiwi TCMS Enterprise v10.3-mt +----------------------------- + +- Based on Kiwi TCMS v10.3 +- Container image based on Red Hat Universal Base Image +- Update django-ses from 2.1.1 to 2.2.1 +- Update python3-saml from 1.10.1 to 1.11.0 +- Add GitLab login icon + +**IMPORTANT:** Kiwi TCMS Enterprise container images are available only to subscribers! + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +If you are using Kiwi TCMS as a container then:: + + cd path/containing/docker-compose/ + docker-compose down + docker-compose pull + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Refer to +`our documentation `_ +for more details! + +Happy testing! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- `Give ⭐ on GitHub `_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a customer `_ and help us sustain development diff --git a/content/2021-09-01-hackconf2021.markdown b/content/2021-09-01-hackconf2021.markdown new file mode 100644 index 00000000..aea1c4a3 --- /dev/null +++ b/content/2021-09-01-hackconf2021.markdown @@ -0,0 +1,70 @@ +Title: Win 6 SUPERFAN tickets for HackConf 2021 +Headline: by supporting Kiwi TCMS +date: 2021-09-01 16:25 +comments: true +og_image: images/banners/hackconf2021.png +twitter_image: images/banners/hackconf2021.png +tags: community, events + + +[HackConf](https://hackconf.bg/) is one of the premium developer conferences in Bulgaria. +Over the years Kiwi TCMS and HackConf have collaborated multiple times and our history goes +way back to before the first edition of the conference! +We're happy to announce that Kiwi TCMS will be giving away 6 SUPERFAN +tickets for HackConf 2021 in order to celebrate their 6th anniversary! + +All 6 tickets include: + +- Conference live stream access (online due to COVID-19), sessions are in English +- Ability to ask questions during the live stream +- Virtual Goodie Bag with valuable content & digital treats +- Special Physical Goodie Bag delivered to your home. + ** Shipping is available only for the territory of Bulgaria. + + +How to win a ticket +------------------- + +We need your support in order to become part of GitLab's open source family! +We kindly ask you to upvote the first comment at +[https://gitlab.com/gitlab-org/gitlab/-/issues/334558](https://gitlab.com/gitlab-org/gitlab/-/issues/334558)! + + +```gherkin +Scenario: help Kiwi TCMS become part of GitLab’s open source family + Given: navigate your browser to http://tinyurl.com/KiwiTCMS + And: log into GitLab via the "Sign in / Register" button + And: complete the login / registration process + When: click the 👍 icon under the first comment + Then: wait for the winners to be announced! +``` + +!["GitLab steps"](/images/gitlab-call-to-action.png) + +Thank you very much and Happy Testing! + +Winners announcement +-------------------- + +Winners will be selected from all voters, excluding Kiwi TCMS team members, HackConf organizers +and GitLab affiliated accounts. The accounts which have participated can be verified with +`curl https://gitlab.com/api/v4/projects/gitlab-org%2Fgitlab/issues/334558/participants`. + +Winners will be announced on Oct 6th 2021 in a blog post on our website. We will try our best to +get in touch with all winners but we also ask you to get in touch with us if you see your username! + + + + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Give 👍 on GitLab](https://gitlab.com/gitlab-org/gitlab/-/issues/334558); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2021-09-17-nominate-mlh-opensource-awards.markdown b/content/2021-09-17-nominate-mlh-opensource-awards.markdown new file mode 100644 index 00000000..eb31a746 --- /dev/null +++ b/content/2021-09-17-nominate-mlh-opensource-awards.markdown @@ -0,0 +1,60 @@ +Title: Please nominate Kiwi TCMS at MLH Open Source Awards +headline: and help us show what we do to a bigger audience +date: 2021-09-17 21:40 +comments: true +og_image: images/mlh/opensource_awards_banner.png +twitter_image: images/mlh/opensource_awards_banner.png +tags: community + +MLH Nomination + +Last year Kiwi TCMS started +[partnering]({filename}2020-10-13-partnership-mlh-fellowship.markdown) +with the MLH Fellowship open source program. During the span of 3 semesters +fellows received mentorship and career advice from us. They were also able +to work on +[20+ issues](https://github.com/kiwitcms/Kiwi/issues?q=is%3Aopen+is%3Aissue+label%3A%22MLH+Fellowship%22) +the majority of which have been complete. + +For that we kindly ask the open source community to nominate Kiwi TCMS at the +[MLH Open Source Awards](https://fellowship.mlh.io/opensourceawards). + + +*Steps to reproduce:* + +1. Go to +2. Click the **Submit a Nomination** button +3. Follow the instructions on screen! + + +*Expected results:* + +1. It should take you 2 minutes +2. Your submission is recorded by MLH + + +Why are we doing this +--------------------- + +MLH is recognizing extraordinary open source projects and communities. It is up to you, +our community members and the general public to decide whether Kiwi TCMS qualifies +or not. Winning this award will let us show what we do before a larger audience! + + +Thank you for supporting Kiwi TCMS and happy testing! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Give 👍 on GitLab](https://gitlab.com/gitlab-org/gitlab/-/issues/334558); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2021-09-21-websummit2021.markdown b/content/2021-09-21-websummit2021.markdown new file mode 100644 index 00000000..4054caa2 --- /dev/null +++ b/content/2021-09-21-websummit2021.markdown @@ -0,0 +1,49 @@ +Title: Meet Kiwi TCMS at WebSummit 2021 in Lisbon +date: 2021-09-21 16:15 +comments: true +og_image: images/conf/websummit/WS21_landscapeStartup.jpg +twitter_image: images/conf/websummit/WS21_landscapeStartup.jpg +tags: events + + +Kiwi TCMS is happy to announce that our first post-COVID live presence +will be at [WebSummit 2021](https://websummit.com/), Nov 1-4 in Lisbon, Portugal. +We're joining as a [featured startup](https://websummit.com/startups/featured-startups) +as part of the ALPHA program in category *Enterprise Software Solutions*. + +Kiwi TCMS will have an on-site presence during the exhibition (1 day) where you can +easily find us. We've also applied to the +[Startup Showcase](https://websummit.com/startups/startup-showcase) track where you can +see Alex present on stage. In addition, if all goes +well our team will be joined by Alexandre Neto of QCooperative who is leading +the effort to adopt Kiwi TCMS for testing the QGIS open source project. More on that +[here](https://www.youtube.com/watch?v=Wob_L_SrEwE). + + +Exact schedules are still unknown at this stage so you will have to ping us via email/Twitter +or find us on the conference floor if you want to meet. + +Below is our video submission to the organizers: + + + + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Give 👍 on GitLab](https://gitlab.com/gitlab-org/gitlab/-/issues/334558); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2021-10-05-version-10.4.rst b/content/2021-10-05-version-10.4.rst new file mode 100644 index 00000000..56fe2d29 --- /dev/null +++ b/content/2021-10-05-version-10.4.rst @@ -0,0 +1,185 @@ +Kiwi TCMS 10.4 +############## + +:headline: several improvements and bug-fix release +:date: 2021-10-05 13:15 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 10.4! + +**IMPORTANT:** this is a small release which includes several improvements, +bug fixes, internal refactoring and updated translations. +It is the thirteenth 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) + +Container images:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 10eb8f04cccd 590 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB + + +Changes since Kiwi TCMS 10.3 +---------------------------- + +Security +~~~~~~~~ + +- Update prismjs from 1.24.1 to 1.25.0. Includes patches against a + Regular Expression Denial of Service vulnerability. + See https://snyk.io/vuln/SNYK-JS-PRISMJS-1585202 + + +Improvements +~~~~~~~~~~~~ + +- Update bleach from 4.0.0 to 4.1.0 +- Update django from 3.2.6 to 3.2.7 +- Update django-colorfield from 0.4.2 to 0.4.3 +- Update pygithub from 1.54.1 to 1.55 +- Update pygments from 2.9.0 to 2.10.0 +- Update python-gitlab from 2.10.0 to 2.10.1 +- Allow filtering by TestRun ID in Test Case Search page +- Update test execution prefix in list of executions on TestRun page. + Now includes both TE and TC numbers before the summary link +- Allow search by translated names on Test Run page +- Redirect "ADMIN -> Users and groups" menu item according to tenancy +- Allow creation of new test run from selected test cases inside existing test + run. For example only select cases which are currently failing and re-test + against a different build! +- The ``initial_setup`` command will create a schema called "empty" when executed + inside a multi-tenant setup. Refs + `Issue #127 `_ + + +Settings +~~~~~~~~ + +- Update values for ``MODERNRPC_HANDLERS`` setting +- Rename ``SafeJSONRPCHandler`` to ``KiwiTCMSJsonRpcHandler`` +- New RPC handler class ``KiwiTCMSXmlRpcHandler`` + +.. warning:: + + If you had manipulated the value of MODERNRPC_HANDLERS make sure that + you update to the new class names! + + +Database +~~~~~~~~ + +- New migrations for altered meta options + + +API +~~~ + +- ``TestCase.create`` method accepts ``setup_duration`` and ``testing_duration`` fields. + Refs `Issue #1923 `_ (Mfon Eti-mfon) +- ``TestCase.update`` method acepts ``setup_duration`` and ``testing_duration`` fields. + Refs `Issue #1923 `_ (Mfon Eti-mfon) +- New method ``Testing.individual_test_case_health`` +- Timedelta values are serialized to float, representing seconds + + +Bug fixes +~~~~~~~~~ + +- Fix wrong URL parameter passed to test cases clone page +- Show translated execution statuses for TestRun page. Closes + `Issue #1966 `_ +- Properly initialize Product value on TestRun Edit page. Closes + `Issue #2514 `_ +- Clone duration fields when cloning a test case + + +Refactoring and testing +~~~~~~~~~~~~~~~~~~~~~~~ + + +- New automated test scenario for ``kiwi_auth.admin`` (Mariyan Garvanski) +- Unify similar strings to reduce translations burden +- Inside buildroot ``PyNaCl`` needs ``make`` in order to build a wheel package +- Adjust values for parametrized test to match existing scenarios +- Fix code smells from newer pylint +- eslint fixes for the JavaScript files + + +Translations +~~~~~~~~~~~~ + + +- Updated `Chinese Simplified translation `_ +- Updated `German translation `_ +- Updated `Italian translation `_ +- Updated `Portuguese, Brazilian translation `_ +- Updated `Russian translation `_ + + + +Kiwi TCMS Enterprise v10.4.1-mt +------------------------------- + +- Based on Kiwi TCMS v10.4 +- Update django-ses from 2.2.1 to 2.3.0 +- Update kiwitcms-github-app from 1.3.0 to 1.3.1 +- Update python3-saml from 1.11.0 to 1.12.0 +- Update social-auth-app-django from 4.0.0 to 5.0.0 +- Use initial_setup during testing. Closes + `Issue #88 `_ +- Fix new pylint issues and start using f-strings +- Test "ADMIN -> Users and Groups" menu redirect + + +**IMPORTANT:** Kiwi TCMS Enterprise container images are available only to subscribers! + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +If you are using Kiwi TCMS as a 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! + +- Nominate Kiwi TCMS at `MLH Open Source Awards `_; +- `Give ⭐ on GitHub `_; +- `Give 👍 on GitLab `_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a customer `_ and help us sustain development diff --git a/content/2021-10-06-winners-hackconf2021.markdown b/content/2021-10-06-winners-hackconf2021.markdown new file mode 100644 index 00000000..f360f609 --- /dev/null +++ b/content/2021-10-06-winners-hackconf2021.markdown @@ -0,0 +1,97 @@ +Title: Announcing winners of 6 tickets for HackConf 2021 +Headline: thank you for supporting Kiwi TCMS +date: 2021-10-06 14:00 +comments: true +og_image: images/banners/hackconf2021.png +twitter_image: images/banners/hackconf2021.png +tags: community, events + + +Here are the winners of our [ticket giveaway]({filename}2021-09-01-hackconf2021.markdown): + +- Martin Ayvazov +- Ralitsa Georgieva +- Teodora Pashina - Dimitrova +- Gabriela Luhova +- Lyuboslava Arshinkova +- Yoan Bachev + +**Attention winners:** please get in touch with us at *info@kiwitcms.org* to claim your tickets. +We will ask you to validate your GitLab account by performing a quick action which will be disclosed +to you via email! + + +Raw data from our +[winner selection script](https://github.com/kiwitcms/api-scripts/pull/1) below: + +``` +***** WINNER #1: Martin Ayvazov +{'avatar_url': 'https://secure.gravatar.com/avatar/eea811553e2b8aa3dd7ef670c3cd3552?s=80&d=identicon', + 'id': 9640539, + 'name': 'Martin Ayvazov', + 'state': 'active', + 'username': 'majvazov', + 'web_url': 'https://gitlab.com/majvazov'} +***** WINNER #2: Ralitsa Georgieva +{'avatar_url': 'https://secure.gravatar.com/avatar/43aa50437fc245766bc3e6072777c056?s=80&d=identicon', + 'id': 9869926, + 'name': 'Ralitsa Georgieva', + 'state': 'active', + 'username': 'ralitsa.georgieva', + 'web_url': 'https://gitlab.com/ralitsa.georgieva'} +***** WINNER #3: Teodora Pashina - Dimitrova +{'avatar_url': 'https://secure.gravatar.com/avatar/beca49c67ce9862a8ecb8deff94780a7?s=80&d=identicon', + 'id': 9869893, + 'name': 'Teodora Pashina - Dimitrova', + 'state': 'active', + 'username': 'tedi.pashina', + 'web_url': 'https://gitlab.com/tedi.pashina'} +***** WINNER #4: Gabriela Luhova +{'avatar_url': 'https://secure.gravatar.com/avatar/92e863a1e3df1122cc0beb2477a375be?s=80&d=identicon', + 'id': 9641952, + 'name': 'Gabriela Luhova', + 'state': 'active', + 'username': 'gabriela.luhova', + 'web_url': 'https://gitlab.com/gabriela.luhova'} +***** WINNER #5: Lyuboslava Arshinkova +{'avatar_url': 'https://secure.gravatar.com/avatar/1e0a308ddbe3b8ab9660ec7702fa0d6d?s=80&d=identicon', + 'id': 9869399, + 'name': 'Lyuboslava Arshinkova', + 'state': 'active', + 'username': 'arshinkovalyuboslava', + 'web_url': 'https://gitlab.com/arshinkovalyuboslava'} +***** WINNER #6: Yoan Bachev +{'avatar_url': 'https://gitlab.com/uploads/-/system/user/avatar/7630581/avatar.png', + 'id': 7630581, + 'name': 'Yoan Bachev', + 'state': 'active', + 'username': 'yobachev', + 'web_url': 'https://gitlab.com/yobachev'} +``` + + +Video recording of the selection process: + + + + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- [Nominate Kiwi TCMS at MLH Open Source Awards](https://fellowship.mlh.io/opensourceawards); +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Give 👍 on GitLab](https://gitlab.com/gitlab-org/gitlab/-/issues/334558); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2021-10-29-kiwitcms-websummit2021-vennue-map.markdown b/content/2021-10-29-kiwitcms-websummit2021-vennue-map.markdown new file mode 100644 index 00000000..e106abc3 --- /dev/null +++ b/content/2021-10-29-kiwitcms-websummit2021-vennue-map.markdown @@ -0,0 +1,59 @@ +Title: Catch up with Kiwi TCMS at WebSummit 2021 Lisbon +Headline: Wed, Nov 03, Pavilion 3, ALPHA 4, Stand A407 +date: 2021-10-29 16:00 +comments: true +og_image: images/conf/websummit/2021_venue_map.png +twitter_image: images/conf/websummit/2021_venue_map.png +tags: events + + +![Venue map](/images/conf/websummit/2021_venue_map.png "venue map") + +We're happy to announce that +Kiwi TCMS will host an exhibition stand at [WebSummit 2021](https://websummit.com/) in Lisbon. +You can find us on Wednesday, November 03, +**Stand number: A 407, Industry category: Pavilion 3, ALPHA 4**. + + +
+ black boxes +

+ At the exhibition stand you will have the opportunity to perform some real + black-box testing, + learn about Salience bias, Peltzman effect and Wason's experiments and take a photo with + our lovely mascot. +

+ +

+ The Kiwi TCMS team will be there to answer all of your questions regarding + open source, community, support, various integrations and the differences between + Free, SaaS and Enterprise + subscriptions! +

+ +

+ If you still need more convincing check-out our + WebSummit SHOWCASE video + and how + QGIS organizes their testing with Kiwi TCMS. +

+

+ + Fun fact: adoption of Kiwi TCMS is lead by Alexandre Neto - a QGIS community member from Portugal. + +

+
+ + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Give 👍 on GitLab](https://gitlab.com/gitlab-org/gitlab/-/issues/334558); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2021-11-26-version-10.5.rst b/content/2021-11-26-version-10.5.rst new file mode 100644 index 00000000..60186903 --- /dev/null +++ b/content/2021-11-26-version-10.5.rst @@ -0,0 +1,247 @@ +Kiwi TCMS 10.5 +############## + +:headline: improvements, new features, bug-fixes and more +:date: 2021-11-26 11:20 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 10.5 which celebrates the +very positive reception we had at +`WebSummit 2021 <{filename}2021-10-29-kiwitcms-websummit2021-vennue-map.markdown>`_! + +**IMPORTANT:** +this is a medium sized release which contains various improvements and new features, +database changes, new settings and API methods, bug-fixes, internal refactoring and +updated translations. + +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) + +--- + + Container images:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 0574b19b5d66 583 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB + +**IMPORTANT:** version tagged +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +Changes since Kiwi TCMS 10.4 +---------------------------- + +Improvements +~~~~~~~~~~~~ + +- Update django from 3.2.7 to 3.2.9 +- Update django-colorfield from 0.4.3 to 0.4.5 +- Update django-extensions from 3.1.3 to 3.1.5 +- Update django-grappelli from 2.15.1 to 2.15.3 +- Update django-tree-queries from 0.6.0 to 0.7.0 +- Update jira from 3.0.1 to 3.1.1 +- Update markdown from 3.3.4 to 3.3.6 +- Update mysqlclient from 2.0.3 to 2.1.0 +- Update psycopg2 from 2.9.1 to 2.9.2 +- Display a warning if connection doesn't use HTTPS (Ivajlo Karabojkov) +- Account registration page can be turned on/off via settings. Fixes + `Issue #2500 `_ +- TestCase Search page can now filter by TestPlan. Fixes + `Issue #2283 `_ +- Allow template selection when creating new test case. Fixes + `Issue #957 `_ +- TestCase page now allows specification of properties, e.g. mobile devices + on which the test should be executed. This feature serves as a building + block for + `Issue #1843 `_, + `Issue #1931 `_ and + `Issue #1344 `_ but isn't active anywhere else inside + Kiwi TCMS at the moment +- TestExecution properties will be displayed inside TestRun page if they + have been specified +- Rearrange help-text in admin page for better visibility +- Switch to official Postgres image from Docker Hub +- Switch to official MariaDB image from Docker Hub + +**Warning:** + + For Postgres data dir changed from ``/var/lib/pgsql/data`` to ``/var/lib/postgres/data``. + Environment variables inside docker-compose file changed as well, + see ``docker-compose.postgres``. + + For MariaDB data dir changed from ``/var/lib/mysql/data`` to ``/var/lib/mysql``. + ``MYSQL_CHARSET`` & ``MYSQL_COLLATION`` environment variables are no longer + recognized. Instead they are present as command line options passed to the container, + see ``docker-compose.yml``. Previous workaround for these variables was also removed. + + If you want to migrate from the previous ``centos/mariadb-103-centos7`` or + ``centos/postgresql-12-centos7`` containers to ``mariadb:latest`` and ``postgres:latest`` + make sure to update your container control files! + + +Settings +~~~~~~~~ + +- New setting ``REGISTRATION_ENABLED``, default ``True``, Can be controlled via + environment variable ``KIWI_REGISTRATION_ENABLED``. When set to ``False`` + will disable account registration page + + +Database +~~~~~~~~ + +- New model ``testcases.Property`` +- New model ``testcases.Template`` +- New model ``testruns.TestExecutionProperty`` +- Remove ``unique_together`` constraint for ``testruns.TestExecution`` model. + This makes it possible to add multiple executions for the same test case in + the same test run + +**Warning:** + + These newly added models create additional permission labels with names + *testcases | template | Can .... template*, + *testcases | property | Can .... property*, + *testruns | test execution property | Can .... test execution property* + + Execute ``manage.py refresh_permissions`` and/or assign them manually to + users and groups if they should be able to interact with the new objects! + + +API +~~~ + +- Method ``TestCase.filter()`` now returns additional fields + ``setup_duration``, ``testing_duration``, ``expected_duration`` - all + serialized in seconds. Refs + `Issue #1923 `_ (Mfon Eti-mfon) +- Method ``User.filter()`` will no longer return fields + ``groups``, ``user_permissions``, ``date_joined`` and ``last_login`` +- New method ``TestExecution.properties()`` +- New method ``TestCase.properties()`` +- New method ``TestCase.add_property()`` +- New method ``TestCase.remove_property()`` + + +Bug fixes +~~~~~~~~~ + +- Unify tab size & tab indentation b/w Python & SimpleMDE. Fixes + `Issue #1802 `_ +- Use ``sane_list extension`` for rendering consecutive lists in markdown. Closes + `Issue #2511 `_ + +**Warning:** + + The visual markdown editor explicitly didn't follow markdown syntax rules + by allowing indentation with 2 spaces and treating tabs as 2 spaces as well. + See "Indentation/Tab Length" at https://python-markdown.github.io/#differences + + The backend markdown rendering engine explicitly followed an undefined behavior + which happens to be different from what the visual markdown editor does. + See "Consecutive Lists" at https://python-markdown.github.io/#differences + + The previous 2 changes make sure the visual editor and backend rendering engine + follow the same rules. This may result is "broken" display of existing text which + doesn't follow the markdown syntax rules. If you spot such text just edit to make + it render the way you wish. + +- Fix broken URL and minor updates to documentation +- Update GitLab tracker integration documentation to avoid confusion. Closes + `Issue #2559 `_ +- Limit tag input length to 255 characters. Closes + `Issue #2176 `_ +- Make error notifications in Admin to display with red color +- Select only visible rows for bulk-update in TestRun page. Fixes + `Issue #2222 `_ +- Remove ``Cache-Control`` header from httpd. Closes + `Issue #443 `_ + + +Refactoring and testing +~~~~~~~~~~~~~~~~~~~~~~~ + +- Add permissions test for add-hyperlink-bulk menu. Closes + `Issue #716 `_ +- Add explicit tests for issue tracker integration with GitLab.com +- Tests teardown - remove comments & close issues on GitLab.com +- Add missing ``rlPhaseEnd`` for docker tests +- Multiple pylint and eslint fixes + + +Translations +~~~~~~~~~~~~ + +- Updated `French translation `_ +- Updated `Hungarian translation `_ +- Updated `Slovenian translation `_ + + + +Kiwi TCMS Enterprise v10.5-mt +----------------------------- + +- Based on Kiwi TCMS v10.5 +- Update django-python3-ldap from 0.12.0 to 0.12.1 +- Update django-ses from 2.3.0 to 2.3.1 +- Update kiwitcms-tenants from 1.7.0 to 1.8.0 + + + Private images:: + + hub.kiwitcms.eu/kiwitcms/enterprise 10.5-mt 3e597c91d057 804 MB + hub.kiwitcms.eu/kiwitcms/version 10.5 0574b19b5d66 583 MB + + +**IMPORTANT:** version tagged and Enterprise +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +Then execute the commands:: + + cd path/containing/docker-compose/ + docker-compose down + docker-compose pull + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Refer to +`our documentation `_ +for more details! + +Happy testing! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- `Give ⭐ on GitHub `_; +- `Give 👍 on GitLab `_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a subscriber `_ and help us sustain development diff --git a/content/2021-12-06-fosdem2022.markdown b/content/2021-12-06-fosdem2022.markdown new file mode 100644 index 00000000..4f9bbdd4 --- /dev/null +++ b/content/2021-12-06-fosdem2022.markdown @@ -0,0 +1,59 @@ +Title: Call for participation: Testing and Automation devroom, FOSDEM'22 +Headline: organized by Kiwi TCMS, Linaro & SUSE +date: 2021-12-06 19:40 +comments: true +og_image: images/fosdem/2022/banner.png +twitter_image: images/fosdem/2022/banner.png +tags: community, events + + +!["Cfp banner"](/images/fosdem/2022/banner.png "Cfp banner") + +Attention testers! On behalf of +[*Testing and Automation devroom*](https://fosdem-testingautomation.github.io/) +we'd like to announce that call for participation is now open. + +Here are some ideas for topics that are a good fit for this devroom: + +Testing in the real, open source world + +- War stories/strategies for testing large scale or complex projects +- Demystify resource e.g. systems/device/cloud provisioning in a CI loop +- Tools that extend the ability to test low-level code, e.g. bootloaders, init +systems, etc. +- Projects that are introducing new/interesting ways of testing "systems" +- Address the automated testing frameworks fragmentation +- Lessons learned from testing + +Cool Tools (good candidates for lightning talks) + +- How your open source tool made developing quality software better +- What tools do you use to setup your CI/CD +- Combining projects/plugins/tools to build amazing things "Not enough people in +the open source community know how to use $X, but here's a tutorial on how to +use $X to make your project better." + + +In the past the devroom has seen both newbies/students and experienced professionals and +past speakers as part of the audience and talks covering from beginner/practical +to advanced/abstract topics. If you have doubts then submit your proposal and +leave a comment for the devroom managers and we'll get back to you. + +Checkout + for more information! + + +Happy Testing! + + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2021-12-14-plugins-version-11.rst b/content/2021-12-14-plugins-version-11.rst new file mode 100644 index 00000000..97614152 --- /dev/null +++ b/content/2021-12-14-plugins-version-11.rst @@ -0,0 +1,37 @@ +New versions of automation frameworks plugins +############################################# + +:headline: future API compatibility +:date: 2021-12-14 13:00 +:comments: true +:tags: releases + + +Kiwi TCMS is pleased to announce new versions of our plugins for different +test automation frameworks: + +- `tap-plugin `_ +- `junit.xml-plugin `_ +- `JUnit 5 plugin `_ +- `Robot Framework plugin `_ +- `Django test runner plugin `_ + +The new versions are future compatible with upcoming Kiwi TCMS v11 and also with existing +Kiwi TCMS v10.x installations. Check-out the pages above for individual instructions. + + +Happy testing! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- `Give ⭐ on GitHub `_; +- `Give 👍 on GitLab `_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a subscriber `_ and help us sustain development diff --git a/content/2022-01-06-version-10.5.1.rst b/content/2022-01-06-version-10.5.1.rst new file mode 100644 index 00000000..fd6be2e2 --- /dev/null +++ b/content/2022-01-06-version-10.5.1.rst @@ -0,0 +1,66 @@ +Kiwi TCMS Enterprise 10.5.1 +########################### + +:headline: improvements and bug-fixes +:date: 2022-01-06 13:45 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS Enterprise version 10.5.1! + +**IMPORTANT:** +this is a small release which contains minor improvements and bug-fixes. + +You can explore everything at +`https://public.tenant.kiwitcms.org `_! + + +Kiwi TCMS Enterprise v10.5.1-mt +------------------------------- + +- Based on Kiwi TCMS v10.5 +- Update django-python3-ldap from 0.13.0 to 0.13.1 +- Update kiwitcms-github-app from 1.3.1 to 1.3.2 + + Private images:: + + hub.kiwitcms.eu/kiwitcms/enterprise 10.5.1-mt c4d745bd914c 806MB + + +**IMPORTANT:** version tagged and Enterprise +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +Then execute the commands:: + + cd path/containing/docker-compose/ + docker-compose down + docker-compose pull + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Refer to +`our documentation `_ +for more details! + +Happy testing! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- `Give ⭐ on GitHub `_; +- `Give 👍 on GitLab `_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a subscriber `_ and help us sustain development diff --git a/content/2022-01-24-feature-environment-and-properties.markdown b/content/2022-01-24-feature-environment-and-properties.markdown new file mode 100644 index 00000000..bc0863c1 --- /dev/null +++ b/content/2022-01-24-feature-environment-and-properties.markdown @@ -0,0 +1,223 @@ +Title: Feature showcase: Test matrix generation +Headline: available in Kiwi TCMS v11.0 +author: Alexander Todorov +date: 2022-01-24 19:40 +comments: true +og_image: images/features/props-and-envs/banner.png +twitter_image: images/features/props-and-envs/banner.png +tags: features + + +The upcoming Kiwi TCMS v11 contains new functionality around TestCase parameters and +TestRun environments which has an impact on how your final test execution matrix will +look like. This article provides detailed information about these features but have +in mind that they are still considered to be a technology-preview. + + +Parameters +---------- + +Consider a login functionality which accepts email address and password. Possible states +for these fields are: + +- Email address: + - `valid` - well formed email string, exists in database, access is allowed + - `invalid` - malformed email string, should not exist in the DB but this fact is not relevant to the test + - `disabled` - well formed email string, exists in database, access is not allowed + +- Password: + - `correct` - matches the value in database for the given email address + - `another` - matches the value in database which is related to another email address + - `wrong` - doesn't match the value in database + - `empty` - value is empty string, a special case of `wrong` + - `invalid` - value doesn't conform to predefined rules. May or may not be relevant to login functionality + +Depending on how the software under test is put together you can design multiple test cases. +Fundamentally however these are the same test case and the above states are input parameters to it! + +**Definition: TestCase parameters are different input values which do not fundamentally affect the result of +a test case! A TestCase with parameters will result into multiple test executions!** + +In other words you will be executing a parameterized test scenario multiple times with different input values! +Inside Kiwi TCMS the actual parameter values during execution are recorded into the `TestExecution` model +which will not change if you modify test case parameter values afterwards! + +**Definition: TestExecution parameters record a snapshot of TestCase parameters at the time when you intended +to execute a particular test scenario!** + + +Environments +------------ + +A testing environment represents the specifics of where exactly you executed your test suite. +Consider this example: + +> The default desktop environment of Fedora is GNOME, but if you prefer an alternative, +> you can download installation media which contains slightly differently defaults, e.g. +> KDE, Xfce, MATE and others, see . + +Regardless of which Fedora variant you choose the expected functionallity +of the default desktop experience is the same. However this can only be guaranteed with exhaustive +testing across all variants. Check-out the test matrix at + + + +**Definition: a TestRun environment is a set of attributes which apply to the entire test suite +at the time of execution. Usually you expect test results in different environments to be the same!** + +In Kiwi TCMS environments are represented as named containers of key/value pairs. +The same key may have multiple values! +They can be found under *ADMIN -> Everything else -> Environments*. + +Because environments are meant to affect the entire test suite they are linked to the +`TestRun` model. When creating a new test run you can select multiple `Environment` +records. + + +Test matrix generation +---------------------- + +The existing behavior in Kiwi TCMS is that when a test run is created there will be only one +test execution for every test case which is added inside this test run. + +In the Fedora example shown above some of the test cases also have their own parameters, +e.g. the *QA:Testcase_desktop_app_basic* scenario. + +**Definition: TestRun environment key/values will be combined with TestCase parameter key/values +to form the final test matrix! This opens up the possibility for combinatorial test execution +generation.** + +Once parameters and environment(s) are specified you will start seeing multiple test executions +for the same test case inside newly created test runs. By default a full-combination test matrix +will be created. The other option is to [pairwise](https://www.pairwise.org/) all key/value records. + +**Important: test execution generation works only when creating or cloning a test run that contains +test cases. This feature still does not work for test cases added after a test run is created!** + + +Environment(s) vs Tag(s) +------------------------ + +Inside Kiwi TCMS you can use both environments and tags to annotate test runs. +There are 3 important facts that hold true: + +- Tags possess only informational value, they don't influence how you perform testing; +- Environments possess informational value and govern the final test matrix; +- Environments which have a single value for each different key are the same as tags! + +!["Example from #1344"](/images/features/props-and-envs/env_from_1344.png "Example from #1344") + +If we look at this example from [Issue #1344](https://github.com/kiwitcms/Kiwi/issues/1344) we +can make out the following keys: + +- *Driver* - 2 values +- *API* - 2 values +- *Python* - 2 values +- *Java* - 1 value +- *Eclipse* - 1 value +- *Host OS* - 1 value +- *Target OS* - 1 value +- *Redistributable* - 1 value +- *Testing Type* - 1 value + +Here *Driver*, *API* and *Python* clearly should affect your test matrix. Otherwise there isn't +much point in having the different values recorded in the first place. That results in a 8x +multiplication factor for every functionality that may be affected/related to these attributes, +presumably the entire functionality of the product under test. + +*Java*, *Eclipse*, *Host OS* and *Target OS* carry only informational value but they look like +more values could be possible. If that's the case these attributes will also affect the overall +test matrix. + +*Redistributable* and *Testing Type* look like information-only attributes. They don't appear +to have any relevance to the test matrix at all. The same information-only effect can be achieved +both with environments and with tags. + +**Practical rules:** + +1. Attributes which affect a single test case should be defined as TestCase parameters +1. Attributes which affect all test cases in a suite should be defined as TestRun environment(s) +1. One big TestRun is likely the best from organizational and optimizational point of view + +You may decide to have multiple smaller test runs, usually with 1 value per environment key, +if you think that fits your workflow better. However you may be missing on some optimizations if you +choose to do so. + + +Real life example +----------------- + +To illustrate how all of these new features work let's look at +[Partitioning custom software RAID](https://fedoraproject.org/wiki/QA:Testcase_partitioning_custom_software_RAID) +test case from Fedora QA. It instructs the tester to install Linux and inside the +partitioning screen create a *Software RAID* partition, format it with a filesystem and +assign a mount point! It is expected that once installation is complete the machine will +reboot, tester will be able to login as root and the created filesystem will be available! + +Factors that could affect this functionality: + +- *Raid Level*: Fedora supports 7 of them - 0, 1, 4, 5, 6, 10 and linear. These are all different drivers + located under `/lib/modules/$(uname -r)/kernel/drivers/md` + + ./linear.ko.xz + ./raid0.ko.xz + ./raid10.ko.xz + ./raid1.ko.xz + ./raid456.ko.xz + +- *Mount Point*: `/` for example is mounted very early in the boot process, `/home` is mounted much later. + `/` also relates to rescue mode, while `/home` doesn't. `/home`, if corrupted, may affect the terminal + login process though +- *Encryption*: Yes/No. This is stackable on top of the RAID device and "should-just-work". However it is often + included into other partitioning test cases in order to discover weird issues and because it is a critical + functionality + +We may add the actual filesystem type, used to format the RAID block device, +e.g. *xfs*, *ext3*, *ext4*, but that's not needed here! Here's how this test case looks in Kiwi TCMS: + +!["RAID test case"](/images/features/props-and-envs/raid-tc-with-params.png "RAID test case") + + +Remember that Fedora comes with multiple variants for multiple CPU architectures! Of those we'll consider +*Server* and *Workstation*, which are both available for the *aarch64* and *x86_64* CPU +architectures. Here's how this can be represented inside Kiwi TCMS: + +!["Fedora variants represented as environment"](/images/features/props-and-envs/env-fedora-variants.png "Fedora variants represented as environment") + +
+
+Next we need to organize test execution for an upcoming release by creating test run(s) and +selecting environment and matrix generation type: +!["New test run with environment"](/images/features/props-and-envs/new-tr-with-env.png "New test run with environment") + +The possible outcomes are: + +- **112 test executions**: full test matrix between all Fedora variants and all RAID parameters +- **56 test executions**: 4 TR x 14 TE; one TR/variant without environment; RAID parameters are pairwised +- **16 test executions**: all Fedora variants are pairwised together with all RAID parameters + +Finally this is how the resulting test run looks like. Notice the 3 boxes icon for each +test execution, listing the actual parameters which should be used during testing: + +!["TR with environment, TE with parameters"](/images/features/props-and-envs/tr-env-and-te-props.png "TR with environment, TE with parameters") + +Environment parameters are read-only here b/c they have been copied to all test execution records. +It usually doesn't make sense to modify your environment mid-way during test execution. +If that's needed or you've made a mistake it's probably easier to create a new test run. + + +Happy Testing! + + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Give 👍 on GitLab](https://gitlab.com/gitlab-org/gitlab/-/issues/334558); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2022-01-25-version-11.0.rst b/content/2022-01-25-version-11.0.rst new file mode 100644 index 00000000..08807b33 --- /dev/null +++ b/content/2022-01-25-version-11.0.rst @@ -0,0 +1,206 @@ +Kiwi TCMS 11.0 +############## + +:headline: improvements, new features, bug-fixes and more +:date: 2022-01-25 10:00 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 11.0. + +**IMPORTANT:** +This is a new major release which contains security related updates, several improvements, +API changes, bug fixes and new 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) + +--- + + Container images:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 6600bc56a544 622 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB + +**IMPORTANT:** version tagged +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +Changes since Kiwi TCMS 10.5 +---------------------------- + +Improvements +~~~~~~~~~~~~ + +- Update Django to 3.2.11 +- Update django-colorfield from 0.4.5 to 0.6.3 +- Update django-grappelli from 2.15.3 to 3.0.2 +- Update psycopg2 from 2.9.2 to 2.9.3 +- Update pygments from 2.10.0 to 2.11.2 +- Update python-gitlab from 2.10.1 to 3.1.0 +- Update node_modules/prismjs from 1.25.0 to 1.26.0 +- Update node_modules/marked from 2.1.3 to 4.0.10 +- Admin panel now allows to view, add, edit and delete Environment records +- Allow selection of environment when creating new TestRun and display the chosen + values inside the TestRun page. Closes + `Issue #1344 `_ +- Creating a TestRun will now generate test execution matrix based on the available + environment and test case properties. Closes + `Issue #1843 `_ +- When generating a test execution matrix the supported algorithms are + "full" and "pairwise". Closes + `Issue #1931 `_ + + - Feature is enabled for test runs which contain test cases. This + feature is not shown when creating an empty test run + - This feature isn't supported when subsequently adding new test cases + to test run +- Record a random hex number under ``/Kiwi/uploads/installation-id`` + + +Detailed information about properties, environments and test matrix generation +can be found +`in a separate article <{filename}2022-01-24-feature-environment-and-properties.markdown>`_. + + +Database +~~~~~~~~ + +- New model ``testrun.Environment`` +- New model ``testrun.EnvironmentProperty`` +- New model ``testrun.Property`` + +**Warning:** + + These newly added models create additional permission labels with names + *testruns | environment | Can .... environment*, + *testruns | property | Can .... property*, + *testruns | environment property | Can .... environment property* + + Execute ``manage.py refresh_permissions`` and/or assign them manually to + users and groups if they should be able to interact with the new objects! + + +Settings +~~~~~~~~ + +- Update the value of ``MODERNRPC_METHODS_MODULES`` setting to include + modules with the new API methods + + +API +~~~ + +- Method ``TestRun.add_case`` will now return a list. + + .. warning:: + + This breaks API compatibility with older versions and will break + all plugins which rely on this method. Use plugins v11 or greater! +- Method ``TestRun.add_case`` return value will now include a field named + ``properties`` +- New methods ``Environment.properties``, ``Environment.add_property`` and + ``Environment.remove_property`` +- New method ``TestRun.properties`` + + +Bug fixes +~~~~~~~~~ + +- Send e-mail notification when adding comments to bugs. Fixes + `Issue #2232 `_ (@cmbahadir) +- Disable the "+" button when there is no related element selected. Fixes + `Issue #2561 `_ (@cmbahadir) +- When cloning test plans keep the existing test case sort order inside + the resulting test plan. Fixes + `Issue #2218 `_ (Nicolas Gelot) +- Configure en_US.UTF-8 locale inside container. Allows upload of files with + unicode names. Fixes + `Issue #2600 `_ + + +Refactoring and testing +~~~~~~~~~~~~~~~~~~~~~~~ + +- Refresh logo design +- Pylint fixes +- Pin setuptools b/c of problem with django-extensions +- Remove redundant test scenario +- Shell script refactoring + + +Translations +~~~~~~~~~~~~ + +- Updated `Chinese Simplified translation `_ +- Updated `Chinese Traditional translation `_ +- Updated `French translation `_ +- Updated `Hebrew translation `_ +- Updated `Slovenian translation `_ + + +Kiwi TCMS Enterprise v11.0-mt +----------------------------- + +- Based on Kiwi TCMS v11.0 +- Update kiwitcms-tenants from 1.8.0 to 1.11.0 + + + Private images:: + + hub.kiwitcms.eu/kiwitcms/enterprise 11.0-mt a730291750f8 846 MB + hub.kiwitcms.eu/kiwitcms/version 11.0 6600bc56a544 622 MB + + + +**IMPORTANT:** version tagged and Enterprise +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +Then execute the commands:: + + cd path/containing/docker-compose/ + docker-compose down + docker-compose pull + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Refer to +`our documentation `_ +for more details! + +Happy testing! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- `Give ⭐ on GitHub `_; +- `Give 👍 on GitLab `_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a subscriber `_ and help us sustain development diff --git a/content/2022-02-02-version-11.1.rst b/content/2022-02-02-version-11.1.rst new file mode 100644 index 00000000..ceed0923 --- /dev/null +++ b/content/2022-02-02-version-11.1.rst @@ -0,0 +1,155 @@ +Kiwi TCMS 11.1 +############## + +:headline: security improvements and bug-fixes +:date: 2022-02-02 16:10 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 11.1. + +**IMPORTANT:** +This is a small release which contains security related updates, several improvements, +bug fixes and new 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) + +--- + + Container images:: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 72099aa8ee93 629 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.2 7870085ad415 957 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1.1 49fa42ddfe4d 955 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.1 b559123d25b0 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 6.0.1 87b24d94197d 970 MB + pub.kiwitcms.eu/kiwitcms/kiwi 5.3.1 a420465852be 976 MB + +**IMPORTANT:** version tagged +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +Changes since Kiwi TCMS 11.0 +---------------------------- + +Security +~~~~~~~~ + +- Update Django from 3.2.10 to 4.0.2 to fix several fulnerabilities: + CVE-2022-22818, CVE-2022-23833, CVE-2021-45115, CVE-2021-45116, + CVE-2021-45452. Of those we believe that only + *CVE-2022-23833: Denial-of-service possibility in file uploads* may directly + impact Kiwi TCMS + + +Improvements +~~~~~~~~~~~~ + +- Update django-contrib-comments from 2.1.0 to 2.2.0 +- Update django-uuslug from 1.2.0 to 2.0.0 +- Update python-gitlab from 3.1.0 to 3.1.1 +- Update node_modules/marked from 4.0.10 to 4.0.12 + + +Database +~~~~~~~~ + +- New migration for django-simple-captcha + + +Settings +~~~~~~~~ + +- ``RECAPTCHA_PUBLIC_KEY``, ``RECAPTCHA_PRIVATE_KEY`` and ``RECAPTCHA_USE_SSL`` + are no longer in use +- New setting ``USE_CAPTCHA``, defaults to True +- The string "captcha" is added to ``INSTALLED_APPS`` + + +Bug fixes +~~~~~~~~~ + +- Fix inappropriate RPC calls causing Version and Build dropdown widgets to + display no values. Fixes + `Issue #2704 `_ + + +Refactoring and testing +~~~~~~~~~~~~~~~~~~~~~~~ + +- Add ``tzdata`` to requirements +- Replace django-recaptcha with django-simple-captcha +- Adjust /init-db view to reliably detect when applying database migrations + is complete and not exit prematurely + + +Translations +~~~~~~~~~~~~ + +- Updated `Slovenian translation `_ + + +Kiwi TCMS Enterprise v11.1-mt +----------------------------- + +- Based on Kiwi TCMS v11.1 +- Update kiwitcms-github-app from 1.3.2 to 1.3.3 +- Update django-ses from 2.3.1 to 2.4.0 +- Update python3-saml from 1.12.0 to 1.13.0 +- Workaround UnicodeDecodeError while building the docker image + + + Private images:: + + hub.kiwitcms.eu/kiwitcms/enterprise 11.1-mt df5ce509fd41 854 MB + hub.kiwitcms.eu/kiwitcms/version 11.1 72099aa8ee93 629 MB + + +**IMPORTANT:** version tagged and Enterprise +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +Then execute the commands:: + + cd path/containing/docker-compose/ + docker-compose down + docker-compose pull + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py migrate + +Refer to +`our documentation `_ +for more details! + +Happy testing! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- `Give ⭐ on GitHub `_; +- `Give 👍 on GitLab `_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a subscriber `_ and help us sustain development diff --git a/content/2022-02-28-private-docker-credentials.markdown b/content/2022-02-28-private-docker-credentials.markdown new file mode 100644 index 00000000..fd18fe43 --- /dev/null +++ b/content/2022-02-28-private-docker-credentials.markdown @@ -0,0 +1,29 @@ +Title: Container Registry Credentials for Subscribers +Headline: are now fully automated; here's how to use them +date: 2022-02-27 12:40 +comments: true + +Kiwi TCMS subscribers had to go through a manual process of registering +a username with our container registry, *hub.kiwitcms.eu* and email support +before they could access private docker images. This process is now fully +automated! + +!["private credentials card"](/images/private_docker_credentials.png "private credentials card") + +Credentials are automatically created upon subscription payment and configured for +read-only access to respective repositories based on the type of subscription. +You can find your credentials at the +[subscriptions page](https://public.tenant.kiwitcms.org/github/marketplace/plans/), +`PLUGINS -> Subscriptions`. To authenticate try + + $ docker login -u="USERNAME" -p "PASSWORD-TOKEN" hub.kiwitcms.eu + # or + $ echo "PASSWORD-TOKEN" | docker login -u="USERNAME" --password-stdin hub.kiwitcms.eu + + +If you would like to have access to private container repositories for Kiwi TCMS +checkout the [containers page]({filename}pages/containers.markdown) and +[subscribe](/#subscriptions)! + + +Happy Testing! diff --git a/content/2022-03-01-new-subscription-plans.markdown b/content/2022-03-01-new-subscription-plans.markdown new file mode 100644 index 00000000..3c2160a0 --- /dev/null +++ b/content/2022-03-01-new-subscription-plans.markdown @@ -0,0 +1,82 @@ +Title: New and updated subscription plans for Kiwi TCMS +Headline: here's what changed +date: 2022-03-01 10:35 +comments: true + +An active Kiwi TCMS subscription ensures a sustainable future for +all open source software maintained by the Kiwi TCMS team and +provides its holder with access to software versions and certain +level services. Given recent changes to +[private container credentials]({filename}2022-02-28-private-docker-credentials.markdown) +we have refreshed our product and service definitions. + + +New Self Support subscription +----------------------------- + +This is an entry-level subscription which provides read-only access to version tagged +containers of upstream Kiwi TCMS. It is suitable for experimentation, +very small teams, development against Kiwi TCMS and convenience during upgrades. + +You are free to use any older or future versions of Kiwi TCMS available from +the [kiwitcms/version]({filename}pages/containers.markdown) container repository! + +This subscription plan is also available via +[GitHub Marketplace](https://github.com/marketplace/kiwi-tcms/). + + +Private Tenant +-------------- + +This is our most popular subscription type. + +Starting today it also includes access +to the [kiwitcms/version]({filename}pages/containers.markdown) container repository! +This is suitable for teams who prefer to be hosting Kiwi TCMS on-premise instead of +using the namespace provided under `*.tenant.kiwitcms.org`. + +This subscription plan is also available via +[GitHub Marketplace](https://github.com/marketplace/kiwi-tcms/). + +Everything else remains the same! + + +Enterprise Subscription +----------------------- + +This is Kiwi TCMS tailored towards on-premise deployments in larger organizations. +Starting today it also automatically includes 1x *Private Tenant* which can be used +for development or experiments. + +Support availability has been extended by 2 hours in order to cover more geographic areas! + +Future features coming to enterprise subscribers - +tools for provisioning of Kiwi TCMS inside cloud environments and aarch64 containers. + +Price has been increased to 400 $/mo. + + +New Managed Hosting subscription +-------------------------------- + +This new offering is designed for the organizations which don't want to bother with provisioning +containers, configuring DNS resolution, managing SSL certificates, regular upgrades and backups. +The Kiwi TCMS team can do all of this for you and provide a fully isolated instance inside AWS. + +Support availability has been extended by 2 days, covering Saturday and Sunday. When necessary +*Managed Hosting* subscribers have the option for video conferences with their support contact. + +--- + +All changes are effective immediately. Existing customers are granted access to everything +that's new while billing changes are not applied. + + +If you prefer the "free beer" version of +Kiwi TCMS it is available via `docker pull pub.kiwitcms.eu/kiwitcms/kiwi` - free to use +and without any guarantees according to GPLv2. + +Please consider [subscribing](/#subscriptions) and help us make Kiwi TCMS better! + + +Happy Testing! diff --git a/content/2022-03-09-version-11.2.rst b/content/2022-03-09-version-11.2.rst new file mode 100644 index 00000000..f6fdf813 --- /dev/null +++ b/content/2022-03-09-version-11.2.rst @@ -0,0 +1,151 @@ +Kiwi TCMS 11.2 +############## + +:headline: improvements, new API methods and aarch64 container images +:date: 2022-03-09 12:20 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 11.2. + +**IMPORTANT:** +This is a small release which contains several improvements, new API methods, +internal refactoring and new translations! This is the first release to ship +``aarch64`` container images! + +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) + +--- + + Upstream container images (x86_64):: + + pub.kiwitcms.eu/kiwitcms/kiwi latest bcc4c658440a 622MB + +**IMPORTANT:** version tagged and multi-arch +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +Changes since Kiwi TCMS 11.1 +---------------------------- + + +Improvements +~~~~~~~~~~~~ + +- Update django from 4.0.2 to 4.0.3 +- Update django-grappelli from 3.0.2 to 3.0.3 +- Update django-simple-captcha from 0.5.14 to 0.5.17 +- Update python-bugzilla from 3.1.0 to 3.2.0 +- Update python-gitlab from 3.1.1 to 3.2.0 +- Update node_modules/prismjs from 1.26.0 to 1.27.0 +- Add new command to perform a collection of post-upgrade tasks. + Kiwi TCMS admins are advised to replace + ``manage.py migrate`` with ``manage.py upgrade`` (Ivajlo Karabojkov) + + +API +~~~ + +- New API method ``Category.create()``. Fixes + `Issue #2705 `_ (Erik Heeren) +- New API method ``Classification.create()``. Fixes + `Issue #2705 `_ (Erik Heeren) + + +Refactoring and testing +~~~~~~~~~~~~~~~~~~~~~~~ + +- Add docker build & push automation +- Fix Bandit exclusion rule +- Test and build on aarch64 +- Apply auto fixes fro pre-commit.ci +- Apply auto fixes from Deepsource +- Update versions of several GitHub Actions +- Use the appropriate path to package.json for Dependabot +- Remove old Telemetry link in menu to avoid confusion + + +Translations +~~~~~~~~~~~~ + +- Updated `Bulgarian translation `_ +- Updated `Japanese translation `_ +- Updated `Chinese Traditional translation `_ +- Updated `Slovenian translation `_ +- Updated `Spanish translation `_ + + +Kiwi TCMS Enterprise v11.2-mt +----------------------------- + +- Based on Kiwi TCMS v11.2 +- Update django-ses from 2.4.0 to 2.6.0 +- Update python3-saml from 1.13.0 to 1.14.0 +- Revert "Use django.contrib.staticfiles.storage from Django==3.2.12". + Instead use the implementation from latest Django version. Closes + `Issue #140 `_ +- Start building kiwitcms/enterprise on aarch64 +- Add changelog check & docker release automation +- Add test for PSA login URLs on login page. References + `Issue #83 `_ +- Add SAML & Azure AD logo images +- Update GitHub Actions +- Hard-code testing with Keycloak 16.1.1 to workaround significant differences + with Keycloak v17 container + + Private images:: + + hub.kiwitcms.eu/kiwitcms/enterprise 11.2-mt (aarch64) fe5e869e36f6 09 Mar 2022 890MB + hub.kiwitcms.eu/kiwitcms/enterprise 11.2-mt (x86_64) 134320d5fb7c 09 Mar 2022 841MB + hub.kiwitcms.eu/kiwitcms/version 11.2 (aarch64) 3b782830d19d 09 Mar 2022 665MB + hub.kiwitcms.eu/kiwitcms/version 11.2 (x86_64) bcc4c658440a 09 Mar 2022 620MB + + +**IMPORTANT:** version tagged, multi-arch and Enterprise +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +Then execute the commands:: + + cd path/containing/docker-compose/ + docker-compose down + docker-compose pull + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py upgrade + +Refer to +`our documentation `_ +for more details! + +Happy testing! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- `Give ⭐ on GitHub `_; +- `Give 👍 on GitLab `_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a subscriber `_ and help us sustain development diff --git a/content/2022-04-27-version-11.3.rst b/content/2022-04-27-version-11.3.rst new file mode 100644 index 00000000..67c909f5 --- /dev/null +++ b/content/2022-04-27-version-11.3.rst @@ -0,0 +1,151 @@ +Kiwi TCMS 11.3 +############## + +:headline: security, improvements, new features and translations +:date: 2022-04-27 20:35 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 11.3 which is the 100th tagged version +in our git repository! + +**IMPORTANT:** +This is a small release which contains security related updates, several improvements, +bug fixes and new translations! Most importantly the kiwitcms-tenants plugin now supports +tenant groups and permissions! + + +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) + +--- + + Upstream container images (x86_64):: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 58dcfa91e816 629MB + +**IMPORTANT:** version tagged and multi-arch +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +Changes since Kiwi TCMS 11.2 +---------------------------- + +Security +~~~~~~~~ + +- Update django from 4.0.3 to 4.0.4, see + https://docs.djangoproject.com/en/4.0/releases/4.0.4/ + + +Improvements +~~~~~~~~~~~~ + +- Update bleach from 4.1.0 to 5.0.0 +- Update django-tree-queries from 0.7.0 to 0.9.0 +- Update jira from 3.1.1 to 3.2.0 +- Update pygments from 2.11.2 to 2.12.0 +- Update python-gitlab from 3.2.0 to 3.3.0 +- Update tzdata from 2021.5 to 2022.1 +- Update node_modules/marked from 4.0.12 to 4.0.14 +- Update node_modules/prismjs from 1.27.0 to 1.28.0 +- Allow overriding of Azure Boards API version. Closes + `Issue #2717 `_ +- If ``tenant_groups`` is enabled then ``refresh_permissions`` command will + update default tenant groups too +- Document tenant-group permissions + + +Settings +~~~~~~~~ + +- New setting ``AZURE_BOARDS_API_VERSION``, defaults to 6.0. Can be overriden + directly in settings or via environment variable with the same name + + +Bug fixes +~~~~~~~~~ + +- Patch for repositories under GitLab subgroups. Fixes + `Issue #2643 `_ (@cmeissl) +- Don't crash if a comment user has been removed. Fixes + `KIWI-TCMS-HZ `_ + + +Refactoring +~~~~~~~~~~~ + +- Split Users & Groups menu items under ADMIN entry in navigation +- [pre-commit.ci] updates +- pylint adjustments + + +Translations +~~~~~~~~~~~~ + +- Updated `Chinese Simplified translation `_ + + +Kiwi TCMS Enterprise v11.3.1-mt +------------------------------- + +- Based on Kiwi TCMS v11.3 +- Update django-ses from 2.6.0 to 3.0.1 +- Update kiwitcms-tenants from 1.11.0 to 2.1.1 for + tenant groups support + + Private images:: + + hub.kiwitcms.eu/kiwitcms/enterprise 11.3.1-mt (aarch64 58a53d616105 27 Apr 2022 894MB + hub.kiwitcms.eu/kiwitcms/enterprise 11.3.1-mt (x86_64) 3b5e7fbd234a 27 Apr 2022 847MB + hub.kiwitcms.eu/kiwitcms/version 11.3 (aarch64) e9f34a86cd0b 27 Apr 2022 671MB + hub.kiwitcms.eu/kiwitcms/version 11.3 (x86_64) 58dcfa91e816 27 Apr 2022 627MB + + +**IMPORTANT:** version tagged, multi-arch and Enterprise +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +Then execute the commands:: + + cd path/containing/docker-compose/ + docker-compose down + docker-compose pull + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py upgrade + +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 grow! + +- `Give ⭐ on GitHub `_; +- `Give 👍 on GitLab `_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a subscriber `_ and help us sustain development diff --git a/content/2022-05-18-plugins-version-11.3.rst b/content/2022-05-18-plugins-version-11.3.rst new file mode 100644 index 00000000..2ee6954a --- /dev/null +++ b/content/2022-05-18-plugins-version-11.3.rst @@ -0,0 +1,37 @@ +New versions of automation framework plugins +############################################ + +:headline: improvements & bug fixes +:date: 2022-05-18 15:30 +:comments: true +:tags: releases + + +Kiwi TCMS is pleased to announce new versions of our plugins for different +test automation frameworks: + +- `tap-plugin `_ - v11.3 +- `junit.xml-plugin `_ - v11.3 +- `Robot Framework plugin `_ - v11.2 +- `Django test runner plugin `_ - v11.2 + +These new versions are compatible with Kiwi TCMS v11.x and include several improvements +and bug fixes. Check-out the pages above for individual information and instructions on +how to use them. + + +Happy testing! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- `Give ⭐ on GitHub `_; +- `Give 👍 on GitLab `_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a subscriber `_ and help us sustain development diff --git a/content/2022-06-02-github-gitlab-bitbucket-survey.markdown b/content/2022-06-02-github-gitlab-bitbucket-survey.markdown new file mode 100644 index 00000000..dfd72112 --- /dev/null +++ b/content/2022-06-02-github-gitlab-bitbucket-survey.markdown @@ -0,0 +1,30 @@ +Title: Survey: How do testers and QA use GitHub, GitLab and Bitbucket +Headline: please help us gather more data +date: 2022-06-02 11:05 +comments: true + +Hello testers, +we are conducting a little research/survey into how other testers and QA professionals +use modern platforms like GitHub, GitLab and Bitbucket. At this moment in time our goal +is to collect as much information as possible in order to understand the existing ecosystem. + +If you can spare 5 minutes of your time please check-out +[https://forms.gle/avqjWVvSPsE4SWQr5](https://forms.gle/avqjWVvSPsE4SWQr5). + +We promise there will be no follow up emails unless you indicate that you agree to that. + +Happy Testing! + + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us grow! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Give 👍 on GitLab](https://gitlab.com/gitlab-org/gitlab/-/issues/334558); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2022-06-07-new-team-member-zaklina.markdown b/content/2022-06-07-new-team-member-zaklina.markdown new file mode 100644 index 00000000..0b43b570 --- /dev/null +++ b/content/2022-06-07-new-team-member-zaklina.markdown @@ -0,0 +1,43 @@ +Title: Zaklina, welcome to the Kiwi TCMS team +headline: test engineer with 10+ years of experience +date: 2022-06-07 13:20 +comments: true +og_image: images/team/banner.png +twitter_image: images/team/banner.png +tags: community, team + +Kiwi TCMS is pleased to welcome Zaklina Stojnev to [our team]({filename}pages/team.html)! + + + +She holds an engineering degree in computer science and +has been working as a test engineer for more than 10 years. +In the last couple of years her main focus is automation in testing, +finding ways to improve testing process and tools that will support testing activities. + +Zaklina will be the primary contact for our +[History of Testing](https://github.com/kiwitcms/history-of-testing) project where we are +compiling a database of people who influenced or made important contributions to our professional field. + +With her prior experience as a conference organizer Zaklina will also be lending a much needed hand +in preparing the *Testing and Automation* devroom at *FOSDEM* and showcasing Kiwi TCMS at different +events. + +You can find her on-boarding progress at [TR-1190](https://tcms.kiwitcms.org/runs/1190/) and her +contributions on +[GitHub](https://github.com/pulls?q=is%3Aopen+is%3Apr+author%3Azaklinica+archived%3Afalse+user%3Akiwitcms). + +Happy Testing! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us grow! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Give 👍 on GitLab](https://gitlab.com/gitlab-org/gitlab/-/issues/334558); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2022-06-14-collision2022.markdown b/content/2022-06-14-collision2022.markdown new file mode 100644 index 00000000..4d23e878 --- /dev/null +++ b/content/2022-06-14-collision2022.markdown @@ -0,0 +1,107 @@ +Title: Meet Kiwi TCMS at Collision 2022 in Toronto +Headline: Thursday, Jun 23, Stand A3201 +date: 2022-06-14 11:35 +comments: true +og_image: images/conf/collision/stand2022.png +twitter_image: images/conf/collision/stand2022.png +tags: events + + +Kiwi TCMS is happy to announce that we're taking part in +[Collision 2022](https://collisionconf.com/), Jun 20-23 in Toronto, Canada. +We're joining as a [featured startup](https://collisionconf.com/startups/featured-startups) +in the *Enterprise Software Solutions* category. + +Kiwi TCMS will have an on-site presence on +**Thursday, Jun 23, Stand A3201**. Check-out the map for more details: +![venue map](/images/conf/collision/stand2022.png "venue map") + + +For engineers +------------- + +At the exhibition stand you will have the opportunity to perform some real +[black-box testing]({filename}2020-10-10-black-boxes-progress-update.markdown), +learn about Salience bias, Peltzman effect and Wason's experiments and take a photo with +our lovely mascot. + +The Kiwi TCMS team will be there to answer all of your questions regarding +open source, community, support, various integrations and the differences between +*Self-Support*, *SaaS* and *Enterprise* [subscriptions](/#subscriptions)! + +!["black boxes"](/images/conf/websummit/black_boxes.png "black boxes") + + +If you are a test or QA engineer please answer our survey +. Participants may claim a small surprise at our booth! + + +For startups +------------ + +We know that in a startup, the major strength of the people is that they are multitaskers. +And it is often the case that the founders will perform some functional and acceptance testing +because they know all the important use-cases. + +Still you need to document and organize your testing activities early on. You need to +start collecting information about which features of the product have been tested and +how they have been tested. That's the basis on which you can scale your QA team and +future testing activities. + +If you are a fellow startup exhibitor please swing by out stand to talk about +organizing your product testing with Kiwi TCMS. We know the drill because we're in +the same boat! + + +For partners +------------ + +If you are another ISV providing engineering tools, a product outsourcing company +or a devel/testing service venture we've got a partnership proposal for you! + +We're interested in partners where we can integrate other products with Kiwi TCMS +and provide a better offering; provide extra services (e.g. managed hosting) and/or +provide more transparency to your own customers (e.g. allow them to see how their products +are being tested). + +Message us via the [Collision app](https://play.google.com/store/apps/details?id=com.collision) +and request a meeting or better yet, find our team on-site! + +Virtual press conference +------------------------ + +If you aren't around in Toronto please join us for a pre 2022 Collision News Conference (VIRTUAL) on +**Wednesday, June 15, 1:00 - 2:00 p.m. EDT / 17:00 - 18:00 UTC**. + +For more information see + + + + +After hours +----------- + +The Kiwi TCMS team will be joining the following after-hours events: + +- Jun 20 - [Collision: Join Us at Craft Beer Market, Toronto](https://inthecloud.withgoogle.com/collision-happy-hour/register.html) +- Jun 22 - [Drinks & Dragons - Collision Official After Hours event by Metis Fest](https://www.eventbrite.sg/e/drinks-dragons-collision-official-after-hours-event-by-metis-fest-tickets-340062816037) +- Jun 23 - [Agile Drinks....we are back!!](https://www.meetup.com/agileto/events/286454424/) + +For media +--------- + +If you have any questions, need additional information or would like to schedule an interview, +please email Steve Winter at *swinter @ aboutbwf.com* (remove spaces) or call *202-468-8100*. + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Give 👍 on GitLab](https://gitlab.com/gitlab-org/gitlab/-/issues/334558); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2022-06-27-reviewbox-award.markdown b/content/2022-06-27-reviewbox-award.markdown new file mode 100644 index 00000000..e49e254d --- /dev/null +++ b/content/2022-06-27-reviewbox-award.markdown @@ -0,0 +1,48 @@ +Title: Mejor Sitio Web 2022 +Headline: awarded to Kiwi TCMS by Reviewbox.es +date: 2022-06-27 17:55 +og_image: images/conf/reviewbox-award-big.png +twitter_image: images/conf/reviewbox-award-big.png +comments: true +tags: community + + +Kiwi TCMS is happy to announce that we have been awarded a "Best Website 2022" award +by [Reviewbox.es](https://www.reviewbox.es), scoring 36/40 on their evaluation. +The review criteria can be found at . + + +> Querido equipo de Kiwitcms, +> +> ÂĄFelicidades! +> +> HabĂ©is logrado lo que muchos otros desean: +> +> HabĂ©is acumulado 36/40 puntos en nuestra investigaciĂłn de +> mercado y por lo tanto calificasteis (mĂ­nimo 30 de 40 puntos necesarios) +> para nuestro premio Mejor Sitio Web 2022. +> +> Resultados y criterios de investigaciĂłn +> +> URL: Kiwitcms-Team +> +> Puntos: 36/40 + + +Our team is happy to accept this award, which comes exactly 2 years +after we became an [OpenAwards winner]({filename}2019-06-24-openawards-winner.markdown). + +Thank you and Happy testing! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Give 👍 on GitLab](https://gitlab.com/gitlab-org/gitlab/-/issues/334558); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2022-08-04-version-11.4.rst b/content/2022-08-04-version-11.4.rst new file mode 100644 index 00000000..06ea9166 --- /dev/null +++ b/content/2022-08-04-version-11.4.rst @@ -0,0 +1,244 @@ +Kiwi TCMS 11.4 +############## + +:headline: security, multiple improvements, new features and translations +:date: 2022-08-04 15:56 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 11.4! + +**IMPORTANT:** +This is a medium sized release which contains security related updates, +multiple improvements, database and API changes, new settings, bug fixes +and new 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) + +--- + + Upstream container images (x86_64):: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 8c8356c0268d 610MB + +**IMPORTANT:** version tagged and multi-arch +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +Changes since Kiwi TCMS 11.3 +---------------------------- + +Security +~~~~~~~~ + +- Update django from 4.0.3 to 4.0.7, see + https://docs.djangoproject.com/en/4.0/releases/4.0.7/, + https://docs.djangoproject.com/en/4.0/releases/4.0.6/, + https://docs.djangoproject.com/en/4.0/releases/4.0.5/ and + https://docs.djangoproject.com/en/4.0/releases/4.0.4/ + We don't think Kiwi TCMS has been affected by the security vulnerabilities + fixed in Django. +- Use TLSv1.2 and 1.3 by default and disable older protocols + + +Improvements +~~~~~~~~~~~~ + +- Update bleach from 5.0.0 to 5.0.1 +- Update django-colorfield from 0.6.3 to 0.7.2 +- Update django-extensions from 3.1.5 to 3.2.0 +- Update django-tree-queries from 0.9.0 to 0.11.0 +- Update jira from 3.2.0 to 3.3.1 +- Update markdown from 3.3.6 to 3.4.1 +- Update mysqlclient from 2.1.0 to 2.1.1 +- Update python-gitlab from 3.3.0 to 3.7.0 +- Update node_modules/marked from 4.0.14 to 4.0.18 +- Relax docutils requirement. Use latest version +- Add template block which will allow logo customizations (Ivajlo Karabojkov) +- Don't show ``PLUGINS`` menu when no plugins are installed. References + `Issue #2729 `_ +- Add information about Kiwi TCMS user to 1-click bug reports. Closes + `Issue #2591 `_ +- Use a better icon to signify a manual test inside the user interface +- Change ``UserAdmin`` to be permission based instead of being role-based. + Fixes `Issue #2496 `_ +- Allow post-processing of automatically created issues. Closes + `Issue #2383 `_ +- Allow more customization over issue type discovery for Jira. Closes + `Issue #2833 `_ +- Allow more customization over project discovery for Jira +- Allow more customization over Redmine tracker. Closes + `Issue #2382 `_ +- Allow DB settings to be read from Docker Secret files. Fixes + `Issue #2606 `_ +- Add filter on TestRun page to show test executions assigned to the + current user. Closes + `Issue #333 `_ +- Add URL for creating new TestRun from a TestPlan. The format is + ``/runs/from-plan//``. Closes + `Issue #274 `_ +- Add ``bug.Severity`` attribute which is fully customizeable. Closes + `Issue #2703 `_ +- Update documentation around ``TCMS_`` environment variables + used by automation plugins +- Update documentation to denote that pytest plugin is now generally available +- Document necessary permissions for adding new users. References + `Issue #2496 `_ + + +Database +~~~~~~~~ + +- New migration for ``bug.Severity`` model + + +Settings +~~~~~~~~ + +- Remove deprecated setting ``USE_L10N``. See + https://docs.djangoproject.com/en/4.0/ref/settings/#use-l10n +- New setting ``EXTERNAL_ISSUE_POST_PROCESSORS`` +- New setting ``JIRA_ISSUE_TYPE`` +- New setting ``REDMINE_TRACKER_NAME`` +- New setting ``EXTERNAL_ISSUE_POST_PROCESSORS`` + + +API +~~~ + +- If ``default_tester`` field is not specified for ``TestRun.create()`` method + then use the currently logged-in user. +- Return value for method ``TestExecution.filter()`` now contains fields + ``expected_duration`` and ``actual_duration``. Closes + `Issue #1924 `_ +- Return value for method ``Bug.filter()`` now contains fields + ``severity__name``, ``severity__icon`` and ``severity__color`` + + +Bug fixes +~~~~~~~~~ + +- Adjust field name when rendering test execution on TestRun page. Fixes + `Issue #2794 `_ +- Render rich text editor preview via backend API: + + - Makes display on HTML pages and editor preview the same. Fixes + `Issue #2659 `_ + - Fixes a bug with markdown rendered in JavaScript. Fixes + `Issue #2711 `_ +- Stop propagation of HTML unescape which causes display issues with + code snippets that contain XML values. Fixes + `Issue #2800 `_ +- Show bug text only when creating new records, not when editing +- Properly display & validate related form fields when editing bugs +- Don't send duplicate emails when editing bugs. Fixes + `Issue #2782 `_ + + +Refactoring and testing +~~~~~~~~~~~~~~~~~~~~~~~ + +- Convert two assignment statements to augmented source code. Closes + `Issue #2610 `_ (Markus Elfring) +- Rename method ``IssueTrackerType.report_issue_from_testexecution()``: + + - Rename to ``_report_issue()`` which returns tuple of (object, str) + - In case new issue was not created automatically and the method falls + back to manual creation the return value will be (None, str) + - ``report_issue_from_testexecution()`` will call ``_report_issue()`` + internally and handle the change in return type + + .. note:: + + - This change is backwards compatible! + - For customized issue tracker integration you will have to apply + the same changes to your customized code if you wish new functionality, + like post-processing of automatically created issues to work. + +- Add tests for backup & restore commands. Closes + `Issue #2695 `_ +- Update versions of several CI tools +- Updates around new version of pylint +- Use codecov-action to upload coverage results +- Remove setuptools and other workarounds in tests +- Don't special case dependencies which already provide wheel packages +- Workaround an issue with ``setuptools_git_archive`` introduced by jira==3.2.0 +- Workaround the fact that ``django-ranged-response`` doesn't provide wheels +- Report test results via kiwitcms-django-plugin. Closes + `Issue #1757 `_ + + +Translations +~~~~~~~~~~~~ + +- Updated `Chinese Traditional translation `_ +- Updated `Slovak translation `_ + + +Kiwi TCMS Enterprise v11.4-mt +------------------------------- + +- Based on Kiwi TCMS v11.4 +- Update django-python3-ldap from 0.13.1 to 0.15.2 +- Update django-ses from 3.0.1 to 3.1.0 +- Update dj-database-url from 0.5.0 to 1.0.0 +- Add more icons for extra GitHub login backends +- Add images for various Google login backends + + Private images:: + + hub.kiwitcms.eu/kiwitcms/enterprise 11.4-mt (aarch64) f5720d030612 03 Aug 2022 862MB + hub.kiwitcms.eu/kiwitcms/enterprise 11.4-mt (x86_64) 8ffd5a64a4d1 03 Aug 2022 829MB + hub.kiwitcms.eu/kiwitcms/version 11.4 (aarch64) 62207c605dcf 03 Aug 2022 639MB + hub.kiwitcms.eu/kiwitcms/version 11.4 (x86_64) 8c8356c0268d 03 Aug 2022 610MB + + +**IMPORTANT:** version tagged, multi-arch and Enterprise +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +Then execute the commands:: + + cd path/containing/docker-compose/ + docker-compose down + docker-compose pull + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py upgrade + +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 grow! + +- `Give ⭐ on GitHub `_; +- `Give 👍 on GitLab `_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a subscriber `_ and help us sustain development diff --git a/content/2022-09-06-version-11.5.rst b/content/2022-09-06-version-11.5.rst new file mode 100644 index 00000000..ae3d2864 --- /dev/null +++ b/content/2022-09-06-version-11.5.rst @@ -0,0 +1,139 @@ +Kiwi TCMS 11.5 +############## + +:headline: several improvements, bug fixes and new translations +:date: 2022-09-06 15:40 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 11.5! + +**IMPORTANT:** +This is a small release which contains several improvements, bug fixes +and new 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) + +--- + + Upstream container images (x86_64):: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 66c51b64e0a6 608MB + +**IMPORTANT:** version tagged and multi-arch +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +Changes since Kiwi TCMS 11.4 +---------------------------- + +Improvements +~~~~~~~~~~~~ + +- Update jira from 3.3.1 to 3.4.0 +- Update pygments from 2.12.0 to 2.13.0 +- Update python-gitlab from 3.7.0 to 3.9.0 +- Update tzdata from 2022.1 to 2022.2 +- Add Product drop down field in Build admin page. Closes + `Issue #2818 `_ +- Add 'prune' argument required for Django 4.1 compatibility +- Improve documentation around ``DEFAULT_GROUPS`` +- Update docs about language preferences and add a Change language menu item. Closes + `Issue #2901 `_, + `Issue #2902 `_, + `Issue #2903 `_ +- Performance improvement for Status matrix telemetry +- Performance improvement for Execution trends telemetry +- Display a spinner widget while telemetry data is still loading. Closes + `Issue #1801 `_ + + +Bug fixes +~~~~~~~~~ + +- Fix error ``Jquery deferred: No length property of null object`` (@cmbahadir) + + +Refactoring and testing +~~~~~~~~~~~~~~~~~~~~~~~ + +- Add test for ``AnonymousViewBackend`` & ``auth.`` permissions +- Exclude ``auth.view_`` permissions from ``AnonymousViewBackend`` +- Specify 30 seconds timeout for internal requests via the requests library + + +Translations +~~~~~~~~~~~~ + +- Updated `Chinese Simplified translation `_ +- Updated `French translation `_ +- Updated `Polish translation `_ +- Updated `Russian translation `_ +- Updated `Slovenian translation `_ + + +Kiwi TCMS Enterprise v11.5-mt +------------------------------- + +- Based on Kiwi TCMS v11.5 +- Update django-python3-ldap from 0.15.2 to 0.15.3 +- Update django-ses from 3.1.0 to 3.1.2 +- Update kiwitcms-tenants from 2.1.1 to 2.3.0 +- Update kiwitcms-github-app from 1.3.3 to 1.4.0 + + Private images:: + + hub.kiwitcms.eu/kiwitcms/version 11.5 (aarch64) 4be7894de8ae 06 Sep 2022 638MB + hub.kiwitcms.eu/kiwitcms/version 11.5 (x86_64) 66c51b64e0a6 06 Sep 2022 608MB + hub.kiwitcms.eu/kiwitcms/enterprise 11.5-mt (aarch64) 82d64398d8bf 06 Sep 2022 862MB + hub.kiwitcms.eu/kiwitcms/enterprise 11.5-mt (x86_64) 8a5b0b58bcca 06 Sep 2022 829MB + + +**IMPORTANT:** version tagged, multi-arch and Enterprise +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +Then execute the commands:: + + cd path/containing/docker-compose/ + docker-compose down + docker-compose pull + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py upgrade + +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 grow! + +- `Give ⭐ on GitHub `_; +- `Give 👍 on GitLab `_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a subscriber `_ and help us sustain development diff --git a/content/2022-10-25-websummit2022.markdown b/content/2022-10-25-websummit2022.markdown new file mode 100644 index 00000000..7d85a2b1 --- /dev/null +++ b/content/2022-10-25-websummit2022.markdown @@ -0,0 +1,83 @@ +Title: Meet Kiwi TCMS at WebSummit 2022 in Lisbon +Headline: Wed, Nov 02, Pavilion 4, Stand A709 +date: 2022-10-25 11:35 +comments: true +og_image: images/conf/websummit/stand2022.png +twitter_image: images/conf/websummit/stand2022.png +tags: events + + +Kiwi TCMS is happy to announce that we're taking part in +[WebSummit 2022](https://websummit.com/), Nov 01-04 in Lisbon, Portugal. +We're joining as a [featured startup](https://websummit.com/startups/featured-startups) +in the *Enterprise Software Solutions* category. + +Kiwi TCMS will have an on-site presence on +**Wednesday, Nov 02 at Pavilion 4, Stand A709**. Check-out the map for more details: +![venue map](/images/conf/websummit/stand2022.png "venue map") + + +For engineers +------------- + +At the exhibition stand you will have the opportunity to perform some real +[black-box testing]({filename}2020-10-10-black-boxes-progress-update.markdown), +learn about Salience bias, Peltzman effect and Wason's experiments and take a photo with +our lovely mascot. We've got new stickers too! + +Alex and Zaklina will be there to answer all of your questions regarding +open source, community, support, various integrations and the differences between +*Self-Support*, *SaaS* and *Enterprise* [subscriptions](/#subscriptions)! + +!["black boxes"](/images/conf/websummit/black_boxes.png "black boxes") + + +**IMPORTANT:** We've previously announced participation in +[Testing Portigal](https://testingportugal.pstqb.pt/en/) at the end of November. +Unfortunately this had to be canceled due to personal reasons. If you are a test or +QA engineer please swing by and Alex can tell you a bit about his presentation! + + +For partners +------------ + +If you are another ISV providing engineering tools, a product outsourcing company +or a devel/testing services venture we've got a partnership proposal for you! + +We're interested in partners where we can integrate other products with Kiwi TCMS +and provide a better offering; provide extra services (e.g. managed hosting) and/or +provide more transparency to your own customers (e.g. allow them to see how their products +are being tested). + +Message us via the WebSummit mobile app and request a meeting or better yet, +find our team on-site! + + +After hours +----------- + +The Kiwi TCMS team will be joining the following after-hours events: + +- Nov 01 - [MEETUP - Local & International Entrepreneurs & Digital Nomads](https://www.meetup.com/lagos-digital-nomads-community-meetup-group/events/289071623/) +- Nov 02 - [Bites and bytes founder gathering: dev tools & open source](https://www.meetup.com/bites-bytes/events/288577914/) +- Nov 03 - [Web Summit 2022 Special! Lisbon Digital Nomads Meetup](https://www.meetup.com/lisbon-digital-nomads/events/288840698/) +- Nov 04 - Meeting with [QGIS community](https://www.youtube.com/watch?v=Wob_L_SrEwE) which have been onboard + with Kiwi TCMS for some time now. Ping [Alexandre Neto](https://github.com/SrNetoChan) if you would like + to join +- Nov 04 - [Crypto Friday @ The Block Lisboa](https://www.meetup.com/theblock/events/288815979/) +- Nov 05 - [☕Web3 BrunchđŸ„ž](https://www.meetup.com/web3-for-the-win/events/289145375/) + +Catch-up with us for a beer and let's talk testing and open source! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Give 👍 on GitLab](https://gitlab.com/gitlab-org/gitlab/-/issues/334558); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2022-11-08-fosdem2023.markdown b/content/2022-11-08-fosdem2023.markdown new file mode 100644 index 00000000..cd819580 --- /dev/null +++ b/content/2022-11-08-fosdem2023.markdown @@ -0,0 +1,65 @@ +Title: Call for participation: Testing and Automation devroom, FOSDEM'23 +Headline: organized by Kiwi TCMS, Linaro & SUSE +date: 2022-11-08 15:09 +comments: true +og_image: images/fosdem/2023/banner.png +twitter_image: images/fosdem/2023/banner.png +tags: community, events + + +!["Cfp banner"](/images/fosdem/2023/banner.png "Cfp banner") + +Attention testers! On behalf of +[*Testing and Automation devroom*](https://fosdem-testingautomation.github.io/) +we'd like to announce that call for participation is now open. + +**Important:** devroom will take place 09:00 to 12:50, Sunday, February 5th 2023 at +[ULB Solbosch Campus, Brussels, Belgium](https://fosdem.org/2023/practical/transportation/)! +Presentations will be streamed online but all accepted speakers are required to deliver +their talks in person! The devroom will not host pre-recorded videos in 2023! + +Here are some ideas for topics that are a good fit for this devroom: + +Testing in the real, open source world + +- War stories/strategies for testing large scale or complex projects +- Demystify resource e.g. systems/device/cloud provisioning in a CI loop +- Tools that extend the ability to test low-level code, e.g. bootloaders, init +systems, etc. +- Projects that are introducing new/interesting ways of testing "systems" +- Address the automated testing frameworks fragmentation +- Lessons learned from testing + +Cool Tools (good candidates for lightning talks) + +- How your open source tool made developing quality software better +- What tools do you use to setup your CI/CD +- Combining projects/plugins/tools to build amazing things "Not enough people in +the open source community know how to use $X, but here's a tutorial on how to +use $X to make your project better." + + +In the past the devroom has seen both newbies/students and experienced professionals and +past speakers as part of the audience and talks covering from beginner/practical +to advanced/abstract topics. If you have doubts then submit your proposal and +leave a comment for the devroom managers and we'll get back to you. + +Checkout + for more information! + + +Happy Testing! + + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Give 👍 on GitLab](https://gitlab.com/gitlab-org/gitlab/-/issues/334558); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2022-11-09-version-11.6.rst b/content/2022-11-09-version-11.6.rst new file mode 100644 index 00000000..730fa61d --- /dev/null +++ b/content/2022-11-09-version-11.6.rst @@ -0,0 +1,171 @@ +Kiwi TCMS 11.6 +############## + +:headline: security updates, improvements, bug fixes and new translations +:date: 2022-11-09 12:40 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 11.6! This is our first release +after the very positive reception we had at +`WebSummit 2022 <{filename}2022-10-25-websummit2022.markdown>`_! + +**IMPORTANT:** this is a small release which contains security updates, +general improvements, bug fixes and new 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) + +--- + + Upstream container images (x86_64):: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 9773335a58d1 612MB + +**IMPORTANT:** version tagged and multi-arch +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +Changes since Kiwi TCMS 11.5 +---------------------------- + +Security +~~~~~~~~ + +- Update Django from 4.0.7 to 4.1.3 which contains multiple bug fixes and + security improvements. See https://docs.djangoproject.com/en/4.1/releases/4.1.3/ +- Sanitize HTML input when generating history diff to prevent XSS attacks + + +Improvements +~~~~~~~~~~~~ + +- Update django-extensions from 3.2.0 to 3.2.1 +- Update jira from 3.4.0 to 3.4.1 +- Update psycopg2 from 2.9.3 to 2.9.5 +- Update pygithub from 1.55 to 1.57 +- Update python-gitlab from 3.9.0 to 3.11.0 +- Update tzdata from 2022.2 to 2022.6 +- Container is now built on top of Red Hat Enteroprise Linux 9 and Python 3.9 + + **Warning:** + + There is high risk of breaking downstream containers. Pay attention to + bind-mounted settings files. Inspect downstream ``Dockerfile`` & ``docker-compose.yml`` + files !!! + +- Unify some translation strings +- Document add-on issue tracker integrations +- Rename Properties to Parameters because "test case parameters" is + more widely used + + +Bug fixes +~~~~~~~~~ + +- ``JIRA.get_issue_type_from_jira()`` now accepts a second argument. Fixes + `Issue #2929 `_ (@cmbahadir) +- Fix typo in documentation (Christian Clauss) +- Trim white-space after splitting parameter values. For example the inputs + 'OS=Linux' and 'OS = Windows ' will result in + Key: 'OS', Values: ['Linux', 'Windows'] + + +Refactoring and testing +~~~~~~~~~~~~~~~~~~~~~~~ + +- Update Fedora from 32 to 36 in /tests/bugzilla +- Remove Travis CI config b/c we don't use it anymore +- Add Coverity Scan as a GitHub action +- Don't scan devel dependencies with Coverity Scan +- Redirect to where we came from in case posting a comment results in invalid + form +- Configure Dependabot to update Docker containers and try tightening security + around docker containers used during testing +- Use npm audit fix to automatically update some Node.js dependecies +- Execute ``npm audit signatures`` when installing Node.js packages +- Start using ``find_namespace_packages()`` to resolve + 'Package would be ignored' warnings from setuptools +- Add missing field in ``setup()`` to avoid a warning + + +Translations +~~~~~~~~~~~~ + +- Updated `Chinese Simplified translation `_ +- Updated `Chinese Traditional translation `_ +- Updated `French translation `_ +- Updated `German translation `_ +- Updated `Slovak translation `_ +- Updated `Slovenian translation `_ + + +Kiwi TCMS Enterprise v11.6-mt +----------------------------- + +- Based on Kiwi TCMS v11.6 +- Update containers for RHEL 9, CentOS Stream 9 and Python 3.9 +- Update actions/checkout from 2 to 3 +- Update django-ses from 3.1.2 to 3.2.2 +- Update kiwitcms-tenants from 2.3.1 to 2.3.2 +- Update kiwitcms-trackers-integration from 0.2.0 to 0.3.0. + Supports integration with OpenProject and Mantis BT. + Closes `Issue #2203 `_ and + `Issue #879 `_ + + + Private images:: + + hub.kiwitcms.eu/kiwitcms/version 11.6 (aarch64) cf244e2f1dac 08 Nov 2022 636MB + hub.kiwitcms.eu/kiwitcms/version 11.6 (x86_64) 9773335a58d1 08 Nov 2022 612MB + hub.kiwitcms.eu/kiwitcms/enterprise 11.6-mt (aarch64) 55cf76524ebd 08 Nov 2022 858MB + hub.kiwitcms.eu/kiwitcms/enterprise 11.6-mt (x86_64) 61f48a62666b 08 Nov 2022 832MB + + +**IMPORTANT:** version tagged, multi-arch and Enterprise +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +Then execute the commands:: + + cd path/containing/docker-compose/ + docker-compose down + docker-compose pull + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py upgrade + +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 grow! + +- `Give ⭐ on GitHub `_; +- `Give 👍 on GitLab `_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a subscriber `_ and help us sustain development diff --git a/content/2022-12-23-fosdem2023-program.markdown b/content/2022-12-23-fosdem2023-program.markdown new file mode 100644 index 00000000..24fd2a41 --- /dev/null +++ b/content/2022-12-23-fosdem2023-program.markdown @@ -0,0 +1,42 @@ +Title: Program for Testing and Automation devroom, FOSDEM'23 +Headline: organized by Kiwi TCMS, Linaro & SUSE +date: 2022-12-23 12:05 +comments: true +og_image: images/fosdem/2023/banner.png +twitter_image: images/fosdem/2023/banner.png +tags: community, events + + +!["Devroom banner"](/images/fosdem/2023/banner.png "Devroom banner") + +Attention testers! On behalf of +[*Testing and Automation devroom*](https://fosdem.org/2023/schedule/track/testing_and_automation/) +we'd like to announce that the final program for the devroom is ready! + +We received over 30 submissions this year and the entire collection of topics was extremely good. +During FOSDEM we are going to see topics around functional testing for the Linux kernel, +growing testing infrastructure for Linux, testing of new networking protocols, observability-driven +development, the testing history behind the GNOME desktop environment, property-based testing +and mutation testing. + +**Important:** devroom will take place 09:00 to 12:50, Sunday, February 5th 2023 at +[ULB Solbosch Campus, Brussels, Belgium](https://fosdem.org/2023/practical/transportation/). + +If you are around don't forget to check-out our friends from the +[Continuous Integration and Continuous Deployment devroom](https://fosdem.org/2023/schedule/track/continuous_integration_and_continuous_deployment/) +on Saturday, February 4th 2023! + +See you there and happy testing! + +--- + +If you like what we're doing and how Kiwi TCMS supports various communities +please help us! + +- [Give ⭐ on GitHub](https://github.com/kiwitcms/Kiwi/stargazers); +- [Give 👍 on GitLab](https://gitlab.com/gitlab-org/gitlab/-/issues/334558); +- [Donate via Open Collective](https://opencollective.com/kiwitcms/donate) as low as 1 EUR; +- [Join our newsletter](https://kiwitcms.us17.list-manage.com/subscribe/post?u=9b57a21155a3b7c655ae8f922&id=c970a37581) + and follow all project news; +- [Become a contributor](https://kiwitcms.readthedocs.io/en/latest/contribution.html) and an awesome open source hacker; +- [Become a customer](/#subscriptions) and we'll share our profits with the community diff --git a/content/2023-01-03-version-11.7.rst b/content/2023-01-03-version-11.7.rst new file mode 100644 index 00000000..d3db69ca --- /dev/null +++ b/content/2023-01-03-version-11.7.rst @@ -0,0 +1,180 @@ +Kiwi TCMS 11.7 +############## + +:headline: security updates, improvements, bug fixes and new translations +:date: 2023-01-03 12:22 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 11.7 and Happy New Year! + +**IMPORTANT:** this is a small release which contains security updates, +general improvements, bug fixes and new 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) + +--- + + Upstream container images (x86_64):: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 316d5d4865a1 572MB + +**IMPORTANT:** version tagged and multi-arch +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +Changes since Kiwi TCMS 11.6 +---------------------------- + +Security +~~~~~~~~ + +- Update ``bootstrap``, ``bootstrap-select``, + ``eonasdan-bootstrap-datetimepicker``, ``jquery`` and ``moment-timezone`` + Node.js packages +- Enable password validators to avoid users choosing weak passwords: + + - password can’t be too similar to other personal information + - password must contain at least 10 characters + - password can’t be a commonly used password + - password can’t be entirely numeric + + **Warning:** + + Existing users are advised to reset their passwords! + For more information see + `GHSA-496x-2jqf-hp7g `_ + + +Improvements +~~~~~~~~~~~~ + +- Update django from 4.1.3 to 4.1.5 +- Update django-colorfield from 0.7.2 to 0.8.0 +- Update django-grappelli from 3.0.3 to 3.0.4 +- Update django-simple-history from 3.0.0 to 3.2.0 +- Update django-tree-queries from 0.11.0 to 0.13.0 +- Update pygments from 2.13.0 to 2.14.0 +- Update python-gitlab from 3.11.0 to 3.12.0 +- Update tzdata from 2022.6 to 2022.7 +- Make navigation menu more compact by moving it into the header +- Don't install development dependencies for Node.js packages when + building the container image + + +Database +~~~~~~~~ + +- Add migrations to reflect indexing changes in django-simple-history 3.1.0. + On large databases these will take a while to complete! + + +Bug fixes +~~~~~~~~~ + +- Trigger on-change handler for Test Case Search pop-up. Fixes + `Issue #2679 `_ +- Fix the ``+ Build`` button on Bug and TestRun pages which didn't properly + select Product & Version +- Editing TestRun page now properly saves all datetime fields instead of + reverting them to ``None`` +- Initialize ``planned_start`` and ``planned_stop`` fields when cloning a + TestRun + + +Refactoring and testing +~~~~~~~~~~~~~~~~~~~~~~~ + +- Start using webpack for JavaScript assets. Closes + `Issue #1262 `_ +- Refactor duplicated setup in Telemetry pages. Closes + `Issue #1118 `_ +- Add CodeQL workflow for GitHub code scanning +- Make it possible to override attachments card title +- Remove useless tooltip from Telemetry pages +- Define page ID for each page that has a ``.ready()`` function +- Replace deprecated jQuery syntax for ``.ready()`` +- Remove duplicate ``populateProductVersion()`` function +- Resolve all of the remaining eslint issues +- Use more precise assert methods in tests + + +Translations +~~~~~~~~~~~~ + +- Updated `Russian translation `_ +- Updated `Slovenian translation `_ +- Updated `Spanish translation `_ + + + +Kiwi TCMS Enterprise v11.7-mt +----------------------------- + +- Based on Kiwi TCMS v11.7 +- Update dj-database-url from 1.0.0 to 1.2.0 +- Update django-python3-ldap from 0.15.3 to 0.15.4 +- Update django-ses from 3.2.2 to 3.3.0 +- Update kiwitcms-tenants from 2.3.2 to 2.4.0 to + allow customization of tenant logo in navigation +- Update python3-saml from 1.14.0 to 1.15.0 +- Add CodeQL workflow for GitHub code scanning +- Adjust ldap commands for Ubuntu 22.04.1 during testing in CI + + + Private images:: + + hub.kiwitcms.eu/kiwitcms/version 11.7 (aarch64) 54ca241ac5ca 02 Jan 2023 595MB + hub.kiwitcms.eu/kiwitcms/version 11.7 (x86_64) 316d5d4865a1 02 Jan 2023 571MB + hub.kiwitcms.eu/kiwitcms/enterprise 11.7-mt (aarch64) 6657a3c197e8 02 Jan 2023 802MB + hub.kiwitcms.eu/kiwitcms/enterprise 11.7-mt (x86_64) 80f6d959d90a 02 Jan 2023 778MB + + +**IMPORTANT:** version tagged, multi-arch and Enterprise +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +Then execute the commands:: + + cd path/containing/docker-compose/ + docker-compose down + docker-compose pull + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py upgrade + +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 grow! + +- `Give ⭐ on GitHub `_; +- `Give 👍 on GitLab `_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a subscriber `_ and help us sustain development diff --git a/content/2023-02-15-version-12.0.rst b/content/2023-02-15-version-12.0.rst new file mode 100644 index 00000000..2e4d5919 --- /dev/null +++ b/content/2023-02-15-version-12.0.rst @@ -0,0 +1,151 @@ +Kiwi TCMS 12.0 +############## + +:headline: security updates, improvements, bug fixes and new translations +:date: 2023-02-15 13:50 +:comments: true +:tags: releases + + +We're happy to celebrate our 14th anniversary with Kiwi TCMS version 12.0! + +**IMPORTANT:** this is a new major release which contains security related updates, +general improvements, bug fixes and new 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) + +--- + + Upstream container images (x86_64):: + + pub.kiwitcms.eu/kiwitcms/kiwi latest cbe275c11098 518MB + +**IMPORTANT:** version tagged and multi-arch +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +Changes since Kiwi TCMS 11.7 +---------------------------- + +Security +~~~~~~~~ + +- Update Django from 4.1.5 to 4.1.7 which includes fixes for + `CVE-2023-23969 `_ and + `CVE-2023-24580 `_ +- Rate limit everything under /accounts/. Fixes + `CVE-2023-25156 `_ +- Require a captcha challenge on password reset form. Fixes + `CVE-2023-25171 `_ + + +Improvements +~~~~~~~~~~~~ + +- Update bleach from 5.0.1 to 6.0.0 +- Update django-tree-queries from 0.13.0 to 0.14.0 +- Update python-gitlab from 3.12.0 to 3.13.0 +- Update python-redmine from 2.3.0 to 2.4.0 +- Update node_modules/json5 from 1.0.1 to 1.0.2 +- Switch from Apache to Nginx + uWSGI + + - uWSGI will spawn worker processes for each available CPU core + - reduce container image by around 50 MB + + **Warning:** + + No longer support ``KIWI_DONT_ENFORCE_HTTPS`` environment variable + + +Bug fixes +~~~~~~~~~ + +- Load SimpleMDE for Admin pages. Fixes + `Issue #3057 `_ +- Don't show all builds on Search Test Runs page before Product and Version + fields are initialized when loading the page directly + + +Refactoring and testing +~~~~~~~~~~~~~~~~~~~~~~~ + +- Remove deprecated ``setDaemon()`` method (Ivajlo Karabojkov) +- Execute docker tests against ``localhost`` instead of container IP +- Test performance baseline on certain pages with ``wrk`` +- Conditionally execute top-level UI functions +- Raise ``RuntimeError`` instead of ``Exception`` to satisfy newer + pylint checks + + +Translations +~~~~~~~~~~~~ + +- Updated `Chinese Simplified translation `_ +- Updated `German translation `_ +- Updated `Polish translation `_ + + + +Kiwi TCMS Enterprise v12.0-mt +----------------------------- + +- Based on Kiwi TCMS v12.0 +- Update kiwitcms-github-app from 1.4.0 to 1.4.1 +- Update kiwitcms-tenants from 2.4.0 to 2.5.0 + + + Private images:: + + hub.kiwitcms.eu/kiwitcms/version 12.0 (aarch64) 21507017de36 15 Feb 2023 527MB + hub.kiwitcms.eu/kiwitcms/version 12.0 (x86_64) cbe275c11098 15 Feb 2023 518MB + hub.kiwitcms.eu/kiwitcms/enterprise 12.0-mt (aarch64) a67e0c1ac309 15 Feb 2023 727MB + hub.kiwitcms.eu/kiwitcms/enterprise 12.0-mt (x86_64) 3da1342bcd01 15 Feb 2023 717MB + + +**IMPORTANT:** version tagged, multi-arch and Enterprise +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +How to upgrade +--------------- + +`Backup <{filename}2018-07-30-docker-backup.markdown>`_ first! +Then execute the commands:: + + cd path/containing/docker-compose/ + docker-compose down + docker-compose pull + docker-compose up -d + docker exec -it kiwi_web /Kiwi/manage.py upgrade + +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 grow! + +- `Give ⭐ on GitHub `_; +- `Give 👍 on GitLab `_; +- `Donate via Open Collective `_ as low as 1 EUR; +- `Join our newsletter `_ + and follow all project news; +- `Become a contributor `_ + and an awesome open source hacker; +- `Become a subscriber `_ and help us sustain development diff --git a/content/2023-03-29-version-12.1.rst b/content/2023-03-29-version-12.1.rst new file mode 100644 index 00000000..5296535c --- /dev/null +++ b/content/2023-03-29-version-12.1.rst @@ -0,0 +1,159 @@ +Kiwi TCMS 12.1 +############## + +:headline: security updates, improvements, bug fixes and new translations +:date: 2023-03-29 23:00 +:comments: true +:tags: releases + + +We're happy to announce Kiwi TCMS version 12.1! + +**IMPORTANT:** this is a minor release which contains security related updates, +general improvements, bug fixes and new 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) + +--- + + Upstream container images (x86_64):: + + pub.kiwitcms.eu/kiwitcms/kiwi latest 590c0cd6f25f 521MB + + +**IMPORTANT:** version tagged and multi-arch +`container <{filename}pages/containers.markdown>`_ images are available only to +`subscribers `_! + + +Changes since Kiwi TCMS 12.0 +---------------------------- + +Security +~~~~~~~~ + +- Add the ``Content-Security-Policy`` header to block inline JavaScript. Fixes + `CVE-2023-27489 `_ +- Add the ``X-Frame-Options`` header to deny loading Kiwi TCMS into an iframe +- Add the ``X-Content-Type-Options`` header + + +Improvements +~~~~~~~~~~~~ + +- Update django-grappelli from 3.0.4 to 3.0.5 +- Update django-simple-history from 3.2.0 to 3.3.0 +- Update jira from 3.4.1 to 3.5.0 +- Update markdown from 3.4.1 to 3.4.3 +- Update pygithub from 1.57 to 1.58.1 +- Update tzdata from 2022.7 to 2023.3 +- Do not allow last super-user to be deleted (Ivajlo Karabojkov) +- Improve loading time on test runs pages which have large number of + executions with components, parameters and/or tags (@somenewacc) +- Expose all RPC methods in the documentation +- Update documentation to describe transitions for TestRun statuses. Closes + `Issue #3124 `_ + + +Settings +~~~~~~~~ + +- Allow uWSGI configuration override via the file + ``/Kiwi/etc/uwsgi.override`` + + +API +~~~ + +- New API method ``TestRun.add_attachment`` (David M. Johnson) +- New API method ``Environment.filter()`` method. Refs + `Issue #3034 `_ (@somenewacc) +- New API method ``Environment.create()``. Closes + `Issue #3034 `_ (@somenewacc) + + +Bug fixes +~~~~~~~~~ + +- Fix /admin/testcases/template/ page not being able to render the text editor + + +Refactoring +~~~~~~~~~~~ + +- Refactor bugtracker integration +- Remove unnecessary onChanged function for DurationWidget +- Refactoring to avoid inline `` - - diff --git a/pelicanconf.py b/pelicanconf.py new file mode 100644 index 00000000..735f3ee7 --- /dev/null +++ b/pelicanconf.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- # +from __future__ import unicode_literals + +AUTHOR = 'Kiwi TCMS Team' +SITENAME = 'Kiwi TCMS' +SITEURL = '' + +PATH = 'content' + +INDEX_SAVE_AS = 'blog/index.html' + +ARTICLE_URL = 'blog/{author}/{date:%Y}/{date:%m}/{date:%d}/{slug}/' +ARTICLE_SAVE_AS = ARTICLE_URL + 'index.html' + +TAG_URL = 'blog/tags/{slug}/' +TAG_SAVE_AS = TAG_URL + 'index.html' +TAGS_SAVE_AS = 'blog/tags/index.html' + +ARCHIVES_SAVE_AS = 'blog/archives/index.html' + +AUTHORS_SAVE_AS = 'blog/authors/index.html' +AUTHOR_URL = 'blog/{slug}/' +AUTHOR_SAVE_AS = AUTHOR_URL + 'index.html' +AUTHOR_SUBSTITUTIONS = [ + ('Alexander Todorov', 'atodorov'), +] + +CATEGORIES_SAVE_AS = '' +CATEGORY_SAVE_AS = '' + +STATIC_PATHS = ['google/google8b349b847d57319a.html', 'CNAME', 'images/', + 'scripts/', 'README', '2m.png'] +EXTRA_PATH_METADATA = { + 'google/google8b349b847d57319a.html': {'path': 'google8b349b847d57319a.html'}, +} +ARTICLE_EXCLUDES = PAGE_EXCLUDES = ['google'] + + +THEME = 'theme/' + +TIMEZONE = 'Europe/Sofia' + +DEFAULT_LANG = 'en' + +# Feed generation is usually not desired when developing +FEED_ALL_ATOM = None +CATEGORY_FEED_ATOM = None +TRANSLATION_FEED_ATOM = None +AUTHOR_FEED_ATOM = None +AUTHOR_FEED_RSS = None + +# Blogroll +LINKS = (('Pelican', 'http://getpelican.com/'), + ('Python.org', 'http://python.org/'), + ('Jinja2', 'http://jinja.pocoo.org/'), + ('You can modify those links in your config file', '#'),) + +# Social widget +SOCIAL = (('twitter', 'https://twitter.com/KiwiTCMS'), + ('github', 'https://github.com/kiwitcms'),) + +DEFAULT_PAGINATION = 20 + +# Uncomment following line if you want document-relative URLs when developing +#RELATIVE_URLS = True diff --git a/publishconf.py b/publishconf.py new file mode 100644 index 00000000..36c42525 --- /dev/null +++ b/publishconf.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- # +from __future__ import unicode_literals + +# This file is only used if you use `make publish` or +# explicitly specify it as your config file. + +import os +import sys +sys.path.append(os.curdir) +from pelicanconf import * + +# disable b/c we want to serve both via kiwitcms.org and kiwitcms.eu +#SITEURL = 'https://kiwitcms.org' +# will only be used for twitter & og images +_SITEURL = 'https://kiwitcms.org' +RELATIVE_URLS = False + +FEED_ALL_ATOM = 'feeds/all.atom.xml' +CATEGORY_FEED_ATOM = 'feeds/%s.atom.xml' + +DELETE_OUTPUT_DIRECTORY = True + +# Following items are often useful when publishing + +DISQUS_SITENAME = 'kiwitcms' +PLAUSIBLE_DOMAIN ="kiwitcms.org" +ADDTHIS_PUBID = "ra-5a8aeaec2954eb1b" diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..5033652a --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +ghp-import==2.1.0 +pelican==4.11.0 +Markdown==3.7 +Jinja2==3.1.5 diff --git a/style/color-palette-light.css b/style/color-palette-light.css deleted file mode 100644 index 04cf7d97..00000000 --- a/style/color-palette-light.css +++ /dev/null @@ -1,50 +0,0 @@ -/*COLOR PALETTE*/ -.primary { - background-color: #9ab451; - color: #1c3d32; -} - -.primary a { - color: #1c3d32; -} - -nav.primary a:hover { - background-color: #1c3d32; - color: #f6f6f6; -} - -nav.primary a.active { - background-color: #1c3d32; - color: #e3edea; -} - -.primary input { - background-color: #f6f6f6; -} - -.secondary { - background-color: #f6f6f6; - color: #1c3d32; -} - -.secondary img { - background-color: #9e9e9e; -} - -.accent-important { - background-color: #9ab451; - color: #212516; -} - -.accent-important-icon { - color: #9ab451; -} - -.accent-medium { - color: #1c3d32; -} - -.accent-unimportant { - background-color: #6e827b; - color: #e3edea; -} diff --git a/style/style.css b/style/style.css deleted file mode 100644 index 7fe1a985..00000000 --- a/style/style.css +++ /dev/null @@ -1,284 +0,0 @@ -/*Font sizing*/ - -h1 { - font-size: 3.5rem; -} - -h2 { - font-size: 2.5rem; -} - -h3 { - font-size: 2rem; -} - - -/* Reset */ - -*{ - padding: 0; - margin: 0; - font-family: 'Zilla Slab', serif; -} - -html { font-size: 62.5%; } -body { font-size: 1.8rem; } - -a{ - text-decoration: none; -} - - -/* Columns */ - -.col-1 {width: 8.33%;} -.col-2 {width: 16.66%;} -.col-3 {width: 25%;} -.col-4 {width: 33.33%;} -.col-5 {width: 41.66%;} -.col-6 {width: 50%;} -.col-7 {width: 58.33%;} -.col-8 {width: 66.66%;} -.col-9 {width: 75%;} -.col-10 {width: 83.33%;} -.col-11 {width: 91.66%;} -.col-12 {width: 100%;} - -[class|='col']{ - position: relative; - float: left; - min-height: 1rem; -} - -/* Navigation Section */ - -nav{ - padding: 1rem 0; - box-shadow: 0 0.2rem 0.5rem 0 rgba(0,0,0, .3); - z-index: 1; -} - -ul.topnav { - list-style-type: none; -} - -ul.topnav li {float: left;} -ul.topnav li.right {float: right;} - -ul.topnav li a { - display: block; - text-align: center; - padding: 0 1.6rem; - line-height: 5rem; - border-radius: 0.3rem; -} - -ul.topnav img { - margin-left: 1.5rem; -} - -ul.topnav li [name="q"] { - display: block; - height: 5rem; - margin: 0 1.5rem; - padding-left: 1.5rem; - border-radius: 0.3rem; - border: 0; -} - -/* Header Section */ - -.header{ - padding: 5% 0; -} - -.top-header{ - line-height: 1.4em; - font-family: 'Audiowide', serif; - margin-left: 5%; -} - -.top-subheader{ - line-height: 1.4em; - margin-left: 5%; -} - -.header-list{ - line-height: 2rem; - margin-top: 2em; - margin-left: 5%; - padding-left: 1.5rem; -} - -.header-btns{ - margin-top: 5rem; - margin-left: 5%; - font-size: 1.5rem; - font-weight: bold; -} - -.header-img{ - width: 100%; - height: 350px; - background-image: url('../images/pc_with_test_run_small.png'); - background-repeat: no-repeat; -} - -/* Btns */ - -.action-btn{ - display: inline-block; - margin-right: 0.5rem; - padding: 0 2.5rem; - border-radius: 0.3rem; - line-height: 5rem; - text-align: center; - white-space: nowrap; -} - -.action-btn-small { - text-align: center; - padding: 1rem; -} - -/* About Section */ - -.about-intro { - font-style: italic; - font-size: 3rem; - text-align: center; - padding: 2% 0; - margin-bottom: 4%; -} - -.info { - margin-bottom: 5rem; -} - -.about-panel-title { - font-weight: bold; - padding-bottom: 0.3rem; - padding-left: 1.8rem; -} - -.about-panel-details { - padding-top: 0.3rem; - padding-bottom: 1.8rem; - padding-left: 1.8rem; -} - -/* Screenshots Section */ - -.screenshot-title{ - padding: 2% 0; - text-align: center; - line-height: 1.4em; -} - -.screenshot-title h3{ - font-size: 3rem; -} - -.screenshot-title p{ - margin-top: 1.5rem; -} - -.img{ - position: absolute; - top: 5rem; - display: block; - width: 922px; - height: 450px; - box-shadow: 0 0.5rem 1rem 0 rgba(0,0,0, .3); -} - -.shown{ - left: 0; - transition: left .6s ease, transform .6s ease; -} - -.hidden-left{ - left: -105%; -} - -.hidden-right{ - left: 105%; -} - -.img-wrapper{ - position: relative; - width: 922px; - height: 450px; - padding: 3rem 2rem; - margin: auto; - white-space: nowrap; - overflow: hidden; -} - -.img-index{ - text-align: center; - font-size: 2.5rem; - padding: 2rem 0; -} - -.arrow-left { - display: block; - position: relative; - left: 0; - top: 25rem; - width: 100%; - line-height: 5rem; - text-align: center; - cursor: pointer; -} - - -.arrow-right { - display: block; - position: relative; - left: 0; - top: 25rem; - width: 100%; - line-height: 5rem; - text-align: center; - cursor: pointer; -} - -/* Footer Section */ - -.footer{ - padding: 2% 0; - display: inline-block; - font-size: 1.2rem; -} - -.footer-logo{ - float: right; - margin-right: 1rem; - vertical-align: middle; - overflow-wrap: break-word; -} - -.footer-copyright{ - line-height: 1.8em; - vertical-align: middle; - overflow-wrap: break-word; -} - -.footer-copyright a{ - text-decoration: underline; -} - -.footer-sociallinks{ - list-style-type: none; - text-align: right; -} - -.footer-sociallinks li{ - display: inline-block; - margin-right: 1.5rem; -} - -.footer-sociallinks a{ - font-size: 3.5rem; -} diff --git a/theme/components.css b/theme/components.css new file mode 100644 index 00000000..961684c7 --- /dev/null +++ b/theme/components.css @@ -0,0 +1,283 @@ +/* Fonts from Google Fonts */ +/* Source Sans Pro & Rubik */ +@import url('https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300;0,400;0,500;0,700;0,900;1,300;1,400;1,500;1,700;1,900&family=Source+Sans+Pro:ital,wght@0,200;0,300;0,400;0,600;0,700;0,900;1,200;1,300;1,400;1,600;1,700;1,900&display=swap'); +/* I! Remove unused weights. */ + +@import url('https://maxst.icons8.com/vue-static/landings/line-awesome/line-awesome/1.3.0/css/line-awesome.min.css'); + +*{ + margin: 0; + padding: 0; + font-family: "Rubik", sans-serif; + list-style: none; +} + +:root { + /* Colors */ + --dark-green: #3c8d2c; + --mid-green: #59a016; + --light-green: #78b500; + --trans-green: #3c8d2c80; + --white: #ffffff; + --light-gray: #f8f8f8; + --brown: #36302c; + --black: #222222; + /* Sizes */ + --usable-area: 86vw; + --unusable-padding: 7vw; + --x1-padding: 10px; + --x2-padding: 20px; + --x3-padding: 30px; + --sec-padding: 70px; + --grid-gap: 30px; + --nav-border-bottom: 4px; + /* Icons */ + --la-play: "\f144"; + --la-check: "\f14a"; + --la-arrow: "\f061"; + --la-cl-down: "\f381"; + --la-book: "\f02d"; + --la-team: "\f0c0"; + --la-headset: "\f590"; + --fa-caret: "\f0da"; + --fa-caret-down: "\f0d7"; + --la-arrow-left: "\f104"; + --la-arrow-right: "\f105"; + --la-quote: "\f10d"; + --la-twitter: "\f081"; + --la-github: "\f092"; + --la-mail: "\f0e0"; + --fa-info: "\f05a"; + --la-close: "\f00d"; + /* Shadows */ + --light-shadow: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.2)); + --lower-shadow: drop-shadow(0 6px 10px rgba(0, 0, 0, 0.2)); + --image-shadow: drop-shadow(3px 3px 15px rgba(0, 0, 0, 0.2)); +} +hr{ + border:1px solid var(--trans-green); +} +header, section{ + width:86vw; + padding:7vw; +} +header h1{ + font-family: "Source Sans Pro Black", "Source Sans Pro", sans-serif; + font-size: 60px; + color:var(--dark-green); +} +header h3{ + font-family: "Rubik Bold", "Rubik", sans-serif; + font-size: 25px; + color:var(--black); +} +header span{ + font-family: "Rubik", sans-serif; + font-size: 20px; + color:var(--black); +} +section span{ + font-family: "Rubik Bold", "Rubik", sans-serif; + font-size: 25px; + font-weight: bold; + color:var(--trans-green); +} + +/* Colors */ +.colors-grid{ + margin-top:62px; + display: grid; + grid-gap: 30px; + grid-template-columns: 1fr 1fr 1fr 1fr; +} +.colors-grid div{ + font-family: "Rubik", sans-serif; + font-size: 20px; + padding:30px; + filter:var(--light-shadow); +} +.colors-grid div:nth-child(1){ + background:var(--dark-green); + color:var(--white); +} +.colors-grid div:nth-child(2){ + background:var(--mid-green); + color:var(--white); +} +.colors-grid div:nth-child(3){ + background:var(--light-green); + color:var(--white); +} +.colors-grid div:nth-child(4){ + background:var(--trans-green); +} +.colors-grid div:nth-child(5){ + background:var(--white); +} +.colors-grid div:nth-child(6){ + background:var(--light-gray); +} +.colors-grid div:nth-child(7){ + background:var(--brown); + color:var(--white); +} +.colors-grid div:nth-child(8){ + background:var(--black); + color:var(--white); +} + +#titles h1.header{ + font-family: "Source Sans Pro Black", "Source Sans Pro", sans-serif; + font-size: 60px; + color:var(--dark-green); +} + +#titles ul.check li:before{ + content:var(--la-check); + font-family: 'Line Awesome Free'; + font-weight: 900; + margin-right: 7px; + font-size:32px; +} + +#titles ul.check li{ + font-size: 30px; + margin-bottom: 3px; +} + +#titles ul.caret li:before{ + content:var(--fa-caret); + font-family: "Font Awesome 5 Free"; + font-weight: 900; + margin-right: 5px; +} + +#titles ul.caret li{ + font-size: 20px; + margin-bottom: 9px; +} + +#titles h1.section{ + font-family: "Source Sans Pro Bold", "Source Sans Pro", sans-serif; + font-style:oblique; + font-size: 60px; + color:var(--dark-green); +} + +#titles h3{ + font-family: "Rubik Bold", "Rubik", sans-serif; + font-weight: bold; + font-size: 25px; +} +#titles h2{ + color: white; + font-family: "Source Sans Pro Bold", "Source Sans Pro", sans-serif; + font-size: 40px; + font-style: oblique; + + /* for context */ + + padding: 5px; + background: var(--dark-green); +} + +#titles p, #titles a{ + font-size: 20px; +} + +/* CODE */ +code{ + font-family: "JetBrains Mono", "Consolas", monospace; + color: var(--dark-green); + background-color: var(--light-gray); + padding: 2px 4px; + font-size:inherit; + border-radius:2px; + border:1px solid var(--trans-green); +} +.link-light-bg{ + color: var(--dark-green); + /* for context */ + padding:15px; + background: var(--light-gray); + display:inline-block; + margin-top:5px; +} +.link-dark-bg{ + color: var(--light-green); + /* for context */ + padding:15px; + background: var(--black); + display:inline-block; + margin-top:5px; +} + +#buttons a{ + /* for showcase */ + display:inline-block; +} +.btn{ + padding:9px 30px; + color:var(--white); + background: var(--dark-green); + font-size: 20px; + line-height: 32px; + text-decoration: none; +} +.btn[icon]{ + padding:9px 20px 9px 30px; +} + +.btn:hover{ + background: var(--light-green); +} + +.btn:hover i:after{ + margin-left:55px; + margin-right:0px; +} + +.big-btn{ + padding:9px 30px; + color:var(--white); + background: var(--dark-green); + font-size: 30px; + line-height: 42px; + text-decoration: none; +} +.btn i:after{ + content: var(--la-arrow); + font-size: 32px; + margin-left: 45px; + font-family: 'Line Awesome Free'; + font-weight: 900; + color: white; + vertical-align: top; + font-style: normal; + margin-right: 10px; + transition: margin .1s linear; +} +.big-btn i:after{ + font-size: 45px; +} +.border-btn{ +background: var(--mid-green); +border:2px solid white; +} +.border-btn i:after{ + margin-left: 25px; +} +.border-btn:hover i:after{ + margin-left: 35px; +} +.ghost-btn{ +background: transparent; +border:2px solid white; +} +.ghost-btn:hover{ + background:var(--white); + color:var(--black); +} +.ghost-btn:hover i:after{ + color:var(--black); +} diff --git a/theme/components.html b/theme/components.html new file mode 100644 index 00000000..75288bc4 --- /dev/null +++ b/theme/components.html @@ -0,0 +1,104 @@ + + + + KiwiTCMS Redesign Components + + + + + +
+

KiwiTCMS 2020 Redesign

+

Styles & Components
Partial Reference

+ v1.0 / 29.06.2020 +
+
+ + +
+ Colors +
+
Dark Green [#3C8D2C]
+
Midpoint Green [#59A016]
+
Light Green [#78B500]
+
Transparent Green [#3C8D2C80]
+
White [#FFFFFF]
+
Light Gray [#F8F8F8]
+
Brown [#36302C]
+
Black [#222222]
+
+
+
+
+ Text styles +

Header > Title [Source Sans Pro Black 60]

+
    +
  • Checkbox List [Rubik Regular 30 / la-32]
  • +
  • Header > List Items
  • +
+

Leading Content Titles [Rubik Bold 25]

+

Leading Content Text [Rubik Regular 20]

+

Mission Statement [Source Sans Pro Bold Italic 40]

+

Section Title [Source Sans Pro Bold Italic 60]

+
    +
  • General Caret List [Rubik Regular 20 / fa-20]
  • +
  • Plans > List Items
  • +
+

This is a code-sample

+ + Link on white/light background [#3C8D2C]
+ Link on black/dark background [#78B500] +
+
+
+ Button Styles +

+ Default +
+
+ Get Started +
+
+ Get Started +
+
+ Big [big-btn] +
+
+ Get Started +
+
+ Get Started +
+
+ Bordered [border-btn] +
+
+ +
+ Ghost [ghost-btn] +
+
+ +
+
+ Blocks + + +
+ +
+
+ + diff --git a/theme/static/images/Kiwi-TCMS-logo-footer.svg b/theme/static/images/Kiwi-TCMS-logo-footer.svg new file mode 100644 index 00000000..13b4dcac --- /dev/null +++ b/theme/static/images/Kiwi-TCMS-logo-footer.svg @@ -0,0 +1,491 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/theme/static/images/Kiwi-TCMS-logo-header.svg b/theme/static/images/Kiwi-TCMS-logo-header.svg new file mode 100644 index 00000000..9338f530 --- /dev/null +++ b/theme/static/images/Kiwi-TCMS-logo-header.svg @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/theme/static/images/header-pattern.png b/theme/static/images/header-pattern.png new file mode 100644 index 00000000..e44d630c Binary files /dev/null and b/theme/static/images/header-pattern.png differ diff --git a/theme/static/images/header-pattern.svg b/theme/static/images/header-pattern.svg new file mode 100644 index 00000000..ec79f5c5 --- /dev/null +++ b/theme/static/images/header-pattern.svg @@ -0,0 +1 @@ + diff --git a/theme/static/images/kiwi-triangle-mg-bottom.svg b/theme/static/images/kiwi-triangle-mg-bottom.svg new file mode 100644 index 00000000..ef9c1b42 --- /dev/null +++ b/theme/static/images/kiwi-triangle-mg-bottom.svg @@ -0,0 +1,9 @@ + + + + + + diff --git a/theme/static/images/kiwi-triangle-mg.svg b/theme/static/images/kiwi-triangle-mg.svg new file mode 100644 index 00000000..deb04b52 --- /dev/null +++ b/theme/static/images/kiwi-triangle-mg.svg @@ -0,0 +1,9 @@ + + + + + + diff --git a/theme/static/images/kiwi-triangle.svg b/theme/static/images/kiwi-triangle.svg new file mode 100644 index 00000000..c1f2e1db --- /dev/null +++ b/theme/static/images/kiwi-triangle.svg @@ -0,0 +1,9 @@ + + + + + + diff --git a/theme/static/images/og_image.png b/theme/static/images/og_image.png new file mode 100644 index 00000000..b66385e3 Binary files /dev/null and b/theme/static/images/og_image.png differ diff --git a/theme/static/images/pattern-v1.png b/theme/static/images/pattern-v1.png new file mode 100644 index 00000000..12d2cad9 Binary files /dev/null and b/theme/static/images/pattern-v1.png differ diff --git a/theme/static/images/pattern-v2.png b/theme/static/images/pattern-v2.png new file mode 100644 index 00000000..f7b77d98 Binary files /dev/null and b/theme/static/images/pattern-v2.png differ diff --git a/theme/static/images/pc_with_test_run_small.png b/theme/static/images/pc_with_test_run_small.png new file mode 100644 index 00000000..50123065 Binary files /dev/null and b/theme/static/images/pc_with_test_run_small.png differ diff --git a/theme/static/images/twitter-card.svg b/theme/static/images/twitter-card.svg new file mode 100644 index 00000000..067d5f9e --- /dev/null +++ b/theme/static/images/twitter-card.svg @@ -0,0 +1,13621 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + open source test management + + + + + + + + + + + + + + diff --git a/theme/static/images/twitter_card.png b/theme/static/images/twitter_card.png new file mode 100644 index 00000000..b66385e3 Binary files /dev/null and b/theme/static/images/twitter_card.png differ diff --git a/theme/static/scripts/toggle.js b/theme/static/scripts/toggle.js new file mode 100644 index 00000000..e84a8a61 --- /dev/null +++ b/theme/static/scripts/toggle.js @@ -0,0 +1,8 @@ +function toggle(objectId, toggleClass) { + var toggleObject = document.getElementById(objectId); + if (toggleObject.classList.contains(toggleClass)) { + toggleObject.classList.remove(toggleClass); + } else { + toggleObject.classList.add(toggleClass); + } +} diff --git a/theme/static/style/github.css b/theme/static/style/github.css new file mode 100644 index 00000000..dc60655f --- /dev/null +++ b/theme/static/style/github.css @@ -0,0 +1,61 @@ +.hll { background-color: #ffffcc } +.c { color: #999988; font-style: italic } /* Comment */ +.err { color: #a61717; background-color: #e3d2d2 } /* Error */ +.k { color: #000000; font-weight: bold } /* Keyword */ +.o { color: #000000; font-weight: bold } /* Operator */ +.cm { color: #999988; font-style: italic } /* Comment.Multiline */ +.cp { color: #999999; font-weight: bold; font-style: italic } /* Comment.Preproc */ +.c1 { color: #999988; font-style: italic } /* Comment.Single */ +.cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ +.gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ +.ge { color: #000000; font-style: italic } /* Generic.Emph */ +.gr { color: #aa0000 } /* Generic.Error */ +.gh { color: #999999 } /* Generic.Heading */ +.gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ +.go { color: #888888 } /* Generic.Output */ +.gp { color: #555555 } /* Generic.Prompt */ +.gs { font-weight: bold } /* Generic.Strong */ +.gu { color: #aaaaaa } /* Generic.Subheading */ +.gt { color: #aa0000 } /* Generic.Traceback */ +.kc { color: #000000; font-weight: bold } /* Keyword.Constant */ +.kd { color: #000000; font-weight: bold } /* Keyword.Declaration */ +.kn { color: #000000; font-weight: bold } /* Keyword.Namespace */ +.kp { color: #000000; font-weight: bold } /* Keyword.Pseudo */ +.kr { color: #000000; font-weight: bold } /* Keyword.Reserved */ +.kt { color: #445588; font-weight: bold } /* Keyword.Type */ +.m { color: #009999 } /* Literal.Number */ +.s { color: #d01040 } /* Literal.String */ +.na { color: #008080 } /* Name.Attribute */ +.nb { color: #0086B3 } /* Name.Builtin */ +.nc { color: #445588; font-weight: bold } /* Name.Class */ +.no { color: #008080 } /* Name.Constant */ +.nd { color: #3c5d5d; font-weight: bold } /* Name.Decorator */ +.ni { color: #800080 } /* Name.Entity */ +.ne { color: #990000; font-weight: bold } /* Name.Exception */ +.nf { color: #990000; font-weight: bold } /* Name.Function */ +.nl { color: #990000; font-weight: bold } /* Name.Label */ +.nn { color: #555555 } /* Name.Namespace */ +.nt { color: #000080 } /* Name.Tag */ +.nv { color: #008080 } /* Name.Variable */ +.ow { color: #000000; font-weight: bold } /* Operator.Word */ +.w { color: #bbbbbb } /* Text.Whitespace */ +.mf { color: #009999 } /* Literal.Number.Float */ +.mh { color: #009999 } /* Literal.Number.Hex */ +.mi { color: #009999 } /* Literal.Number.Integer */ +.mo { color: #009999 } /* Literal.Number.Oct */ +.sb { color: #d01040 } /* Literal.String.Backtick */ +.sc { color: #d01040 } /* Literal.String.Char */ +.sd { color: #d01040 } /* Literal.String.Doc */ +.s2 { color: #d01040 } /* Literal.String.Double */ +.se { color: #d01040 } /* Literal.String.Escape */ +.sh { color: #d01040 } /* Literal.String.Heredoc */ +.si { color: #d01040 } /* Literal.String.Interpol */ +.sx { color: #d01040 } /* Literal.String.Other */ +.sr { color: #009926 } /* Literal.String.Regex */ +.s1 { color: #d01040 } /* Literal.String.Single */ +.ss { color: #990073 } /* Literal.String.Symbol */ +.bp { color: #999999 } /* Name.Builtin.Pseudo */ +.vc { color: #008080 } /* Name.Variable.Class */ +.vg { color: #008080 } /* Name.Variable.Global */ +.vi { color: #008080 } /* Name.Variable.Instance */ +.il { color: #009999 } /* Literal.Number.Integer.Long */ diff --git a/theme/static/style/responsive-1024.css b/theme/static/style/responsive-1024.css new file mode 100644 index 00000000..47857bd0 --- /dev/null +++ b/theme/static/style/responsive-1024.css @@ -0,0 +1,175 @@ +@media screen and (max-width: 1439px) and (min-width: 1024px) { + /* COMMON */ + + .big-btn i:after { + font-size: 32px; + } + .big-btn { + padding: 9px var(--x3-padding); + font-size: 20px; + line-height: 32px; + } + + h3 { + font-size: 20px; + } + body.page section p, body.page section li, body.page section pre, p { + font-size: 17px; + } + section > h1 { + font-size: 40px; + } + .member-bio > strong{ + font-size: 20px; + } + .member-bio > em{ + font-size: 17px; + } + + /* HEADER */ + header { + padding: calc(var(--unusable-padding) * 2) var(--unusable-padding); + } + header .lead h1 { + font-size: 40px; + } + header .lead ul li { + font-size: 20px; + margin-bottom: 3px; + } + header .lead ul li:before { + font-size: 21px; + } + + /* NAVIGATION */ + #main-nav > ul { + margin-left: var(--x1-padding); + } + #main-nav i { + font-size: 36px; + color: var(--dark-green); + margin-left: auto; + } + #main-nav > i { + display: unset !important; + } + #main-nav .hidden-menu i, + #main-nav .hidden-menu a:first-child{ + grid-row: 1; + grid-column: 1; + } + #main-nav > ul:not(.hidden-menu) li:not(:last-child) { + display: none; + } + #main-nav details ul { + font-size: 20px; + } + + #main-nav ul.hidden-menu { + position: fixed; + height: 100vh; + width: calc(100vw - var(--unusable-padding) * 2); + margin: 0; + left: 0; + padding: 0 var(--unusable-padding); + background: var(--white); + display: grid; + transition: top 0.2s linear; + top: -150%; + pointer-events: none; + opacity: 0; + align-items: center; + } + #main-nav ul.hidden-menu.visible { + display: grid; + top: 0; + opacity: 1; + pointer-events: all; + } + + #main-nav img { + height: 40px; + padding: 26px 0; + } + + /* MISSION */ + #mission p { + font-size: 25px; + } + + /* QUICK LINKS */ + + #quick-links { + grid-template-columns: repeat(2, 1fr); + } + + /* S PRICING */ + #pricing { + grid-template-columns: repeat(2, 1fr); + } + #pricing h1 { + grid-column: 1/3; + } + #pricing .plan h3, + #pricing .plans-modal h3 { + font-size: 20px; + } + #pricing .plan > a { + font-size: 20px; + } + ul.caret li, + ul.caret details { + font-size: 17px; + } + + #pricing .plans-modal { + grid-column: 1/3; + } + + /* S SCREENS > SLIDER */ + + .tns-slide-active, + .tns-slide-active + .tns-slide-active + .tns-slide-active, + .tns-slide-active + .tns-slide-active + .tns-slide-active + .tns-slide-active, + .tns-slide-active + .tns-slide-active + .tns-slide-active + .tns-slide-active + .tns-slide-active { + width: calc((var(--usable-area)-11 * var(--grid-gap)) / 12 * 3) !important; + /* overwrite default */ + } + .tns-slide-active + .tns-slide-active { + width: calc((var(--usable-area)-11 * var(--grid-gap)) / 12 * 7) !important; + } + + /* S TESTIMONIALS */ + + #testimonials { + grid-template-columns: repeat(2, 1fr); + } + + /* FOOTER */ + footer { + grid-template-columns: 2fr 1fr 2fr 2fr; + grid-template-areas: + "logo logo fl-tw fl-gh" + "legal legal fl-yt fl-fb" + "legal legal mail mail"; + } + footer h3 { + font-size: 20px; + } + footer a, + footer p { + font-size: 17px; + } + #blog-list article.blog-list h1{ + font-size:25px; + } + #blog-list article.blog-list h2{ + font-size:20px; + } + #blog-list article.blog-list h3{ + font-size:17px; + } + #blog-list article.blog-list .content, #blog-article article.content{ + font-size: 17px; + } +} diff --git a/theme/static/style/responsive-1440.css b/theme/static/style/responsive-1440.css new file mode 100644 index 00000000..5a3d772a --- /dev/null +++ b/theme/static/style/responsive-1440.css @@ -0,0 +1,54 @@ +@media screen and (max-width: 1679px) and (min-width: 1440px) { + /* HEADER > NAVIGATION */ + + #main-nav img { + height: 40px; + padding: 26px 0; + } + + /* QUICK LINKS */ + #quick-links div { + grid-template-columns: unset; + grid-template-rows: max-content auto 1fr; + grid-template-areas: + "icon" + "title" + "description"; + } + + /* S PRICING */ + #pricing { + grid-template-columns: repeat(3, 1fr); + } + #pricing h1 { + grid-column: 1/4; + } + #pricing .plans-modal { + grid-column: 2/4; + } + + /* S SCREENS > SLIDER */ + + .tns-slide-active, + .tns-slide-active + .tns-slide-active + .tns-slide-active, + .tns-slide-active + .tns-slide-active + .tns-slide-active + .tns-slide-active, + .tns-slide-active + .tns-slide-active + .tns-slide-active + .tns-slide-active + .tns-slide-active { + width: calc((var(--usable-area)-11 * var(--grid-gap)) / 12 * 3) !important; + /* overwrite default */ + } + .tns-slide-active + .tns-slide-active { + width: calc((var(--usable-area)-11 * var(--grid-gap)) / 12 * 7) !important; + } + + /* S TESTIMONIALS */ + + body.page_home blockquote { + grid-template-columns: 1fr; + grid-template-areas: + "description" + "author"; + } + blockquote i { + display: none !important; + } +} diff --git a/theme/static/style/responsive-768.css b/theme/static/style/responsive-768.css new file mode 100644 index 00000000..99ce9a08 --- /dev/null +++ b/theme/static/style/responsive-768.css @@ -0,0 +1,237 @@ +@media screen and (max-width: 1023px) and (min-width: 768px) { + /* COMMON */ + + .big-btn i:after { + font-size: 32px; + } + .big-btn { + padding: 9px var(--x3-padding); + font-size: 20px; + line-height: 32px; + } + + h3 { + font-size: 20px; + } + body.page section p, body.page section li, body.page section pre, p { + font-size: 17px; + } + section > h1 { + font-size: 40px; + } + .member-bio > strong{ + font-size: 20px; + } + .member-bio > em{ + font-size: 17px; + } + + /* HEADER */ + header { + padding: calc(var(--unusable-padding) * 2) var(--unusable-padding); + } + header .lead h1 { + font-size: 40px; + } + header .lead ul li { + font-size: 20px; + margin-bottom: 3px; + } + header .lead ul li:before { + font-size: 21px; + } + + header { + grid-template-areas: "lead lead ."; + grid-template-columns: 1fr 1fr 1fr; + } + + header .video { + display: none; + } + + /* NAVIGATION */ + #main-nav > ul { + margin-left: var(--x1-padding); + } + #main-nav i { + font-size: 36px; + color: var(--dark-green); + margin-left: auto; + } + #main-nav > i { + display: unset !important; + } + #main-nav .hidden-menu i, + #main-nav .hidden-menu a:first-child { + grid-row: 1; + grid-column: 1; + } + #main-nav > ul:not(.hidden-menu) li:not(:last-child) { + display: none; + } + #main-nav details ul { + font-size: 20px; + } + #main-nav ul.hidden-menu { + position: fixed; + height: 100vh; + width: calc(100vw - var(--unusable-padding) * 2); + margin: 0; + left: 0; + padding: 0 var(--unusable-padding); + background: var(--white); + display: grid; + transition: top 0.2s linear; + top: -150%; + pointer-events: none; + opacity: 0; + align-items: center; + } + #main-nav ul.hidden-menu.visible { + display: grid; + top: 0; + opacity: 1; + pointer-events: all; + } + + #main-nav img { + height: 40px; + padding: 26px 0; + } + + /* FEATURES */ + + .feature-list { + display: grid; + grid-template-columns: repeat(3, 1fr); + } + + .feature-list div:nth-child(4):before { + content: ""; + position: absolute; + width: 100vw; + height: calc(var(--unusable-padding) * 2); + background-color: var(--dark-green); + margin: calc(var(--x3-padding) * -1 - 1px) calc(var(--unusable-padding) * -1 - var(--x3-padding) - 1px); + z-index: -100; + } + .feature-list div:nth-child(5):before { + content: none; + } + .feature-list div:nth-child(7), + .feature-list div:nth-child(8) { + display: none; + } + .feature-list > a { + grid-column: 1/4; + } + + /* MISSION */ + #mission p { + font-size: 25px; + } + + /* QUICK LINKS */ + + #quick-links { + grid-template-columns: repeat(2, 1fr); + } + + /* S PRICING */ + #pricing { + grid-template-columns: repeat(2, 1fr); + } + #pricing h1 { + grid-column: 1/3; + } + #pricing .plan h3, + #pricing .plans-modal h3 { + font-size: 20px; + } + #pricing .plan > a { + font-size: 20px; + } + ul.caret li, + ul.caret details { + font-size: 17px; + } + + #pricing .plans-modal { + grid-column: 1/3; + } + + /* S SCREENS > SLIDER */ + + .tns-slide-active, + .tns-slide-active + .tns-slide-active + .tns-slide-active, + .tns-slide-active + .tns-slide-active + .tns-slide-active + .tns-slide-active, + .tns-slide-active + .tns-slide-active + .tns-slide-active + .tns-slide-active + .tns-slide-active { + width: calc((var(--usable-area)-11 * var(--grid-gap)) / 12 * 3) !important; + /* overwrite default */ + } + .tns-slide-active + .tns-slide-active { + width: calc((var(--usable-area)-11 * var(--grid-gap)) / 12 * 9) !important; + } + + /* S TESTIMONIALS */ + + #testimonials { + grid-template-columns: repeat(2, 1fr); + } + /* S TESTIMONIALS */ + + body.page_home blockquote { + grid-template-columns: 1fr; + grid-template-areas: + "description" + "author"; + } + blockquote i { + display: none !important; + } + + #trusted-by, + #seen-at, + #awards { + grid-template-columns: repeat(4, 1fr); + } + #trusted-by h1, + #seen-at h1, + #awards h1 { + grid-column: 1/5; + } + + /* FOOTER */ + footer { + grid-template-columns: 1fr 1fr; + grid-template-areas: + "logo ." + "legal legal" + "fl-tw fl-yt" + "fl-gh fl-fb" + "mail mail" + } + footer h3 { + font-size: 20px; + } + footer a, + footer p { + font-size: 17px; + } + body.page section, #blog-list, #blog-article{ + background-image: none; + } + #blog-list article.blog-list h1{ + font-size:25px; + } + #blog-list article.blog-list h2{ + font-size:20px; + } + #blog-list article.blog-list h3{ + font-size:17px; + } + #blog-list article.blog-list .content, #blog-article article.content{ + font-size: 17px; + } +} diff --git a/theme/static/style/responsive-micro.css b/theme/static/style/responsive-micro.css new file mode 100644 index 00000000..ab82e8c3 --- /dev/null +++ b/theme/static/style/responsive-micro.css @@ -0,0 +1,272 @@ +@media screen and (max-width: 767px) { + /* COMMON */ + + .big-btn i:after { + font-size: 32px; + } + .big-btn { + padding: 9px var(--x3-padding); + font-size: 20px; + line-height: 32px; + } + + h3 { + font-size: 20px; + } + body.page section p, body.page section li, body.page section pre, p { + font-size: 17px; + } + section > h1 { + font-size: 40px; + } + .member-bio > strong{ + font-size: 20px; + } + .member-bio > em{ + font-size: 17px; + } + + /* HEADER */ + header { + padding: calc(var(--unusable-padding) * 4) var(--unusable-padding); + } + header .lead h1 { + font-size: 40px; + } + header .lead ul li { + font-size: 20px; + margin-bottom: 3px; + } + header .lead ul li:before { + font-size: 21px; + } + + header { + grid-template-areas: "lead"; + grid-template-columns: 1fr; + } + + header .video { + display: none; + } + + /* HEADER > NAVIGATION */ + #main-nav > ul { + margin-left: var(--x1-padding); + } + #main-nav i { + font-size: 36px; + color: var(--dark-green); + margin-left: auto; + } + #main-nav > i { + display: unset !important; + } + #main-nav .hidden-menu i, + #main-nav .hidden-menu a:first-child{ + grid-row: 1; + grid-column: 1; + } + #main-nav > ul:not(.hidden-menu) li { + display: none; + } + #main-nav details ul { + font-size: 20px; + } + #main-nav ul.hidden-menu { + position: fixed; + height: 100vh; + width: calc(100vw - var(--unusable-padding) * 2); + margin: 0; + left: 0; + padding: 0 var(--unusable-padding); + background: var(--white); + display: grid; + transition: top 0.2s linear; + top: -150%; + pointer-events: none; + opacity: 0; + align-items: center; + } + #main-nav ul.hidden-menu.visible { + display: grid; + top: 0; + opacity: 1; + pointer-events: all; + } + + #main-nav img { + height: 30px; + padding: 33px 0; + } + + /* FEATURES */ + + .feature-list { + display: grid; + grid-template-columns: 1fr; + } + + .feature-list div:nth-child(3):before { + content: ""; + position: absolute; + width: 100vw; + height: calc(var(--unusable-padding) * 2); + background-color: var(--dark-green); + margin: calc(var(--x3-padding) * -1 - 1px) calc(var(--unusable-padding) * -1 - var(--x3-padding) - 1px); + z-index: -100; + } + .feature-list div:nth-child(5):before { + content: none; + } + .feature-list div:nth-child(5), + .feature-list div:nth-child(6), + .feature-list div:nth-child(7), + .feature-list div:nth-child(8) { + display: none; + } + .feature-list > a { + grid-column: 1/2; + } + + /* MISSION */ + #mission { + padding: var(--unusable-padding); + } + #mission p { + font-size: 25px; + grid-column: 1/7; + } + + /* QUICK LINKS */ + + #quick-links { + grid-template-columns: 1fr; + } + + /* S PRICING */ + #pricing { + grid-template-columns: 1fr; + } + #pricing h1 { + grid-column: 1/2; + } + #pricing .plan h3, + #pricing .plans-modal h3 { + font-size: 20px; + } + #pricing .plan > a { + font-size: 20px; + } + ul.caret li, + ul.caret details { + font-size: 17px; + } + + #pricing .plans-modal { + grid-column: 1/2; + } + + /* S SCREENS > SLIDER */ + + .tns-slide-active, + .tns-slide-active + .tns-slide-active + .tns-slide-active, + .tns-slide-active + .tns-slide-active + .tns-slide-active + .tns-slide-active, + .tns-slide-active + .tns-slide-active + .tns-slide-active + .tns-slide-active + .tns-slide-active { + width: calc((var(--usable-area)-11 * var(--grid-gap)) / 12 * 3) !important; + /* overwrite default */ + } + .tns-slide-active + .tns-slide-active { + width: calc((var(--usable-area)-11 * var(--grid-gap))) !important; + } + + /* S TESTIMONIALS */ + + #testimonials { + grid-template-columns: 1fr; + } + /* S TESTIMONIALS */ + + body.page_home blockquote { + grid-template-columns: 1fr; + grid-template-areas: + "description" + "author"; + } + blockquote i { + display: none !important; + } + + #trusted-by, + #seen-at, + #awards { + grid-template-columns: repeat(3, 1fr); + } + #trusted-by h1, + #seen-at h1, + #awards h1 { + grid-column: 1/4; + } + + /* CTA */ + + #cta { + grid-template-areas: + "cta-title" + "cta-desc" + " cta-btn"; + } + #cta > div.drop-btn { + justify-self: start; + margin-top: var(--x2-padding); + } + div.drop-cnt{ + right: unset; + } + + /* FOOTER */ + footer { + grid-template-columns: 1fr; + grid-template-areas: + "logo" + "legal" + "fl-tw" + "fl-gh" + "fl-yt" + "fl-fb" + "mail"; + } + footer h3 { + font-size: 20px; + } + footer a, + footer p { + font-size: 17px; + } + body.page section, #blog-list, #blog-article{ + background-image: none; + } + #blog-list article.blog-list h1{ + font-size:25px; + } + #blog-list article.blog-list h2{ + font-size:20px; + } + #blog-list article.blog-list h3{ + font-size:17px; + } + #blog-list article.blog-list .content, #blog-article article.content{ + font-size: 17px; + } +} + +@media screen and (max-width: 500px) { + #quick-links div { + grid-template-columns: unset; + grid-template-rows: max-content auto 1fr; + grid-template-areas: + "icon" + "title" + "description"; + } +} diff --git a/theme/static/style/style.css b/theme/static/style/style.css new file mode 100644 index 00000000..0d1efc0e --- /dev/null +++ b/theme/static/style/style.css @@ -0,0 +1,1200 @@ +/* Source Sans Pro & Rubik */ +@import url("https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300;0,400;0,500;0,700;0,900;1,300;1,400;1,500;1,700;1,900&family=Source+Sans+Pro:ital,wght@0,200;0,300;0,400;0,600;0,700;0,900;1,200;1,300;1,400;1,600;1,700;1,900&display=swap"); +/* I! Remove unused weights. */ +/* Souce Code Pro 500 */ +@import url("https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@500&display=swap"); +/* LineAwesome for most icons */ +@import url("https://maxst.icons8.com/vue-static/landings/line-awesome/line-awesome/1.3.0/css/line-awesome.min.css"); +/* FontAwesome for carets & info icons */ +@import url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"); + +* { + margin: 0; + padding: 0; + font-family: "Rubik", sans-serif; + list-style-position: inside; + color: inherit; +} + +:root { + /* Colors */ + --dark-green: #3c8d2c; + --mid-green: #59a016; + --light-green: #78b500; + --trans-green: #3c8d2c80; + --white: #ffffff; + --light-gray: #f8f8f8; + --brown: #36302c; + --black: #222222; + /* Sizes */ + --usable-area: 86vw; + --unusable-padding: 7vw; + --x1-padding: 10px; + --x2-padding: 20px; + --x3-padding: 30px; + --sec-padding: 70px; + --grid-gap: 30px; + --nav-border-bottom: 4px; + /* Icons */ + --la-play: "\f144"; + --la-check: "\f14a"; + --la-arrow: "\f061"; + --la-arrow-rev: "\f060"; + --la-cl-down: "\f381"; + --la-book: "\f02d"; + --la-team: "\f0c0"; + --la-headset: "\f590"; + --fa-caret: "\f0da"; + --fa-caret-down: "\f0d7"; + --fa-angle-right: "\f105"; + --fa-arrow-left: "\f060"; + --la-arrow-right: "\f105"; + --la-quote: "\f10d"; + --la-twitter: "\f081"; + --la-github: "\f092"; + --la-facebook: "\f082"; + --la-youtube: "\f431"; + --la-mail: "\f0e0"; + --la-reddit: "\f1a2"; + --fa-info: "\f05a"; + --la-close: "\f00d"; + --fa-link: "\f0c1"; + --fa-video: "\f04b"; + /* Shadows */ + --light-shadow: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.2)); + --lower-shadow: drop-shadow(0 6px 10px rgba(0, 0, 0, 0.2)); + --image-shadow: drop-shadow(3px 3px 15px rgba(0, 0, 0, 0.2)); +} + +/* COMMON */ +body{ + display: flex; + flex-direction: column; + place-content: start space-between; + height: 100vh; + overflow-x: hidden; + scroll-behavior: smooth; +} + +section, +footer { + padding: var(--unusable-padding); + display: grid; +} + +section#blog-article { + padding-bottom: calc(var(--unusable-padding) * 0.25); +} +section.after-content { + padding-bottom: 0; + padding-top:0; +} + +h3 { + font-size: 25px; +} +p { + font-size: 20px; +} +section > h1 { + font-family: "Source Sans Pro Bold", "Source Sans Pro", sans-serif; + font-style: oblique; + font-size: 60px; + color: var(--dark-green); +} + +code { + font-family: "Source Code Pro", monospace; + color: var(--dark-green); + background-color: var(--light-gray); + padding: 0px 4px; + font-size: inherit; + border-radius: 2px; + border: 1px solid var(--trans-green); +} + +pre > code { + border: none; + padding: 0; +} + +/* pre > code > span { */ +pre, pre span, pre code span{ + font-family: "Source Code Pro", monospace; +} +pre, pre *{ + line-height: normal; +} + +::-moz-selection { + color: var(--white); + background: var(--dark-green); +} + +::selection { + color: var(--white); + background: var(--dark-green); +} + +/* - LISTS - */ +ul.caret li:before, +ul.caret summary:before { + content: var(--fa-caret); + font-family: "Font Awesome 5 Free", "FontAwesome"; + font-weight: 900; + margin-right: 5px; +} + +ul.caret li.first:before { + content: var(--fa-arrow-left); +} + +ul.caret details > ul > li:before{ + content: var(--fa-angle-right); +} +ul.caret li, +ul.caret details { + font-size: 20px; + margin-bottom: 9px; + list-style: none; +} + +/* - BUTTONS - */ +.btn { + padding: 9px var(--x3-padding); + color: var(--white); + background: var(--dark-green); + font-size: 20px; + line-height: 32px; + text-decoration: none; +} +.btn[icon] { + padding: 9px 20px 9px var(--x3-padding); +} +.btn[icon="reversed"] { + padding: 9px var(--x3-padding) 9px 20px; +} +.btn:hover, .drop-btn.drop-down .btn { + background: var(--light-green); +} +.btn i:after { + content: var(--la-arrow); + font-size: 32px; + margin-left: 45px; + font-family: "Line Awesome Free"; + font-weight: 900; + color: white; + vertical-align: bottom; + font-style: normal; + margin-right: 10px; + transition: margin 0.1s linear, transform 0.05s linear; + display:inline-block; +} +.btn i[reversed]:after { + margin-right: 45px; + margin-left: 10px; + content: var(--la-arrow-rev); +} + +.btn:hover i:after, .drop-btn.drop-down .btn i:after { + margin-left: 55px; + margin-right: 0px; +} +.btn:hover i[reversed]:after{ + margin-right: 55px; + margin-left: 0px; +} +.drop-btn.drop-down .btn i:after { +transform: rotate(90deg); +} + +.big-btn { + padding: 9px var(--x3-padding); + color: var(--white); + background: var(--dark-green); + font-size: 30px; + line-height: 42px; + text-decoration: none; +} +.big-btn i:after { + font-size: 45px; +} + +.border-btn { + background: var(--mid-green); + border: 2px solid white; +} +.border-btn i:after { + margin-left: 25px; +} +.border-btn:hover i:after, .drop-btn.drop-down .border-btn i:after { + margin-left: 35px; +} + +.ghost-btn { + background: transparent; + border: 2px solid white; +} +.ghost-btn:hover { + background: var(--white); + color: var(--black); +} +.ghost-btn:hover i:after, .drop-btn.drop-down .ghost-btn i:after { + color: var(--black); +} + +/* HEADER */ +header { + width: var(--usable-area); + padding: var(--unusable-padding); + padding-bottom: calc(var(--unusable-padding) * 2); + display: grid; + grid-template-columns: 1fr 1fr; + grid-template-rows: 1fr; + grid-template-areas: "lead video"; + align-items: center; + column-gap: var(--grid-gap); + background-image: linear-gradient(to top, var(--white) 0%, transparent 5%), url("/theme/images/header-pattern.png"); + background-size: cover, contain; + background-attachment: scroll, fixed; + background-repeat: no-repeat; + background-position: bottom right; +} + +/* NAVIGATION */ +#main-nav { + position: fixed; + z-index: 20; + width: var(--usable-area); + padding: calc(var(--x3-padding) - 9px) var(--unusable-padding); + background: var(--white); + display: flex; +} +#main-nav ul.hidden-menu { + display: none; +} +#main-nav img { + margin: calc(var(--x3-padding) * -1) 0; + margin-top: -21px; + height: 60px; + padding: 16px 0; +} +#main-nav > i { + display: none !important; +} +#main-nav > ul { + margin-left: auto; +} +#main-nav > ul li{ + display: inline-block; + margin: 0 7px; + color: var(--black); +} +#main-nav > ul:not(.hidden-menu) li:last-child{ + margin:0; +} +#main-nav > ul:not(.hidden-menu) li > a:not(.btn) { + text-decoration: none; + padding: 38px 8px 35px; +} + +#main-nav > ul li a { + text-decoration: none; +} +#main-nav > ul:not(.hidden-menu) li > a.active { + border-bottom: var(--nav-border-bottom) solid var(--dark-green); + padding-bottom: 31px; + color: var(--dark-green); + font-weight: 500; +} +#main-nav > ul.hidden-menu li > a.active { + color: var(--dark-green); + font-weight: 500; +} +#main-nav ul li > a:hover { + color: var(--dark-green); +} + +/* HEADER > LEAD */ +.lead { + grid-area: lead; +} + +header .lead h1 { + font-family: "Source Sans Pro Black", "Source Sans Pro", sans-serif; + font-weight: 900; + font-size: 60px; + color: var(--dark-green); + margin-bottom: 40px; +} + +header .lead ul { + margin-bottom: 30px; +} + +header .lead ul li:before { + content: var(--la-check); + font-family: "Line Awesome Free"; + font-weight: 900; + margin-right: 7px; + font-size: 32px; +} + +header .lead ul li { + font-size: 30px; + margin-bottom: 3px; + list-style: none; +} + +/* HEADER > VIDEO */ + +header .video { + display: grid; + grid-template-columns: repeat(6, 1fr); + gap: var(--grid-gap); + grid-area: video; +} +header .video .backplate { + background-color: var(--light-green); + grid-column: 3 / 6; + grid-row: 1 / 3; +} +header .video img { + grid-column: 2 / 6; + grid-row: 1; + margin-left: calc(var(--grid-gap) * -1); + margin-top: var(--grid-gap); + filter: var(--image-shadow); + width: 100%; +} +header .video:after { + content: var(--la-play); + font-size: 64px; + font-family: "Line Awesome Free"; + font-weight: 900; + grid-row: 1; + grid-column: 2 / 6; + z-index: 5; + background: var(--light-gray); + border-radius: 50px; + align-self: center; + margin: var(--grid-gap) var(--grid-gap) 0 calc(var(--grid-gap) * -1); + justify-self: center; + color: var(--dark-green); + cursor: pointer; + pointer-events: none; +} + +header .video a { + grid-column: 1 / 6; + justify-self: end; + grid-row: 2; + margin-bottom: var(--grid-gap); + margin-right: var(--grid-gap); +} + +/* S FEATURES */ + +#features { + background-image: linear-gradient(to top, var(--dark-green), var(--dark-green) 50%, transparent 50%, transparent); + padding-top: 0; + margin-top: calc(var(--unusable-padding) * -1 - 10px); +} +.feature-list div:nth-child(5):before { + content: ""; + position: absolute; + width: 100vw; + height: calc(var(--unusable-padding) * 2); + background-color: var(--dark-green); + margin: calc(var(--x3-padding) * -1 - 1px) calc(var(--unusable-padding) * -1 - var(--x3-padding) - 1px); + z-index: -100; +} + +.feature-list { + grid-column: 1 / 3; + display: grid; + grid-template-columns: repeat(4, 1fr); +} +.feature-list div { + padding: var(--x3-padding); + border: 1px solid var(--trans-green); + background: var(--white); +} +.feature-list > a { + grid-column: 1 / 5; + justify-self: end; + margin-right: var(--grid-gap); + margin-top: -20px; + filter: var(--light-shadow); +} + +/* S OUR MISSION*/ +#mission { + grid-template-columns: repeat(6, 1fr); + padding: 0 var(--unusable-padding) var(--unusable-padding); + background: var(--dark-green); +} +#mission p { + color: white; + font-family: "Source Sans Pro Bold", "Source Sans Pro", sans-serif; + font-weight: 600; + font-size: 40px; + font-style: oblique; + text-align: center; + grid-column: 2/6; + padding: 0 var(--x3-padding); +} + +/* S QUICK LINKS */ +#quick-links { + background-image: url(/theme/images/kiwi-triangle.svg); + background-size: 100%; + background-repeat: no-repeat; + grid-template-columns: repeat(4, 1fr); + gap: var(--grid-gap); + padding: var(--x3-padding) var(--unusable-padding); +} + +#quick-links div { + background: var(--white); + filter: var(--light-shadow); + padding: 30px; + display: flex; + flex-direction: column; + display: grid; + grid-template-columns: auto 1fr; + grid-template-rows: auto 1fr; + gap: 10px; + cursor: pointer; + grid-template-areas: + "icon title" + "icon description"; +} +#quick-links a { + text-decoration: none; +} + +#quick-links div:hover { + color: var(--dark-green); +} +#quick-links div i, +blockquote i { + grid-area: icon; + align-self: start; + font-size: 64px; + width: fit-content; +} + +.quick-links div h3 { + font-family: "Rubik Bold", "Rubik", sans-serif; + font-weight: bold; + font-size: 25px; + grid-area: title; +} + +.quick-links div p, +blockquote p.quote { + font-size: 20px; + grid-area: description; +} + +/* S PRICING */ +#pricing { + grid-template-columns: repeat(4, 1fr); + column-gap: var(--grid-gap); + row-gap: calc(var(--x3-padding) * 2); + background-image: url(/theme/images/kiwi-triangle-mg.svg), url(/theme/images/header-pattern.png); + background-size: 100% 300px, contain; + background-repeat: no-repeat; + background-position: bottom left, bottom right; +} +#pricing h1 { + grid-column: 1/5; +} + +#pricing .plan, +#pricing .plans-modal { + background: var(--white); + filter: var(--lower-shadow); + align-self: start; + padding: var(--x3-padding); +} + +#pricing .plan h3, +#pricing .plans-modal h3 { + padding: var(--x3-padding); + margin: calc(var(--x3-padding) * -1) calc(var(--x3-padding) * -1) var(--x3-padding); + border-bottom: 2px solid var(--trans-green); + color: var(--dark-green); + display: flex; + font-size: 25px; +} +#pricing .plan.prefered h3 { + background-color: var(--dark-green); + color: var(--white); +} + +#pricing .plan > a { + display: block; + text-align: center; + font-size: 20px; + padding: 16px var(--x3-padding); + margin: var(--x3-padding) calc(var(--x3-padding) * -1) calc(var(--x3-padding) * -1); + background-color: var(--dark-green); + color: var(--white); + font-weight: 500; + text-decoration: none; +} +#pricing .plan > a:hover, +#pricing .plans-modal > a:hover { + background: var(--light-green); +} +#features a:not(.btn), +#pricing .plan ul a, +#pricing .plans-modal ul a { + color: var(--dark-green); +} +#features a:not(.btn):hover, +#pricing .plan ul a:hover, +#pricing .plans-modal ul a:hover { + color: var(--light-green); +} +summary, #plans-modal h3{ + cursor: pointer; +} + +/* S PRICING > Details */ +#pricing summary::-webkit-details-marker{ + display: none; +} +#pricing summary::marker{ + display:none; +} + +#pricing summary:after { + height: 20px; + width: 20px; + float: right; + content: var(--fa-info); + font-family: "Font Awesome 5 Free", "FontAwesome"; + font-weight: 900; + color: var(--dark-green); +} + +#pricing details[open] summary:after { + color: var(--trans-green); +} +#pricing details[open] summary:before { + content: var(--fa-caret-down); +} +#pricing details li { + padding-left: var(--x2-padding); +} +#pricing details li > ul > li, body.page section ul > li > ul > li{ + padding-left: var(--x2-padding); + font-style: oblique; +} +details:focus, +summary:focus { + outline: none; +} + +/* S PRICING > Modal */ +#pricing .plans-modal { + grid-column: 1/3; +} +#pricing .plans-modal h3 { + margin: calc(var(--x3-padding) * -1); +} +#pricing .plans-modal h3:after { + content: "+"; + margin-left: auto; + text-align: right; + align-self: center; +} +#pricing .plans-modal div { + display: none; +} +#pricing .plans-modal.show-modal div { + display: block; + margin: var(--x3-padding) calc(var(--x3-padding) * -1) calc(var(--x3-padding) * -1) calc(var(--x3-padding) * -1); + padding: var(--x3-padding); +} +#pricing .plans-modal.show-modal h3:after { + content: "-"; +} + +/* S SCREENS */ + +#screens { + color: white; + background: var(--mid-green); + padding: var(--x3-padding) var(--unusable-padding); +} +#screens h1 { + color: white; + margin-bottom: var(--x3-padding); + display: flex; +} +#screens h1 span { + margin-left: auto; + bottom: -10px; + position: relative; +} +#screens h1 span i { + cursor: pointer; +} +#screens h3 { + font-family: "Rubik Bold", "Rubik", sans-serif; + font-weight: bold; + font-size: 25px; + margin: var(--x3-padding) 0; +} +#screens p { + font-size: 20px; +} + +/* S SCREENS > SLIDER CSS */ + +.tns-controls, +.tns-nav { + display: none; +} +#screens img { + max-width: 100%; + filter: var(--lower-shadow); +} +.tns-outer { + margin: 0 calc(var(--unusable-padding) * -1); + width: 100vw; +} +.tns-inner { + margin: 0 var(--unusable-padding) !important; + padding-top: var(--x3-padding); +} + +.tns-slide-active, +.tns-slide-active + .tns-slide-active + .tns-slide-active, +.tns-slide-active + .tns-slide-active + .tns-slide-active + .tns-slide-active, +.tns-slide-active + .tns-slide-active + .tns-slide-active + .tns-slide-active + .tns-slide-active { + width: calc((var(--usable-area)-11 * var(--grid-gap)) / 12 * 3) !important; + /* overwrite default */ +} +.tns-slide-active + .tns-slide-active { + width: calc((var(--usable-area)-11 * var(--grid-gap)) / 12 * 5) !important; +} + +.tns-slide-active p, +.tns-slide-active + .tns-slide-active + .tns-slide-active p, +.tns-slide-active + .tns-slide-active + .tns-slide-active + .tns-slide-active p, +.tns-slide-active + .tns-slide-active + .tns-slide-active + .tns-slide-active + .tns-slide-active p { + display: none; +} +.tns-slide-active + .tns-slide-active p { + display: block; +} + +/* S TESTIMONIALS extends S QUICK LINKS */ +#testimonials { + background-image: url(/theme/images/kiwi-triangle-mg-bottom.svg); + background-size: 100%; + background-repeat: no-repeat; + grid-template-columns: repeat(4, 1fr); + gap: var(--grid-gap); + padding: var(--x3-padding) var(--unusable-padding); +} + +body.page_home blockquote { + background: var(--white); + filter: var(--light-shadow); + padding: var(--x3-padding) var(--x3-padding) var(--x3-padding) var(--x2-padding); + display: grid; + grid-template-columns: auto 1fr; + grid-template-rows: 1fr auto; + row-gap: var(--x1-padding); + column-gap: var(--x2-padding); + grid-template-areas: + "icon description" + "icon author"; +} +blockquote .author { + font-family: "Rubik Bold", "Rubik", sans-serif; + grid-area: author; + text-decoration: none; + font-size: 20px; +} +blockquote .author span { + font-weight: bold; + display: block; +} + +/* S TRUSTED BY + S SEEN AT + S AWARDS + } Logo Sections */ + +#trusted-by, +#seen-at, +#awards { + display: grid; + grid-template-columns: repeat(6, 1fr); + gap: var(--grid-gap); + text-align: center; + align-items: center; + padding: calc(var(--x3-padding) * 2) var(--unusable-padding); +} +#trusted-by h1, +#seen-at h1, +#awards h1{ + grid-column: 1/7; + text-align: left; + margin-bottom: var(--x3-padding); +} + +#trusted-by a img, +#seen-at a img, +#awards a img, +#trusted-by img, +#seen-at img, +#awards img { + max-width: 100%; + justify-self: center; +} + +#trusted-by a, +#seen-at a, +#awards a{ + position: relative; +} +#trusted-by a:hover, +#awards a:hover{ + background-color:var(--light-gray); +} + +#seen-at a:hover{ + background-color:var(--white); +} + +a[iclink]:after, a[icvideo]:after{ + font-family: "Font Awesome 5 Free", "FontAwesome"; + font-weight: 900; + background: var(--dark-green); + color: var(--white); + cursor: pointer; + padding: 7px; + bottom: 0; + right: 0; + position: absolute; + pointer-events: none; +} + +a[iclink]:after{ + content: var(--fa-link); +} + +a[icvideo]:after { + content: var(--fa-video); +} + +#seen-at { + background: var(--light-gray); +} + +/* S CALL TO ACTION extends SCREENS*/ +#cta { + padding: calc(var(--x3-padding) * 1) var(--unusable-padding); + background: var(--dark-green); + grid-template-areas: + "cta-title cta-btn" + "cta-desc cta-btn"; +} +#cta h1 { + color: white; + margin-bottom: var(--x1-padding); + grid-area: cta-title; +} + +#cta h3 { + font-family: "Rubik Bold", "Rubik", sans-serif; + font-weight: bold; + font-size: 25px; + color: rgba(255, 255, 255, 0.7); + grid-area: cta-desc; +} +#cta .drop-btn { + grid-area: cta-btn; + align-self: center; + justify-self: end; +} + +/* FOOTER */ +footer { + padding: calc(var(--x3-padding) + var(--x2-padding)) var(--unusable-padding); + background-color: var(--brown); + color: white; + font-size: 20px; + display: grid; + justify-items: start; + gap: var(--grid-gap); + grid-template-columns: 5fr 2fr 2fr 3fr; + grid-template-areas: + "logo fl-tw fl-yt mail" + "legal fl-gh fl-fb mail"; +} + +footer h3 { + font-family: "Rubik Bold", "Rubik", sans-serif; + font-weight: bold; + font-size: 25px; + grid-area: title; +} + +footer img { + grid-area: logo; + max-width: 70%; + align-self: center; +} + +footer .legal { + grid-area: legal; +} + +footer .footer-block:not(.mail):hover a { + color: var(--light-green); +} +footer .footer-block a:hover { + color: var(--dark-green); +} + +footer .legal a { + color: var(--light-green); +} +footer .legal a:hover { + color: var(--dark-green); +} +footer .fl-tw { + grid-area: fl-tw; +} +footer .fl-gh { + grid-area: fl-gh; +} +footer .fl-yt { + grid-area: fl-yt; +} +footer .fl-fb { + grid-area: fl-fb; +} +footer .footer-block { + display: grid; + gap: var(--x1-padding); + align-content: start; + grid-template-areas: + "icon title" + "icon link"; +} +footer .footer-block a { + grid-area: link; +} +footer .footer-block p { + grid-area: desc; +} +footer .footer-block i { + grid-area: icon; + font-size: 64px; + font-family: "Line Awesome Free"; + font-weight: 400; + color: white; + font-style: normal; +} +footer .fl-tw i:before { + font-family: "Line Awesome Brands"; + content: var(--la-twitter); +} +footer .fl-gh i:before { + font-family: "Line Awesome Brands"; + content: var(--la-github); +} +footer .fl-yt i:before { + font-family: "Line Awesome Brands"; + content: var(--la-youtube); +} +footer .fl-fb i:before { + font-family: "Line Awesome Brands"; + content: var(--la-reddit); +} +footer .mail i:before { + content: var(--la-mail); +} +footer .mail a { + justify-self: start; +} + + +footer .mail { + grid-area: mail; + grid-template-areas: + "icon title" + "icon desc" + "icon link"; +} + +/* F VIDEO OVERLAY */ + +#vp-overlay { + display: none; + z-index: 25; + top: 0; + bottom: 0; + left: 0; + right: 0; + position: fixed; + padding: var(--x3-padding) var(--unusable-padding); + background-color: rgba(0, 0, 0, 0.8); + align-items: center; + justify-items: center; + grid-template-areas: "video"; +} + +#vp-overlay.vp-visible { + display: grid; +} + +#vp-overlay i { + color: white; + font-size: 20px; + justify-self: end; + align-self: start; + grid-area: video; + cursor: pointer; +} +#vp-overlay i:before { + content: var(--la-close); + font-size: 32px; + font-family: "Line Awesome Free"; + font-weight: 900; +} + +#vp-frame { + height: 700px; + max-height:calc(100vh - 2 * var(--x3-padding)); + width: 1120px; + max-width: calc(100vw - 2 * var(--unusable-padding)); + grid-area: video; +} + +.green { + color: var(--dark-green); +} + +.yellow { + color: #ffcc00; +} + +.red { + color: #cc0000; +} + +/* INNER PAGE STYLES */ +body.page section{ + gap: var(--x3-padding); + padding-top: 150px; + background-image: linear-gradient(to top, var(--white), transparent), url(/theme/images/pattern-v2.png); + background-size: auto 500px, auto 500px; + background-position: top right; + background-repeat: no-repeat; +} +body.page section p, body.page section li, body.page section pre{ + font-size:20px; +} + +body.page section a:not(.btn):not(.bio-link), +section#blog-list a:not(.btn):not(.bio-link), +section#blog-article a:not(.btn):not(.bio-link){ + color:var(--dark-green); +} +body.page section a:not(.btn):not(.bio-link):hover, +section#blog-list a:not(.btn):not(.bio-link):hover, +section#blog-article a:not(.btn):not(.bio-link):hover{ + color:var(--light-green); +} + +/* TEAM v1 */ +img.rounded { + float: left; + margin-left: 0; + margin-right: 1.5rem; + margin-bottom: 0.2rem; + border: solid 0.2em var(--black); + border-radius: 100%; +} + +.member-bio { + height: auto; + width: 100%; + float: left; +} + +div.drop-btn:not(#nav-drop){ + display:inline; + position: relative; +} +#nav-drop.drop-btn{ + display:inline; +} + +div.drop-cnt > a{ + color: var(--white); + background-color:var(--light-green); + padding: 12px 16px; + text-decoration: none; + display: block; + font-size:20px; +} +div.drop-cnt > a:hover{ + background-color:var(--dark-green); + color:var(--white); +} +div.drop-cnt{ + display: none; + position: absolute; + background-color: var(--light-green); + min-width: 160px; + filter: var(--light-shadow); + /* margin-top: 6px; */ + right: 0; +} +#nav-drop.drop-btn.drop-down .drop-cnt{ + right: var(--unusable-padding); +} + +div.drop-btn.drop-down div.drop-cnt, div.drop-btn:hover div.drop-cnt{ + display:block; + width: intrinsic; /* Safari/WebKit uses a non-standard name */ + width: -moz-max-content; /* Firefox/Gecko */ + width: -webkit-max-content; /* Chrome */ + width: max-content; +} +.drop-btn > .btn{ + display:inline-block; +} +/* TEAM */ +.member-bio > strong{ +font-size: 25px; +} +.member-bio > em{ + font-size: 20px; +} + +.member-bio a.bio-link{ + padding: 3px 5px; + display: inline-block; + background: var(--dark-green); + color: white; + font-size: 25px; + margin-top: var(--x1-padding); + margin-right: var(--x1-padding); +} +.member-bio a.bio-link:hover{ + background: var(--light-green); + color: white; +} +/* BLOG > S BLOGLIST */ +#blog-list, #blog-article{ + gap: var(--x3-padding); + padding-top: 150px; + background-image: linear-gradient(to top, var(--white), transparent), url(/theme/images/pattern-v2.png); + background-size: auto 500px, auto 500px; + background-position: top right; + background-repeat: no-repeat; +} +#blog-list article.blog-list, #blog-article article.content{ + display: grid; + gap: var(--x3-padding); + max-width: 1000px; + width: 86vw; + border-bottom: 2px solid var(--trans-green); +} +#blog-article, #blog-article article.content{ + gap:unset; +} +#blog-list article.blog-list h1{ + font-size:30px; +} +#blog-list article.blog-list h2{ + font-size:25px; +} +#blog-list article.blog-list h3{ + font-size:20px; +} +#blog-list article.blog-list .header h1{ + color:var(--dark-green); +} +#blog-list article.blog-list .header .post-meta, +#blog-article .post-meta{ + font-style: oblique; + opacity: .7; +} +#blog-article .post-meta{ + margin-top:var(--x1-padding); +} +#blog-list article.blog-list .content, #blog-article article.content{ + font-size:20px; + line-height: 1.6; +} +#blog-list article.blog-list .content *, #blog-article article.content *{ + margin-bottom:var(--x1-padding); + overflow-wrap: break-word; +} +#blog-list article.blog-list .content img, #blog-article article.content img{ + max-width: 100%; +} +#blog-list article.blog-list .content pre, #blog-article article.content pre{ + white-space: pre-wrap; + white-space: -moz-pre-wrap; + white-space: -o-pre-wrap; + word-wrap: break-word; + font-family: "Source Code Pro", monospace; +} +#blog-list article.blog-list .content a, #blog-article article.content a{ + overflow-wrap: anywhere; + text-overflow: ellipsis; +} +#blog-list article.blog-list .content .section, #blog-article article.content .section{ + max-width: 100%; + width: 86vw; +} +#blog-list article.blog-list .content ul li ul li, +#blog-article article.content ul li ul li{ + padding-left:var(--x2-padding); +} +#blog-list article.blog-list .content ul li p, +#blog-article article.content ul li p{ + display:inline; +} +#blog-article h2.top-subheader{ + font-size: 30px; + color:var(--dark-green); +} +#blog-list .content h1, #blog-article h1, +#blog-list .content h2, #blog-article h2, +#blog-list .content h3, #blog-article h3, +#blog-list .content h4, #blog-article h4, +#blog-list .content h5, #blog-article h5{ + margin-top: var(--x2-padding); +} +#blog-article article.content{ + margin-top:var(--x3-padding); +} +#pagination{ + padding: var(--x3-padding) 0 0; + display: flex; + justify-content: space-between; + align-items: center; +} + +article blockquote{ + font-style: oblique; + padding: var(--x2-padding); + border-left: var(--x1-padding) solid var(--light-green); + background-color: var(--light-gray); +} diff --git a/theme/static/style/tables.css b/theme/static/style/tables.css new file mode 100644 index 00000000..e00dc9b0 --- /dev/null +++ b/theme/static/style/tables.css @@ -0,0 +1,206 @@ +/*! + * Bootstrap v3.4.1 (https://getbootstrap.com/) + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +table { + border-collapse: collapse; + border-spacing: 0; +} +td, +th { + padding: 0; +} + +table { + background-color: transparent; +} +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777777; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} diff --git a/theme/templates/archives.html b/theme/templates/archives.html new file mode 100644 index 00000000..80c8252c --- /dev/null +++ b/theme/templates/archives.html @@ -0,0 +1,16 @@ +{% extends "base.html" %} + +{% block title %}Archives{% endblock %} + +{% block content %} + +
+

Archives

+ {% for article in dates %} +

{{ article.locale_date }}

+

+ {{ article.title }} +

+ {% endfor %} +
+{% endblock content %} diff --git a/theme/templates/article.html b/theme/templates/article.html new file mode 100644 index 00000000..70a02d96 --- /dev/null +++ b/theme/templates/article.html @@ -0,0 +1,132 @@ +{% extends "base.html" %} +{% block title %}{{ article.title }}{% endblock %} + +{% block meta %} + {{ super() }} + + {% for keyword in article.keywords %} + + {% endfor %} + + {% if article.headline %} + + {% elif article.summary %} + + {% endif %} + + {% for author in article.authors %} + + {% endfor %} + + {% for tag in article.tags %} + + {% endfor %} +{% endblock %} + +{% block twitter_card %} + {% for name,link in SOCIAL if name in ['twitter'] %} + + + {% if description %} + + {% elif article.headline %} + + {% else %} + + {% endif %} + + {% if article.twitter_image %} + {% if article.twitter_image|lower|truncate(4, True, '') == "http" %} + + {% else %} + + {% endif %} + {% else %} + + {% endif %} + + {% endfor %} +{% endblock %} + +{% block opengraph %} + + + {% for author in article.authors %} + + {% endfor %} + + + + {% if description %} + + {% elif article.headline %} + + {% elif article.summary %} + + {% endif %} + + {% if article.og_image %} + {% if article.og_image|lower|truncate(4, True, '') == "http" %} + + {% else %} + + {% endif %} + {% else %} + + {% endif %} +{% endblock %} + +{% block content %} +
+

{{ article.title }}

+ {% if article.headline %} +

{{ article.headline }}

+ {% endif %} + + + +
+ {{ article.content }} +
+
+ + {% if ADDTHIS_PUBID %} +
+ + +
+
+ {% endif %} + + {% if DISQUS_SITENAME and _SITEURL and article.status != "draft" %} +
+
+ + +
+ {% endif %} +{% endblock content %} diff --git a/theme/templates/author.html b/theme/templates/author.html new file mode 100644 index 00000000..0c7b4a03 --- /dev/null +++ b/theme/templates/author.html @@ -0,0 +1,13 @@ +{% extends "index.html" %} + +{% block title %}Articles by {{ author }}{% endblock %} +{% block headline %}Articles by {{ author }}{% endblock %} + +{% block opengraph %} + {{ super() }} + + + + + +{% endblock opengraph %} diff --git a/theme/templates/authors.html b/theme/templates/authors.html new file mode 100644 index 00000000..846be7be --- /dev/null +++ b/theme/templates/authors.html @@ -0,0 +1,15 @@ +{% extends "index.html" %} + +{% block title %}Authors{% endblock title %} + +{% block content %} + +
+

Blog authors

+ {% for author, articles in authors|sort %} + +

{{ author }} ({{ articles|count }})

+
+ {% endfor %} +
+{% endblock content %} diff --git a/theme/templates/base.html b/theme/templates/base.html new file mode 100644 index 00000000..564a8f66 --- /dev/null +++ b/theme/templates/base.html @@ -0,0 +1,134 @@ + + + + + {{ SITENAME }} - {% block title %}{% endblock %} + + + + + {% block meta %}{% endblock %} + {% block twitter_card %}{% endblock %} + {% block opengraph %}{% endblock %} + + + + + + + + + {% if PLAUSIBLE_DOMAIN %} + + {% endif %} + + + + + + + + + {% block content %}{% endblock %} + + + + + + {% if page and page.extra_javascript %} + {% for script in page.extra_javascript.split(' ') %} + + {% endfor %} + {% endif %} + + {% if page and page.extra_css %} + {% for stylesheet in page.extra_css.split(' ') %} + + {% endfor %} + {% endif %} + + diff --git a/theme/templates/index.html b/theme/templates/index.html new file mode 100644 index 00000000..6220361e --- /dev/null +++ b/theme/templates/index.html @@ -0,0 +1,31 @@ +{% extends "base.html" %} +{% block title %}Blog{% endblock %} + +{% block content %} +
+

{% block headline %}Blog{% endblock %}

+ + {% for article in articles_page.object_list %} + + {% endfor %} + + {% include "pagination.html" %} +
+{% endblock content %} diff --git a/theme/templates/main_menu_items.html b/theme/templates/main_menu_items.html new file mode 100644 index 00000000..c978e713 --- /dev/null +++ b/theme/templates/main_menu_items.html @@ -0,0 +1,18 @@ +
  • + Features +
  • +
  • + Documentation +
  • +
  • + Community +
  • +
  • + Support +
  • +
  • + Blog +
  • +
  • + Team +
  • diff --git a/theme/templates/page.html b/theme/templates/page.html new file mode 100644 index 00000000..2afb0ac6 --- /dev/null +++ b/theme/templates/page.html @@ -0,0 +1,15 @@ +{% extends "base.html" %} + +{% block title %}{{ page.title }}{% endblock title %} + +{% block page_body_class %}{% if page.body_class %}{{ page.body_class }}{% else %}page{% endif %}{% endblock %} + +{% block content %} + {% if page.add_section %} +
    + {% endif %} + {{ page.content }} + {% if page.add_section %} +
    + {% endif %} +{% endblock content %} diff --git a/theme/templates/pagination.html b/theme/templates/pagination.html new file mode 100644 index 00000000..50f40649 --- /dev/null +++ b/theme/templates/pagination.html @@ -0,0 +1,13 @@ +{% if DEFAULT_PAGINATION %} +
    + {% if articles_page.has_previous() %} + Newer Posts + {% endif %} +

    + Page {{ articles_page.number }} / {{ articles_paginator.num_pages }} +

    + {% if articles_page.has_next() %} + Older Posts + {% endif %} +
    +{% endif %} diff --git a/theme/templates/tag.html b/theme/templates/tag.html new file mode 100644 index 00000000..e925bd26 --- /dev/null +++ b/theme/templates/tag.html @@ -0,0 +1,4 @@ +{% extends "index.html" %} + +{% block title %}Articles with tag {{ tag }}{% endblock %} +{% block headline %}Articles with tag {{ tag }}{% endblock %}