From e336f8f118aa0570265efdb8e522e1fbd7e36677 Mon Sep 17 00:00:00 2001 From: Batuhan Wilhelm Date: Mon, 22 Jan 2024 16:30:19 +0300 Subject: [PATCH] fix: e2e specs CI (#386) * fix: remove custom command, add env variables and group key, remove parrallel option * feat: use v6 action for cypress * feat: add GITHUB_TOKEN to env variables * fix: add CYPRESS_ prefix to env variables * fix: replace react condition with vite * fix: remote workflow * fix: google spec --- .github/workflows/test-local.yaml | 105 ++++++++++++----------------- .github/workflows/test-remote.yaml | 55 ++++++++++++--- cypress/e2e/build-test.cy.js | 7 +- 3 files changed, 87 insertions(+), 80 deletions(-) diff --git a/.github/workflows/test-local.yaml b/.github/workflows/test-local.yaml index 286f5db3..95f220e7 100644 --- a/.github/workflows/test-local.yaml +++ b/.github/workflows/test-local.yaml @@ -33,77 +33,33 @@ jobs: run: npm install - name: Build Examples id: build_step - run: FRAMEWORK=vite DATA_PROVIDER=${{ matrix.data_provider }} UI_FRAMEWORK=${{ matrix.ui_framework }} node ./.github/workflows/build-template.js - - name: Install Deps - run: | - cd ${{ steps.build_step.outputs.project_path }} - npm install - npm run build - npm run preview -- --port 3000 --host & - - name: Run Cypress on local - uses: cypress-io/github-action@v4 - with: - command: npx cypress run --record --parallel --env=AUTH_PROVIDER=${{ steps.build_step.outputs.auth_provider }},UI_FRAMEWORK=${{ matrix.ui_framework }},FRAMEWORK=react,DATA_PROVIDER=${{ matrix.data_provider }} - install: false - start: "npm ls" - wait-on: "http://localhost:3000" + run: node ./.github/workflows/build-template.js env: - CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} - FRAMEWORK: react + FRAMEWORK: vite DATA_PROVIDER: ${{ matrix.data_provider }} UI_FRAMEWORK: ${{ matrix.ui_framework }} - AUTH_PROVIDER: ${{ steps.build_step.outputs.auth_provider }} - react: - runs-on: ubuntu-latest - name: react - concurrency: - group: ${{ github.ref }}-e2e-local-react-${{ matrix.data_provider }}-${{ matrix.ui_framework }} - cancel-in-progress: true - strategy: - fail-fast: false - matrix: - data_provider: - [ - custom-json-rest, - strapi-v4, - nestjsx-crud, - airtable, - supabase, - appwrite, - hasura, - ] - ui_framework: [antd, chakra, mantine, mui, no] - steps: - - name: Checkout - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - - name: Install - run: npm install - - name: Build Examples - id: build_step - run: FRAMEWORK=react DATA_PROVIDER=${{ matrix.data_provider }} UI_FRAMEWORK=${{ matrix.ui_framework }} node ./.github/workflows/build-template.js - name: Install Deps run: | cd ${{ steps.build_step.outputs.project_path }} npm install npm run build - npm install -g serve - serve -s build & + npm run preview -- --port 3000 --host & - name: Run Cypress on local - uses: cypress-io/github-action@v4 + uses: cypress-io/github-action@v6 with: - command: npx cypress run --record --parallel --env=AUTH_PROVIDER=${{ steps.build_step.outputs.auth_provider }},UI_FRAMEWORK=${{ matrix.ui_framework }},FRAMEWORK=react,DATA_PROVIDER=${{ matrix.data_provider }} install: false + record: true start: "npm ls" - wait-on: "http://0.0.0.0:3000" + wait-on: "http://localhost:3000" + group: e2e-local-vite-${{ matrix.data_provider }}-${{ matrix.ui_framework }}-${{ steps.build_step.outputs.auth_provider }} env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} - FRAMEWORK: react - DATA_PROVIDER: ${{ matrix.data_provider }} - UI_FRAMEWORK: ${{ matrix.ui_framework }} - AUTH_PROVIDER: ${{ steps.build_step.outputs.auth_provider }} + CYPRESS_USER_AGENT: ${{ secrets.CI_USER_AGENT }} + CYPRESS_FRAMEWORK: vite + CYPRESS_DATA_PROVIDER: ${{ matrix.data_provider }} + CYPRESS_UI_FRAMEWORK: ${{ matrix.ui_framework }} + CYPRESS_AUTH_PROVIDER: ${{ steps.build_step.outputs.auth_provider }} nextjs: runs-on: ubuntu-latest name: nextjs @@ -134,7 +90,11 @@ jobs: run: npm install - name: Build Examples id: build_step - run: FRAMEWORK=nextjs DATA_PROVIDER=${{ matrix.data_provider }} UI_FRAMEWORK=${{ matrix.ui_framework }} node ./.github/workflows/build-template.js + run: node ./.github/workflows/build-template.js + env: + FRAMEWORK: nextjs + DATA_PROVIDER: ${{ matrix.data_provider }} + UI_FRAMEWORK: ${{ matrix.ui_framework }} - name: Install Deps run: | rm -rf .eslintrc .prettierrc @@ -143,14 +103,21 @@ jobs: npm run build npm run start & - name: Run Cypress on local - uses: cypress-io/github-action@v4 + uses: cypress-io/github-action@v6 with: - command: npx cypress run --record --parallel --env=AUTH_PROVIDER=${{ steps.build_step.outputs.auth_provider }},UI_FRAMEWORK=${{ matrix.ui_framework }},FRAMEWORK=nextjs,DATA_PROVIDER=${{ matrix.data_provider }} install: false + record: true start: "npm ls" wait-on: "http://0.0.0.0:3000" + group: e2e-local-nextjs-${{ matrix.data_provider }}-${{ matrix.ui_framework }}-${{ steps.build_step.outputs.auth_provider }} env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} + CYPRESS_USER_AGENT: ${{ secrets.CI_USER_AGENT }} + CYPRESS_FRAMEWORK: nextjs + CYPRESS_DATA_PROVIDER: ${{ matrix.data_provider }} + CYPRESS_UI_FRAMEWORK: ${{ matrix.ui_framework }} + CYPRESS_AUTH_PROVIDER: ${{ steps.build_step.outputs.auth_provider }} remix: runs-on: ubuntu-latest name: remix @@ -181,7 +148,11 @@ jobs: run: npm install - name: Build Examples id: build_step - run: FRAMEWORK=remix DATA_PROVIDER=${{ matrix.data_provider }} UI_FRAMEWORK=${{ matrix.ui_framework }} node ./.github/workflows/build-template.js + run: node ./.github/workflows/build-template.js + env: + FRAMEWORK: remix + DATA_PROVIDER: ${{ matrix.data_provider }} + UI_FRAMEWORK: ${{ matrix.ui_framework }} - name: Install Deps run: | cd ${{ steps.build_step.outputs.project_path }} @@ -189,11 +160,19 @@ jobs: npm run build HOST=0.0.0.0 npm run start & - name: Run Cypress on local - uses: cypress-io/github-action@v4 + uses: cypress-io/github-action@v6 with: - command: npx cypress run --record --parallel --env=AUTH_PROVIDER=${{ steps.build_step.outputs.auth_provider }},UI_FRAMEWORK=${{ matrix.ui_framework }},FRAMEWORK=remix,DATA_PROVIDER=${{ matrix.data_provider }} install: false + record: true start: "npm ls" wait-on: "http://0.0.0.0:3000" + group: e2e-local-remix-${{ matrix.data_provider }}-${{ matrix.ui_framework }}-${{ steps.build_step.outputs.auth_provider }} + env: env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} + CYPRESS_USER_AGENT: ${{ secrets.CI_USER_AGENT }} + CYPRESS_FRAMEWORK: remix + CYPRESS_DATA_PROVIDER: ${{ matrix.data_provider }} + CYPRESS_UI_FRAMEWORK: ${{ matrix.ui_framework }} + CYPRESS_AUTH_PROVIDER: ${{ steps.build_step.outputs.auth_provider }} diff --git a/.github/workflows/test-remote.yaml b/.github/workflows/test-remote.yaml index 1e2c4e6e..30c26d4e 100644 --- a/.github/workflows/test-remote.yaml +++ b/.github/workflows/test-remote.yaml @@ -34,7 +34,12 @@ jobs: run: npm install - name: Download Example id: download_step - run: FRAMEWORK=vite CI_USER_AGENT=${{secrets.CI_USER_AGENT}} DATA_PROVIDER=${{matrix.data_provider}} UI_FRAMEWORK=${{matrix.ui_framework}} node ./.github/workflows/build-remote.js + run: node ./.github/workflows/build-remote.js + env: + FRAMEWORK: vite + CI_USER_AGENT: ${{ secrets.CI_USER_AGENT }} + DATA_PROVIDER: ${{ matrix.data_provider }} + UI_FRAMEWORK: ${{ matrix.ui_framework }} - name: Install & Build Deps run: | cd ${{ steps.download_step.outputs.project_path }} @@ -42,15 +47,21 @@ jobs: npm run build npm run preview -- --port 3000 --host & - name: Run Cypress on local - uses: cypress-io/github-action@v4 + uses: cypress-io/github-action@v6 with: - command: npx cypress run --record --parallel --env=AUTH_PROVIDER=${{ steps.download_step.outputs.auth_provider }},UI_FRAMEWORK=${{ matrix.ui_framework }},FRAMEWORK=react,DATA_PROVIDER=${{ matrix.data_provider }} install: false + record: true start: "npm ls" wait-on: "http://localhost:3000" + group: e2e-remote-vite-${{ matrix.data_provider }}-${{ matrix.ui_framework }}-${{ steps.download_step.outputs.auth_provider }} env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} CYPRESS_USER_AGENT: ${{ secrets.CI_USER_AGENT }} + CYPRESS_FRAMEWORK: vite + CYPRESS_DATA_PROVIDER: ${{ matrix.data_provider }} + CYPRESS_UI_FRAMEWORK: ${{ matrix.ui_framework }} + CYPRESS_AUTH_PROVIDER: ${{ steps.download_step.outputs.auth_provider }} refine-nextjs: runs-on: ubuntu-latest name: NextJS @@ -81,7 +92,12 @@ jobs: run: npm install - name: Download Example id: download_step - run: FRAMEWORK=nextjs CI_USER_AGENT=${{secrets.CI_USER_AGENT}} DATA_PROVIDER=${{matrix.data_provider}} UI_FRAMEWORK=${{matrix.ui_framework}} node ./.github/workflows/build-remote.js + run: node ./.github/workflows/build-remote.js + env: + FRAMEWORK: nextjs + CI_USER_AGENT: ${{ secrets.CI_USER_AGENT }} + DATA_PROVIDER: ${{ matrix.data_provider }} + UI_FRAMEWORK: ${{ matrix.ui_framework }} - name: Install & Build Deps run: | rm -rf .eslintrc .prettierrc @@ -90,15 +106,21 @@ jobs: npm run build npm run start & - name: Run Cypress on local - uses: cypress-io/github-action@v4 + uses: cypress-io/github-action@v6 with: install: false - command: npx cypress run --record --parallel --env=AUTH_PROVIDER=${{ steps.download_step.outputs.auth_provider }},UI_FRAMEWORK=${{ matrix.ui_framework }},FRAMEWORK=nextjs,DATA_PROVIDER=${{ matrix.data_provider }} + record: true start: "npm ls" - wait-on: "http://0.0.0.0:3000" + wait-on: "http://localhost:3000" + group: e2e-remote-nextjs-${{ matrix.data_provider }}-${{ matrix.ui_framework }}-${{ steps.download_step.outputs.auth_provider }} env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} CYPRESS_USER_AGENT: ${{ secrets.CI_USER_AGENT }} + CYPRESS_FRAMEWORK: nextjs + CYPRESS_DATA_PROVIDER: ${{ matrix.data_provider }} + CYPRESS_UI_FRAMEWORK: ${{ matrix.ui_framework }} + CYPRESS_AUTH_PROVIDER: ${{ steps.download_step.outputs.auth_provider }} refine-remix: runs-on: ubuntu-latest name: Remix @@ -129,7 +151,12 @@ jobs: run: npm install - name: Download Example id: download_step - run: FRAMEWORK=remix CI_USER_AGENT=${{secrets.CI_USER_AGENT}} DATA_PROVIDER=${{matrix.data_provider}} UI_FRAMEWORK=${{matrix.ui_framework}} node ./.github/workflows/build-remote.js + run: node ./.github/workflows/build-remote.js + env: + FRAMEWORK: remix + CI_USER_AGENT: ${{ secrets.CI_USER_AGENT }} + DATA_PROVIDER: ${{ matrix.data_provider }} + UI_FRAMEWORK: ${{ matrix.ui_framework }} - name: Install & Build Deps run: | cd ${{ steps.download_step.outputs.project_path }} @@ -137,12 +164,18 @@ jobs: npm run build HOST=0.0.0.0 npm run start & - name: Run Cypress on local - uses: cypress-io/github-action@v4 + uses: cypress-io/github-action@v6 with: install: false - command: npx cypress run --record --parallel --env=AUTH_PROVIDER=${{ steps.download_step.outputs.auth_provider }},UI_FRAMEWORK=${{ matrix.ui_framework }},FRAMEWORK=remix,DATA_PROVIDER=${{ matrix.data_provider }} + record: true start: "npm ls" - wait-on: "http://0.0.0.0:3000" + wait-on: "http://localhost:3000" + group: e2e-remote-remix-${{ matrix.data_provider }}-${{ matrix.ui_framework }}-${{ steps.download_step.outputs.auth_provider }} env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} CYPRESS_USER_AGENT: ${{ secrets.CI_USER_AGENT }} + CYPRESS_FRAMEWORK: remix + CYPRESS_DATA_PROVIDER: ${{ matrix.data_provider }} + CYPRESS_UI_FRAMEWORK: ${{ matrix.ui_framework }} + CYPRESS_AUTH_PROVIDER: ${{ steps.download_step.outputs.auth_provider }} diff --git a/cypress/e2e/build-test.cy.js b/cypress/e2e/build-test.cy.js index 77941ee4..08395bbe 100644 --- a/cypress/e2e/build-test.cy.js +++ b/cypress/e2e/build-test.cy.js @@ -36,12 +36,7 @@ describe("build test", () => { cy.wait(1000); - if ( - Cypress.env("AUTH_PROVIDER") === "google" && - Cypress.env("FRAMEWORK") === "react" - ) { - getIframeBody().contains("Google"); - } else { + if (Cypress.env("AUTH_PROVIDER") !== "google") { cy.contains("Sign in").click(); cy.url().should("not.contain", "http://localhost:3000");