Каждая кнопка доходит до своего обработчика
Новая проверка `ui_actions` ведёт каждую кнопку через таблицы обработчиков до кода и до объявленного маршрута API; `crossweft actions` печатает эту цепочку.
Одна новая проверка: кнопки и другие элементы интерфейса стали швом, который Crossweft умеет проверять.
Зачем. Кнопка называет своё действие строкой, написанной руками: data-action, имя колбэка, команда меню. Код, который это действие выполняет, находится через другие такие же строки: таблицу, реестр, правило по префиксу. Переименуйте действие только с одной стороны — и всё по-прежнему собирается. Кнопка остаётся на странице и ничего не делает, или в коде остаётся обработчик, который ни одна кнопка больше не вызывает.
ui_actions. Запись ui_actions в карте говорит, где лежат кнопки и какие таблицы их разбирают. Crossweft ведёт каждую кнопку через эти таблицы до обработчика, а с "routes": true — дальше, до маршрута API, который объявлен на связи, так что проверки маршрутов следят, чтобы сервер его обслуживал. Проблем четыре:
ui:<id>:dead— ни один обработчик не принимает кнопку;ui:<id>:unrouted— цепочка не доходит до объявленного маршрута;ui:<id>:orphan— обработчик, к которому больше не ведёт ни одна кнопка;ui:<id>:conflict— один ключ привязан дважды к разным значениям.
Кнопку, которая и должна заканчиваться без маршрута, можно разрешить через allow с причиной.
crossweft actions. Печатает цепочку каждой кнопки: какая таблица её приняла, в каком файле, и маршрут в конце. --json даёт то же для скрипта.
Статическая проверка и проверка нажатием. Проверка доказывает связи в исходниках. Она не может доказать, что обработчик не падает и что кнопку не закрыл другой элемент. В демо-репозитории теперь есть страница администратора и smoke/click_smoke.py: он читает crossweft actions --json, нажимает каждую кнопку из карты в Chromium и ждёт запрос, который ожидает карта. Его самопроверка обязана покраснеть на обработчике, который падает.
После обновления запустите crossweft agents ещё раз: навык агента теперь объясняет проблемы ui: и crossweft actions.
Источник: v0.2.10 · CHANGELOG.md