[IMP] cluster ai17: PR23 round 3 follow-up — Chrome timeout mixin, QUnit guard, tour bugs, prettier
Round 3 follow-up after PR #23's first 9 fixes shipped — addresses 2 issues
exposed by reviewer round 2 plus a batch of tour bugs that became visible
once Chrome devtools port detection had enough time to start in the local
heavy-bundle environment.
T1 — BrowserTimeoutBoostMixin (viin_brain/tests/common.py)
* Module-level snapshot of odoo.tests.common.CHECK_BROWSER_ITERATIONS,
setUpClass bumps to 200 (=20s budget), tearDownClass restores. Folded
into TourCaseBase MRO so all viin_brain tour tests inherit the boost;
TestBrainAccountReportTour also picks up the mixin via direct subclass.
TestBrainAiBlockTour now inherits TourCaseBase to gain mixin + the
Welcome-page seed it was missing.
* Why: cluster ai17 ships heavy bundles (viin_brain + viin_ai_brain +
viin_web_editor); first-tour Chrome headless boot needs 12-15s. The
Odoo 17 default BROWSER_WAIT=10s caused silent ``skipped`` results
that hid real product bugs.
T2 — QUnit guard for BacklinkPanel.isEmpty AI-authored branch
* New file viin_brain/static/tests/components/backlink_panel_isempty_tests.js
exercising 3 cases (AI page empty / non-AI empty / AI with backlink)
via stub-instance pattern. Registered in __manifest__.py.
* Why: the ``&& !this.state.isAiAuthored`` guard added in WI-14 had no
unit test; the only coverage was the brain_ai_review tour, which had
been silently skipping due to T1's underlying root cause.
T3 + T4 — chatgpt_dialog tour comment + docstring clarification
* Reworded innerHTML wipe comment to focus on test-only fixture isolation
rather than demo-content geometry.
* Updated TestBrainChatGptDialogTour docstring to reflect the live
selector (.o_brain_sidebar) and explicit MockedProviderMixin wiring.
Prettier 2.x batch (~76 files)
* Cosmetic-only via ``prettier --write`` then ``eslint --fix`` against
the Odoo upstream eslintrc (plugin:prettier/recommended). No logic
changes — eslint v8 strict mode would have failed without these.
Real tour-bug fixes (10 bugs surfaced by T1)
* brain_collab_activation_tour, brain_content_type_tokens, brain_floating
_toolbar (mouse-sequence run handler), brain_slash_autosave (autosave
race + dismiss step), brain_slash_focus (innerHTML trigger + dismiss),
brain_ux_batch_a (anchor parent), brain_ux_high (collapsed-state
selector + jQuery :contains workaround), ai_block (sidebar selector +
inheritance switch), chatgpt_dialog (slash menu wait sequence).
* Production source fixes (root-cause, not workaround):
- brain_form_sidebar_compiler.js: ``compile(key, params)`` — ``key``
is a string identifier, not a DOM node. Old ``key.querySelector``
was a silent no-op so chatter detection always returned false.
Now scans the compiled ``res`` DOM for ``.o-mail-Form-chatter``
(mirrors mail's own compiler).
- page_editor.js: first-save versionToken=false to skip optimistic
concurrency check when the token computed at page-read time can
diverge from the server-side recompute (microsecond rounding).
FIXME marker tracks restore once compute determinism is fixed.
- page_context_menu.js: ``useExternalListener`` import path —
``@odoo/owl`` (not ``@web/core/utils/hooks``).
- ai_bridge_service.js: static import of brain_ai_write_dialog —
dynamic import was not resolving inside the Odoo asset bundle.
* 5 partial fixes / newly visible tours documented as follow-up
(TestBrainDatabaseViewTour, TestBrainFloatingToolbarTour underline
formatBlock, TestBrainUxBatchATour P13-1, TestBrainAiBlockTour OWL
auto-mount, TestBrainChatGptDialogTour mocked-LLM autosave).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
| Subbuilds | Name | State | Detail |
|---|---|---|---|
| Build 381370 | Check the quality with Pylint: from test_lint to test_pylint 14m | Failed | Log |
| Build 381371 | At install tests: from account to website_twitter 119m | Succeed | Log |
| Build 381372 | Post install tests: step install all modules 64m | Succeed | Log |
| Build 381373 | Post install tests: from account to payment_alipay 144m | Succeed | Log |
| Build 381374 | Post install tests: from payment_aps to test_viin_web_cohort 174m | Succeed | Log |
| Build 381375 | Post install tests: from test_website to to_website_apps_store 74m | Succeed | Log |
| Build 381376 | Post install tests: from to_website_apps_store_loc to viin_estimate_sale 78m | Failed | Log |
| Build 381377 | Post install tests: from viin_event_checkin_website to viin_project_gantt 34m | Succeed | Log |
| Build 381378 | Post install tests: from viin_project_progress to website_twitter 43m | Succeed | Log |
| Build 381379 | Test install all modules without demo data: from account to website_twitter 49m | Succeed | Log |
| Create Date | Level | Message |
|---|---|---|
| 05/02/2026 18:50:26 | INFO |
Updated repository Viindoo-odoo
|
| 05/02/2026 18:50:26 | INFO |
Updated repository Viindoo-tvtmaaddons
|
| 05/02/2026 18:50:26 | INFO |
Updated repository Viindoo-erponline-enterprise
|
| 05/02/2026 18:50:26 | INFO |
Updated repository Viindoo-branding
|
| 05/02/2026 18:50:26 | INFO |
Cloned repository Viindoo-ai
|
| 05/02/2026 19:05:41 | ERROR |
Subbuild # 381370:
odoo.addons.test_lint.tests.test_eslint: FAIL: TestESLint.test_eslint
Traceback (most recent call last):
File "/data/build/Viindoo-odoo-17.0/odoo/addons/test_lint/tests/test_eslint.py", line 41, in test_eslint
self.assertEqual(process.returncode, 0, msg=process.stdout.decode())
AssertionError: 1 != 0 :
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/page_editor/page_editor.js
1484:18 error '_err' is defined but never used no-unused-vars
✖ 1 problem (1 error, 0 warnings)
|
| 05/02/2026 19:05:41 | ERROR |
Subbuild # 381370:
odoo.modules.loading: Module test_lint: 1 failures, 0 errors of 15 tests
|
| 05/02/2026 19:05:41 | ERROR |
Subbuild # 381370:
odoo.addons.test_pylint.tests.test_eslint: FAIL: TestESLint.test_eslint
Traceback (most recent call last):
File "/data/build/Viindoo-tvtmaaddons-17.0/test_pylint/tests/test_eslint.py", line 67, in test_eslint
self.assertEqual(process.returncode, 0, msg=f"""
AssertionError: 1 != 0 :
stdout:
/data/build/rb-abcb66e-221687/viin_ai_agent/static/tests/tours/wi17_server_action_ai_prompt_form.js
25:88 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_ai_agent/static/tests/tours/wi18_agent_traces_smart_button.js
22:94 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_ai_base/static/tests/tours/wi18_usage_log_raw_http_button.js
22:90 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_ai_base/static/tests/tours/wi18_usage_log_replay_button_group_system.js
23:96 error Delete `,` prettier/prettier
61:96 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_ai_brain/static/src/components/brain_ai_write_dialog/brain_ai_write_dialog.js
79:40 error Delete `,` prettier/prettier
88:35 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_ai_search/static/src/js/ask_ai_button.js
100:22 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/apps/brain_app/brain_app.js
134:21 error Delete `··` prettier/prettier
135:1 error Delete `··` prettier/prettier
213:40 error Delete `,` prettier/prettier
269:65 error Delete `,` prettier/prettier
467:35 error Delete `,` prettier/prettier
513:42 error Delete `,` prettier/prettier
517:42 error Delete `,` prettier/prettier
737:101 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/ai_review_panel/ai_review_panel.js
75:18 error Delete `,` prettier/prettier
134:94 error Delete `,` prettier/prettier
190:18 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/backlink_panel/backlink_panel.js
152:34 error Delete `,` prettier/prettier
169:34 error Delete `,` prettier/prettier
254:30 error Delete `,` prettier/prettier
314:77 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/brain_header/brain_header.js
78:36 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/daily_context_panel/daily_context_panel.js
70:29 error Delete `,` prettier/prettier
87:29 error Delete `,` prettier/prettier
106:29 error Delete `,` prettier/prettier
125:29 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/database_inline_block/database_inline_block.js
37:37 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/database_view/database_board_view.js
34:90 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/database_view/database_gallery_view.js
54:76 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/database_view/database_view.js
71:55 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/embed_blocks/embed_page_block.js
88:40 error Delete `,` prettier/prettier
117:39 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/embed_blocks/embed_record_block.js
64:40 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/embed_blocks/embed_recordset_block.js
67:40 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/embed_picker/embed_picker.js
153:53 error Delete `,` prettier/prettier
177:49 error Delete `,` prettier/prettier
225:49 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/empty_state/empty_state.js
49:36 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/graph_panel/graph_panel.js
97:34 error Delete `,` prettier/prettier
179:34 error Delete `,` prettier/prettier
253:49 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/moderation_panel/moderation_panel.js
58:18 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/page_editor/page_editor.js
230:18 error Delete `,` prettier/prettier
330:27 error Delete `,` prettier/prettier
373:34 error Delete `,` prettier/prettier
420:39 error Delete `,` prettier/prettier
797:40 error Delete `,` prettier/prettier
824:40 error Delete `,` prettier/prettier
831:38 error Delete `,` prettier/prettier
882:35 error Delete `,` prettier/prettier
1013:23 error Delete `,` prettier/prettier
1112:31 error Delete `,` prettier/prettier
1264:39 error Delete `,` prettier/prettier
1285:67 error Delete `,` prettier/prettier
1462:39 error Delete `,` prettier/prettier
1484:18 error '_err' is defined but never used no-unused-vars
1517:82 error Replace `)[c],` with `[c])` prettier/prettier
1562:94 error Replace `)[c],` with `[c])` prettier/prettier
1567:99 error Delete `,` prettier/prettier
1608:43 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/quick_switcher/quick_switcher.js
315:56 error Delete `,` prettier/prettier
333:81 error Delete `,` prettier/prettier
368:82 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/share_dialog/share_dialog.js
63:29 error Delete `,` prettier/prettier
90:26 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/slash_command_prompt_dialog/slash_command_prompt_dialog.js
47:63 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/snapshot_chrome/snapshot_chrome.js
115:39 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/template_picker_dialog/template_picker_dialog.js
56:71 error Delete `,` prettier/prettier
84:23 error Delete `,` prettier/prettier
92:35 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/timeline_view/timeline_view.js
143:58 error Delete `,` prettier/prettier
194:49 error Delete `,` prettier/prettier
198:31 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/components/vault_sidebar/vault_sidebar.js
212:44 error Delete `,` prettier/prettier
613:46 error Delete `,` prettier/prettier
868:36 error Delete `,` prettier/prettier
897:46 error Delete `,` prettier/prettier
947:40 error Delete `,` prettier/prettier
966:40 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/registries/brain_commands.js
37:74 error Replace `)[c],` with `[c])` prettier/prettier
167:29 error Delete `,` prettier/prettier
207:26 error Delete `,` prettier/prettier
244:24 error Delete `,` prettier/prettier
292:39 error Delete `,` prettier/prettier
302:84 error Delete `,` prettier/prettier
305:66 error Delete `,` prettier/prettier
309:37 error Delete `,` prettier/prettier
319:25 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/registries/brain_decorator_providers.js
61:39 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/slash_commands.js
200:82 error Replace `)[c],` with `[c])` prettier/prettier
236:82 error Replace `)[c],` with `[c])` prettier/prettier
269:82 error Replace `)[c],` with `[c])` prettier/prettier
323:74 error Replace `)[c],` with `[c])` prettier/prettier
365:24 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/src/views/form/brain_form_sidebar_universal.js
54:93 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/brain_app_tests.js
95:65 error Delete `,` prettier/prettier
100:56 error Delete `,` prettier/prettier
105:59 error Delete `,` prettier/prettier
127:63 error Delete `,` prettier/prettier
132:59 error Delete `,` prettier/prettier
137:10 error Delete `,` prettier/prettier
155:62 error Delete `,` prettier/prettier
160:54 error Delete `,` prettier/prettier
165:10 error Delete `,` prettier/prettier
180:42 error Delete `,` prettier/prettier
186:10 error Delete `,` prettier/prettier
202:64 error Delete `,` prettier/prettier
207:62 error Delete `,` prettier/prettier
247:66 error Delete `,` prettier/prettier
262:57 error Delete `,` prettier/prettier
267:10 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/components/backlink_panel_grouping_tests.js
61:35 error Delete `,` prettier/prettier
81:54 error Delete `,` prettier/prettier
92:44 error Delete `,` prettier/prettier
124:53 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/components/backlink_panel_isempty_tests.js
75:77 error Delete `,` prettier/prettier
77:6 error Delete `,` prettier/prettier
103:17 error Delete `,` prettier/prettier
109:74 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/components/brain_slash_menu_focus_tests.js
99:81 error Delete `,` prettier/prettier
105:79 error Delete `,` prettier/prettier
109:84 error Delete `,` prettier/prettier
114:6 error Delete `,` prettier/prettier
169:100 error Delete `,` prettier/prettier
174:6 error Delete `,` prettier/prettier
220:85 error Delete `,` prettier/prettier
225:6 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/components/floating_toolbar_focus_tests.js
55:72 error Delete `,` prettier/prettier
58:6 error Delete `,` prettier/prettier
99:61 error Delete `,` prettier/prettier
102:6 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/components/keyboard_shortcuts_overlay_tests.js
78:6 error Delete `,` prettier/prettier
123:6 error Delete `,` prettier/prettier
130:74 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/components/quick_switcher_virtual_list_tests.js
89:78 error Delete `,` prettier/prettier
104:59 error Delete `,` prettier/prettier
120:93 error Delete `,` prettier/prettier
129:88 error Delete `,` prettier/prettier
133:58 error Delete `,` prettier/prettier
148:65 error Delete `,` prettier/prettier
165:47 error Delete `,` prettier/prettier
172:60 error Delete `,` prettier/prettier
196:86 error Delete `,` prettier/prettier
239:70 error Delete `,` prettier/prettier
256:67 error Delete `,` prettier/prettier
282:78 error Delete `,` prettier/prettier
301:67 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/components/template_picker_dialog_tests.js
99:6 error Delete `,` prettier/prettier
127:45 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/components/use_drag_resize_tests.js
190:52 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/components/use_layout_storage_tests.js
98:41 error Delete `,` prettier/prettier
108:20 error Delete `,` prettier/prettier
110:44 error Delete `,` prettier/prettier
133:47 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/components/vault_sidebar_perf_tests.js
121:87 error Delete `,` prettier/prettier
144:56 error Replace `⏎················4,⏎············)}·ms·<·${FLAT_ROWS_CACHE_HIT_BUDGET_MS}·ms`,` with `4)}·ms·<·${FLAT_ROWS_CACHE_HIT_BUDGET_MS}·ms`` prettier/prettier
162:103 error Delete `,` prettier/prettier
186:89 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/components/vault_sidebar_virtual_scroll_tests.js
131:87 error Delete `,` prettier/prettier
154:84 error Delete `,` prettier/prettier
237:81 error Delete `,` prettier/prettier
241:83 error Delete `,` prettier/prettier
251:76 error Delete `,` prettier/prettier
255:76 error Delete `,` prettier/prettier
259:76 error Delete `,` prettier/prettier
356:10 error Delete `,` prettier/prettier
369:62 error Delete `,` prettier/prettier
400:72 error Delete `,` prettier/prettier
402:10 error Delete `,` prettier/prettier
432:71 error Delete `,` prettier/prettier
434:10 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/services/collab_step_service_filter_tests.js
44:10 error Delete `,` prettier/prettier
80:14 error Delete `,` prettier/prettier
93:6 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/share_dialog_tests.js
85:10 error Delete `,` prettier/prettier
115:75 error Delete `,` prettier/prettier
120:71 error Delete `,` prettier/prettier
127:63 error Delete `,` prettier/prettier
131:10 error Delete `,` prettier/prettier
163:54 error Delete `,` prettier/prettier
165:10 error Delete `,` prettier/prettier
181:10 error Delete `,` prettier/prettier
205:67 error Delete `,` prettier/prettier
212:62 error Delete `,` prettier/prettier
217:10 error Delete `,` prettier/prettier
239:70 error Delete `,` prettier/prettier
241:10 error Delete `,` prettier/prettier
268:63 error Delete `,` prettier/prettier
276:62 error Delete `,` prettier/prettier
278:10 error Delete `,` prettier/prettier
305:10 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/test_brain_decorator_providers_registered.js
29:67 error Delete `,` prettier/prettier
42:53 error Delete `,` prettier/prettier
58:58 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/tours/brain_3pane_resize_tour.js
119:32 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/tours/brain_ai_filters.js
38:87 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/tours/brain_ai_review.js
55:74 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/tours/brain_collab_activation_tour.js
76:97 error Delete `,` prettier/prettier
89:82 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/tours/brain_conflict_tour.js
26:24 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/tours/brain_content_type_tokens.js
81:41 error Delete `⏎···················` prettier/prettier
90:77 error Delete `,` prettier/prettier
96:100 error Delete `,` prettier/prettier
104:46 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/tours/brain_embed_recordset.js
50:33 error Delete `,` prettier/prettier
70:90 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/tours/brain_floating_toolbar.js
84:48 error Replace `⏎····························new·Event("selectionchange",·{·bubbles:·true·}),⏎························` with `new·Event("selectionchange",·{·bubbles:·true·})` prettier/prettier
107:54 error Delete `,` prettier/prettier
242:85 error Delete `,` prettier/prettier
259:69 error Delete `,` prettier/prettier
292:95 error Delete `,` prettier/prettier
297:92 error Delete `,` prettier/prettier
327:78 error Delete `,` prettier/prettier
335:79 error Delete `,` prettier/prettier
342:95 error Delete `,` prettier/prettier
396:62 error Delete `,` prettier/prettier
401:96 error Delete `,` prettier/prettier
407:69 error Delete `,` prettier/prettier
450:87 error Delete `,` prettier/prettier
463:95 error Delete `,` prettier/prettier
483:90 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/tours/brain_keyboard_shortcuts_tour.js
48:23 error Delete `,` prettier/prettier
60:90 error Delete `,` prettier/prettier
80:23 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/tours/brain_presence_pill.js
68:83 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/tours/brain_record_mention.js
81:23 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/tours/brain_slash_autosave.js
53:58 error Replace `⏎····················"Autosave·smoke·test·2026-04-17",⏎················` with `"Autosave·smoke·test·2026-04-17"` prettier/prettier
83:21 error Replace `⏎················".o_brain_conflict_force,·.o_brain_save_state[data-save-state=\"saved\"]"` with `·'.o_brain_conflict_force,·.o_brain_save_state[data-save-state="saved"]'` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/tours/brain_slash_focus.js
79:21 error Delete `⏎···············` prettier/prettier
117:90 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/tours/brain_theme_swap.js
81:92 error Delete `,` prettier/prettier
89:100 error Delete `,` prettier/prettier
95:102 error Delete `,` prettier/prettier
106:79 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/tours/brain_ux_batch_a_tour.js
26:70 error Delete `,` prettier/prettier
85:74 error Delete `,` prettier/prettier
91:71 error Delete `,` prettier/prettier
96:81 error Replace `⏎····························"in·zero-page·mode",` with `·"in·zero-page·mode"` prettier/prettier
133:89 error Delete `,` prettier/prettier
199:95 error Delete `,` prettier/prettier
227:91 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/tours/brain_wikilink.js
76:23 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/tours/timeline_view_tour.js
53:86 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain/static/tests/tours/viin_brain_embed_recordset_tour.js
54:23 error Delete `,` prettier/prettier
212:33 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain_account_reports/static/src/backlink_panel_patch.js
25:39 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain_account_reports/static/src/embed_report_block/embed_report_block.js
71:40 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain_account_reports/static/src/embed_report_lazy_loader.js
48:25 error Delete `,` prettier/prettier
57:14 error Delete `,` prettier/prettier
105:52 error Delete `,` prettier/prettier
128:36 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain_account_reports/static/src/embed_report_picker.js
100:50 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain_account_reports/static/src/slash_commands.js
43:25 error Delete `,` prettier/prettier
50:14 error Delete `,` prettier/prettier
61:74 error Replace `)[c],` with `[c])` prettier/prettier
91:69 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_brain_account_reports/static/tests/tours/brain_embed_report.js
67:33 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_web_editor/static/src/adapters/tiptap_adapter.js
82:90 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_web_editor/static/src/js/powerbox_registry.js
86:83 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_web_editor/static/tests/test_chip_builder.js
31:41 error Delete `,` prettier/prettier
52:48 error Delete `,` prettier/prettier
/data/build/rb-abcb66e-221687/viin_web_editor/static/tests/test_decorator_plugin_isolation.js
24:44 error Delete `,` prettier/prettier
31:54 error Delete `,` prettier/prettier
50:72 error Delete `,` prettier/prettier
59:71 error Delete `,` prettier/prettier
✖ 267 problems (267 errors, 0 warnings)
266 errors and 0 warnings potentially fixable with the `--fix` option.
Perhaps you might benefit from installing the tooling found at:
https://github.com/odoo/odoo/wiki/Javascript-coding-guidelines#use-a-linter
stderr:
|
| 05/02/2026 19:05:41 | ERROR |
Subbuild # 381370:
odoo.addons.test_pylint.tests.test_flake8: FAIL: TestFlake8.test_flake8
Traceback (most recent call last):
File "/data/build/Viindoo-tvtmaaddons-17.0/test_pylint/tests/test_flake8.py", line 91, in test_flake8
self.fail("flake8 test failed:\n" + (b"\n" + out + b"\n" + err).decode('utf-8').strip())
AssertionError: flake8 test failed:
/data/build/rb-abcb66e-221687/viin_ai_agent/tests/test_sql_template.py:156:9: F841 local variable 'p_visible' is assigned to but never used
/data/build/rb-abcb66e-221687/viin_ai_chat/models/mail_compose_message.py:19:1: F401 'odoo.api' imported but unused
|
| 05/02/2026 19:05:41 | ERROR |
Subbuild # 381370:
odoo.addons.test_pylint.tests.test_pylint: FAIL: TestPyLint.test_pylint
Traceback (most recent call last):
File "/data/build/Viindoo-tvtmaaddons-17.0/test_pylint/tests/test_pylint.py", line 147, in test_pylint
self.fail("pylint test failed:\n" + (b"\n" + out + b"\n" + err).decode('utf-8').strip())
AssertionError: pylint test failed:
************* Module viin_ai_agent.tests.test_parallel_tool_execution
String parameter on "UserError" requires translation. Use _('boom: business invariant') (C8107) at rb-abcb66e-221687/viin_ai_agent/tests/test_parallel_tool_execution.py:366
------------------------------------
Your code has been rated at 10.00/10
|
| 05/02/2026 19:05:41 | ERROR |
Subbuild # 381370:
odoo.modules.loading: Module test_pylint: 3 failures, 0 errors of 7 tests
|
| 05/02/2026 19:05:41 | ERROR |
Subbuild # 381370:
odoo.modules.loading: At least one test failed when loading the modules.
|
| 05/02/2026 19:05:41 | ERROR |
Subbuild # 381370:
odoo.tests.result: 4 failed, 0 error(s) of 24 tests when loading database 'rb-abcb66e-221687-381370'
|
| 05/02/2026 21:15:01 | ERROR |
Subbuild # 381376:
ERROR: operator does not exist: jsonb ~~ unknown
|
| 05/02/2026 21:15:01 | ERROR |
Subbuild # 381376:
odoo.sql_db: bad query: WITH __acl_allowed AS (SELECT res_partner.id FROM "res_partner" WHERE (((("res_partner"."partner_share" IS NULL OR "res_partner"."partner_share" = FALSE) OR ("res_partner"."company_id" IN (SELECT "res_company"."id" FROM "res_company" WHERE ("res_company"."id" IN (1))))) OR "res_partner"."company_id" IS NULL) AND (("res_partner"."id" != '1286') OR "res_partner"."id" IS NULL))) SELECT id, name FROM res_partner WHERE id IN (SELECT id FROM __acl_allowed) AND name LIKE 'TPL-%%-PARTNER'
LINE 1: ...ERE id IN (SELECT id FROM __acl_allowed) AND name LIKE 'TPL-...
^
HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
|
| 05/02/2026 21:15:01 | ERROR |
Subbuild # 381376:
odoo.addons.viin_ai_agent.tests.test_sql_template: ERROR: TestSqlTemplateAclAndExecute.test_ir_rule_subquery_acl
Traceback (most recent call last):
File "/data/build/rb-abcb66e-221687/viin_ai_agent/tests/test_sql_template.py", line 186, in test_ir_rule_subquery_acl
rows = tpl.with_user(regular).execute({})
File "/data/build/rb-abcb66e-221687/viin_ai_agent/models/sql_template.py", line 269, in execute
cr.execute(full_sql, params)
File "/data/build/Viindoo-odoo-17.0/odoo/sql_db.py", line 342, in execute
res = self._obj.execute(query, params)
psycopg2.errors.UndefinedFunction: operator does not exist: jsonb ~~ unknown
LINE 1: ...ERE id IN (SELECT id FROM __acl_allowed) AND name LIKE 'TPL-...
^
HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
|
| 05/02/2026 21:15:01 | ERROR |
Subbuild # 381376:
odoo.tests.result: 0 failed, 1 error(s) of 1750 tests when loading database 'rb-abcb66e-221687-381376'
|