Можно ли сделать утилиту web-ext Firefoxe, чтобы открыть страницу расширения при запуске с -u? - PullRequest
1 голос
/ 27 апреля 2019

Насколько я понимаю, каждый раз, когда расширение перезагружается, оно получает новый moz-extension:// URL с новым UUID. Это делает невозможным заранее узнать URL-адрес страницы расширения, которую я хочу использовать с web-ext run -u. Это делает web-ext почти бесполезным для меня, потому что мне приходится (вручную) открывать страницу, на которой я хочу запустить свои тесты. Если бы я знал URL-адрес заранее, я мог бы просто передать его на web-ext и сделать все полностью автоматически, с безголовым FF. Есть ли способ обойти это?

1 Ответ

1 голос
/ 27 апреля 2019

После некоторых потрясений мне наконец-то удалось web-ext открыть страницу со схемой moz-extension при запуске браузера.

Единственный способ (который я нашел) открыть эту страницу с контекстом расширения (и правильно проверить страницу), а не как обычный file://, это использовать URI типа moz-extension://<internal UUID>/path/to/extension/page/from/extension/root для доступа к ней.

Проблема заключается в том, что как временное расширение у него всегда есть другой UUID, который не сохраняется между переустановками, поэтому нет способа сказать web-ext открыть страницу расширения через -u при использовании значений по умолчанию. .

Здесь появляется эта полезная документация . Здесь упоминается опция extensions.webextensions.keepUuidOnUninstall в about:config, которая именно это и делает. Таким образом, необходимо создать профиль с этой опцией true и использовать с опцией web-ext -p.

Следующая проблема, с которой я столкнулся, заключалась в том, что страница молча не открывалась. Судя по всему, Firefox пытался открыть страницу до того, как расширение было установлено. Но у web-ext есть опция --pre-install, которая делает расширение (и его страницы) доступным при запуске, поэтому, когда оно включено, страница действительно открывается. Предостережение 1 заключается в том, что для использования --pre-install требуется, чтобы расширение имело ID (это не упомянутый UUID, сгенерированный Firefox), которое должно быть установлено в manifest.json. Предупреждение 2, --pre-install отключает автоматическую перезагрузку расширения при изменении файла.

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

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

  2. Перейдите к установке и сохранению флага extensions.webextensions.keepUuidOnUninstall about: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 с временной установкой вашего расширения и открывает нужную страницу.

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

...