Add a GitHub Action workflow to run QIT E2E Integration tests. #3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: QIT E2E tests | |
on: | |
pull_request | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
max-parallel: 10 | |
matrix: | |
checkout: [ 'Default', 'Legacy' ] | |
name: ${{ matrix.checkout }} QIT E2E tests | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
# PHP | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: 7.4 | |
tools: composer | |
coverage: none | |
- name: Cache Composer deps | |
id: composer-cache | |
uses: actions/cache@v4 | |
with: | |
path: ./vendor | |
key: ${{ runner.os }}-vendor-${{ hashFiles('composer.lock') }} | |
- name: Install composer dependencies | |
if: ${{ steps.composer-cache.outputs.cache-hit == false }} | |
shell: bash | |
run: composer install --no-progress | |
# Node | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: '.nvmrc' | |
- name: Cache Node deps | |
id: node-cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
./node_modules | |
~/.cache/ms-playwright | |
key: ${{ runner.os }}-node_modules-${{ hashFiles('package-lock.json') }} | |
- name: Install node dependencies | |
if: ${{ steps.node-cache.outputs.cache-hit == false }} | |
shell: bash | |
run: npm ci | |
# Build | |
- name: Build plugin package | |
shell: bash | |
run: | | |
npm run build | |
# QIT CLI | |
- name: Install QIT via composer | |
run: composer require woocommerce/qit-cli --dev | |
- name: Add partner for QIT | |
run: ./vendor/bin/qit partner:add --user='${{ secrets.PARTNER_USER }}' --application_password='${{ secrets.PARTNER_SECRET }}' | |
# E2E test environment | |
- name: Fill in .env | |
run: | | |
echo 'STRIPE_PUB_KEY="${{ secrets.E2E_STRIPE_PUBLISHABLE_KEY }}"' >> .env | |
echo 'STRIPE_SECRET_KEY="${{ secrets.E2E_STRIPE_SECRET_KEY }}"' >> .env | |
echo 'PAYPAL_MERCHANT_ID="${{ secrets.PAYPAL_MERCHANT_ID }}"' >> .env | |
echo 'PAYPAL_MERCHANT_EMAIL="${{ secrets.PAYPAL_MERCHANT_EMAIL }}"' >> .env | |
echo 'PAYPAL_CLIENT_ID="${{ secrets.PAYPAL_CLIENT_ID }}"' >> .env | |
echo 'PAYPAL_CLIENT_SECRET="${{ secrets.PAYPAL_CLIENT_SECRET }}"' >> .env | |
echo 'PAYPAL_CUSTOMER_EMAIL="${{ secrets.PAYPAL_CUSTOMER_EMAIL }}"' >> .env | |
echo 'PAYPAL_CUSTOMER_PASSWORD="${{ secrets.PAYPAL_CUSTOMER_PASSWORD }}"' >> .env | |
- name: Run ${{ matrix.checkout }} E2E tests | |
shell: bash | |
run: ./vendor/bin/qit run:e2e woocommerce-gateway-stripe ${{ matrix.checkout == 'Legacy' && 'legacy' || '' }} --source ./ --plugin woocommerce --plugin woocommerce-subscriptions --plugin woocommerce-paypal-payments:test:setup-tests --theme storefront --env_file .env | |
- name: Set the path in an env var | |
if: ${{ failure() }} | |
run: echo "E2E_REPORT_PATH=$(./vendor/bin/qit e2e-report --dir_only --local)/playwright" >> $GITHUB_ENV | |
- name: Upload ${{ matrix.checkout }} QIT E2E test results | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.checkout }}-qit-e2e-test-results | |
path: ${{ env.E2E_REPORT_PATH }} | |
if-no-files-found: ignore | |
retention-days: 14 |