Поддержка функции браузером не равна качеству функции
Наличие API браузера лишь начало надёжного, доступного и учитывающего приватность пользовательского сценария.
BotBrowser Team
Нужна структурированная документация по теме Платформа?
Эта статья относится к редакционной библиотеке. Для пошаговой настройки, справки и постоянных обновлений переходите сразу в соответствующий раздел docs.
Таблица поддержки показывает, что версия должна предоставлять функцию. Она не обещает успех вызова в этом origin, выдачу разрешения или завершение задачи. BotBrowser может повторить разрешённый сценарий в контролируемом context, но не выдаёт разрешения и не подтверждает результат приложения. Качество функции - это расстояние между заявленной возможностью и надёжным, понятным результатом.
Три уровня свидетельств
Изучите MDN Browser Compatibility Data, примечания, flags, требования безопасного контекста и частичную поддержку, а также контракт MDN Web APIs и соответствующую спецификацию. Проверка во время выполнения отвечает только на вопрос, что может попробовать эта страница сейчас. Она не устанавливает личность и не доказывает завершение операции приложения.
Для каждого необязательного API фиксируйте контекст, проверку, разрешение, исключение, видимый успех и ошибку, владельца запасного пути. Метод в navigator означает «можно попробовать», а не «завершено».
Таблица решений качества
| Наблюдение | Решение | Проверка качества |
|---|---|---|
| Метод и контекст доступны | Один раз попробовать после намерения | Показывать прогресс и отмену |
| Метод отсутствует или заблокирован | Выбрать эквивалентный запасной путь | Сохранить данные и клавиатурный доступ |
| Разрешение отклонено | Объяснить и предложить запасной путь | Не повторять запрос циклически |
| Вызов отклонён или истёк | Классифицировать ограниченную ошибку | Не называть сбой сервиса отсутствием поддержки |
| Вызов браузера завершён | Проверить результат приложения | Подтверждать только видимое пользователю |
Детерминированная failure fixture
На синтетической странице проверьте отсутствующий, отклонённый, ошибочный и задержанный состояния. Подменяйте только собственный API и проверяйте видимый элемент:
async function shareWithFallback() {
const host = document.createElement('div');
host.innerHTML = '<p id="status" role="status"></p><button id="fallback" hidden>Скопировать ссылку</button>';
document.body.append(host);
const status = host.querySelector('#status');
const fallback = host.querySelector('#fallback');
if (typeof navigator.share !== 'function') {
fallback.hidden = false;
status.textContent = 'Используйте запасной путь';
host.remove();
return 'missing';
}
try {
await navigator.share({ title: 'Синтетический объект', url: '/fixture' });
status.textContent = 'Запрос принят; проверьте видимый результат';
return 'accepted';
} catch (error) {
fallback.hidden = false;
status.textContent = error?.name === 'NotAllowedError' ? 'Общий доступ отменён' : 'Используйте запасной путь';
return 'fallback';
} finally {
console.assert(status.textContent.length > 0);
host.remove();
}
}
Fixture доказывает ветвление и очистку, но не универсальную совместимость, состояние аккаунта или транзакцию. Ограничьте таймаут и повторы и не собирайте посторонние свойства браузера.
Прогрессивное улучшение и BotBrowser
Сохраняйте задачу доступной через копируемый URL, обычное поле и клавиатурное управление. Сохраняйте черновик, переводите фокус и объясняйте различия. Перепроверяйте данные после изменений версии, разрешений, origin или политики.
BotBrowser предоставляет контролируемые контексты для разрешённых сценариев и повторяемых синтетических проверок. Он не гарантирует API для каждого origin, не выдаёт разрешения, не делает небезопасный контекст безопасным и не заменяет доступность или запасной путь приложения. Успешная синтетическая проверка не доказывает запись на сервере или бизнес-транзакцию. Разделяйте свидетельства браузера, разрешения и сервера.
BotBrowser capability and limitation
См. также события WebDriver BiDi и Credential Management.
Operational checklist
Определите задачу, минимальный результат, основной и запасной путь. Запишите контекст, разрешение, видимое состояние и владельца; используйте данные совместимости для планирования, а не обещаний. Разделяйте отсутствует, отклонено, ошибка, принято и завершено. Применяйте синтетические данные, ограниченные повторы и очистку в finally; проверяйте безопасный контекст, фокус, клавиатуру и доступные сообщения. Храните только нормализованное состояние, версию источника и следующее действие. Разделяйте событие браузера, разрешение и подтверждение сервера.
Designing a useful support contract.
Определите действие, минимальный результат, запасной путь и границу успеха до выбора матрицы. Запишите источник, контекст, разрешение, fixture, владельца и дату проверки, без профилей и частных журналов.
Состояния разрешений и политики.
Разрешение зависит от пользователя и политики. Проверьте отказ, отзыв, iframe и поздний результат, сохраните черновик и не повторяйте запросы циклически.
Measuring visible outcomes without surveillance.
Храните ограниченное состояние, заявленную версию и видимый элемент, не собирайте списки navigator, шрифты, рендерер, аккаунт или местоположение.
Release review and incident triage.
Сравнивайте одинаковые синтетические входы и разделяйте API, контекст, разрешение, браузер и сервер до изменения матрицы или текста.
Quality contract maintenance.
При изменении origin, iframe, политики или доступности обновите запись и одно состояние fixture, подтвердив владельца запасного пути.
Источники
Похожие статьи
Переведите BotBrowser из исследований в продакшн
Используйте эти руководства, чтобы понять модель, а затем перейти к кроссплатформенной валидации, изолированным контекстам и масштабируемому браузерному развертыванию.