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 package/woocommerce/plugins/woocommerce/packages package/woocommerce/plugins/woocommerce/**/vendor key: ${{ runner.os }}-test-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM run: npm install -g pnpm - 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: 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 with: path: | ~/.pnpm-store key: ${{ runner.os }}-npm-${{ hashFiles('**/pnpm-lock.yaml') }} - name: Install PNPM run: npm install -g pnpm - name: Install dependencies run: pnpm install - name: Install Composer dependencies run: pnpm nx composer-install woocommerce - 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:8084 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 with: path: | ~/.pnpm-store key: ${{ runner.os }}-npm-${{ hashFiles('**/pnpm-lock.yaml') }} - name: Install PNPM run: npm install -g pnpm - name: Install dependencies run: pnpm install - name: Install Composer dependencies run: pnpm nx composer-install woocommerce - 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