[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>
Odoo 17 Test Suite Using Docker
Check the quality with Pylint: from test_lint to test_pylint
- install_module test_lint,test_pylint
- exec_odoo --db_port 5432 --log-level=test --max-cron-threads=0 --load=base,web,to_base --stop-after-init --test-enable --test-tags=/test_lint,/test_pylint,/test_lint,/test_pylint,-:.test_pofiles_string_formatting
| Create Date | Level | Message |
|---|---|---|
| 05/02/2026 18:50:26 | INFO |
Using Docker Image Odoo 17 Ubuntu 22.04 Python 3.10:
FROM ubuntu:jammy ENV LANG C.UTF-8 USER root SHELL ["/bin/bash", "-c"] # Install debian packages RUN set -x ; \ apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends apt-transport-https build-essential ca-certificates curl ffmpeg file fonts-freefont-ttf fonts-noto-cjk gawk gnupg gsfonts libldap2-dev libjpeg9-dev libsasl2-dev libxslt1-dev lsb-release node-less ocrmypdf sed sudo unzip xfonts-75dpi zip zlib1g-dev git build-essential cython3 libffi-dev libev-dev \ && rm -rf /var/lib/apt/lists/* # Install Python3 packages RUN set -x ; \ apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends python3 python3-dbfread python3-dev python3-pip python3-setuptools python3-wheel python3-markdown python3-mock python3-phonenumbers python3-websocket python3-cffi libpq-dev \ && rm -rf /var/lib/apt/lists/* # Install wkhtml RUN curl -sSL https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb -o /tmp/wkhtmltox_0.12.6-1.focal_amd64.deb \ && curl -sSL http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb -o /tmp/libssl1.1_1.1.0g-2ubuntu4_amd64.deb \ && apt-get update \ && dpkg -i /tmp/libssl1.1_1.1.0g-2ubuntu4_amd64.deb \ && apt install -y -f --no-install-recommends /tmp/wkhtmltox_0.12.6-1.focal_amd64.deb \ && rm /tmp/libssl1.1_1.1.0g-2ubuntu4_amd64.deb /tmp/wkhtmltox_0.12.6-1.focal_amd64.deb # Install Odoo:Depends ADD https://raw.githubusercontent.com/brendangregg/FlameGraph/master/flamegraph.pl /usr/local/bin/flamegraph.pl RUN chmod +rx /usr/local/bin/flamegraph.pl ADD https://raw.githubusercontent.com/Viindoo/odoo/17.0/debian/control /tmp/control.txt RUN apt-get update \ && sed -n '/^Depends:/,/^[A-Z]/p' /tmp/control.txt \ | awk '/^ [a-z]/ { gsub(/,/,"") ; print $1 }' | sort -u \ | egrep -v 'postgresql-client' \ | sed 's/python-imaging/python-pil/'| sed 's/python-pypdf/python-pypdf2/' | sed 's/python3-lxml-html-clean/python3-lxml/' \ | DEBIAN_FRONTEND=noninteractive xargs apt-get install -y -qq \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* RUN python3 -m pip install --no-cache-dir setuptools wheel && \ python3 -m pip install coverage==7.4.4 flamegraph RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y postgresql-client-14 \ && rm -rf /var/lib/apt/lists/* # Install Google Chrome #RUN curl -sSL https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -o /tmp/chrome.deb \ # && apt-get update \ # && apt-get -y install --no-install-recommends /tmp/chrome.deb \ # && rm /tmp/chrome.deb # Install phantomjs RUN curl -sSL https://nightly.odoo.com/resources/phantomjs.tar.bz2 -o /tmp/phantomjs.tar.bz2 \ && tar xvfO /tmp/phantomjs.tar.bz2 phantomjs-2.1.1-linux-x86_64/bin/phantomjs > /usr/local/bin/phantomjs \ && chmod +x /usr/local/bin/phantomjs \ && rm -f /tmp/phantomjs.tar.bz2 ADD https://raw.githubusercontent.com/Viindoo/odoo/17.0/requirements.txt /root/requirements.txt RUN python3 -m pip install --no-cache-dir wheel setuptools && \ python3 -m pip install --upgrade --no-cache-dir -r /root/requirements.txt && \ python3 -m pip install --no-cache-dir ebaysdk==2.1.5 pdf417gen==0.7.1 RUN python3 -m pip install --no-cache-dir requests pyOpenSSL # Install debian packages RUN set -x ; \ apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends openssl iputils-ping openssh-client chromium-browser \ && rm -rf /var/lib/apt/lists/* RUN python3 -m pip install --no-cache-dir --upgrade websocket-client==1.2.3 flake8==4.0.1 RUN python3 -m pip uninstall pylint pylint-odoo isort Pygments -y RUN python3 -m pip install --no-cache-dir --upgrade pylint-odoo==9.0.5 RUN python3 -m pip install --no-cache-dir --upgrade Pygments==2.14.0 --no-deps RUN python3 -m pip install --no-cache-dir --upgrade odoo_test_helper # Install nodejs RUN curl -fsSLO --compressed "https://nodejs.org/dist/v18.20.0/node-v18.20.0-linux-x64.tar.xz" \ && tar -xJf "node-v18.20.0-linux-x64.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ && rm "node-v18.20.0-linux-x64.tar.xz" \ && ln -s /usr/local/bin/node /usr/local/bin/nodejs #RUN npm install -g rtlcss es-check eslint@8 RUN python3 -m pip install --no-cache-dir --upgrade setuptools==61 # để tương thích với python-pkcs11-0.7.0 # Install cloc package RUN set -x ; \ apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends cloc \ && rm -rf /var/lib/apt/lists/* RUN npm install -g rtlcss@3.4.0 es-check@6.0.0 eslint@8.57.1 prettier@2.7.1 eslint-config-prettier@8.5.0 eslint-plugin-prettier@4.2.1 --save-dev |
| 05/02/2026 18:50:26 | INFO |
Docker command:
cd /data/build; python3 -m pip install --user --progress-bar off -r Viindoo-tvtmaaddons-17.0/requirements.txt && python3 -m pip install --user --progress-bar off -r Viindoo-erponline-enterprise-17.0/requirements.txt && python3 Viindoo-odoo-17.0/odoo-bin --addons-path Viindoo-odoo-17.0/odoo/addons,Viindoo-odoo-17.0/addons,Viindoo-tvtmaaddons-17.0,Viindoo-erponline-enterprise-17.0,Viindoo-branding-17.0,rb-abcb66e-221687 -d rb-abcb66e-221687-381370 --data-dir /data/build/datadir -i test_lint,test_pylint --db_port 5432 --log-level=test --max-cron-threads=0 --load=base,web,to_base --stop-after-init --test-enable --test-tags=/test_lint,/test_pylint,/test_lint,/test_pylint,-:.test_pofiles_string_formatting ; |
| 05/02/2026 18:50:26 | INFO |
Container rb-abcb66e-221687-381370 started !
|
| 05/02/2026 19:05:41 | INFO |
Container rb-abcb66e-221687-381370 stopped !
|
| 05/02/2026 19:05:41 | ERROR |
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 |
odoo.modules.loading: Module test_lint: 1 failures, 0 errors of 15 tests
|
| 05/02/2026 19:05:41 | ERROR |
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 |
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 |
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 |
odoo.modules.loading: Module test_pylint: 3 failures, 0 errors of 7 tests
|
| 05/02/2026 19:05:41 | ERROR |
odoo.modules.loading: At least one test failed when loading the modules.
|
| 05/02/2026 19:05:41 | ERROR |
odoo.tests.result: 4 failed, 0 error(s) of 24 tests when loading database 'rb-abcb66e-221687-381370'
|
| 05/02/2026 19:05:41 | INFO |
Cleaning all resource
|
| 05/02/2026 19:05:41 | INFO |
Cleanup finished
|