Skip to content

Qa 2857 automation formplayer tests automation #48

Qa 2857 automation formplayer tests automation

Qa 2857 automation formplayer tests automation #48

Workflow file for this run

# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: Formplayer Tests
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
repository_dispatch:
types: [ deploy_success ]
workflow_dispatch:
inputs:
environment:
description: 'Environment to run tests against'
required: true
default: 'staging'
type: choice
options:
- staging
concurrency:
group: tests-on-formplayer-${{ github.ref }}
cancel-in-progress: true
jobs:
set_matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix-deploy.outputs.matrix || steps.set-matrix-manual.outputs.matrix || steps.set-matrix-default.outputs.matrix }}
steps:
- id: set-matrix-deploy
if: ${{ github.event_name == 'repository_dispatch' }}
run: |
echo "::set-output name=matrix::{\"environment\": [\"${{ github.event.client_payload.environment }}\"]}"
- id: set-matrix-manual
if: ${{ github.event_name == 'workflow_dispatch' }}
run: |
echo "::set-output name=matrix::{\"environment\": [\"${{ inputs.environment }}\"]}"
- id: set-matrix-default
if: ${{ !contains(github.event_name , 'dispatch') }}
run: |
echo "::set-output name=matrix::{\"environment\": [\"staging\"]}"
build:
needs: set_matrix
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.set_matrix.outputs.matrix) }}
name: Formplayer on '${{ matrix.environment }}'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.9
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r Formplayer/requires.txt
- name: Formplayer Test with pytest
env:
DIMAGIQA_ENV: ${{ matrix.environment }} #${{ secrets.DIMAGIQA_URL }}
DIMAGIQA_LOGIN_USERNAME: ${{ secrets.DIMAGIQA_LOGIN_USERNAME }}
DIMAGIQA_LOGIN_PASSWORD: ${{ secrets.DIMAGIQA_LOGIN_PASSWORD }}
DIMAGIQA_MAIL_USERNAME: ${{ secrets.DIMAGIQA_MAIL_USERNAME }}
DIMAGIQA_MAIL_PASSWORD: ${{ secrets.DIMAGIQA_MAIL_PASSWORD }}
DIMAGIQA_STAGING_AUTH_KEY: ${{ secrets.DIMAGIQA_STAGING_AUTH_KEY }}
DIMAGIQA_PROD_AUTH_KEY: ${{ secrets.DIMAGIQA_PROD_AUTH_KEY }}
run: |
echo "client_payload: ${{ toJson(github.event.client_payload) }}"
echo "matrix environment: ${{ matrix.environment }}"
echo "NOW=$(date +'%m-%d %H:%M')" >> $GITHUB_ENV
echo ${{env.NOW}}
pytest -v --rootdir= Formplayer/testCases -n auto --dist=loadfile --html=report_${{ matrix.environment }}.html
- name: Set email vars
if: ${{ success() || failure() }}
id: configure_email
uses: actions/github-script@v6
env:
JOB_STATUS: ${{ job.status }}
CC_ENV: ${{ matrix.environment }}
with:
script: |
const { promises: fs } = require('fs')
const {JOB_STATUS, NOW, CC_ENV, GITHUB_HEAD_REF} = process.env
const prefix = `[${CC_ENV}] Formplayer Tests - ${JOB_STATUS.toUpperCase()} - Run #${context.runNumber}`
const suffix = `at ${NOW}`
let subject = `${prefix} on "deploy_success" ${suffix}`
if (context.eventName !== "repository_dispatch") {
subject = `${prefix} on branch "${GITHUB_HEAD_REF}" ${suffix}`
}
let bodyFile = './Formplayer/email_pass.md'
if (JOB_STATUS !== 'success') {
bodyFile = './Formplayer/email_fail.md'
}
let actionRunLink = context.payload.repository.html_url + `/actions/runs/${context.runId}`
let bodyContent = await fs.readFile(bodyFile, 'utf8')
bodyContent = bodyContent.replace(/{{actionRunLink}}/g, actionRunLink)
.replace(/{{runNumber}}/g, context.runNumber)
.replace(/{{environment}}/g, CC_ENV)
let receivers = '[email protected]'
if (context.eventName !== "pull_request" || context.eventName !== "push") {
receivers = '[email protected], [email protected]'
}
return {
"subject": subject,
"body": bodyContent,
"reference": Math.random().toString(36).substr(2), // used to prevent threading of similar emails
"receivers": receivers
}
- name: Send Result Email
if: ${{ success() || failure() }}
uses: dawidd6/action-send-mail@v3
with:
server_address: smtp.gmail.com
server_port: 465
username: ${{secrets.DIMAGIQA_MAIL_USERNAME}}
password: ${{secrets.DIMAGIQA_MAIL_PASSWORD}}
subject: ${{ fromJSON(steps.configure_email.outputs.result).subject }}
to: ${{ fromJSON(steps.configure_email.outputs.result).receivers }}
from: <${{secrets.DIMAGIQA_MAIL_USERNAME}}>
html_body: ${{ fromJSON(steps.configure_email.outputs.result).body }}
convert_markdown: true
attachments: ${{ github.workspace }}/report_${{ matrix.environment }}.html
in_reply_to: ${{ fromJSON(steps.configure_email.outputs.result).reference }}
- name: Archive test results
if: ${{ success() || failure() }}
uses: actions/upload-artifact@v2
with:
name: test-result-reports-${{ matrix.environment }}
path: ${{ github.workspace }}/report_${{ matrix.environment }}.html
retention-days: 2