Run daily tests in an environment with HPOS enabled #53
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: Run daily tests in an environment with HPOS enabled | |
on: | |
schedule: | |
- cron: '30 2 * * *' | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
permissions: {} | |
jobs: | |
hpos-e2e-tests-run: | |
name: Runs E2E tests with HPOS enabled. | |
runs-on: ubuntu-20.04 | |
permissions: | |
contents: read | |
env: | |
ALLURE_RESULTS_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/e2e-pw/allure-results | |
ALLURE_REPORT_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/e2e-pw/allure-report | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup WooCommerce Monorepo | |
uses: ./.github/actions/setup-woocommerce-monorepo | |
with: | |
install: '@woocommerce/plugin-woocommerce...' | |
build: '@woocommerce/plugin-woocommerce' | |
- name: Load docker images and start containers with HPOS enabled. | |
working-directory: plugins/woocommerce | |
env: | |
ENABLE_HPOS: 1 | |
run: pnpm --filter=@woocommerce/plugin-woocommerce env:test:cot | |
- name: Download and install Chromium browser. | |
working-directory: plugins/woocommerce | |
run: pnpm exec playwright install chromium | |
- name: Run Playwright E2E tests. | |
timeout-minutes: 60 | |
id: run_playwright_e2e_tests | |
env: | |
USE_WP_ENV: 1 | |
working-directory: plugins/woocommerce | |
run: pnpm exec playwright test --config=tests/e2e-pw/playwright.config.js | |
- name: Generate Playwright E2E Test report. | |
id: generate_e2e_report | |
if: | | |
always() && | |
( | |
steps.run_playwright_e2e_tests.conclusion != 'cancelled' || | |
steps.run_playwright_e2e_tests.conclusion != 'skipped' | |
) | |
working-directory: plugins/woocommerce | |
run: pnpm exec allure generate --clean ${{ env.ALLURE_RESULTS_DIR }} --output ${{ env.ALLURE_REPORT_DIR }} | |
- name: Archive Playwright E2E test report | |
if: | | |
always() && | |
steps.generate_e2e_report.conclusion == 'success' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: e2e-test-report---pr-${{ github.run_number }} | |
path: | | |
${{ env.ALLURE_RESULTS_DIR }} | |
${{ env.ALLURE_REPORT_DIR }} | |
if-no-files-found: ignore | |
retention-days: 5 | |
hpos-api-tests-run: | |
name: Runs API tests with HPOS enabled. | |
runs-on: ubuntu-20.04 | |
permissions: | |
contents: read | |
env: | |
ALLURE_RESULTS_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/api-core-tests/api-test-report/allure-results | |
ALLURE_REPORT_DIR: ${{ github.workspace }}/plugins/woocommerce/tests/api-core-tests/api-test-report/allure-report | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup WooCommerce Monorepo | |
uses: ./.github/actions/setup-woocommerce-monorepo | |
with: | |
install: '@woocommerce/plugin-woocommerce...' | |
build: '@woocommerce/plugin-woocommerce' | |
- name: Load docker images and start containers with HPOS enabled. | |
working-directory: plugins/woocommerce | |
env: | |
ENABLE_HPOS: 1 | |
run: pnpm --filter=@woocommerce/plugin-woocommerce env:test:cot | |
- name: Run Playwright API tests. | |
id: run_playwright_api_tests | |
working-directory: plugins/woocommerce | |
env: | |
BASE_URL: http://localhost:8086 | |
USER_KEY: admin | |
USER_SECRET: password | |
run: pnpm exec playwright test --config=tests/api-core-tests/playwright.config.js | |
- name: Generate Playwright API Test report. | |
id: generate_api_report | |
if: | | |
always() && | |
( | |
steps.run_playwright_api_tests.conclusion != 'cancelled' || | |
steps.run_playwright_api_tests.conclusion != 'skipped' | |
) | |
working-directory: plugins/woocommerce | |
run: pnpm exec allure generate --clean ${{ env.ALLURE_RESULTS_DIR }} --output ${{ env.ALLURE_REPORT_DIR }} | |
- name: Archive Playwright API test report | |
if: | | |
always() && | |
steps.generate_api_report.conclusion == 'success' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: api-test-report---pr-${{ github.run_number }} | |
path: | | |
${{ env.ALLURE_RESULTS_DIR }} | |
${{ env.ALLURE_REPORT_DIR }} | |
if-no-files-found: ignore | |
retention-days: 5 | |
test-summary: | |
name: Post test results | |
if: | | |
always() && | |
! github.event.pull_request.head.repo.fork && | |
( | |
contains( needs.*.result, 'success' ) || | |
contains( needs.*.result, 'failure' ) | |
) | |
runs-on: ubuntu-20.04 | |
permissions: | |
contents: read | |
needs: [hpos-api-tests-run, hpos-e2e-tests-run] | |
steps: | |
- name: Create dirs | |
run: | | |
mkdir -p repo | |
mkdir -p artifacts/api | |
mkdir -p artifacts/e2e | |
mkdir -p output | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
path: repo | |
- name: Download API test report artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: api-test-report---pr-${{ github.run_number }} | |
path: artifacts/api | |
- name: Download Playwright E2E test report artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: e2e-test-report---pr-${{ github.run_number }} | |
path: artifacts/e2e | |
- name: Prepare test summary | |
id: prepare-test-summary | |
uses: actions/github-script@v6 | |
env: | |
API_SUMMARY_PATH: ${{ github.workspace }}/artifacts/api/allure-report/widgets/summary.json | |
E2E_PW_SUMMARY_PATH: ${{ github.workspace }}/artifacts/e2e/allure-report/widgets/summary.json | |
with: | |
result-encoding: string | |
script: | | |
const script = require( './repo/.github/workflows/scripts/prepare-test-summary-daily.js' ) | |
return await script( { core } ) | |
publish-test-reports: | |
name: Publish test reports | |
if: | | |
always() && | |
! github.event.pull_request.head.repo.fork && | |
( | |
contains( needs.*.result, 'success' ) || | |
contains( needs.*.result, 'failure' ) | |
) | |
runs-on: ubuntu-20.04 | |
needs: [hpos-api-tests-run, hpos-e2e-tests-run] | |
env: | |
GITHUB_TOKEN: ${{ secrets.REPORTS_TOKEN }} | |
RUN_ID: ${{ github.run_id }} | |
COMMIT_SHA: ${{ github.event.pull_request.head.sha }} | |
steps: | |
- name: Publish test reports | |
env: | |
API_ARTIFACT: api-test-report---pr-${{ github.run_number }} | |
E2E_ARTIFACT: e2e-test-report---pr-${{ github.run_number }} | |
run: | | |
gh workflow run publish-test-reports-daily.yml \ | |
-f run_id=$RUN_ID \ | |
-f api_artifact=$API_ARTIFACT \ | |
-f e2e_artifact=$E2E_ARTIFACT \ | |
-f s3_root=public \ | |
--repo woocommerce/woocommerce-test-reports |