Bugfix · возможность

Баг-репорты в приложении (модули для webview, Tauri и Flutter)

Баг-репорты в приложении требуют другого пути, чем на сайте: тег script, который работает на странице, внутри приложения не срабатывает. Поэтому Bugfix даёт модули, которые вы копируете в проект: один для приложений на webview и Tauri, второй для Flutter. Отчёты из приложения попадают в тот же ящик, что и отчёты с вашего сайта.

Баг-репорты в приложении: модуль Bugfix внутри приложения отправляет отчёт с контекстом в тот же ящик, что и сайт

Почему баг-репорты в приложении собираются модулями, а не загрузчиком

На сайте один тег подтягивает виджет с центра Bugfix. В приложении так не выйдет: политика безопасности приложения и офлайн-режим режут внешний скрипт. Поэтому у приложений отдельные модули, которые вендорятся, то есть копируются в проект файлом. Приложение не тянет скрипт снаружи.

Тестировщик, который нашёл проблему в сборке, нажимает кнопку модуля, и отчёт идёт тем же путём, что и сообщение с сайта.

Модуль для webview и Tauri: bugfix-app.js

Баг-репорты в приложении на webview и Tauri собирает файл bugfix-app.js: он самодостаточен и не зависит от фреймворка. Что он приносит с собой:

API состоит из двух вызовов:

BugfixApp.init({ project, version, enabled, position, color, button })
BugfixApp.send('bug', text, contact)

init добавляет плавающую кнопку и форму. send работает без собственного интерфейса и подходит приложениям, у которых своя кнопка.

Скриншот снимается, если в сборке есть html2canvas. Если его нет, сообщение уходит без картинки, и модуль не падает.

Модуль для Flutter: bugfix_flutter.dart

Баг-репорты в приложении на Flutter собирает файл bugfix_flutter.dart. Он решает ту же задачу средствами фреймворка:

Один ящик для сайта и приложения

Сообщения из приложений и с сайтов попадают в одну таблицу под общим ключом проекта. Владелец видит их вместе и получает ту же автоматическую задачу и тот же обратный ответ автору, что и для сообщения с сайта.

У сообщения один из четырёх видов: bug, idea, confusion или other. Знакомые синонимы (unclear, question, feature, error, crash) приводятся к ним автоматически. Незнакомое слово становится other, поэтому сообщение не пропадёт из-за ярлыка.

Типичные случаи: тестировщик сообщает о проблеме из тестовой сборки; у продукта есть и сайт, и приложение, а список проблем нужен один; приложение со своим интерфейсом вызывает send из собственной кнопки.

Как подключить баг-репорты в приложении по шагам

  1. Добавьте адрес базы Bugfix в connect-src политики безопасности приложения.
  2. Вендорьте файл, то есть положите копию в свой проект, и не подключайте внешний загрузчик.
  3. Инициализируйте модуль с гейтом для тестовых сборок.

Канонические адреса файлов: https://bugfix.asibots.pro/bugfix-app.js и https://bugfix.asibots.pro/bugfix_flutter.dart.

Ограничения, которые нужно учесть

У схемы есть границы:

Частые вопросы

Почему баг-репорты в приложении нельзя собирать тегом с сайта?

Политика безопасности приложения и офлайн-режим режут внешний скрипт. Поэтому приложения используют модули, которые копируются в проект: bugfix-app.js для webview и Tauri, bugfix_flutter.dart для Flutter.

Что будет, если в сборке нет html2canvas?

Сообщение уйдёт без скриншота, и модуль не упадёт.

Что происходит с видом сообщения, которого Bugfix не знает?

Допустимые виды: bug, idea, confusion и other. Знакомые синонимы приводятся к ним, а незнакомое слово становится other, так что сообщение не теряется.

Добавить модуль в приложение

Читайте также