标签: cypress-configuration

当我在 Cypress 中有多个配置文件时,如何调用我的 baseUrl?

我有一个赛普拉斯框架,我正在其中测试用户页面(他们可以在其中与页面交互,下载文件,更新他们的个人资料等),以及该用户页面的管理页面(单独登录,实际上可以作为管理员,修改用户页面中的内容)。因此,我有三个配置文件:

  1. cypress.config-admin.ts,其中我有管理页面的 baseUrl(如www.mypage.admin.com)。我在文件中传递 --config-file 标记package.json以进行无头测试。
  2. cypress.config-user.ts我有用户页面的 baseUrl ( www.mypage.com)。我在文件中传递 --config-file 标记package.json以进行无头测试。
  3. cypress-config.ts,我用它通过赛普拉斯仪表板手动运行测试。

有时我需要在同一个测试用例中使用两个 URL(以管理员身份执行某些操作,以用户身份进行验证)。

我的问题是,当我使用 时Cypress.config().baseUrl,它只会显示 上的值cypress.config.ts。我已经尝试了多种方法,但还没有找到在adminuser配置文件上调用 baseUrl 的方法。

https://docs.cypress.io/api/cypress-api/config似乎建议我可以传递配置文件的名称,但我无法做到这一点=/

有任何想法吗?

typescript cypress cypress-configuration

3
推荐指数
1
解决办法
1329
查看次数

当我有不同的 baseUrl 和 apiUrl 时,为不同的环境设置 cypress

所以我一直在本地主机上设置我的测试,但现在我想将它们设置为在几个不同的环境上运行,但在所有这些环境上我都有一个单独的baseUrl和apiUrl。dev 有:http://base.url.com和 api:http://base.url.com/api prod 有:https://prod.url.com和 api:https://prod-api.url.com/v1

我已经阅读了这里的文档和一些帖子(尽管其中很多来自 cypress v10 之前),但我无法决定什么是最好的方法。我倾向于创建不同的配置文件(cypress-dev.config.ts、cypress-prod.config.ts 等),每个文件针对不同的环境,如下所示:

e2e: { 
  baseUrl: 'http://base.url.com', 
  env: { 
    apiURl: '..'  
}}
Run Code Online (Sandbox Code Playgroud)

创建新的 npm 脚本,我将 cypress 设置为在特定环境中运行时使用正确的配置文件。

我考虑过使用一个配置文件,但我无法弄清楚到底如何做。

e2e: {    env: { 
    development: { 
      baseUrl:'baseURlDev',
      apiURl: 'apiUrlDev'
    },
    production: {
      baseUrl:'baseURlProd',
      apiURl: 'apiUrlProd'
    },
    staging: {
      baseUrl:'baseURlStag'
      apiURl: 'apiUrlStag'   } 
    }}
Run Code Online (Sandbox Code Playgroud)

如何使用它是我的赛普拉斯代码。Cypress.env('环境类型.baseUrl')?? 我对此不太清楚。

或者也许还有我还没有考虑过的第三种巧妙的方法?

config angular cypress cypress-configuration

2
推荐指数
1
解决办法
1226
查看次数

在 npm 脚本中设置 baseUrl 不会改变它(Cypress)

我希望能够通过修改 的值在任何 URL 上运行我的 Cypress 脚本,baseUrl但该命令不会更改它。

"cypress open --env version=development --config baseUrl=https://google.com"
Run Code Online (Sandbox Code Playgroud)

我也尝试过 env 变量,但这也不起作用:

"cypress:open:dev": "cypress open --env version=development,baseUrl=https://google.com"
Run Code Online (Sandbox Code Playgroud)

配置文件:

export default defineConfig({
  e2e: {
    async setupNodeEvents(on, config) {
      const version = config.env.version || 'development'
      const configFile = await import(path.join(
        config.projectRoot,
        'cypress/config',
        `${version}.json`
      ));
      const credentialsFile = await import(path.join(
        config.projectRoot,
        'cypress/config',
        'credentials.json'
      ));
      config = {
        ...config,                    // take config defined in this file
        ...configFile                 // merge/override from the external file
      }
      config.env = {
        ...config.env,                // …
Run Code Online (Sandbox Code Playgroud)

node.js npm package.json cypress cypress-configuration

0
推荐指数
1
解决办法
593
查看次数

使用配置文件进行 Cypress-tests,因此可以在每个测试中覆盖 baseUrl 的端口(可能作为环境变量)

我有一个cypress.config.ts类似这样的文件:

import {defineConfig} from "cypress";

export default defineConfig(
    {
        e2e: {
            baseUrl: 'http://localhost:3000',
        }
    }
    ...
    ...
Run Code Online (Sandbox Code Playgroud)

问题 1:我正在构建的应用程序必须使用不同的端口来实现不同的功能。例子:

问题 2: Cypress 自动将尾部斜杠添加到baseUrl,因此我以后无法自己添加端口(在单独的测试中),而不需要进行一些字符串操作体操。

那么我该如何设置,以便在测试开始时可以定义应使用哪个端口?比如这样:

// This doesn't work: 

it('Test feature 1', () => {
    Cypress.env('PORT', 3000);
    cy.request('GET', 'feature-1').as('featureOne')
    ...
    ...
});

it('Test feature 2', () => {
    Cypress.env('PORT', 3002);
    cy.request('GET', 'feature-2').as('featureTwo')
    ...
    ...
});
Run Code Online (Sandbox Code Playgroud)

解决方案尝试 1:保留baseUrl为空字符串

如果让我cypress.config.ts这样:

import {defineConfig} from "cypress";

export default defineConfig(
    { …
Run Code Online (Sandbox Code Playgroud)

cypress cypress-configuration

0
推荐指数
1
解决办法
1294
查看次数