name: Execute percy demo tests on: workflow_dispatch: inputs: dashboardUrl: description: 'Environment to run tests against' required: true default: 'https://staging-demo.saleor.io/' apiUrl: required: true description: 'Environment api to run tests against' default: 'https://staging-demo.saleor.io/graphql/' testsKind: required: true description: 'What kind of tests' type: choice default: "all" options: - "percy" - "functional" - "all" schedule: - cron: '00 2 * * 1-5' repository_dispatch: types: [demo-tests] jobs: cypress-run-tests: runs-on: ubuntu-latest env: TEST_KIND: ${{ github.event.inputs.testsKind || github.event.client_payload.testsKind || 'all'}} container: cypress/browsers:node18.12.0-chrome106-ff106 steps: - name: Get environments urls id: get-env-urls env: DEFAULT_DASHBOARD_URL: 'https://staging-demo.saleor.io/' DEFAULT_API_URL: 'https://staging-demo.saleor.io/graphql/' run: | echo "DASHBOARD_URL=${{ github.event.inputs.dashboardUrl || env.DEFAULT_DASHBOARD_URL }}" >> $GITHUB_OUTPUT echo "API_URL=${{ github.event.inputs.apiUrl || env.DEFAULT_API_URL }}" >> $GITHUB_OUTPUT - name: Checkout uses: actions/checkout@v3 - name: Cache node modules uses: actions/cache@v2 env: cache-name: cache-node-modules with: path: ~/.npm key: ${{ runner.os }}-percy_demo-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-percy_demo-${{ env.cache-name }}- ${{ runner.os }}-percy_demo- ${{ runner.os }}- - name: Install Dependencies run: NODE_OPTIONS=--max_old_space_size=4096 npm install - name: Cypress run test percy if: contains(fromJSON('["percy", "all"]'), env.TEST_KIND) continue-on-error: true uses: cypress-io/github-action@v5 env: API_URI: ${{ steps.get-env-urls.outputs.API_URL }} APP_MOUNT_URI: ${{ secrets.APP_MOUNT_URI }} CYPRESS_DEMO_URI: ${{ steps.get-env-urls.outputs.DASHBOARD_URL }} CYPRESS_USER_NAME: admin@example.com CYPRESS_USER_PASSWORD: admin CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} COMMIT_INFO_MESSAGE: Percy - Demo dashboard tests - ${{github.event.inputs.dashboardUrl}} - ${{ steps.get-env-urls.outputs.DASHBOARD_URL }} PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }} CYPRESS_demoTests: true with: group: "UI - Chrome" command: npx percy exec -- npx cypress run --record - name: Cypress run test functional if: contains(fromJSON('["functional", "all"]'), env.TEST_KIND) continue-on-error: true uses: cypress-io/github-action@v5 env: API_URI: ${{ steps.get-env-urls.outputs.API_URL }} APP_MOUNT_URI: ${{ secrets.APP_MOUNT_URI }} CYPRESS_DEMO_URI: ${{ steps.get-env-urls.outputs.DASHBOARD_URL }} CYPRESS_USER_NAME: admin@example.com CYPRESS_USER_PASSWORD: admin CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} COMMIT_INFO_MESSAGE: Demo dashboard tests - ${{github.event.inputs.dashboardUrl}} - ${{ steps.get-env-urls.outputs.DASHBOARD_URL }} CYPRESS_grepTags: "@demo-dashboard" with: group: 'UI - Chrome' record: true