Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 118 additions & 0 deletions project_task_qa_checklist/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

=========================
Project Task QA Checklist
=========================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:dfb9e69349be6a25bf89580988a742366a82126c77a54b72a762e92b380fa326
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-LGPL--3-blue.png
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproject-lightgray.png?logo=github
:target: https://github.com/OCA/project/tree/17.0/project_task_qa_checklist
:alt: OCA/project
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/project-17-0/project-17-0-project_task_qa_checklist
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/project&target_branch=17.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module adds a configurable acceptance-criteria checklist to project
tasks. When a task enters a stage flagged as a QA stage, a checklist of
the criteria that apply to that task is generated so a tester can
review, document and back each criterion with evidence before the task
moves on.

Criteria are fully configurable per installation: some apply to every
task, others are triggered by the task's tags. Evidence can be a light
attachment (screenshots) or an external link (recommended for video, to
avoid bloating the database).

**Table of contents**

.. contents::
:local:

Configuration
=============

To configure the module:

1. Go to **Project > Configuration > QA Checklist Criteria** and create
the acceptance criteria. Mark a criterion as *Always Applicable* to
generate it for every task, or link it to one or more *Tags* to
generate it only when a task carries any of those tags.
2. Go to **Project > Configuration > Task Stages** (or edit a stage
inline) and tick **QA Stage** on the stage(s) that represent internal
testing in your kanban. The module is agnostic of stage names: any
stage flagged here triggers checklist generation.

Usage
=====

When a task enters a stage marked as a QA stage, its QA checklist is
generated under the **Internal QA** tab of the task form.

For each line the tester sets the state (Pending, Passed, Failed, Not
Applicable), adds notes, and attaches evidence either as a file or as an
external link. The reviewer and review date are filled automatically
when the state leaves *Pending*.

A progress badge (e.g. ``5/8 (63%)``) is shown on the task kanban card,
and a banner on the task form warns when the checklist is incomplete or
has failed criteria.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/project/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/project/issues/new?body=module:%20project_task_qa_checklist%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Jarsa

Contributors
------------

- Jarsa https://www.jarsa.com

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/project <https://github.com/OCA/project/tree/17.0/project_task_qa_checklist>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
4 changes: 4 additions & 0 deletions project_task_qa_checklist/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Copyright 2026 - Jarsa
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0).

from . import models
24 changes: 24 additions & 0 deletions project_task_qa_checklist/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Copyright 2026 - Jarsa
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0).

{
"name": "Project Task QA Checklist",
"summary": "Configurable acceptance-criteria checklist for tasks in QA stages",
"version": "17.0.1.0.0",
"category": "Project Management",
"author": "Jarsa, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/project",
"license": "LGPL-3",
"installable": True,
"depends": ["project"],
"data": [
"security/ir.model.access.csv",
"data/mail_activity_type_data.xml",
"views/project_task_qa_checklist_template_views.xml",
"views/project_task_type_views.xml",
"views/project_task_views.xml",
],
"demo": [
"demo/project_task_qa_checklist_demo.xml",
],
}
11 changes: 11 additions & 0 deletions project_task_qa_checklist/data/mail_activity_type_data.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2026 - Jarsa
License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0). -->
<odoo>
<record id="mail_activity_qa_checklist_review" model="mail.activity.type">
<field name="name">Review QA checklist</field>
<field name="category">default</field>
<field name="res_model">project.task</field>
<field name="delay_count">0</field>
</record>
</odoo>
33 changes: 33 additions & 0 deletions project_task_qa_checklist/demo/project_task_qa_checklist_demo.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2026 - Jarsa
License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0).

Example data only, so the module has something to run against. The real
criteria, tag mapping and QA stage are loaded per installation (see
CONFIGURE), never shipped with this OCA module. -->
<odoo>
<!-- Flag an existing demo stage as a QA stage. -->
<record id="project.project_stage_1" model="project.task.type">
<field name="is_qa_stage" eval="True" />
</record>

<record
id="qa_checklist_template_demo_general"
model="project.task.qa.checklist.template"
>
<field name="name">User manual attached as evidence</field>
<field name="sequence">1</field>
<field name="always_applicable" eval="True" />
<field name="help_text">Applies to every task entering the QA stage.</field>
</record>

<record
id="qa_checklist_template_demo_tagged"
model="project.task.qa.checklist.template"
>
<field name="name">Feature works end to end</field>
<field name="sequence">2</field>
<field name="always_applicable" eval="False" />
<field name="tag_ids" eval="[Command.link(ref('project.project_tags_02'))]" />
</record>
</odoo>
Loading
Loading