woocommerce/.github/workflows/pr-build-and-e2e-tests.yml

156 lines
5.2 KiB
YAML
Raw Normal View History

2022-04-27 14:29:33 +00:00
name: Run tests against PR
on: pull_request
2022-04-21 16:45:12 +00:00
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.
2022-04-21 16:45:12 +00:00
uses: actions/checkout@v3
2021-01-22 07:23:07 +00:00
2022-04-21 16:45:12 +00:00
- name: Cache modules
uses: actions/cache@v3
2022-04-27 14:29:33 +00:00
id: cache-deps
2022-04-21 16:45:12 +00:00
with:
path: |
~/.pnpm-store
2022-04-27 16:05:01 +00:00
plugins/woocommerce/packages
plugins/woocommerce/**/vendor
key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }}
2022-04-21 16:45:12 +00:00
- name: Install PNPM
run: npm install -g pnpm
2022-03-31 22:33:28 +00:00
- name: Install dependencies
2022-04-21 16:45:12 +00:00
run: pnpm install
- name: Install Composer dependencies
2022-04-27 14:29:33 +00:00
if: steps.cache-deps.outputs.cache-hit != 'true'
run: pnpm nx composer-install-no-dev woocommerce
- name: Run build
run: pnpm nx build woocommerce
2022-03-31 22:08:52 +00:00
- name: Load docker images and start containers.
working-directory: plugins/woocommerce
2022-04-21 16:45:12 +00:00
run: pnpm exec wc-e2e docker:up
2022-03-31 22:08:52 +00:00
- 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 }}
2022-04-21 16:45:12 +00:00
run: pnpm exec wc-e2e test:e2e
- name: Archive E2E test screenshots
2022-04-21 16:45:12 +00:00
uses: actions/upload-artifact@v3
2022-03-28 16:23:15 +00:00
if: always()
with:
name: E2E Screenshots
path: plugins/woocommerce/tests/e2e/screenshots
if-no-files-found: ignore
retention-days: 5
2021-11-16 15:45:12 +00:00
api-tests-run:
name: Runs API tests.
runs-on: ubuntu-20.04
2021-11-16 15:45:12 +00:00
steps:
- name: Checkout code.
2022-04-21 16:45:12 +00:00
uses: actions/checkout@v3
2021-11-16 15:45:12 +00:00
2022-04-21 16:45:12 +00:00
- name: Cache modules
uses: actions/cache@v3
2022-04-27 16:05:01 +00:00
id: cache-deps
2022-04-21 16:45:12 +00:00
with:
path: |
~/.pnpm-store
2022-04-27 16:05:01 +00:00
plugins/woocommerce/packages
plugins/woocommerce/**/vendor
key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }}
2022-04-21 16:45:12 +00:00
- name: Install PNPM
run: npm install -g pnpm
2022-03-31 22:33:28 +00:00
- name: Install dependencies
2022-04-21 16:45:12 +00:00
run: pnpm install
2021-11-16 15:45:12 +00:00
- name: Install Composer dependencies
2022-04-27 16:05:01 +00:00
if: steps.cache-deps.outputs.cache-hit != 'true'
run: pnpm nx composer-install woocommerce
- name: Run build
run: pnpm nx build woocommerce
2022-03-31 21:53:27 +00:00
- name: Load docker images and start containers.
working-directory: plugins/woocommerce
2022-04-21 16:45:12 +00:00
run: pnpm exec wc-e2e docker:up
2022-03-31 21:53:27 +00:00
2021-11-16 15:45:12 +00:00
- name: Run tests command.
2022-04-27 14:29:33 +00:00
working-directory: plugins/woocommerce
2021-11-16 15:45:12 +00:00
env:
2022-04-27 14:45:10 +00:00
BASE_URL: http://localhost:8086
2022-01-14 16:54:32 +00:00
USER_KEY: admin
USER_SECRET: password
2022-04-21 16:45:12 +00:00
run: pnpm exec wc-api-tests test api
- name: Upload API test report
2022-04-21 16:45:12 +00:00
uses: actions/upload-artifact@v3
with:
name: api-test-report---pr-${{ github.event.number }}
path: |
2022-04-27 14:29:33 +00:00
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.
2022-04-21 16:45:12 +00:00
uses: actions/checkout@v3
2022-04-21 16:45:12 +00:00
- name: Cache modules
uses: actions/cache@v3
2022-04-27 16:05:01 +00:00
id: cache-deps
2022-04-21 16:45:12 +00:00
with:
path: |
~/.pnpm-store
2022-04-27 16:05:01 +00:00
plugins/woocommerce/packages
plugins/woocommerce/**/vendor
key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }}
2022-04-21 16:45:12 +00:00
- name: Install PNPM
run: npm install -g pnpm
2022-03-31 22:33:28 +00:00
- name: Install dependencies
2022-04-21 16:45:12 +00:00
run: pnpm install
- name: Install Composer dependencies
2022-04-27 16:05:01 +00:00
if: steps.cache-deps.outputs.cache-hit != 'true'
run: pnpm nx composer-install woocommerce
- name: Run build
run: pnpm nx build woocommerce
2022-03-31 22:55:14 +00:00
- name: Workaround to use initialization file with prepopulated data.
working-directory: plugins/woocommerce/tests/e2e/docker
2022-03-31 22:55:14 +00:00
run: |
cp init-sample-products.sh initialize.sh
2022-03-31 22:08:52 +00:00
- name: Load docker images and start containers.
working-directory: plugins/woocommerce
2022-04-21 16:45:12 +00:00
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