【发布时间】:2021-12-06 06:50:20
【问题描述】:
我的目的很简单,在 Pull Request 上使用 Github 操作运行 cypress e2e 测试。我使用cypress-firebase 进行测试,我的所有测试都应该使用Firebase Emulator 运行。我还用cypress-io/github-action 表示CI。
我的问题是,在使用 cypress-io/github-action 时,我需要为我的 react 应用程序传递一些环境变量才能与 Firebase 模拟器一起使用,并且整个应用程序无法识别所有环境变量。请参阅我的工作流文件以了解。
这是我的 Github 操作工作流文件的相关部分:
- name: Cypress run
uses: cypress-io/github-action@v2
with:
browser: chrome
headless: true
record: true
start: yarn run ci:start:emulator
wait-on: "http://localhost:3000"
wait-on-timeout: 300 # wait for 5 minutes
env:
# Add debugger
# https://github.com/cypress-io/github-action#debugging
DEBUG: "@cypress/github-action"
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
PROJECT_ID: ${{ secrets.REACT_APP_PROJECT_ID }}
FIREBASE_CONFIG: ${{ secrets.FIREBASE_CI_CLOUD_FUNCTIONS_CONFIG }}
# Branch settings
GITHUB_HEAD_REF: ${{ github.head_ref }}
GITHUB_REF: ${{ github.ref }}
# pass the Cypress Dashboard variables
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }}
# UID of user to login during test
CYPRESS_BASE_URL: http://localhost:3000
CYPRESS_TEST_UID: ${{ secrets.CYPRESS_TEST_UID }}
# Service Account (used for creating custom auth tokens)
SERVICE_ACCOUNT: ${{ secrets.CYPRESS_SERVICE_ACCOUNT }}
# Environment variables
REACT_APP_ANY_KEY: ${{ secrets.REACT_APP_ANY_KEY }}
这是我在package.json 文件中的ci:start:emulator 命令:
"ci:start:emulator": "firebase emulators:exec 'yarn start'"
问题是yarn start 命令无法识别我上面的REACT_APP_ANY_KEY 环境变量。似乎cypress-io/github-action 没有将它们传递给我的yarn start 命令。
我尝试将上面的命令更改为
"ci:start:emulator": "cross-env REACT_APP_ANY_KEY=<SOME_HARD_CODE_VALUE> firebase emulators:exec 'yarn start'"
完美运行!但当然,我们不想像这样通过这个命令传递大量的环境变量。
任何帮助将不胜感激!
【问题讨论】:
标签: firebase cypress github-actions firebase-tools