Можно ли сделать утилиту web-ext Firefoxe для открытия страницы расширения при запуске с -u?
Насколько я понимаю, каждый раз, когда расширение перезагружается, оно получает новый moz-extension://
URL с новым UUID. Это делает невозможным узнать URL-адрес страницы расширения, с которой я хочу использовать web-ext run -u
заблаговременно. Это делает web-ext
почти бесполезен для меня, потому что я должен (вручную) открыть страницу, на которой мне нужно запустить свои тесты. Если бы я знал URL заранее, я мог бы просто передать его web-ext
и делать все полностью автоматически, и с безголовым FF. Это можно обойти?
1 ответ
После некоторого возни мне наконец удалось web-ext
открыть страницу с moz-extension
схема при запуске браузера.
Единственный способ (который я нашел) открыть эту страницу с расширением контекста (и правильно проверить страницу), а не как обычный file://
это использовать moz-extension://<internal UUID>/path/to/extension/page/from/extension/root
введите URI для доступа к нему.
Проблема в том, что как временное расширение, оно всегда имеет другой UUID, который не сохраняется между переустановками, поэтому нет способа сообщить web-ext
открыть страницу расширения через -u
при использовании значений по умолчанию.
Вот где появляется эта полезная документация. Она упоминает extensions.webextensions.keepUuidOnUninstall
вариант в about:config
это делает именно это. Таким образом, должен быть создан профиль с этой опцией true
и используется с web-ext
-p
вариант.
Следующая проблема, с которой я столкнулся, заключалась в том, что страница молча не открывалась. Судя по всему, Firefox пытался открыть страницу до того, как расширение было установлено. Но web-ext
имеет --pre-install
опция, которая делает расширение (и его страницы) доступным при запуске, поэтому, когда оно включено, страница действительно открывается. Предостережение 1 - это использование --pre-install
требует, чтобы расширение имело идентификатор (это не упомянутый UUID, сгенерированный Firefox), который должен быть установлен в manifest.json
, Предостережение 2, --pre-install
отключает автоматическую перезагрузку расширения при изменении файла.
Итак, мое окончательное решение было:
С
firefox --manageProfiles
создать отдельный профиль для проверки моего расширенияПерейдите к настройке и сохранению
extensions.webextensions.keepUuidOnUninstall
about:config
флаг (сделать это безweb-ext
или с--keep-profile-changes
иначе)В
manifest.json
добавить идентификатор для расширения:"applications": { "gecko": { "id": "addon@example.com" } }
Бежать
web-ext run -p <testing profile name> --pre-install -u moz-extension://<extension UUID>/path/to/extension/page.html
Это запускает Firefox с временной установкой вашего расширения и открывает нужную страницу.
Если вы знаете лучшее решение (например, которое не отключает автоматическую перезагрузку), ваш ответ очень приветствуется.