Skip to content

Run e2e autotests for all app(s) on prod env #1149

Run e2e autotests for all app(s) on prod env

Run e2e autotests for all app(s) on prod env #1149

Workflow file for this run

name: Run e2e autotests
run-name: Run e2e autotests for ${{inputs.app || 'all'}} app(s) on ${{inputs.env || 'prod'}} env
on:
workflow_dispatch:
inputs:
env:
type: choice
required: true
options:
- dev
- test
- prod
app:
type: choice
required: true
default: all
options:
- atlas
- disaster-ninja
- smart-city
- oam
- all
schedule:
- cron: '00 */2 * * 1-5'
jobs:
run_tests:
name: Run e2e tests
timeout-minutes: 60
runs-on: ubuntu-latest
env:
ENVIRONMENT: ${{ github.event.inputs.env || 'prod'}}
APP_NAME: ${{ github.event.inputs.app || 'all' }}
TEST_EMAIL: ${{ secrets.TEST_EMAIL }}
TEST_PASSWORD: ${{ secrets.TEST_PASSWORD }}
DEV_EMAIL: ${{ secrets.DEV_EMAIL }}
DEV_PASSWORD: ${{ secrets.DEV_PASSWORD }}
PROD_EMAIL: ${{ secrets.PROD_EMAIL }}
PROD_PASSWORD: ${{ secrets.PROD_PASSWORD }}
TEST_EMAIL_PRO: ${{ secrets.TEST_AUTOTEST_PRO_EMAIL }}
TEST_PASSWORD_PRO: ${{ secrets.TEST_AUTOTEST_PRO_PASSWORD }}
DEV_EMAIL_PRO: ${{ secrets.DEV_AUTOTEST_PRO_EMAIL }}
DEV_PASSWORD_PRO: ${{ secrets.DEV_AUTOTEST_PRO_PASSWORD }}
PROD_EMAIL_PRO: ${{ secrets.PROD_AUTOTEST_PRO_EMAIL }}
PROD_PASSWORD_PRO: ${{ secrets.PROD_AUTOTEST_PRO_PASSWORD}}
TEST_KEYCLOAK_ADMIN_USER: ${{ secrets.TEST_KEYCLOAK_ADMIN_USER }}
TEST_KEYCLOAK_ADMIN_PASSWORD: ${{ secrets.TEST_KEYCLOAK_ADMIN_PASSWORD }}
DEV_KEYCLOAK_ADMIN_USER: ${{ secrets.DEV_KEYCLOAK_ADMIN_USER }}
DEV_KEYCLOAK_ADMIN_PASSWORD: ${{ secrets.DEV_KEYCLOAK_ADMIN_PASSWORD }}
SLACK_BOT_USER_OAUTH_TOKEN: ${{secrets.PLAYWRIGHT_TOKEN }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '21'
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9
- name: Create .env file
shell: bash
run: |
ENV_PREFIX=$(echo "$ENVIRONMENT" | tr '[:lower:]' '[:upper:]') # Convert to uppercase
EMAIL_VAR_NAME="${ENV_PREFIX}_EMAIL"
PASSWORD_VAR_NAME="${ENV_PREFIX}_PASSWORD"
EMAIL_PRO_VAR_NAME="${ENV_PREFIX}_EMAIL_PRO"
PASSWORD_PRO_VAR_NAME="${ENV_PREFIX}_PASSWORD_PRO"
ADMIN_KEYCLOAK_VAR_NAME="${ENV_PREFIX}_KEYCLOAK_ADMIN_USER"
ADMIN_KEYCLOAK_PASSWORD_VAR_NAME="${ENV_PREFIX}_KEYCLOAK_ADMIN_PASSWORD"
EMAIL="${!EMAIL_VAR_NAME}"
PASSWORD="${!PASSWORD_VAR_NAME}"
EMAIL_PRO="${!EMAIL_PRO_VAR_NAME}"
PASSWORD_PRO="${!PASSWORD_PRO_VAR_NAME}"
ADMIN_KEYCLOAK="${!ADMIN_KEYCLOAK_VAR_NAME}"
ADMIN_KEYCLOAK_PASSWORD="${!ADMIN_KEYCLOAK_PASSWORD_VAR_NAME}"
rm -rf .env.playwright.production
cat <<EOF >> .env.playwright.production
EMAIL=$EMAIL
PASSWORD=$PASSWORD
EMAIL_PRO=$EMAIL_PRO
PASSWORD_PRO=$PASSWORD_PRO
ADMIN_KEYCLOAK=$ADMIN_KEYCLOAK
ADMIN_KEYCLOAK_PASSWORD=$ADMIN_KEYCLOAK_PASSWORD
SLACK_BOT_USER_OAUTH_TOKEN=${SLACK_BOT_USER_OAUTH_TOKEN}
EOF
- name: Cache node modules
id: cache-npm
uses: actions/cache@v4
env:
cache-name: playwright-cache
with:
path: |
~/.npm
~/.cache/ms-playwright/
key: ${{ runner.os }}-${{ env.cache-name }}
restore-keys: |
${{ runner.os }}-${{ env.cache-name }}
${{ runner.os }}-
- name: Update playwright and install dependencies
shell: bash
run: |
pnpm add -g playwright@latest
pnpm add -D @playwright/test@latest
npx playwright install --with-deps
- name: Run Playwright tests
run: npx playwright test --trace on
- name: Upload report to surge.sh
if: ${{ !cancelled() }}
uses: dswistowski/surge-sh-action@v1
with:
domain: 'konturtestplaywright.surge.sh'
project: 'playwright-report'
login: ${{secrets.SURGE_EMAIL}}
token: ${{secrets.SURGE_TOKEN}}
- name: Upload report to workflow artifacts
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: playwright-report
path: playwright-report/
retention-days: 30