Run daily tests in an environment with HPOS disabled #143
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 disabled | |
on: | |
schedule: | |
- cron: '30 2 * * *' | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
permissions: {} | |
jobs: | |
non-hpos-e2e-tests-run: | |
name: Runs E2E tests with HPOS disabled. | |
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@v4 | |
- 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 disabled. | |
working-directory: plugins/woocommerce | |
env: | |
ENABLE_HPOS: 0 | |
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 | |
non-hpos-api-tests-run: | |
name: Runs API tests with HPOS disabled. | |
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@v4 | |
- 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 disabled. | |
working-directory: plugins/woocommerce | |
env: | |
ENABLE_HPOS: 0 | |
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: | |
- non-hpos-api-tests-run | |
- non-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@v4 | |
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 } ) |