Можно ли сделать утилиту 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 отключает автоматическую перезагрузку расширения при изменении файла.

Итак, мое окончательное решение было:

  1. С firefox --manageProfilesсоздать отдельный профиль для проверки моего расширения

  2. Перейдите к настройке и сохранению extensions.webextensions.keepUuidOnUninstallabout:config флаг (сделать это без web-ext или с --keep-profile-changes иначе)

  3. В manifest.json добавить идентификатор для расширения:

    "applications": {
      "gecko": {
        "id": "addon@example.com"
      }
    }
    
  4. Бежать

    web-ext run -p <testing profile name> --pre-install -u moz-extension://<extension UUID>/path/to/extension/page.html
    

Это запускает Firefox с временной установкой вашего расширения и открывает нужную страницу.

Если вы знаете лучшее решение (например, которое не отключает автоматическую перезагрузку), ваш ответ очень приветствуется.

Другие вопросы по тегам