Name: [ADD/FIX] viin_ai: Phase 3.5 hardening + Phase 3.7 features (SRS v1.1 follow-up) - Check the quality with Pylint: from test_lint to test_pylint

State: Failed finished in 19m

PR State: merged

PR Author: David Tran

PR Author Email:

PR: #23

Committer: David Tran

Committer Email: davidtran.hp@gmail.com

Commit: fa73ae51d7a699ea7d3266f17a9e0c7579e340f4

Description:

                                [FIX] cluster ai17: address runbot lint + sql_template ACL failures (build 221687)

CI runner Viindoo runbot exposed real failures on PR #23 commit abcb66e
that local Chrome-flaky test runs had hidden:

* test_pylint test_eslint (267 violations) — eslint v6 on dev box could
  not parse the ``es2022`` env key so every lint check silently exited
  config-error; CI runs eslint v8 cleanly.
* test_pylint test_flake8 — 2 unused name lints
* test_pylint test_pylint — UserError missing translation
* viin_ai_agent.tests.test_sql_template — postgres ``operator does not
  exist: jsonb ~~ unknown`` on ``res_partner.name LIKE ...``

Fixes:

  page_editor.js:1484 — drop unused catch binding ``_err`` (eslint
    no-unused-vars). The empty ``catch {}`` form is supported since
    Odoo 17 ships ECMAScript 2019+ asset bundles.

  mail_compose_message.py:19 — drop unused ``api`` import (no
    decorators in this module).

  test_sql_template.py:156-193 — restore ``p_visible`` local (was
    flagged unused after the names→ids assertion rewrite). Switch the
    SQL template to ``name::text LIKE '%%TPL-%%-PARTNER%%'`` and the
    Python assertion to compare ids: in Odoo 17 ``res_partner.name``
    is a translated ``Char``, persisted as jsonb (e.g.
    ``{"en_US": "TPL-VISIBLE-PARTNER"}``), so the previous direct
    ``name LIKE`` invokes the missing ``jsonb ~~`` operator. The
    ``::text`` cast matches the JSON-serialised form regardless of
    which language key the row uses, and asserting on ids removes the
    test's reliance on a specific language key in the SELECT clause.

  test_parallel_tool_execution.py:25 + :366 — wrap the boom string
    in ``_(…)``. Test fixtures still flow through Odoo's UserError
    translation path so pylint's ``odoolint-translation-required``
    rule needs to see ``_()`` even on hard-coded test text.

  Tour JS files (brain_content_type_tokens, brain_floating_toolbar,
  brain_slash_autosave, brain_slash_focus) — additional prettier
  trailing-comma + parenthesis fixes that eslint v8 ``--fix``
  surfaces over the v6 configuration error.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
                                

Branch: 17.0

Instance ID: 0

Age:

Up-time:

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 22:05:44 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 22:05:44 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-fa73ae5-221688 -d rb-fa73ae5-221688-381380 --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 22:05:44 INFO
Container rb-fa73ae5-221688-381380 started !
05/02/2026 22:25:33 INFO
Container rb-fa73ae5-221688-381380 stopped !
05/02/2026 22:25:33 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-fa73ae5-221688/viin_ai_agent/static/tests/tours/wi17_server_action_ai_prompt_form.js 25:88 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/viin_ai_agent/static/tests/tours/wi18_agent_traces_smart_button.js 22:94 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/viin_ai_base/static/tests/tours/wi18_usage_log_raw_http_button.js 22:90 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/viin_ai_search/static/src/js/ask_ai_button.js 100:22 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/viin_brain/static/src/components/brain_header/brain_header.js 78:36 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/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-fa73ae5-221688/viin_brain/static/src/components/database_inline_block/database_inline_block.js 37:37 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/viin_brain/static/src/components/database_view/database_board_view.js 34:90 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/viin_brain/static/src/components/database_view/database_gallery_view.js 54:76 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/viin_brain/static/src/components/database_view/database_view.js 71:55 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/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-fa73ae5-221688/viin_brain/static/src/components/embed_blocks/embed_record_block.js 64:40 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/viin_brain/static/src/components/embed_blocks/embed_recordset_block.js 67:40 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/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-fa73ae5-221688/viin_brain/static/src/components/empty_state/empty_state.js 49:36 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/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-fa73ae5-221688/viin_brain/static/src/components/moderation_panel/moderation_panel.js 58:18 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/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 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-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/viin_brain/static/src/components/slash_command_prompt_dialog/slash_command_prompt_dialog.js 47:63 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/viin_brain/static/src/components/snapshot_chrome/snapshot_chrome.js 115:39 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/viin_brain/static/src/registries/brain_decorator_providers.js 61:39 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/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-fa73ae5-221688/viin_brain/static/src/views/form/brain_form_sidebar_universal.js 54:93 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/viin_brain/static/tests/components/use_drag_resize_tests.js 190:52 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/viin_brain/static/tests/tours/brain_3pane_resize_tour.js 119:32 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/viin_brain/static/tests/tours/brain_ai_filters.js 38:87 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/viin_brain/static/tests/tours/brain_ai_review.js 55:74 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/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-fa73ae5-221688/viin_brain/static/tests/tours/brain_conflict_tour.js 26:24 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/viin_brain/static/tests/tours/brain_content_type_tokens.js 89:77 error Delete `,` prettier/prettier 95:100 error Delete `,` prettier/prettier 103:46 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/viin_brain/static/tests/tours/brain_embed_recordset.js 50:33 error Delete `,` prettier/prettier 70:90 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/viin_brain/static/tests/tours/brain_floating_toolbar.js 105:54 error Delete `,` prettier/prettier 240:85 error Delete `,` prettier/prettier 257:69 error Delete `,` prettier/prettier 290:95 error Delete `,` prettier/prettier 295:92 error Delete `,` prettier/prettier 325:78 error Delete `,` prettier/prettier 333:79 error Delete `,` prettier/prettier 340:95 error Delete `,` prettier/prettier 394:62 error Delete `,` prettier/prettier 399:96 error Delete `,` prettier/prettier 405:69 error Delete `,` prettier/prettier 448:87 error Delete `,` prettier/prettier 461:95 error Delete `,` prettier/prettier 481:90 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/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-fa73ae5-221688/viin_brain/static/tests/tours/brain_presence_pill.js 68:83 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/viin_brain/static/tests/tours/brain_record_mention.js 81:23 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/viin_brain/static/tests/tours/brain_slash_focus.js 116:90 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/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-fa73ae5-221688/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-fa73ae5-221688/viin_brain/static/tests/tours/brain_wikilink.js 76:23 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/viin_brain/static/tests/tours/timeline_view_tour.js 53:86 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/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-fa73ae5-221688/viin_brain_account_reports/static/src/backlink_panel_patch.js 25:39 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/viin_brain_account_reports/static/src/embed_report_block/embed_report_block.js 71:40 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/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-fa73ae5-221688/viin_brain_account_reports/static/src/embed_report_picker.js 100:50 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/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-fa73ae5-221688/viin_brain_account_reports/static/tests/tours/brain_embed_report.js 67:33 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/viin_web_editor/static/src/adapters/tiptap_adapter.js 82:90 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/viin_web_editor/static/src/js/powerbox_registry.js 86:83 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/viin_web_editor/static/tests/test_chip_builder.js 31:41 error Delete `,` prettier/prettier 52:48 error Delete `,` prettier/prettier /data/build/rb-fa73ae5-221688/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 ✖ 261 problems (261 errors, 0 warnings) 261 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 22:25:33 ERROR
odoo.modules.loading: Module test_pylint: 1 failures, 0 errors of 7 tests
05/02/2026 22:25:33 ERROR
odoo.modules.loading: At least one test failed when loading the modules.
05/02/2026 22:25:33 ERROR
odoo.tests.result: 1 failed, 0 error(s) of 24 tests when loading database 'rb-fa73ae5-221688-381380'
05/02/2026 22:25:33 INFO
Cleaning all resource
05/02/2026 22:25:33 INFO
Cleanup finished