Skip to content

chore: get playwright working again #527

chore: get playwright working again

chore: get playwright working again #527

Workflow file for this run

name: Playwright Tests
on:
push:
branches: "**"
pull_request:
branches: "**"
# schedule:
# - cron: "30 22 * * *"
workflow_dispatch:
inputs:
chart_version:
description: 'weave gitops enterprise chart version'
required: true
type: string
env:
MANAGEMENT_CLUSTER_TYPE: "kind"
CLUSTER_NAME: run-playwright-tests-${{ github.run_id }}
USER_NAME: wego-admin
PASSWORD: ${{ secrets.CLUSTERS_CONFIG_PASSWORD }}
WEAVE_GITOPS_DEV_SOPS_KEY: ${{ secrets.WEAVE_GITOPS_DEV_SOPS_KEY }}
CLUSTER_ADMIN_PASSWORD_HASH: ${{ secrets.CLUSTERS_CONFIG_PASSWORD }}
WEAVEWORKS_BOT_TOKEN: ${{ secrets.WEAVEWORKS_BOT_TOKEN }}
ENTERPRISE_CHART_VERSION: ${{ inputs.chart_version }}
DEFAULT_ENTERPRISE_CHART_VERSION: "0.31.0-9-gdae6755"
jobs:
build_and_run_tests:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name : Set URL environment Variable
run: |
echo "URL=http://localhost:8000" >> $GITHUB_ENV
- name: Check if the URL variable is available
run: |
echo ${{ env.URL }}
- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install flake8 pytest
pip install pytest_dotenv
pip install pytest-reporter-html1
- name: Install pre-commit
run: |
pip install pre-commit
- name: Install flux
run: |
curl -s https://fluxcd.io/install.sh | sudo bash
flux version --client
- name: Install kubectl
run: |
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl version --client
# - name: Install kind
# run: |
# curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
# chmod +x ./kind
# sudo mv ./kind /usr/local/bin/kind
# which kind
# kind version
- name: Kubernetes KinD Cluster
id: kind
uses: helm/kind-action@v1
with:
kubectl_version: v1.31.0
registry: true
registry_name: my-registry
registry_port: 5001
registry_enable_delete: true
- name: Install playwright
run: |
pip install pytest-playwright
- name: Install chromium
run: |
playwright install chromium
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 ./playwright --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 ./playwright --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Extract branch name
run: |
echo "branch_name=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
id: extract_branch
# - name: Setup wego enterprise
# run: |
# kubectl create namespace flux-system
# flux install
# kubectl create secret generic git-provider-credentials -n flux-system --from-literal=username="weave-gitops-bot" --from-literal=password="${WEAVEWORKS_BOT_TOKEN}"
# sed -i 's/BRANCH_NAME/${{ steps.extract_branch.outputs.branch_name }}/' ./playwright/utils/scripts/resources/flux-system-gitrepo.yaml
# ./playwright/utils/scripts/wego-enterprise.sh setup ./utils/scripts
#
# - name: Install violating-app
# run: |
# kubectl apply -f ./playwright/utils/data/violating-podinfo-kustomization.yaml
#
# - name: Install policies
# run: |
# kubectl apply -f ./playwright/utils/data/policies.yaml
#
# - name: Flux reconcile violating app
# run: |
# flux reconcile kustomization violating-podinfo -n default --with-source || true
# kubectl get pods -A
#
# - name: Install gitopsset-configmaps
# run: |
# kubectl apply -f ./playwright/utils/data/gitops-sets-kustomization.yaml
#
# - name: run tests
# if: success()
# run: |
# pytest -s -v --video=retain-on-failure --screenshot=only-on-failure --template=html1/index.html --report=test-results/test-run-report.html -o junit_family=xunit2 --junit-xml=test-results/junit_test_report.xml
#
# - name: Generate tests report
# if: always()
# uses: pmeier/pytest-results-action@main
# with:
# path: test-results/junit_test_report.xml
# summary: true
# display-options: fEX
# fail-on-empty: true
#
# - name: Upload test report
# uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
# if: success() || failure()
# with:
# name: playwright-tests-report
# path: test-results/
# retention-days: 3
#
# - name: Download test artifacts
# uses: actions/[email protected]
# if: success() || failure()
# with:
# name: playwright-tests-report
# path: test-results/
#
# - name: Display structure of downloaded files
# if: always()
# run: ls -R
# working-directory: test-results
#
# - name: Publish test report
# id: test_summary
# uses: mikepenz/[email protected]
# if: success() || failure()
# with:
# report_paths: test-results/junit_test_report.xml
#
# - name: Notify Slack
# id: slack
# uses: slackapi/[email protected]
# with:
# channel-id: C058RPVS5DZ
# payload: |
# {
# "blocks": [
# {
# "type": "section",
# "text": {
# "type": "mrkdwn",
# "text": "*Tests result:*"
# }
# },
# {
# "type": "section",
# "text": {
# "type": "mrkdwn",
# "text": "Tests :test_tube:\t\t\tPassed :check:\t\t\tSkipped :arrow_right_hook:\t\t\tFailed :x:\n>executed:*${{steps.test_summary.outputs.total}}*\t\t\tpassed:*${{steps.test_summary.outputs.passed}}*\t\t\tskipped:*${{steps.test_summary.outputs.skipped}}*\t\t\tfailed:*${{steps.test_summary.outputs.failed}}*"
# }
# },
# {
# "type": "section",
# "text": {
# "type": "mrkdwn",
# "text": "*View result on Github:* ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
# }
# }
# ]
# }
# if: always()
# env:
# SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
# SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
- name : Delete test cluster
if: success() || failure()
run: |
kind delete clusters --all