如何通过将赛普拉斯指定为项目来运行特定的测试文件夹?
Posted
技术标签:
【中文标题】如何通过将赛普拉斯指定为项目来运行特定的测试文件夹?【英文标题】:How can I get Cypress to run a specific folder of tests by specifying it as a project? 【发布时间】:2019-06-10 14:32:52 【问题描述】:我有以下使用 Cypress 的目录结构:
cypress-automation
cypress
fixtures
integration
apps
pulse
smhw-prod
smhw-qa
folder-a
sample-spec.js
examples
plugins
screenshots
support
videos
node_modules
cypress.json // this is where the file currently is
package-lock.json
package.json
期待
我想要做的是在 smhw-qa
文件夹中运行所有测试(那里有许多规范文件).. 并且能够使用 CLI 使用 --project
命令传递它。
目前,如果我只运行 `--run` 而不使用任何其他参数,所有规范文件将从所有文件夹开始运行,这是不可取的,因为有多个应用程序“项目”(smhw-qa、smhw- prod 等)在这个结构中。这将允许我根据需要只运行单个文件夹中的规范文件。
我也知道使用--run
命令来“运行”特定文件夹,但我想使用“项目”来组织这些测试,以便以后更容易识别它们。
我查看了显示使用--project
命令的文档,但是我需要帮助了解我还需要设置什么才能使这项工作正常进行。我指的是package.json
文件。
到目前为止我尝试了什么 我尝试按照此处提供的用于测试“嵌套文件夹”的示例: https://github.com/cypress-io/cypress-test-nested-projects
package.json
:添加了以下脚本:
"scripts":
"test": "echo \"Error: no test specified\" && exit 1",
"smhw-qa": "cypress run --project ./cypress/integration/apps/smhw-qa"
,
当我像这样通过终端运行它时:
➜ cypress-automation npx cypress run --project ./cypress/integration/apps/smhw-qa
我收到一个错误:
Can't run because no spec files were found.
We searched for any files inside of this folder:
/Users/jaswindersingh/Documents/cypress-automation/cypress/integration/apps/smhw-qa/cypress/integration
我错过了什么吗?我的cypress.json
文件是否应该位于其他位置?
我希望能够将“apps”中的每个文件夹设置为项目,然后能够使用cypress run --project
命令运行这些项目。
这也将使我在连接我们的 CI 时更容易运行特定的测试文件夹,以便在我选择时仅运行特定的项目(及其规范文件)。
【问题讨论】:
--project
标志用于指向您的cypress.json
位于不同的目录中。我不使用它,但这就是我从这里的文档中了解到的:docs.cypress.io/guides/guides/…
How to group together certain tests or files when doing a run in Cypress?的可能重复
看到这个很好的答案:***.com/questions/60119398/…
【参考方案1】:
在我的情况下,我有一个包含多个项目的角度工作区,我在这个子项目中移动了 cypress 文件夹和 cypress.json 文件,例如./projects/app1
。
然后在配置文件中添加"integrationFolder": "e2e/cypress/integration",
指定测试目录。
将这些脚本添加到 package.json
cypress open --project ./projects/app1
cypress run --project ./projects/app1
并且只执行或打开来自e2e/cypress/integration
目录的测试。
【讨论】:
【参考方案2】:我想你在找--spec path/to/folder/*.js
您可以在一个文件夹中运行所有测试,甚至可以在一个文件夹的所有子文件夹中运行,
例如/npx cypress run --spec cypresss/integration/subsetA/**/*-spec.js
将在 cypress/integration 的“subsetA”文件夹下的所有文件夹中运行所有 .js 规范。
所以在你的情况下:npx cypress run --spec cypress/integration/apps/smhw-qa/**/*-spec.js
应该可以解决问题。
https://docs.cypress.io/guides/guides/command-line.html#How-to-run-commands
【讨论】:
不要忘记使用“(双引号)来指定文件名。例如npx cypress run --spec "cypress/integration/apps/smhw-qa/**/*-spec.js"
。否则它可能无法正常工作(对我来说它在linux管道上运行它失败了,即使在我的 Windows 本地机器一开始工作:) )
@notihs 我怀疑这取决于谁扩展了**
。在您的 linux 案例中,它可能是 shell,因此 npx
命令“看到”了多个传递给它的文件;在 Windows 中,shell 不这样做,所以 npx
"看到" "**" 并根据需要扩展它。以上是关于如何通过将赛普拉斯指定为项目来运行特定的测试文件夹?的主要内容,如果未能解决你的问题,请参考以下文章