Friday, February 27, 2026
5 changes · saas-18.2
Enhancements to existing features
This update makes stock workflow tests more precise so they select the intended action button instead of a similar-looking page element. It helps prevent false test failures, supporting smoother maintenance and more reliable releases without changing user-facing behavior.
Original PR description
#### Description of the issue/feature this PR addresses: This avoids unit test failures when the overly generic `.fa-list` matches an unexpected element instead of the "Open Move" button. #### Current behavior before PR: Tests fail. #### Desired behavior after PR is merged: Tests pass. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248234
Expense bill references are now made more distinct when multiple expenses for the same employee are posted at the same time. This reduces unnecessary duplicate bill warnings and helps accounting teams process expense reports more smoothly.
Original PR description
Before : If several expenses of one employee are posted simultaneously then the bill reference for one employee is always stay the same, causing the bill duplicate warning to be triggered as it is based on the bill reference After: If several expenses of one employee are posted simultaneously then the most recent date is appended behind the bill reference. task-5262550
This update reduces the time and noise generated by automated tests by reusing common setup work and avoiding unnecessary password hashing during test runs. It helps Odoo's development and release process run more efficiently without changing end-user functionality.
Original PR description
- move a bunch of expensive setUp to setUpClass - backport #152378 to avoid password keying in 17.0 also Forward-Port-Of: odoo/odoo#250887 Forward-Port-Of: odoo/odoo#250667
This update caches repeated language parsing checks so Odoo avoids unnecessary file system lookups when processing many dates or templates. It should improve performance in high-volume rendering scenarios without changing user-facing behavior.
Original PR description
`babel.Locale.parse` checks if a locale is valid by calling `os.path.exists` on the resolved filename for the locale (this is done in `babel.localedata.exists`). Babel does have a locale cache which it checks, but currently that cache is only populated when the locale is actually loaded[^1], therefore in cases where we instantiate a significant number of locales but never actually need to load locale data (e.g. formatting a significant number of datetimes, in qweb, using only non-localised patterns) this results in severe FS traffic for no reason. [^1]: python-babel/babel#1254 has been submitted to fix this issue Forward-Port-Of: odoo/odoo#250888 Forward-Port-Of: odoo/odoo#249795
This update streamlines test setup by centralizing it within test classes. This change improves the reliability and efficiency of our automated testing process, particularly for modules like L10n BE, HR Payroll, Timesheet Grid, and related areas. It ensures consistent test environments and reduces potential issues during development.
Original PR description
Forward-Port-Of: odoo/enterprise#108872 Forward-Port-Of: odoo/enterprise#108739