- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当 Cypress 测试在Docker容器中运行时,我试图以交互模式查看 Cypress 。本文介绍了如何在Mac-https://www.cypress.io/blog/2019/05/02/run-cypress-with-a-single-docker-command/#Interactive-mode上执行此操作。我无法在新的Linux Mint OS安装上使其正常工作。
在这篇文章之后,我设置了-
$ IP=172.17.0.1
$ xhost + $IP
$ export DISPLAY=172.17.0.1:0
这是我在Docker默认网桥网络上的本地主机上的IP地址。
docker container run -it \
-v $PWD:/e2e \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-w /e2e \
-e DISPLAY \
--entrypoint cypress \
cypress/included:3.8.1 open --project .
唯一的区别是最新镜像和“docker容器运行”,而不是已弃用的“docker run ...”
(Cypress:16): Gtk-WARNING **: cannot open display: 172.17.0.1:0
Debugging tip: if Cypress shows an error Gtk-WARNING **: cannot open display:... make sure X11 server allows connections over the network from the Docker container. Run xhost command in the terminal to see if it has the IP address you have added previous with xhost + $IP.
$ xhost
它给 -
INET:ross-Aspire-TC-780
SI:localuser:ross
最佳答案
tl;博士
docker run -it --rm \
--network host \
-v ~/.Xauthority:/root/.Xauthority:ro \
-e DISPLAY \
-v $PWD:/e2e \
-w /e2e \
--entrypoint '' \
cypress/included \
npx cypress open
docker
容器中运行任何GUI应用程序,您必须了解X Window System的工作方式。 X使用客户端-服务器模型。 X服务器程序在具有图形显示的计算机上运行,并与各种客户端程序(X客户端)进行通信。 X服务器充当用户和客户端程序的中间人,接受来自客户端程序的图形输出请求并将其显示给用户(显示器),并接收用户输入(键盘,鼠标)并将其传输到客户程序。
host
网络(
--network host
)。在这种情况下,容器共享主机的网络 namespace 。 IE。容器的网络堆栈未与Docker主机隔离。特别是,容器可以连接到主机上运行的任何服务器。
~/.Xauthority
)共享
--volume ~/.Xauthority:/root/.Xauthority:ro
文件。
DISPLAY
variable。由于容器将可以访问主机的网络 namespace ,因此您可以简单地将
DISPLAY
变量从主机传递到容器(
--env DISPLAY
)。
cypress
(
--volume $PWD:/e2e
+
--workdir /e2e
)。
cypress/included
将入口点设置为
cypress run
,因此要打开
cypress
,您必须重置入口点(
--entrypoint ''
),并使用
npx
(
npx cypress open
),否则它将找不到您的项目文件。通常,您运行位于
cypress
的
./node_modules/.bin/cypress
,但是图像中的
cypress
解析为
/usr/local/bin/cypress
。
npx
使它从
cypress
目录运行
./node_modules
。
cypress run
则不需要,因为后者是当前目录的
defaults。由于一个原因或另一个
cypress open
doesn't do that(如果已全局安装)。
docker run -it --rm \
--network host \
-v ~/.Xauthority:/root/.Xauthority:ro \
-e DISPLAY \
-v $PWD:/e2e \
-w /e2e \
--entrypoint '' \
cypress/included \
npx cypress open
cypress
(或更确切地说是
chrome
)可能偶尔会崩溃。发生这种情况是因为默认情况下
docker
为共享内存(
/dev/shm
)分配了64 MB。解决此问题的一种方法是授予容器访问主机共享内存的权限。换句话说,取消隔离IPC namespace 。这可以通过传递
--ipc=host
来实现。那是
not something specific to cypress
。崩溃的基本上是
chrome
。
关于linux - 在Linux上的Docker中查看交互式Cypress测试运行器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59514234/
问题:Cypress npm 父项目能否导入/添加/运行其依赖项 Cypress npm 项目的 Cypress 测试? 问题的答案是这个链接有效,将一个整体的 Cypress 测试包分解成多个 Cy
我编写了端到端测试。如果我在打开柏树的情况下启动它们,它们就会一直通过。但是如果我使用这个命令:cypress run --browser chrome --headed --no-exit --sp
我想在每次测试之间传递/共享数据。在 Cypress 中实现它的最佳方法是什么? 例如: it('test 1'), () => { cy.wrap('one').as('a') con
柏树 clears all cookies和 local storage每次考试前。它是否也清除浏览器的文件缓存? 最佳答案 编辑: Cypress 在浏览器启动前自动清除浏览器缓存 Version
我正在尝试对 cypress 执行条件语句,以检查标题中的登录链接是登录还是帐户或类,然后单击它。 if 条件不起作用。 cy.get('header').then((header) => { if
我们正在尝试编写一个 cypress 测试来检查从页面发出的 xhr 请求之一。但是,我们发出的请求没有显示在命令日志中。然而,在运行 cypress open 后,它们确实出现在 bash 控制台中
我正在评估 Cypress(版本 3.4.1),并且在从 cypress 工具运行相同的测试和从终端运行它们之间遇到不一致,我在两种情况下都使用相同的浏览器(Electron 61)。有人经历过吗?
我有一个表单,允许用户输入日期范围,输出结果将仅来自该特定日期。 我可以使用 .type() 函数将日期输入到表单中。但是,我不确定如何检查结果是否在指定的范围内。 例如,如果输入的日期是 ('17/
我正在使用 Cypress ,并且想对XHR响应进行部分 stub 。我想捕获原始JSON,并对其进行部分编辑。 例如:cy.route('GET', `**/subjects`, 'fixture:
您好,我正在尝试通过 Jenkins 运行 cypress 测试,并且正在从我的本地 m/c 获取测试,而不是从 github 获取测试,并且正在执行 Windows 批处理命令"./node_mod
tl;dr:cypress 变量是否可以存储在某个可访问的位置(如 this 或类似的东西),或者如果我想访问所有这些变量,我是否必须进入无休止的回调循环一次使用? 长话短说: 我试图用 cypres
我有一个场景,在选择特定产品后,金额会反射(reflect)在文本字段中,当我们单击复选框时,金额会自动翻倍。这是我的代码: cy.getBySel('textfield').click().then
我正在使用 Cypress 测试数据表单,但卡在了一个在页面上显示警告的步骤上。 这是测试,但它不起作用。 describe('Alert is displayed with warning text
我有一个表格,我正在测试列标题是否正确。问题是 .contains() 只返回一个元素。 我可以为每个实例重复代码,但它看起来很冗长。感觉我一定在 Cypress 命令中遗漏了一些可以做得更好的东西。
我们有一个应用程序会定期轮询服务器,直到任务完成。我们触发了一个全局事件,以便 Cypress 可以捕捉并找出任务是否完成,但我们在使用 document.addEventListener 时遇到了问
是否可以告诉 Cypress 使用某种语言(例如德语)启动 Chrome,因为我有一个应用程序需要用多种语言进行测试。我在文档中的任何地方都看不到详细信息,这表明目前这是不可能的。 我试过添加 --l
我正在使用 Cypress作为我的 API 和 UI 测试自动化框架。我已经编写了多个正在运行和通过的 API 测试,但它们只是验证 response.status返回 200 .我想比较来自 GET
在运行 Cypress 脚本时,有些情况会失败。我只想运行那些失败的案例来再次运行。 如何在 Cypress 中仅运行失败的测试用例? 最佳答案 只要它没有直接集成到 Cypess 中,你就可以使用类
如何使用 Cypress 清除(取消选择)多选输入中的所有选项? 这里的文档似乎没有涵盖这种情况:https://docs.cypress.io/api/commands/select.html#Sy
我们正在使用 Cypress 使用 Create React App 测试应用程序构建,我们的 CRA 应用程序正在 .env – NODE_PATH=src/ – 中设置自定义导入路径,以便我们可以
我是一名优秀的程序员,十分优秀!