name: Run tests against PR on: pull_request concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: e2e-tests-run: name: Runs E2E tests. runs-on: ubuntu-20.04 steps: - name: Checkout code. uses: actions/checkout@v3 - name: Cache modules uses: actions/cache@v3 id: cache-deps with: path: | ~/.pnpm-store plugins/woocommerce/packages plugins/woocommerce/**/vendor key: ${{ runner.os }}-npm-composer-version-${{ secrets.WORKFLOW_CACHE }}-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM run: npm install -g pnpm@^6.24.2 - name: Install dependencies run: pnpm install - name: Install Composer dependencies if: steps.cache-deps.outputs.cache-hit != 'true' run: pnpm nx composer-install-no-dev woocommerce - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '7.4' - name: Run build run: pnpm nx build woocommerce - name: Load docker images and start containers. working-directory: plugins/woocommerce run: pnpm exec wc-e2e docker:up - name: Run tests command. working-directory: plugins/woocommerce env: WC_E2E_SCREENSHOTS: 1 E2E_SLACK_TOKEN: ${{ secrets.E2E_SLACK_TOKEN }} E2E_SLACK_CHANNEL: ${{ secrets.E2E_SLACK_CHANNEL }} run: pnpm exec wc-e2e test:e2e - name: Archive E2E test screenshots uses: actions/upload-artifact@v3 if: always() with: name: E2E Screenshots path: plugins/woocommerce/tests/e2e/screenshots if-no-files-found: ignore retention-days: 5 api-tests-run: name: Runs API tests. runs-on: ubuntu-20.04 steps: - name: Checkout code. uses: actions/checkout@v3 - name: Cache modules uses: actions/cache@v3 id: cache-deps with: path: | ~/.pnpm-store plugins/woocommerce/packages plugins/woocommerce/**/vendor key: ${{ runner.os }}-npm-composer-version-${{ secrets.WORKFLOW_CACHE }}-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM run: npm install -g pnpm@^6.24.2 - name: Install dependencies run: pnpm install - name: Install Composer dependencies if: steps.cache-deps.outputs.cache-hit != 'true' run: pnpm nx composer-install woocommerce - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '7.4' - name: Run build run: pnpm nx build woocommerce - name: Load docker images and start containers. working-directory: plugins/woocommerce run: pnpm exec wc-e2e docker:up - name: Run tests command. working-directory: plugins/woocommerce env: BASE_URL: http://localhost:8086 USER_KEY: admin USER_SECRET: password run: pnpm exec wc-api-tests test api - name: Upload API test report uses: actions/upload-artifact@v3 with: name: api-test-report---pr-${{ github.event.number }} path: | packages/js/api-core-tests/allure-results packages/js/api-core-tests/allure-report retention-days: 7 k6-tests-run: name: Runs k6 Performance tests runs-on: ubuntu-20.04 steps: - name: Checkout code. uses: actions/checkout@v3 - name: Cache modules uses: actions/cache@v3 id: cache-deps with: path: | ~/.pnpm-store plugins/woocommerce/packages plugins/woocommerce/**/vendor key: ${{ runner.os }}-npm-composer-version-${{ secrets.WORKFLOW_CACHE }}-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM run: npm install -g pnpm@^6.24.2 - name: Install dependencies run: pnpm install - name: Install Composer dependencies if: steps.cache-deps.outputs.cache-hit != 'true' run: pnpm nx composer-install woocommerce - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '7.4' - name: Run build run: pnpm nx build woocommerce - name: Workaround to use initialization file with prepopulated data. working-directory: plugins/woocommerce/tests/e2e/docker run: | cp init-sample-products.sh initialize.sh - name: Load docker images and start containers. working-directory: plugins/woocommerce run: pnpm exec wc-e2e docker:up - name: Install k6 run: | curl https://github.com/grafana/k6/releases/download/v0.33.0/k6-v0.33.0-linux-amd64.tar.gz -L | tar xvz --strip-components 1 - name: Run k6 tests run: | ./k6 run plugins/woocommerce/tests/performance/tests/gh-action-pr-requests.js