Jest.js Github操作-运行服务器和前端,然后执行测试

i5desfxk  于 2022-12-08  发布在  Jest
关注(0)|答案(2)|浏览(169)

我想使用Github Actions for CI并在分支合并之前运行测试。
我有一个单一的存储库,其中有我的服务器和前端(嵌套和Angular )。
我正在使用Cypress/Jest进行测试。
我需要我的后端服务器运行我的前端cypress测试通过。
目前GH的行动没有进入下一步,因为后端进程正在运行-但这是我需要发生的...
我应该如何进行设置,以便可以使用GH Actions for CI?

name: test
on: [push]
env:
  CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  OTHER_SECRETS: ${{ secrets.otherSecrets }}
jobs:
  cypress-run:
    runs-on: macos-11
    steps:
      # start cypress w/github action: https://github.com/cypress-io/github-action
      - name: Setup Node.js environment
        uses: actions/setup-node@v2.5.0
        with:
          node-version: '16.13.0'
      - name: Checkout
        uses: 'actions/checkout@v2'
      - name: "Start Backend"
        run: |
          cd server &&
          npm install &&
          npm run build &&
          npm run start:prod
      - name: "Start Frontend"
        run: |
          npm install &&
          npm run build &&
          npm run start
      - name: Cypress run
        uses: cypress-io/github-action@v2
        with:
          record: true
          browser: chrome
      - name: "Run Jest Tests"
        run: |
            cd server &&
            npm run test

注意:我试过在npm命令后面附加“&& sleep 10 && curl http://localhost:port-i”选项--但我没有成功。

note2:这是我第一次使用GH Actions,所以可能我错过了一些明显的东西!!

hzbexzde

hzbexzde1#

注意:我试过在npm命令后面附加“&& sleep 10 && curl http://localhost:port-i”选项,但没有效果。

这里有一个小错误,&&将等待前一个命令完成,并且只有在成功后才运行下一个命令&将在后台运行前一个命令,然后继续运行下一个命令。因此,由于没有任何东西会停止您的服务器,&&将无法工作。
我不确定这是否是最干净的方式,但下面的方法应该可以工作,我已经在我的一个项目中使用了一个等效的方法来运行UI。

- name: "Start Backend"
    run: |
      cd server &&
      npm install &&
      npm run build &&
      npm run start:prod &
      sleep 5 &&
      curl http://localhost:port -I
  - name: "Start Frontend"
    run: |
      npm install &&
      npm run build &&
      npm run start &
      sleep 5 &&
      curl http://localhost:port -I
bkhjykvo

bkhjykvo2#

我遇到了同样的问题,服务器运行,但从来没有移动到下一步运行Cypress测试.感谢didwefixit,只使用一个&工作启动服务器,然后运行Cypress测试脚本工作:

jobs: 
  build: 
    env:
      CI: true
    strategy: 
      matrix: 
        node-version: [14.x, 16.x]
    runs-on: [ ubuntu-latest ]
    steps: 
      - uses: actions/checkout@v2
      - name: Use Node.js version ${{ matrix.node-version }}
        uses: actions/setup-node@v2
        with: 
          node-version: ${{ matrix.node-version }}
      - run: npm install --prefix client
      - run: npm install --prefix server
      - run: npm install 
      - run: npm run build --prefix client
      - run: npm run start --prefix server & npm run test

客户端包.json中脚本:

"build": "BUILD_PATH=../server/public react-scripts build"

服务器包.json中脚本:

"start": "node src/server.js"

根package.json中脚本:

"test": "npx cypress run"

相关问题