Electron: Безголовая версия для тестирования

Созданный на 9 апр. 2014  ·  82Комментарии  ·  Источник: electron/electron

@zcbenz, сколько работы, по вашему мнению, потребовало бы создания безголовой версии атомной оболочки, которую можно было бы использовать в качестве замены phantomjs ?

phantomjs все больше и больше отстает от того, что делают современные веб-браузеры, и было бы здорово иметь что-то более современное, чтобы использовать его для автономного тестирования.

enhancement

Самый полезный комментарий

Что касается NightmareJS: в настоящее время мы работаем над версией Nightmare, построенной на безголовом Chrome, даже способной работать в бессерверных средах, таких как AWS Lambda. Мы скоро откроем его исходный код @graphcool. 🚀

Все 82 Комментарий

Используя скрытое окно браузера, атом-оболочка может фактически делать то, что делает phantomjs, пример на домашней странице phantomjs может быть переведен на атом-оболочку:

BrowserWindow = require('browser-window');

console.log('Loading a web page');
var page = new BrowserWindow({show: false});
var url = 'http://www.phantomjs.org/';
page.on('loading-state-changed', (event, isLoading) {
  if (!isLoading)
    //Page is loaded!
    require('app').exit();
});
page.loadUrl(url);

Конечно, нам может потребоваться добавить еще несколько API для целей автоматизации тестирования.

Единственная проблема заключается в том, что вместо рисования в виртуальный буфер, atom-shell фактически рисует страницу в реальном окне, для этого потребуется графическая среда, в Window и OS X это не имеет значения, однако в Linux мы должны использовать xvfb предоставить X-сервер для атомной оболочки. Это разработано в API содержимого Chromium, поэтому мы не можем ничего сделать, чтобы удалить зависимость графической среды.

В последнее время я добился успеха (используя Xvfb на сервере Ubuntu). Мой вариант использования - создание скриншотов шаблонных страниц. Фактически, я обнаружил, что атомная оболочка через Xvfb на сервере (большой m3) имеет лучшую производительность, чем на моем локальном Macbook Pro. Это заставило меня захотеть заставить атомную оболочку работать через Xvfb и в osx.

Поскольку osx поставляется с Xvfb, эта часть проста. Могу ли я заставить атом-оболочку использовать дисплей Xvfb в osx? Использование стандартной переменной DISPLAY env, как в Linux, не работает. Возможно, libchromiumcontent не знает, как использовать X11 при работе в Дарвине?

Xvfb работает только для приложений, написанных для среды X11, в атомной оболочке OS X для отображения используется какао, что, как я считаю, не может работать с Xvfb.

Да, вроде бы сложил это вместе. Возможно, это не совсем способ компиляции из исходников для X11?

@zcbenz в настоящее время невозможно создать BrowserWindow который больше текущего разрешения в OS X, даже если вы используете new BrowserWindow({show: false});

@FWeinb, можете ли вы открыть отдельный билет для вышеуказанного?

Создано # 475

Я закрываю это, потому что нет возможности нарисовать страницу без создания собственного виджета в Chromium, и я не думаю, что они когда-либо позволят это.

Для автоматических тестов мы поддерживаем Selenium.

Проект CEF поддерживает визуализацию вне экрана , поэтому вы можете рисовать экран в буфере, а не в окне. Что касается X-сервера для Linux, кажется, есть способ обойтись без него, добавив цель под названием Ozone (см. Обсуждение здесь ).

@etiktin Спасибо за информацию! Я открываю это снова, поскольку уже существует реализация того, как это сделать.

Мы действительно могли бы использовать для этого поддержку. Недавно мы заменили Phantom на Electron в Nightmare, и пока он нам нравится, но он не работает из коробки в Linux.

Вот что нам нужно сделать прямо сейчас, чтобы он заработал: https://github.com/segmentio/nightmare/issues/224#issuecomment -141575361

Мне поручили автоматизировать поведение пользователей для одного из наших веб-приложений, которое будет преобразовано в автономное настольное приложение Electron. Прежде чем наша компания решила сделать этот шаг, мы создали объекты страницы с помощью веб-драйвера Chrome и взаимодействовали с веб-приложением, вызывая кнопки / раскрывающиеся списки / текстовые поля с помощью селекторов CSS. Есть ли способ сделать это с помощью веб-приложения, заключенного в оболочку Electron? Компания планирует использовать параметры строки меню для вызова определенных функций, и я безуспешно пытался перейти к параметрам панели меню по умолчанию, таким как File / Edit / Help, с помощью драйвера JavaScript. Есть ли какие-нибудь примеры того, как это сделать?

https://github.com/segmentio/nightmare/issues/224#issuecomment -141575361 кажется, что фрагмент

Кто-нибудь получал безголовое тестирование, работающее на SuSE? Конкретно SLES?

@fritx То же, что и для SlimerJS, но это НЕ безголовый режим.

@fritx , это то, что говорил @zcbenz , у вас должен быть запущен Xvfb. И CEF3, и Chromium Content Shell в настоящее время зависят от Xlib. Но с завершением Ozone: https://www.chromium.org/developers/design-documents/ozone
вы сможете обеспечить любой ввод-вывод на низком уровне.

Судя по всему, в самом Chromium есть основная ошибка: https://code.google.com/p/chromium/issues/detail?id=546953

Это интересно:

Дата: 02 декабря, среда, 15:35:21 2015 г.

[headless] Первоначальный скелет обезглавленного / общедоступного /

Создайте схему будущего Headless API.

ChromeDriver работает с электроном?

Бинарный файл без заголовка, который не требует xvfb, откроет новые среды, такие как AWS Lambda - зарегистрируйтесь!

@Vanuan Вы слышали о Nightmare ? Это может помочь вам, если от ChromeDriver вам ничего особо не нужно.

Есть ли у него драйвер Capybara / Selenium?

+1

Я немного запутался. Есть ли безголовый режим? Можем ли мы эффективно сделать это с помощью BrowserWindow ({show: false})? Это было бы очень полезно для меня, я пытаюсь заставить это работать, чтобы мы могли создавать серверные веб-компоненты: https://github.com/scramjs/scram-markup-engine

Думаю, я ответил на свой вопрос, оглядываясь по сторонам. Electron изначально не поддерживает сложный безголовый режим. Nightmare, похоже, допускает что-то подобное, но вам все равно нужно выполнить некоторую настройку, чтобы заставить его работать в определенных системах без графической среды. Electron также может это сделать, если вы используете BrowserWindow ({show: false}), но вы должны использовать xvfb для предоставления графической среды в безголовых системах Linux (что на самом деле не так уж и плохо). Поправьте меня, если я ошибаюсь, и +1 к этой функции.

С новым проектом безголового хрома [1] возможно ли сделать электрон безголовым без использования xvfb?

Я считаю, что текущее ограничение было связано с libchromium? Ребята из хрома исправили это?

1: https://chromium.googlesource.com/chromium/src/+/master/headless/README.md

Есть связанный форум: https://groups.google.com/a/chromium.org/forum/#!forum/headless -dev

Есть ли в этом прогресс? Это было бы действительно полезно для тестирования

segmentio / nightmare идеально подходит для этого. Просто:

const nightmare = Nightmare({
  show: true
});

@amilajack Для простых случаев, таких как запуск простых модульных тестов Mocha без головы, Nightmare можно

@isiahmeadows @mcolyer сказал, что ему нужна версия атомной оболочки без головы, которую можно было бы использовать в качестве замены ». Electron - это то же самое, что и с дополнительными функциями.

Да, но зачем вам сахар в том, чем вы не пользуетесь? (Я имел в виду весь сахар - теоретически вы могли бы полностью реализовать Electron, используя только ванильные привязки Node + OpenGL).

Наиболее распространенный вариант использования безголовых браузеров - это то, для чего уже существуют сам Chromium не станет libchromiumcontent .

Headless теперь в Chrome 59: https://www.chromestatus.com/features/5678767817097216

@sindresorhus @zcbenz Будет ли это изменение в Chromium иметь какое-либо значение здесь?

Электрон уже прекрасен, а безголовый режим сделал бы его еще лучше!

(Также было бы полезно для Nightmare , который основан на Electron)

Мне удалось заставить Xvfb работать над лямбда, что может быть полезно для тестирования на основе лямбда ... https://github.com/nisaacson/aws-lambda-xvfb

Есть какие-нибудь новости о том, когда Electron поддержит True Headless? Можем ли мы рассчитывать на то, что это произойдет? Не могу дождаться, чтобы сбросить xvfb.

@lastmjs Удалось ли вам запустить Electron на AWS Lambda на основе xvfb?

Спасибо за комментарий @MrSaints. Я действительно отлаживаю это репо уже несколько часов, так как мне не удается запустить nightmare . Работает ли это для вас?

@zcbenz FYI chrome 59 получит поддержку безголового режима https://www.chromestatus.com/features/5678767817097216

@schickling см. https://github.com/JohannesHoppe/nightmare-html2pdf - кошмар в докере, с Xvfb

Спасибо @JohannesHoppe , у меня Nightmare работает в Docker с Xvfb, но вместо этого я хочу запустить его на AWS Lambda.

Я открыл проблему для замены Electron на Chrome без головы в Nightmare: https://github.com/segmentio/nightmare/issues/1092

@schickling попробуйте это: https://github.com/dimkir/nightmare-lambda-tutorial

Приносим извинения, если на этот вопрос есть ответ в другом месте, но я не могу найти конкретного ответа. В своем комментарии с высокой оценкой +1 @sandstrom указал, что headless теперь доступен в Chrome 59.

Включена ли поддержка флага Chrome без головы в план разработки Electron? Похоже, что это потенциально огромная «победа» для Electron, поскольку это делает возможным истинное безголовое использование.

Я согласен с @rinogo. Наличие безголового варианта для электрона будет очень полезно для запуска тестов в системах ci и на dev box без необходимости виртуального дисплея и захвата машины. Мне также интересно узнать дорожную карту для электроники и, возможно, внести свой вклад.

Xvfb раздражает, было бы здорово, если бы Electron поддерживал настоящую обезглавливание!

xvfb-может тем временем

Вышла новая статья от Google: https://developers.google.com/web/updates/2017/04/headless-chrome

Скоро будет.

Похоже, Chrome 59 сейчас находится на стабильном канале. Каковы следующие шаги для поддержки Headless в Electron?

Пожалуйста, сделайте это реальностью - сделав это и позволив NightmareJS запускать безголовый Electron, вы в конечном итоге устраните примерно треть всех случаев использования Selenium. *

* Быть гиперболичным, но не совсем

@aendrew Я считаю, что NightmareJS может быть _rewritten_, чтобы использовать / включить вместо него бэкэнд CDP, вместо того, чтобы возиться с Electron (с философией: _страивать кроссплатформенные настольные приложения _) без головы. См .: https://github.com/cyrus-and/chrome-remote-interface

@MrSaints Я не завидую сопровождающим; они _just_ закончили конвертировать его из PhantomJS, как год назад. Хотя, во всяком случае, возможно, это хорошая мотивация сделать подключаемый уровень браузера Nightmare ...

Тем не менее, точка зрения о том, что Electron ориентирована на настольные компьютеры, хорошо известна.

@aendrew @MrSaints Рискуя продемонстрировать свое невежество ... Насколько сложно реализовать это изменение (поддерживающее флаг headless )? Я не уверен, как Electron взаимодействует с Chromium / расширяет его, но мне кажется, что шаги для этого:

  1. Обновите Electron's Chromium до версии 59+.
  2. Укажите флаг / параметр конфигурации headless командной строки.
  3. Другие вещи я, очевидно, не беру в расчет. :)

Я предполагаю, что я говорю, что с headless доступным в Chromium, реализация безголового режима (например, для NightmareJS) кажется относительно простой. Конечно, универсальной версии Electron может потребоваться некоторое время, чтобы сгладить определенные варианты использования. Однако создание сборки, разработанной для чего-то вроде NightmareJS, должно быть довольно простым делом, верно?

Если бы мне срочно потребовалось улучшить скорость, я бы сразу же взялся за дело. Однако мы все еще работаем с NightmareJS как есть, так что пока все в порядке.

Тем не менее, спасибо разработчикам всех этих проектов за их вклад и упорный труд! :)

Что касается NightmareJS: в настоящее время мы работаем над версией Nightmare, построенной на безголовом Chrome, даже способной работать в бессерверных средах, таких как AWS Lambda. Мы скоро откроем его исходный код @graphcool. 🚀

@schickling , это будет

При использовании --headless в chrome следует помнить, что он отключает поддержку всех плагинов. Итак, если вам нужна flash (что можно сделать с электроном / кошмаром) или программа просмотра PDF и т. Д., --headless не для вас, и вы захотите использовать xvfb.

Мне не терпится запустить Electron в AWS Lambda ... Я думаю

Аминь @lastmjs Аминь

Что насчет этого решения?
https://github.com/dimkir/nightmare-lambda-tutorial

Хотя еще не пробовал

@xplodedthemes использует предварительно скомпилированную версию xvfb

Бесстыдный плагин: https://github.com/joelgriffith/navalia. Он был построен на основе Chrome без головы для функциональных тестов и многого другого. Включает в себя некоторые приятные функции, такие как распараллеливание нескольких задач, интерфейс GraphQL и многое другое.

Я приветствую любые PR / вопросы / отзывы!

Привет всем! Извините, что заставил вас всех ждать ... 💤

Мы только что создали Chromeless с открытым исходным

Вы можете попробовать это здесь: https://chromeless.netlify.com

Chromeless только что заменил Nightmare? Chromeless предстоит пройти долгий путь, прежде чем он догонит Nightmare.

Мы используем его как замену Nightmare, так как нам нужна возможность запускать несколько тестов одновременно.

Вопрос (может быть, не подходит для этой темы): вы думаете о том, чтобы функциональность pdf работала? Если так, это может сэкономить нам ТОННУ головной боли (и денег).

Вау, это невероятно. Молодцы ребята!

@zcbenz, похоже, для этого появились решения: можно ли закрыть?

Умм, эта проблема все еще очень актуальна. Все «решения» включают полный отказ от Nightmare.

Полностью согласен с @keithkml - решения, хотя и с благими намерениями (спасибо!), Были больше предыдущем комментарии ? (И снова прошу простить меня за незнание! :))

Я все еще не понимаю смысла в ответах. Может ли кто-нибудь пояснить, есть ли у нас НАТИВНЫЙ безголовый режим для электронного приложения для работы в CI или нет?

@hitliubo Chrome имеет флаг --headless , но он работает только в том случае, если вы не используете плагины, такие как Flash или программа для чтения PDF. Если вы, то ответ утвердительный нет на данный момент. Если это не так , вы можете передать этот флаг (вместе с --disable-gpu если необходимо - они исправили это отсутствующее значение в более новых версиях Chrome IIRC) при создании контекста браузера и посмотреть, работает ли это. (Обратите внимание, что если вы используете что-то вроде Nightmare и попадаете во вторую категорию, вам действительно следует указать проблему в соответствующем репозитории этого проекта, если его еще нет.)

Даже если вы не можете использовать --headless (или если это не работает), есть варианты:

  • Windows: если вы не используете что-то непонятное, у вас всегда будет контекст окна для рендеринга. Windows Server 2016 отказался от поддержки графического интерфейса по умолчанию, но он по- прежнему поддерживает создание окон графического интерфейса, а AFAICT должен поддерживать минимум для тестирования Selenium.
  • macOS: у вас всегда будет графический интерфейс (а значит, и контекст окна для рендеринга). Apple не предоставляет версию, которая бы этого не делала.
  • Linux: xvfb - это безголовый X-сервер, доступный практически для всех распространенных дистрибутивов Linux (и здесь я имею в виду «общий» довольно вольно). Если вы используете Travis, у них есть инструкции, как добавить его в свой проект .

@isiahmeadows Спасибо за информацию. В настоящее время у меня есть веб-приложение, работающее в браузере, и с помощью chrome / firefox я всегда могу добавить --headless для безголового тестирования. Недавно мы хотели преобразовать его в приложение Electron, и я попытался использовать --headless, который не работает в моей macOS. Теперь я знаю твою причину. Спасибо!

На самом деле мне не нравится решение xvfb, так как оно не является родным. Однако, учитывая, что мы не поддерживаем нативную версию без головы, я думаю, мне нужно попробовать.

К вашему сведению - теперь я использую капибару для тестирования.

Это было бы здорово (у)

Есть какие-нибудь обновления по этому поводу?

Я был перенаправлен сюда из сообщения о рендеринге непосредственно в буфер кадра Linux, но, похоже, он сосредоточен на автономном тестировании. Достигнут ли какой-либо прогресс при рендеринге непосредственно в _real_ буфер кадра?

@quinn Я почти уверен, что вам понадобится X-сервер, хотя вы можете запустить X11 (Xorg) в фрейм-буфере, если хотите (см. https://www.x.org/releases/current/ doc / man / man4 / fbdev.4.xhtml).

_Редактировать:_

На самом деле, если посмотреть на это немного подробнее, это также может быть достигнуто с помощью озона. (https://github.com/jakwu/ozone-fb)

Добавление озона также обеспечит поддержку Wayland, еще одной функции, которой не хватает электрону, так как с тех пор большинство дистрибутивов Linux перешли на нее.

Судя по описанию ozone-fb и комментариям @isiahmeadows , кажется, что ускорение графического процессора не работает при рендеринге в буфер кадра.

@trusktr Это комментарий двухлетней давности. Я бы рекомендовал не воспринимать мой комментарий как авторитетный, поскольку он мог измениться (с тех пор я не проверял).

Я добавляю headless lib в электрон и вызываю HeadlessShellMain。
запустить:

e run  --headless --enable-logging --v=2 --disable-gpu --screenshot  http://192.168.50.206

тогда он показывает:

Running "/home/a/dev0/e9.2.1/src/out/ReleaseSym0/electron --headless --enable-logging --v=2 --disable-gpu --screenshot http://192.168.50.206:8889"
[1028/172650.483932:INFO:cpu_info.cc(53)] Available number of cores: 4
[1028/172650.484061:VERBOSE1:zygote_main_linux.cc(217)] ZygoteMain: initializing 0 fork delegates
[1028/172650.484400:INFO:cpu_info.cc(53)] Available number of cores: 4
[1028/172650.484465:VERBOSE1:zygote_main_linux.cc(217)] ZygoteMain: initializing 0 fork delegates
[1028/172650.493514:VERBOSE1:webrtc_internals.cc(119)] Could not get the download directory.
[1028/172650.494623:VERBOSE1:proxy_config_service_linux.cc(500)] All gsettings tests OK. Will get proxy config from gsettings.
[1028/172650.494764:VERBOSE1:proxy_config_service_linux.cc(1261)] Obtained proxy settings from annotation hash code 11258689
[1028/172650.494873:VERBOSE1:proxy_config_service_linux.cc(500)] All gsettings tests OK. Will get proxy config from gsettings.
[1028/172650.494919:VERBOSE1:proxy_config_service_linux.cc(1261)] Obtained proxy settings from annotation hash code 11258689
[1028/172650.504033:VERBOSE1:sandbox_linux.cc(69)] Activated seccomp-bpf sandbox for process type: renderer.
[1028/172650.505596:VERBOSE2:thread_state.cc(470)] [state:0x556bd75583a0] ScheduleGCIfNeeded
[1028/172650.511468:VERBOSE2:thread_state.cc(470)] [state:0x556bd75583a0] ScheduleGCIfNeeded
[1028/172650.524408:VERBOSE2:thread_state.cc(470)] [state:0x556bd75583a0] ScheduleGCIfNeeded
[1028/172650.524916:VERBOSE2:thread_state.cc(470)] [state:0x556bd75583a0] ScheduleGCIfNeeded
[1028/172650.525173:VERBOSE2:thread_state.cc(470)] [state:0x556bd75583a0] ScheduleGCIfNeeded
[1028/172650.525963:VERBOSE1:sandbox_linux.cc(69)] Activated seccomp-bpf sandbox for process type: gpu-process.
[1028/172650.526373:VERBOSE2:thread_state.cc(470)] [state:0x556bd75583a0] ScheduleGCIfNeeded
[1028/172650.528735:VERBOSE2:thread_state.cc(470)] [state:0x556bd75583a0] ScheduleGCIfNeeded
[1028/172650.531839:VERBOSE2:thread_state.cc(470)] [state:0x556bd75583a0] ScheduleGCIfNeeded
[1028/172650.535051:ERROR:paint_controller.cc(646)] PaintController::FinishCycle() completed
[1028/172650.550076:VERBOSE1:configured_proxy_resolution_service.cc(873)] PAC support disabled because there is no system implementation
[1028/172650.550312:VERBOSE1:configured_proxy_resolution_service.cc(873)] PAC support disabled because there is no system implementation
[1028/172650.550923:VERBOSE1:network_delegate.cc(32)] NetworkDelegate::NotifyBeforeURLRequest: http://192.168.50.206:8889/
[1028/172650.575829:VERBOSE1:url_loader.cc(418)] To buffer: http://192.168.50.206:8889/
[1028/172650.580122:VERBOSE1:v8_context_snapshot.cc(153)] A context is created from snapshot for main world
[1028/172650.587399:VERBOSE1:v8_context_snapshot.cc(153)] A context is created from snapshot for main world
[1028/172650.595294:ERROR:paint_controller.cc(646)] PaintController::FinishCycle() completed
[1028/172650.612295:ERROR:paint_controller.cc(646)] PaintController::FinishCycle() completed
[1028/172650.676553:INFO:headless_shell.cc(620)] Written to file screenshot.png.

Означает ли это, что был реализован Headless?

@ bigben0123 это интересно и очень увлекательно! Итак, вы собрали свою собственную версию электрона, включающую безголовую оболочку из хрома?

Вы тестировали среду без X в Linux, чтобы убедиться, что она работает?

Когда Chromium запускается в режиме headless, подпроцессы рендеринга запускаются с флагом pass through —headless (вы можете видеть, что вы используете 'ps args' из памяти). Это происходит с тобой?

(Как ни странно с электроном в настоящее время, если вы попытаетесь запустить его с —headless, флаг передается не процессам рендеринга, а процессу графического процессора.)

@ bigben0123 это интересно и очень увлекательно! Итак, вы собрали свою собственную версию электрона, включающую безголовую оболочку из хрома?

Вы тестировали среду без X в Linux, чтобы убедиться, что она работает?

Когда Chromium запускается в режиме headless, подпроцессы рендеринга запускаются с флагом pass through —headless (вы можете видеть, что вы используете 'ps args' из памяти). Это происходит с тобой?

(Как ни странно с электроном в настоящее время, если вы попытаетесь запустить его с —headless, флаг передается не процессам рендеринга, а процессу графического процессора.)

Да, я запускаю его на ubuntu, который просто запускается в режиме пользовательских команд.
Безголовый был пройден:

electron --headless --enable-logging --v=2 --disable-gpu -print-to-pdf http://www.google.com
electron --type=zygote --no-zygote-sandbox --enable-logging --headless --v=2 --headless
electron --type=zygote --enable-logging --headless --v=2 --headless
electron --type=zygote --enable-logging --headless --v=2 --headless
electron --type=gpu-process --field-trial-handle=15536072708541054845,15522400966085077738,131072 --enable-logging --headless --v=2 --headless --gpu-preferences=MAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAQAAAAAAAAAAAAAAAAAAAACAAAAAAAAAA= --use-gl=swiftshader-webgl --override-use-software-gl-for-tests --enable-logging --v=2 --shared-files
electron --type=utility --field-trial-handle=15536072708541054845,15522400966085077738,131072 --lang=en-US --service-sandbox-type=network --enable-logging --use-gl=swiftshader-webgl --v=2 --headless --enable-logging --v=2 --shared-files=v8_snapshot_data:100
electron --type=renderer --allow-pre-commit-input --enable-logging --v=2 --field-trial-handle=15536072708541054845,15522400966085077738,131072 --disable-databases --disable-gpu-compositing --lang=en-US --headless --lang=en-US --num-raster-threads=2 --enable-main-frame-before-activation --renderer-client-id=4 --shared-files=v8_snapshot_data:100
electron --type=broker

@ bigben0123 у вас где-то есть изменения? Даже если он по какой-то причине не попадает в ядро ​​электрона, я хотел бы иметь возможность его использовать.

Этот коммит только объединяет chrome headless lib с электроном, и вы можете использовать его так же, как это делает хром.
https://github.com/bigben0123/electron/commit/b6cad8993d68d39f1732aa6ed5ece0135b9ae0c8

Насколько мне известно, chrome и headless имеют разную реализацию слоя контента. Как и в случае с двумя оболочками браузера, если вы запускаете без головы, это не имеет ничего общего с хромом, только если вы начинаете с «chrome --headless».

Одна из безголовых целей состоит в том, чтобы «свести к минимуму количество инвазивных или специфичных для безголовых изменений изменений (например, #ifdefs) в кодовой базе Chromium».

Поэтому сложно реализовать, что электрон без головы удаляет xvfb. Мы можем просто позволить электронной поддержке без головы, но вы не можете запускать электронные приложения.

Мы можем использовать реализацию без головы, чтобы заменить электрон, чтобы получить новую ветку без головы.

убрать зависимость от electronic / BUILD.gn:

      "//ui/events/devices/x11",
      "//ui/events/platform/x11",
      "//ui/gtk"  #all of gkt related

    if (use_x11) {
      deps += [
        "//ui/gfx/x",
        "//ui/gtk:x",
      ]
    }
    configs += [ ":gio_unix" ]
    configs += [ "//build/config/linux:x11" ]

заменить:
"// интерфейс / дисплей",
"// пользовательский интерфейс / события / устройства",

Была ли эта страница полезной?
0 / 5 - 0 рейтинги