diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml index 34d2b8206..63ba66669 100644 --- a/.github/workflows/cypress.yml +++ b/.github/workflows/cypress.yml @@ -25,13 +25,24 @@ env: BRANCH: ${{ github.base_ref || github.ref_name }} jobs: - init: + cypress: runs-on: ubuntu-latest - outputs: - nodeVersion: ${{ steps.versions.outputs.nodeVersion }} - npmVersion: ${{ steps.versions.outputs.npmVersion }} + + strategy: + fail-fast: false + matrix: + # Run multiple copies of the current job in parallel + # Please increase the number or runners as your tests suite grows (0 based index for e2e tests) + containers: [0, 1, 2, 3, 4, 5, 6, 7] + # Hack as strategy.job-total includes the component and GitHub does not allow math expressions + # Always align this number with the total of e2e runners (max. index + 1) + total-containers: [8] + + name: runner ${{ matrix.containers }} env: + # We'll install cypress in the cypress job + CYPRESS_INSTALL_BINARY: 0 PUPPETEER_SKIP_DOWNLOAD: true steps: @@ -58,11 +69,11 @@ jobs: uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3 id: versions with: - fallbackNode: "^20" - fallbackNpm: "^10" + fallbackNode: '^20' + fallbackNpm: '^10' - name: Set up node ${{ steps.versions.outputs.nodeVersion }} - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v3 with: node-version: ${{ steps.versions.outputs.nodeVersion }} @@ -74,53 +85,14 @@ jobs: npm ci npm run build --if-present - - name: Save context - uses: buildjet/cache/save@e376f15c6ec6dc595375c78633174c7e5f92dc0e # v3 - with: - key: cypress-context-${{ github.run_id }} - path: ./ - - cypress: - runs-on: ubuntu-latest - needs: init - - strategy: - fail-fast: false - matrix: - # Run multiple copies of the current job in parallel - # Please increase the number or runners as your tests suite grows (0 based index for e2e tests) - containers: [0, 1, 2, 3, 4, 5, 6, 7] - # Hack as strategy.job-total includes the component and GitHub does not allow math expressions - # Always aling this number with the total of e2e runners (max. index + 1) - total-containers: [8] - - name: runner ${{ matrix.containers }} - - steps: - - name: Disabled on forks - if: ${{ github.event.pull_request.head.repo.full_name != github.repository }} - run: | - echo 'Can not approve PRs from forks' - exit 1 - - - name: Restore context - uses: buildjet/cache/restore@e376f15c6ec6dc595375c78633174c7e5f92dc0e # v3 - with: - fail-on-cache-miss: true - key: cypress-context-${{ github.run_id }} - path: ./ - - - name: Set up node ${{ needs.init.outputs.nodeVersion }} - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 - with: - node-version: ${{ needs.init.outputs.nodeVersion }} - - - name: Set up npm ${{ needs.init.outputs.npmVersion }} - run: npm i -g 'npm@${{ needs.init.outputs.npmVersion }}' + - name: Install cypress + run: ./node_modules/cypress/bin/cypress install - name: Run ${{ matrix.containers == 'component' && 'component' || 'E2E' }} cypress tests - uses: cypress-io/github-action@8d3918616d8ac34caa2b49afc8b408b6a872a6f5 # v6.7.1 + uses: cypress-io/github-action@496e7dc0edc421a9de8a36a31c793340e00c61bf # v6.7.5 with: + # We already installed the dependencies in the init job + install: false # cypress run type component: ${{ matrix.containers == 'component' }} # Do not add Cypress record key config as this conflicts with cypress-split @@ -144,7 +116,7 @@ jobs: - name: Extract NC logs if: failure() && matrix.containers != 'component' - run: docker logs nextcloud-cypress-tests-${{ env.APP_NAME }} > nextcloud.log + run: docker logs nextcloud-cypress-tests_${{ env.APP_NAME }} > nextcloud.log - name: Upload NC logs uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4 @@ -155,7 +127,7 @@ jobs: summary: runs-on: ubuntu-latest-low - needs: [init, cypress] + needs: [cypress] if: always() @@ -163,4 +135,4 @@ jobs: steps: - name: Summary status - run: if ${{ needs.init.result != 'success' || ( needs.cypress.result != 'success' && needs.cypress.result != 'skipped' ) }}; then exit 1; fi + run: if ${{ needs.cypress.result != 'success' && needs.cypress.result != 'skipped' }}; then exit 1; fi