Run test by cron #130
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 test by cron | |
on: | |
schedule: | |
# At 2:00 AM UTC on Monday, Wednesday, and Friday | |
- cron: "00 2 * * 1,3,5" | |
concurrency: | |
group: ${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
initialize-cloud: | |
runs-on: ubuntu-22.04 | |
outputs: | |
POOL_NAME: ${{ steps.pool_variables.outputs.POOL_NAME }} | |
POOL_INSTANCE: ${{ steps.pool_variables.outputs.POOL_INSTANCE }} | |
BASE_URL: ${{ steps.cloud_variables.outputs.BASE_URL }} | |
API_URL: ${{ steps.cloud_variables.outputs.API_URL }} | |
BACKUP_ID: ${{ steps.cloud_variables.outputs.BACKUP_ID }} | |
BACKUP_VER: ${{ steps.cloud_variables.outputs.BACKUP_VER }} | |
BACKUP_NAME: ${{ steps.cloud_variables.outputs.BACKUP_NAME }} | |
ACCOUNTS: ${{ steps.accounts.outputs.ACCOUNTS }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version-file: ".nvmrc" | |
- name: Cache node modules | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-node-modules | |
with: | |
path: ~/.npm | |
key: ${{ runner.os }}-qa-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-qa-${{ env.cache-name }}- | |
${{ runner.os }}-qa- | |
${{ runner.os }}- | |
- name: Install deps | |
run: npm ci | |
- name: Generate variables | |
id: cloud_variables | |
uses: ./.github/actions/prepare-tests-variables | |
with: | |
CLI_TOKEN: ${{ secrets.STAGING_TOKEN }} | |
MODE: main | |
- name: Prepare instances | |
id: pool_variables | |
uses: ./.github/actions/prepare-instance | |
with: | |
STRATEGY: reload | |
CLI_TOKEN: ${{ secrets.STAGING_TOKEN }} | |
BASE_URL: ${{ steps.cloud_variables.outputs.BASE_URL }} | |
API_URL: ${{ steps.cloud_variables.outputs.API_URL }} | |
POOL_NAME: ${{ steps.cloud_variables.outputs.POOL_NAME }} | |
POOL_INSTANCE: ${{ steps.cloud_variables.outputs.POOL_INSTANCE }} | |
BACKUP_ID: ${{ steps.cloud_variables.outputs.BACKUP_ID }} | |
- name: Prepare accounts | |
id: accounts | |
uses: ./.github/actions/prepare-accounts | |
with: | |
BASE_URL: ${{ steps.cloud_variables.outputs.BASE_URL }} | |
API_URL: ${{ steps.cloud_variables.outputs.API_URL }} | |
E2E_USER_NAME: ${{ secrets.E2E_USER_NAME }} | |
E2E_USER_PASSWORD: ${{ secrets.E2E_USER_PASSWORD }} | |
E2E_ENCODE_PASS: ${{ secrets.E2E_ENCODE_PASS }} | |
E2E_PERMISSIONS_USERS_PASSWORD: ${{ secrets.E2E_PERMISSIONS_USERS_PASSWORD }} | |
create-run-on-testmo: | |
runs-on: ubuntu-22.04 | |
needs: initialize-cloud | |
outputs: | |
testmo-run-id: ${{ steps.init-testmo.outputs.testmo-run-id }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/testmo/testmo-init | |
with: | |
testmoUrl: ${{ secrets.TESTMO_URL }} | |
testmoToken: ${{ secrets.TESTMO_TOKEN }} | |
testmoRunName: "Playwright nightly run" | |
id: init-testmo | |
run-tests: | |
runs-on: ubuntu-22.04 | |
needs: ["initialize-cloud", "create-run-on-testmo"] | |
strategy: | |
fail-fast: false | |
matrix: | |
shard: [1/2, 2/2] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Run playwright tests | |
uses: ./.github/actions/run-pw-tests | |
with: | |
SHARD: ${{ matrix.shard }} | |
BASE_URL: ${{ needs.initialize-cloud.outputs.BASE_URL }} | |
API_URL: ${{ needs.initialize-cloud.outputs.API_URL }} | |
E2E_USER_NAME: ${{ secrets.E2E_USER_NAME }} | |
E2E_USER_PASSWORD: ${{ secrets.E2E_USER_PASSWORD }} | |
E2E_ENCODE_PASS: ${{ secrets.E2E_ENCODE_PASS }} | |
ACCOUNTS: ${{ needs.initialize-cloud.outputs.ACCOUNTS }} | |
E2E_PERMISSIONS_USERS_PASSWORD: ${{ secrets.E2E_PERMISSIONS_USERS_PASSWORD }} | |
MAILPITURL: ${{ secrets.MAILPITURL }} | |
PW_WORKERS: ${{ vars.PW_WORKERS }} | |
PW_RETRIES: ${{ vars.PW_RETRIES }} | |
URL_TO_RUN: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
PROJECT: "e2e apps-e2e" | |
- name: submit-results-to-testmo | |
if: always() | |
uses: ./.github/actions/testmo/testmo-threads-submit-playwright | |
with: | |
testmoUrl: ${{ secrets.TESTMO_URL }} | |
testmoToken: ${{ secrets.TESTMO_TOKEN }} | |
testmoRunId: ${{ needs.create-run-on-testmo.outputs.testmo-run-id }} | |
tests-complete: | |
if: '!cancelled()' | |
needs: ["initialize-cloud", "run-tests", "create-run-on-testmo"] | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Merge playwright reports | |
uses: ./.github/actions/merge-pw-reports | |
- name: complete testmo report | |
uses: ./.github/actions/testmo/testmo-finish | |
with: | |
testmoUrl: ${{ secrets.TESTMO_URL }} | |
testmoToken: ${{ secrets.TESTMO_TOKEN }} | |
testmoRunId: ${{ needs.create-run-on-testmo.outputs.testmo-run-id }} | |
- name: send message on slack | |
working-directory: ".github" | |
env: | |
run_id: ${{ needs.create-run-on-testmo.outputs.testmo-run-id }} | |
url_to_action: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
testmo_token: ${{ secrets.TESTMO_TOKEN }} | |
environment: ${{ needs.initialize-cloud.outputs.BASE_URL }} | |
slack_webhook_url: ${{ secrets.SLACK_QA_STATUSES_WEBHOOK_URL }} | |
ref_name: ${{github.ref_name}} | |
run: | | |
node workflows/postTestsResults.js \ | |
--run_id "$run_id" \ | |
--testmo_token "$testmo_token" \ | |
--slack_webhook_url "$slack_webhook_url" \ | |
--environment "$environment" \ | |
--url_to_action "$url_to_action" \ | |
--ref_name "$ref_name" | |