name: CI - E2E - 3rd party donation tests # These are only run on prod-* branches to test the 3rd party donation flow on: push: branches: - 'prod-**' paths-ignore: - 'docs/**' # to test this ad-hoc workflow_dispatch: jobs: do-everything: name: Build & Test runs-on: ubuntu-22.04 strategy: matrix: node-version: [20.x] services: mongodb: image: mongo:4.4 ports: - 27017:27017 # We need mailhog to catch any emails the api tries to send. mailhog: image: mailhog/mailhog ports: - 1025:1025 steps: - name: Checkout Source Files uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 - name: Checkout client-config uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 with: repository: freeCodeCamp/client-config path: client-config - name: Setup pnpm uses: pnpm/action-setup@v2 with: version: 8 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v3 with: node-version: ${{ matrix.node-version }} # cypress-io/github-action caches the store, so we should not cache it # here. - name: Set freeCodeCamp Environment Variables run: | sed '/STRIPE/d; /PAYPAL/d;' sample.env > .env echo 'STRIPE_PUBLIC_KEY=${{ secrets.STRIPE_PUBLIC_KEY }}' >> .env echo 'STRIPE_SECRET_KEY=${{ secrets.STRIPE_SECRET_KEY }}' >> .env echo 'PAYPAL_CLIENT_ID=${{ secrets.PAYPAL_CLIENT_ID }}' >> .env echo 'PAYPAL_SECRET=${{ secrets.PAYPAL_SECRET }}' >> .env - name: Install and Build run: | pnpm install pnpm run build - name: Seed Database run: pnpm run seed - name: Move serve.json to Public Folder run: cp client-config/serve.json client/public/serve.json # start-ci uses pm2, so it needs to be installed globally - name: Install pm2 run: npm i -g pm2 # In our cypress config, we default to the cypress/e2e/default directory. # We need to change this to cypress/e2e/ for the specific tests we are running # in this workflow. # - name: Adjust the Cypress Config run: | sed -i 's#cypress/e2e/default/#cypress/e2e/#g' cypress.config.js - name: Cypress run uses: cypress-io/github-action@v6 with: record: ${{ env.CYPRESS_RECORD_KEY != 0 }} start: pnpm run start-ci wait-on: http://localhost:8000 wait-on-timeout: 1200 config: baseUrl=http://localhost:8000 browser: chrome spec: 'cypress/e2e/third-party/donate-page.ts'