如何将 Bitbucket 管道存储库变量传递给 npm 运行 脚本?

How to pass Bitbucket pipeline repository variables to npm run script?

如何将 Bitbucket 存储库变量传递到我在管道中 运行 npm run 的 Cypress.io 测试脚本?

管道和测试工作正常,但我无法将 Bitbucket 变量获取到测试文件本身。我可以按照 Bitbucket 在存储库变量页面上提供的说明从 bitbucket-pipeline.yml 访问存储库变量,但我无法访问 cypress/integration/example.js 中的变量。我想存储测试脚本用作 Bitbucket 存储库变量的凭据。

这是我的代码...

bitbucket-pipeline.yml

image: cypress/included:3.2.0

pipelines:
  custom:
    robot:
      - step:
          script:
            - printenv
            - npm ci
            - npm run e2e

package.json

{
  ...
  "scripts": {
    "e2e": "cypress run"
  },
  ...
  "dependencies": {
    "cypress": "^9.4.1"
  }
}

cypress/integration/example.js

describe('A', () => {
  it('should B', () => {
    cy.visit('https://google.com');
  });
});

在此先感谢您的帮助。

我找到了关于环境变量的 Cypress.io 文档: https://docs.cypress.io/guides/guides/environment-variables

bitbucket-pipeline.yml

image: cypress/included:3.2.0

pipelines:
  custom:
    robot:
      - step:
          script:
            - npm ci
            - export CYPRESS_example=$example
            - export CYPRESS_whatever=$whatever
            - npm run e2e

其中 example 是 Bitbucket 存储库变量的名称。可能区分大小写。

添加 $ 以引用 bitbucket-pipeline.yml 文件中的 Bitbucket 存储库变量。

使用CYPRESS_将其标识为赛普拉斯环境变量。 https://docs.cypress.io/guides/guides/environment-variables#Option-3-CYPRESS_

然后你可以通过Cypress.env("example")

在测试规范中使用它

实际上我不得不进行类型转换,因为 Bitbucket 提供了意想不到的数据类型...

cy.get('[name="password"]').clear().type(Cypress.env("example").toString());

您可以使用该插件为每个部署设置配置文件,当 运行 脚本时,您可以将哪个环境设置为 运行 如果在管道。

npx 赛普拉斯 运行 --env version="qa" npx cypress 运行 --env version="prod"