Интерактивный графический интерфейс Cypress на хосте, подключение к приложению Docker

🕳 Фон

  • В MaMpf мы развертываем полностью докеризованное веб-приложение с помощью docker compose. Для автоматизированных тестов внешнего интерфейса мы хотели бы установить Cypress. Локально мы разрабатываем внутри подсистемы Windows для Linux (WSL2, Ubuntu).
  • Команда cypress open предлагает приятный интерактивный графический интерфейс, который позволяет в реальном времени просмотреть, что происходит в тестах, а также множество других полезных функций, которые мы не хотим пропустить.

⛳ Цель

  • Данный Cypress устанавливается как пакет npm на хост-компьютере (Windows). Есть ли способ запустить графический интерфейс Cypress локально на хост-компьютере, но позволить соответствующим тестам запускаться внутри выделенного контейнера Docker Cypress? Обязательно, чтобы сами тесты кипариса запускались внутри контейнера Docker, поскольку именно здесь настраиваются все остальные службы, например. база данных и т. д. (мы используем кипарис-на-рельсах)
  • Обратите внимание, что этот вопрос отличается от того, что вы найдете в руководствах, в которых обсуждается, как запускать Cypress внутри контейнера Docker и пересылать сигналы графического интерфейса на сервер X11. Например. для этого есть руководство на сайте Cypress , еще одно в этом посте в блоге . По этому поводу даже есть вопрос StackOverflow.

💠 Мотивация такого подхода

  • Установка сервера X11 в Windows (например, VcXsrv) не так уж сложна, но все же является дополнительным шагом для новых разработчиков.
  • Перенаправление сигналов графического интерфейса изнутри контейнера Docker кажется мне хрупким.
  • Это также не дает полного нативного опыта, например. наличие «настоящих» окон приложений Windows с заголовком и обычным внешним видом. X410 может предложить это, но мы не в состоянии за это заплатить.

Обратите внимание, что я только что открыл эту тему в репозитории cypress-docker-imagesздесь.

Splines 18.06.2024 23:28
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
1
66
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я задал этот вопрос непосредственно команде Cypress, и Майк дал отличный ответ здесь.

Оказывается, что WSL теперь поставляется со всеми батареями, включенными в комплект поставки, для пересылки приложений Linux GUI в Windows, то есть установка сервера X11 вручную больше не требуется. Этот проект называется WSLg. Если вы уже используете WSL, просто нажмите wsl --update, и вы автоматически получите новую версию.

При этом настройка Docker Compose из здесь работает безупречно. Хотя первоначальный вопрос заключался в том, чтобы интерактивный графический интерфейс Cypress запускался напрямую в Windows, а затем каким-то образом позволял ему подключаться к контейнеру Docker, чтобы он выполнял там тесты, это решение (где графический интерфейс запускается внутри контейнера Docker, но пересылается в Windows) Сейчас отлично работает и не требует каких-либо дополнительных настроек.

Вот минимальная настройка компоновки Docker:

# Instructions for interactive mode
# https://www.cypress.io/blog/2019/05/02/run-cypress-with-a-single-docker-command#Interactive-mode
services:
  cypress:
    # https://on.cypress.io/command-line#cypress-open
    entrypoint: cypress open --project ./your/folder/name/
    environment:
      # for X11/Wayland in WSLg
      - DISPLAY
    volumes:
      # for Cypress to communicate with the X11 server pass this socket file
      # in addition to any other mapped volumes
      - /tmp/.X11-unix:/tmp/.X11-unix

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