From 42c3e3e0e31a3b906d474ea93dbb74875f7977c5 Mon Sep 17 00:00:00 2001 From: Aleksandr Chernigin Date: Mon, 19 Feb 2024 21:12:39 +0400 Subject: [PATCH] Add separate action for pull requests --- .github/workflows/main.yml | 4 - .github/workflows/pull-request.yml | 147 +++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/pull-request.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1ae5a7d..1d0be98 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -3,8 +3,6 @@ name: Main on: push: branches: [ main ] - pull_request: - branches: [ main ] workflow_dispatch: jobs: @@ -47,7 +45,6 @@ jobs: path: dist e2e-chrome-tests: - environment: manual timeout-minutes: 15 runs-on: ubuntu-latest container: @@ -98,7 +95,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} e2e-chrome-mobile-tests: - environment: manual timeout-minutes: 15 runs-on: ubuntu-latest container: diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml new file mode 100644 index 0000000..77b03b1 --- /dev/null +++ b/.github/workflows/pull-request.yml @@ -0,0 +1,147 @@ +name: Main + +on: + pull_request: + branches: [ main ] + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + container: + image: cypress/browsers:node-18.16.0-chrome-114.0.5735.133-1-ff-114.0.2-edge-114.0.1823.51-1 + options: --user 1001 + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Cache node_modules + uses: actions/setup-node@v4 + with: + node-version: 18 + cache: 'npm' + + - name: Cypress install + uses: cypress-io/github-action@v6 + with: + runTests: false + + - name: Write Firebase config + run: | + echo ${{ secrets.FIREBASE_CONFIG }} | base64 -d > firebase.config.json + + - run: npx cypress info + - run: node --version + - run: node -p 'os.cpus()' + - run: npm run lint + - run: npm run test:ci + - run: npm run build + + - name: Save build folder + uses: actions/upload-artifact@v4 + with: + name: dist + if-no-files-found: error + path: dist + + e2e-chrome-tests: + environment: manual + timeout-minutes: 15 + runs-on: ubuntu-latest + container: + image: cypress/browsers:node-18.16.0-chrome-114.0.5735.133-1-ff-114.0.2-edge-114.0.1823.51-1 + options: --user 1001 + needs: build + strategy: + fail-fast: false # https://github.com/cypress-io/github-action/issues/48 + matrix: + containers: [ 1, 2 ] + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Download the build folders + uses: actions/download-artifact@v4 + with: + name: dist + path: dist + + - name: Node info + run: node -v + + - name: __e Dir + run: ls /__e + + - name: "E2E Tests - Chrome" + uses: cypress-io/github-action@v6 + with: + build: npx cypress info + start: npm run preview + wait-on: "http://localhost:8080" + wait-on-timeout: 120 + browser: chrome + record: true + parallel: true + group: "E2E - Chrome" + spec: cypress/e2e/* + config-file: cypress.config.ts + config: "{\"e2e\":{\"baseUrl\":\"http://localhost:8080\"}}" + env: + CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }} + CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} + COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }} + COMMIT_INFO_SHA: ${{ github.event.pull_request.head.sha }} + TEST_USER_USERNAME: ${{ secrets.TEST_USER_USERNAME_1 }} + TEST_USER_PASSWORD: ${{ secrets.TEST_USER_PASSWORD_1 }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + e2e-chrome-mobile-tests: + environment: manual + timeout-minutes: 15 + runs-on: ubuntu-latest + container: + image: cypress/browsers:node-18.16.0-chrome-114.0.5735.133-1-ff-114.0.2-edge-114.0.1823.51-1 + options: --user 1001 + needs: build + strategy: + fail-fast: false # https://github.com/cypress-io/github-action/issues/48 + matrix: + containers: [ 1, 2 ] + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Download the build folders + uses: actions/download-artifact@v4 + with: + name: dist + path: dist + + - name: Node info + run: node -v + + - name: __e Dir + run: ls /__e + + - name: "E2E Tests - Chrome - Mobile" + uses: cypress-io/github-action@v6 + with: + build: npx cypress info + start: npm run preview + wait-on: "http://localhost:8080" + wait-on-timeout: 120 + browser: chrome + record: true + parallel: true + group: "E2E - Chrome - Mobile" + spec: cypress/e2e/* + config-file: cypress.config.ts + config: "{\"e2e\":{\"baseUrl\":\"http://localhost:8080\",\"viewportWidth\":400,\"viewportHeight\":660}}" + env: + CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }} + CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} + COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }} + COMMIT_INFO_SHA: ${{ github.event.pull_request.head.sha }} + TEST_USER_USERNAME: ${{ secrets.TEST_USER_USERNAME_2 }} + TEST_USER_PASSWORD: ${{ secrets.TEST_USER_PASSWORD_2 }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}