有没有办法将cypress.io baseUrl env var传递到我的package.json运行脚本中?

时间:2019-11-11 15:29:54

标签: node.js json environment-variables cypress

我希望能够将baseUrl文件中的cypress.json传递到我的赛普拉斯测试项目的scripts文件的package.json中。这可能吗?

我一直在寻找cypress文档和堆栈溢出,但是我找不到一个解决方案,该解决方案不需要添加其他脚本来执行类似"get-base-url": "type cypress.json | jq -r .baseUrl"的操作并将此脚本作为参数传递给相关的{{1} }脚本(见下文)

cypress.json文件

"test"

package.json脚本部分

{
  "baseUrl": "http://localhost:3000/",
  //other key-value pairs
  }
}

我预计会有一个与{ //other settings "scripts": { //other scripts "test": "start-server-and-test website:dev http://localhost:3000 cy:run", }, //other settings } 等效的东西,以获取json文件中Cypress.config().baseUrl的值。

导致类似于以下内容(sudo代码,不起作用)

baseUrl

注意:我以前没有在Stack Overflow上发帖,所以如果没有提供足够的信息和/或错过规则中的内容,我深表歉意。

1 个答案:

答案 0 :(得分:0)

脚本功能有限。您需要一个小脚本来从cypress.json接收baseUrl并将其传递到 start-server-and-test 包中 假设我们使用以下代码创建了一个名为 start-server-and-test.js 的脚本,并将其放在 scripts 目录

const cypressConfig = require('../cypress.json') // line 1
const startServerAndTest = require('start-server-and-test') // line 2
const [startScript, testScript] = process.argv.slice(2) // line 3
startServerAndTest({  // line 4
  start: `npm ${startScript}`,
  url: cypressConfig.baseUrl,
  test: `npm ${testScript}`,
})

这是我们在 package.json

中使用它的方式
{
  "scripts": {
    "test": "node scripts/start-server-and-test.js website:dev cy:run",
  }, 
}

简短说明:

  • 第1行:读取cypress.json并将其分配给cypressConfig,稍后您可以通过 cypressConfig.baseUrl
  • 访问baseUrl
  • 第3行:在命令行中检索 ['website:dev','cy:run']
  • 第4行:使用相应的参数运行程序包