如何 运行 Cypress 在 Ubuntu 中使用主机浏览器在 vagrant guest 中测试 运行ner

How to run Cypress test runner in vagrant guest using host machine's browser in Ubuntu

我在 vagrant box 中有一个项目,我想 运行 使用 cypress 进行 e2e 测试。我能够 运行 来宾机器中的 cypress headless。但我喜欢它提供的 GUI 功能。我怎样才能 运行 Cypress 以便它可以使用主机的浏览器来 运行 测试? 我有 Ubuntu 20.04.

我想出了该怎么做,以防将来其他人需要这样做。

显然,要实现这一点,需要 X-forwarding。这意味着来宾必须将 GUI 显示转发给主机。

假设你已经正确安装了 cypress 并且可以 运行 它无头:yarn run cypress run(或者你 运行 它,npm 等)

1.您需要在主机上安装 X-Server。

  • 在 Linux 上,您已经拥有 X Server 运行ning
  • 在 Mac,在 Mac OSX 你可以安装 XQuartz

2。在您的 Vagrant 虚拟机上启用 X 转发

只需将此添加到您的 Vagrantfile

config.ssh.forward_x11 = true

3。在没有 vagrant ssh

的情况下 Ssh 进入盒子

我们需要使用 ssh 访问来宾,而不是正常的 vagrant ssh。这样做: 运行 vagrant ssh-config 在您目录中的主机上,带有 vagrant 文件

$ vagrant ssh-config
Host default
  HostName 127.0.0.1
  User ubuntu
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/xxxx/work/.vagrant/private_key
  IdentitiesOnly yes
  LogLevel FATAL
  ForwardX11 yes

由此我们获得了 ssh 所需的详细信息。 userHostNamePortIdentityFile.

现在我们可以从宿主机 ssh 进入客户端并 运行 cypress 测试 运行ner.

我们还需要添加 -X 标志,告诉 ssh 使用 X 转发。

假设我的项目 运行s 位于我的来宾计算机主目录中名为 project 的目录中... 运行 此命令来自主机,而您的盒子位于 运行宁.

ssh vagrant@127.0.0.1 -X -p 2222 -i /Users/xxxx/work/.vagrant/private_key -t "cd /home/vagrant/project; yarn run cypress open"

瞧!测试 运行ner 将 运行 在您的框中,GUI 将显示在您的主机上。

感谢Gabor and Martin

如果您使用 Linux 主机,您实际上只需要将主机上 /tmp/.X11-unix 的卷映射到来宾。

d.volumes = ["/tmp/.X11-unix:/tmp/.X11-unix"]

参考:https://github.com/ProxiBlue/vagrant_docker_cypress/blob/main/Vagrantfile#L38

完整示例位于此处:https://github.com/ProxiBlue/vagrant_docker_cypress 以及展示其工作原理的视频:https://www.youtube.com/watch?v=DDmNgtyE_kE