问题标签 [e2e]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
197 浏览

testing - 量角器 7 中带有异步等待的短堆栈跟踪

我正在尝试使用量角器和 jasmine 自动化一些测试,并且我正在使用 async/await 来解决这些承诺。

问题是,当确实发生错误时,堆栈跟踪太短了,因此,我似乎无法找到问题的根源。

我确实确保在配置文件中将 SELENIUM_PROMISE_MANAGER 设置为 FALSE。

我正在使用量角器 7 和节点 14.16.0

有谁知道如何解决这个问题?没有足够的细节

这是一个代码片段

});

这是“按钮”类的定义:

}

最后,这是堆栈跟踪

0 投票
0 回答
428 浏览

javascript - 使用 Puppeteer-jest for React 执行多个请求拦截

我正在为我的 React 应用程序的 e2e 测试而苦苦挣扎,为了进行上述测试,我正在使用 Puppeteer 和 Jest,使用 Jest 文档在此处提供的自定义配置。问题是我需要让所有套件在不使用任何后端的情况下运行,所以我需要拦截请求并模拟所有正常完成的响应。

问题是我不知道如何在短时间内或异步并行拦截多个,我一直在寻找互联网并使用了一段时间await page.removeAllListeners('request'),但这似乎取决于测试的接近程度执行它们,因此拦截未启动或弹出以下错误:Request is already handled!

这是我目前正在努力的测试:

这个想法是用户登录,进入我要测试的视图,打开一个过滤器,然后过滤显示在表格上的数据,确保结果的数量与表格分页上的结果一样。

另一方面,这个其他测试使用await page.removeAllListeners('request')但不一致,因为当我需要的不仅仅是我基本上同时完成的拦截时,我必须遗漏一些东西或完全以错误的方式做这件事。

所以基本上,在 puppeteer 上处理多个异步请求拦截的正确方法是什么?

0 投票
0 回答
160 浏览

cypress - BFF(前端后端)和 Stup 微服务的最佳策略是什么?

我的 UI 在 3008 运行,我的 BFF 在本地运行在 3002。

对于 UI,我使用 React Create App,对于 BFF,我使用 Nest.js。

我正在使用带有 Lernajs 的 monorepo 将两者放在同一个存储库中。我在我的 monorepo 中创建了另一个包,只是为了使用 Cypress。

现在我想在我的 BFF 和我的 UI 之间创建集成 e2e 测试,所以我想从我的 BFF 请求到微服务的 Stub 响应。(不是来自我的用户界面)。

问题是 Cypress Request 看不到我的 BFF 请求,因为它在另一个节点进程中。我也试过nock,同样的问题。

为了解决这个问题,我想过:

  1. 查看在同一节点进程中同时运行 Cypress 和 BFF 的方法。
  2. 创建一个“核心/主”应用程序,我将 在同一台服务器上为我的 BFF和我的 UI 提供服务。(与 cypress-real-world-app 一样)仅用于我的 cypress e2e 测试;
  3. 在操作系统级别做另一个模拟策略?...

对于第一个我尝试使用&&&bash 选项相同的npm run server & npm run cypress. 我也尝试过同时使用。对两者都不起作用。

我试图从我的赛普拉斯代码中导入我的 BFF dist,但我遇到了一个错误,我正试图弄清楚如何解决。但我想知道其他策略,即使它在未来有效。

有什么额外的想法吗?

0 投票
1 回答
274 浏览

installation - 黄瓜端到端测试运行后如何有效清理环境

我遇到的问题与 E2E 测试有关,它将一直运行以构建新的应用程序(甚至可能在 CircleCi 上每隔几个小时运行一次)。我有(并且将来会有更多)包含很多设置的功能(每个场景都需要相同的设置才能运行)。例如,在场景运行之前(功能中有很多)需要一些用户、内容、配置等。在场景运行之后,最好的做法可能是删除/删除所有用户、内容等(或至少在所有场景之后)已为该功能运行)。我正在努力理解什么是最佳实践。

如果我添加一个背景,那么它将在每个场景之前运行,但是我会从背景中删除所有这些数据(我可以在最后一个场景步骤中添加一个清理功能,但如果我错了,这似乎很糟糕,正确)。我可以添加将在每个场景之后清理的钩子,并继续为新功能添加更多钩子(可能使用场景标签来区分它们应该运行的场景)。

有一些选项,但感觉效率太低了……这些测试将在实时环境中运行(不是快速的集成或单元测试,而是 E2E)。很多时候,设置/背景将花费比一个场景更多的时间来运行,然后它会为每个微小的场景一遍又一遍地运行。例如,必须在后台运行一堆端点来创建用户、一些内容,并且在许多情况下(当我们还没有端点时)我将不得不编写一个通过 UI 的自动化旅程来添加一些东西或更改特定设置,然后以同样的方式添加结束删除所有内容,并通过 UI 将设置更改为功能运行之前的状态。感觉好慢,效率低。。。

我想到的唯一另一件事(但可能不适用于所有情况)。是创建一个巨大的钩子脚本,我将在整个套件运行之前添加所有必要的“东西”,在整个运行之后我清理整个堆栈/实例数据库(或重置为一些预设的数据库快照)以使其状态和整个套件运行之前一样。

请帮助我了解在这种情况下的最佳做法是什么

问候

0 投票
1 回答
156 浏览

javascript - 赛普拉斯:条件断言错误

如果出现,有没有办法不中止测试运行AssertionError

我的测试用例取决于 CSS 值,如果我编写如下条件,cypress则以AssertionError:

它也不会以这种方式工作,因为然后我得到另一个错误TypeError $dialog.should is not a function

0 投票
0 回答
22 浏览

react-native - React Native 中的 Appium setTimeout 端到端测试

我在 React Native 中使用以下代码进行超时

timeout设置为 5 分钟,在端到端测试中我想测试超时完成后应该执行的代码,我该如何在 Appium 中完成呢?我真的需要等待那 5 分钟吗?

0 投票
0 回答
40 浏览

symfony - BrowserStrack 与 Panther 的 E2E 测试集成

有没有人尝试将 BrowserStack 云解决方案集成到 Panther 中?

我们使用 Panther (Chrome) 对 Github 操作进行 E2E 测试,但我们的大多数客户使用 Internet Explorer :( 所以我们想用 IE 进行测试。

Panther 不允许在本地使用 IE 进行测试,但是在查看文档(https://github.com/symfony/panther#readme)时,它确实提到 Panther“支持远程浏览器测试服务,包括 SauceLabs 和 BrowserStack”,这将允许我们通过 BrowserStack 使用 IE 进行测试。

但是,我在其余文档中看不到任何可以解释如何将它们集成在一起的内容,所以我不确定如何从这里开始。

有人有想法吗?

干杯!

PS:我不知道这是否重要,但我们使用的是 PHP 框架 symfony v4.4

0 投票
0 回答
89 浏览

reactjs - 赛普拉斯 e2e 测试覆盖范围为空

我在我的反应应用程序中使用赛普拉斯进行集成测试。我面临与覆盖率相关的问题,覆盖率报告显示为空白。 在此处输入图像描述

在此处输入图像描述

似乎代码没有正确配置。有人可以帮我弄清楚这里有什么问题吗?

谢谢!

0 投票
1 回答
185 浏览

angular - Angular2+ e2e 的量角器配置,适用于本地运行和 docker

最近我花了很多时间开始对我的项目进行 e2e 测试并将其合并到构建管道中。一个设置至少需要 2 个节点(mongodb + .Net5 后端和 Angular 客户端),因此决定在 docker 中运行所有这些。我添加了额外的 docker-compose-test.yml,我将在其中启动临时节点来运行服务器集成测试(需要 mongo),然后是客户端测试,包括 e2e(需要完全正常工作的设置)。因此,经过几天的调整,我最终得到了protractor.conf.js一个为 docker 硬编码的 chromeDriver:

它最终在 docker 中完美运行(禁用了 chromedriver 更新,因为它已在另一个阶段预安装到 Alpine 映像中,否则自动更新根本不起作用,而且速度明显更快)。但问题是,毫不奇怪,它不再在本地工作: Error message: Could not find chromedriver at Q:\usr\bin\chromedriver. Run 'webdriver-manager update' to download binaries. 此外,我总是必须--dev-server-target=在本地和 docker 中通过,因为我总是在 docker 或本地 ng 服务中运行它,所以另一个开发者-服务器对我没有意义。我已将此添加到package.json"e2e": "ng e2e --dev-server-target="它适用于npm run e2e,但我也希望ng e2e没有用于本地运行的参数(我相信可以配置,但是如何配置?)

以及如何设置在 docker 和本地运行中都可以使用的 chromedriver?

本地运行更容易调试,启动速度更快……

注意:4444是我的开发 Web 服务器的一个端口,我最近才意识到 selenium 使用相同的端口。

0 投票
0 回答
53 浏览

javascript - 在 e2e 按钮上执行点击功能

首先让我说我从未使用过 Angular 和半新的 javascript。我在一个项目中使用 CEFSharp。我使用的大部分代码都是基于 document.getElementsByClassName 和 document.getElementById。我可以让我的程序毫无问题地执行对元素的点击。

然而,这是我第一次在按钮上遇到 e2e 数据。直到现在我才听说过 e2e。

解决这个问题的最佳解决方案是什么?

我已经尝试了上述方法,但是在抓住按钮时它参差不齐。

至少指出我需要学习的正确方向,以更好地了解如何识别和点击这些 e2e 元素