问题标签 [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.
testing - 量角器 7 中带有异步等待的短堆栈跟踪
我正在尝试使用量角器和 jasmine 自动化一些测试,并且我正在使用 async/await 来解决这些承诺。
问题是,当确实发生错误时,堆栈跟踪太短了,因此,我似乎无法找到问题的根源。
我确实确保在配置文件中将 SELENIUM_PROMISE_MANAGER 设置为 FALSE。
我正在使用量角器 7 和节点 14.16.0
有谁知道如何解决这个问题?没有足够的细节
这是一个代码片段
});
这是“按钮”类的定义:
}
最后,这是堆栈跟踪
javascript - 使用 Puppeteer-jest for React 执行多个请求拦截
我正在为我的 React 应用程序的 e2e 测试而苦苦挣扎,为了进行上述测试,我正在使用 Puppeteer 和 Jest,使用 Jest 文档在此处提供的自定义配置。问题是我需要让所有套件在不使用任何后端的情况下运行,所以我需要拦截请求并模拟所有正常完成的响应。
问题是我不知道如何在短时间内或异步并行拦截多个,我一直在寻找互联网并使用了一段时间await page.removeAllListeners('request')
,但这似乎取决于测试的接近程度执行它们,因此拦截未启动或弹出以下错误:Request is already handled!
这是我目前正在努力的测试:
这个想法是用户登录,进入我要测试的视图,打开一个过滤器,然后过滤显示在表格上的数据,确保结果的数量与表格分页上的结果一样。
另一方面,这个其他测试使用await page.removeAllListeners('request')
但不一致,因为当我需要的不仅仅是我基本上同时完成的拦截时,我必须遗漏一些东西或完全以错误的方式做这件事。
所以基本上,在 puppeteer 上处理多个异步请求拦截的正确方法是什么?
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,同样的问题。
为了解决这个问题,我想过:
- 查看在同一节点进程中同时运行 Cypress 和 BFF 的方法。
- 创建一个“核心/主”应用程序,我将 在同一台服务器上为我的 BFF和我的 UI 提供服务。(与 cypress-real-world-app 一样)仅用于我的 cypress e2e 测试;
- 在操作系统级别做另一个模拟策略?...
对于第一个我尝试使用&
和&&
bash 选项相同的npm run server & npm run cypress
. 我也尝试过同时使用。对两者都不起作用。
我试图从我的赛普拉斯代码中导入我的 BFF dist,但我遇到了一个错误,我正试图弄清楚如何解决。但我想知道其他策略,即使它在未来有效。
有什么额外的想法吗?
- 问题也在这里问。
installation - 黄瓜端到端测试运行后如何有效清理环境
我遇到的问题与 E2E 测试有关,它将一直运行以构建新的应用程序(甚至可能在 CircleCi 上每隔几个小时运行一次)。我有(并且将来会有更多)包含很多设置的功能(每个场景都需要相同的设置才能运行)。例如,在场景运行之前(功能中有很多)需要一些用户、内容、配置等。在场景运行之后,最好的做法可能是删除/删除所有用户、内容等(或至少在所有场景之后)已为该功能运行)。我正在努力理解什么是最佳实践。
如果我添加一个背景,那么它将在每个场景之前运行,但是我会从背景中删除所有这些数据(我可以在最后一个场景步骤中添加一个清理功能,但如果我错了,这似乎很糟糕,正确)。我可以添加将在每个场景之后清理的钩子,并继续为新功能添加更多钩子(可能使用场景标签来区分它们应该运行的场景)。
有一些选项,但感觉效率太低了……这些测试将在实时环境中运行(不是快速的集成或单元测试,而是 E2E)。很多时候,设置/背景将花费比一个场景更多的时间来运行,然后它会为每个微小的场景一遍又一遍地运行。例如,必须在后台运行一堆端点来创建用户、一些内容,并且在许多情况下(当我们还没有端点时)我将不得不编写一个通过 UI 的自动化旅程来添加一些东西或更改特定设置,然后以同样的方式添加结束删除所有内容,并通过 UI 将设置更改为功能运行之前的状态。感觉好慢,效率低。。。
我想到的唯一另一件事(但可能不适用于所有情况)。是创建一个巨大的钩子脚本,我将在整个套件运行之前添加所有必要的“东西”,在整个运行之后我清理整个堆栈/实例数据库(或重置为一些预设的数据库快照)以使其状态和整个套件运行之前一样。
请帮助我了解在这种情况下的最佳做法是什么
问候
javascript - 赛普拉斯:条件断言错误
如果出现,有没有办法不中止测试运行AssertionError
?
我的测试用例取决于 CSS 值,如果我编写如下条件,cypress
则以AssertionError
:
它也不会以这种方式工作,因为然后我得到另一个错误TypeError $dialog.should is not a function
:
react-native - React Native 中的 Appium setTimeout 端到端测试
我在 React Native 中使用以下代码进行超时
timeout
设置为 5 分钟,在端到端测试中我想测试超时完成后应该执行的代码,我该如何在 Appium 中完成呢?我真的需要等待那 5 分钟吗?
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
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 使用相同的端口。
javascript - 在 e2e 按钮上执行点击功能
首先让我说我从未使用过 Angular 和半新的 javascript。我在一个项目中使用 CEFSharp。我使用的大部分代码都是基于 document.getElementsByClassName 和 document.getElementById。我可以让我的程序毫无问题地执行对元素的点击。
然而,这是我第一次在按钮上遇到 e2e 数据。直到现在我才听说过 e2e。
解决这个问题的最佳解决方案是什么?
我已经尝试了上述方法,但是在抓住按钮时它参差不齐。
至少指出我需要学习的正确方向,以更好地了解如何识别和点击这些 e2e 元素