Thunderjet - Definition of Done
Development
Implementation of requirements is completed, and acceptance criteria have been met.
UI changes (if any) meet UX guidelines.
RCA Group value is added for bugs.
PRs are reviewed and approved by at least two engineers.
Critical code smells and vulnerabilities found by SonarQube and lint errors are fixed before merging the code.
Unit tests are written and passed (80% of module’s code coverage is a bottom limit and 100% is preferred for critical code). Exceptions could be for legacy components with coverage below 80%.
Existing integration/Karate tests are maintained/adjusted and passed. The ticket for new Karate test (if needed) is created and linked and planned for the same flower release.
Code is merged into master/target branch with all conflicts resolved and available on reference environment/specific environment (in case of critical service patch).
Interface version and module implementation version, and UI (package.json) are updated (see guidance). The fixVersion field in JIRA is updated to match the version that ships the feature/bugfix.
Sample and Reference data are updated to match the feature and schema changes.
For API major version changes, a note in Slack channel #development is posted. In case of 3rd-party API usage, its latest API document is validated (for no discrepancy).
For breaking changes, the version is bumped up in affected modules and affected modules' readme files are updated. API changes are backwards compatible (if possible).
Data migration scripts are completed for schema changes. Migration pipeline ran successfully.
Data migration from one major/minor version of the module to another has been verified and took 10 minutes at most for the data volume size of Bugfest.
NFR related items:
If potential performance impact on functionality or migration is identified, the ticket for PTF team is created for the same flower release and linked.
Module is implemented following stateless principles and that is confirmed during PR review.
Implementation is done using R/W split (if applicable).
Tenant data is isolated in data schemas from other tenants.
Secrets are not stored in source repositories.
No sensitive information is stored in logs (logins, passwords, API keys).
Application logs are collected in a unified form and location (see here and here).
UI: Internationalization (I18n) is taken care of in application code (see details).
UI: Accessibility check list is considered, and new functionality covered with accessibility tests.
QA
Impacted areas are identified and regression test set is designed.
Positive, negative, edge test cases are documented/updated in TestRail according to testing process.
Test cases for automation are identified (wherever applicable).
Testing in Chrome browser against Acceptance criteria of the ticket is performed:
with non-admin user
with Bugfest like data set (request Kitfox team to set env up via ticket in Rancher Jira project)
on multi-tenant environment (Performance/Sprint testing)
with R/W split On
with High Availability activated
Regression testing for affected areas is completed.
All known P1, P2, and possible P3 bugs related to ticket are fixed. No unprioritized bugs are left.
Hosting
Breaking API changes are documented in the Release Notes.
Data migrations that could take time should be brought to the attention of hosting provider.
If data migration of a module from one version to another took over 10+ minutes, it has been discussed with hosting providers (at Folio release - Weekly release* meeting hosted by Oleksii P.) to check how acceptable that can be and documented in Release Notes with notion of:
Estimate of how long the data migration can take - matrix of volume of data to time
Is there any visible impact on the UI if the data is not migrated?
Can the customer live without this migrated data till it’s migrated?
Can the data migration be done without downtime?
What expectations need to be set with customers during this data migration process?
What is the impact if the tenant is migrated from one release to another with this migration being done after the upgrade?
Deployment information is provided in launchDescriptor section of module descriptor.
Release notes and README file are created/updated and include details on infrastructure, configuration changes (DB_HOST, KAFKA_PORT, ELASTICSEARCH_URL, Kafka topic partitions number, etc.) if any.
Any manual steps that could not be automated and supposed to be done by hosting providers/librarians themselves are documented in Release Notes.
Visibility
The work delivered is tested and accepted by PO (or another stakeholder if applicable) on snapshot.
Please note that all items in checklist marked with [M] are mandatory.
Checklist | User Story/Bug | System Demo/Review | Release |
---|---|---|---|
[M] Implementation of requirements is completed and acceptance criteria have been met. | Y | ||
[M] Unit/API tests are written and are passing. At least 80% code coverage is expected and 100% is preferred for critical code. | Y | ||
[M] Browser testing completed (if applicable) | Y | ||
[M] Performance tests completed (if applicable) | Y | ||
[M] For FE issues: It shows 11 rows successfully in the list (without an explicit limit clause, all backend queries will use an implied limit of 10 rows. ) | Y | ||
[M] Accessibility check list is considered. | Y | ||
[M] Localization is taken care of in application code | Y | ||
[M] Pull request is created, reviewed and approved by at least 2 other devs. | Y | ||
[M] Required updates are implemented based on comments to Pull request. | Y | ||
[M] Code is merged with all conflicts resolved and is available on folio-snapshot.dev.folio.org or folio-snapshot-2.dev.folio.org | Y | ||
[M] Fix code smells, security vulnerabilities, lint errors that are reported by Sonarqube and other tools in CI pipeline before merging code to master | Y | ||
[M] Existing API tests (backend modules) and Integration tests (UI modules) are maintained/implemented/improved and pass | Y | ||
[M] Any configuration and/or build scripts are updated and tested | Y | ||
[M] Data migration scripts are implemented for schema changes | Y | ||
[M] verify compliance with GDPR – future requirement | Y | ||
[M] QA is performed by a dev and issues resolved if found | Y | ||
[M] Feature is accepted by PO (Move the story to “in Review” and assign it to PO who will review and move it to Done if accepted) | Y | ||
[M] No open critical bugs on any user stories | Y | ||
[M] DoD of each user story, included in demo are met | Y | ||
[M] All demoable features are demoed from the same shared environment (folio-snapshot-stable.aws.indexdata.com or http://folio-testing.aws.indexdata.com/) In case of some technical reasons we have to demo from local machines, it must be explicitly disclosed to the community and the reasons should be clarified. | Y | ||
[M] Releases are created following: Release procedures and Regular FOLIO releases. | Y | ||
[M] Installation and deployment scripts are updated | Y | ||
[M] All critical bugs reported by QA, manual testing, UAT, PO etc. are fixed | Y | ||
[M] User documentation updated (deployment documentation, scripts/packaging etc.) (if applicable) | Y |