pytest-playwright is added
This commit is contained in:
parent
ed6dcb252f
commit
c9e377ce24
106
tasks/pytest-playwright/task.yaml
Normal file
106
tasks/pytest-playwright/task.yaml
Normal file
@ -0,0 +1,106 @@
|
||||
apiVersion: tekton.dev/v1beta1
|
||||
kind: Task
|
||||
metadata:
|
||||
name: pytest-playwright
|
||||
spec:
|
||||
params:
|
||||
- name: subdirectory
|
||||
type: string
|
||||
description: Subdirectory within the workspace where the tests are located
|
||||
default: ""
|
||||
|
||||
- name: playwright-python-version
|
||||
type: string
|
||||
description: Python version to use (e.g., v1.42.0-jammy)
|
||||
default: "v1.42.0-jammy"
|
||||
|
||||
- name: pypi-username
|
||||
type: string
|
||||
description: PyPI username (fallback)
|
||||
default: ""
|
||||
|
||||
- name: pypi-password
|
||||
type: string
|
||||
description: PyPI password or token (fallback)
|
||||
default: ""
|
||||
|
||||
workspaces:
|
||||
- name: source
|
||||
description: Workspace containing the cloned Git repository from git-clone-checkout
|
||||
|
||||
- name: pypi-auth
|
||||
optional: true
|
||||
description: |
|
||||
A workspace containing authentication credentials for a private PyPI repository.
|
||||
Should include:
|
||||
- username
|
||||
- password
|
||||
|
||||
steps:
|
||||
- name: install-dependencies
|
||||
image: mcr.microsoft.com/playwright/python:$(playwright-python-version)
|
||||
workingDir: /workspace/source
|
||||
script: |
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
if [ -n "$(params.subdirectory)" ]; then
|
||||
cd "$(params.subdirectory)"
|
||||
fi
|
||||
|
||||
PYPI_USER="$(params.pypi-username)"
|
||||
PYPI_PASS="$(params.pypi-password)"
|
||||
|
||||
if [ -f /workspace/pypi-auth/username ]; then
|
||||
PYPI_USER=$(cat /workspace/pypi-auth/username)
|
||||
fi
|
||||
if [ -f /workspace/pypi-auth/password ]; then
|
||||
PYPI_PASS=$(cat /workspace/pypi-auth/password)
|
||||
fi
|
||||
|
||||
|
||||
echo "🔧 Installing dependencies..."
|
||||
pip install --upgrade pip --root-user-action=ignore
|
||||
pip install pytest --root-user-action=ignore
|
||||
|
||||
if [ -f pyproject.toml ]; then
|
||||
echo "[INFO] Poetry project detected"
|
||||
pip install poetry tomli --root-user-action=ignore
|
||||
|
||||
REPO_NAME=$(python3 -c 'import tomli; print(tomli.load(open("pyproject.toml", "rb"))["tool"]["poetry"]["source"][0]["name"])')
|
||||
REPO_URL=$(python3 -c 'import tomli; print(tomli.load(open("pyproject.toml", "rb"))["tool"]["poetry"]["source"][0]["url"])')
|
||||
|
||||
echo "[INFO] Configuring poetry source '$REPO_NAME' → $REPO_URL"
|
||||
poetry config virtualenvs.in-project true
|
||||
poetry config repositories."$REPO_NAME" "$REPO_URL"
|
||||
poetry config http-basic."$REPO_NAME" "$PYPI_USER" "$PYPI_PASS"
|
||||
|
||||
poetry lock --no-cache --regenerate
|
||||
poetry install
|
||||
elif [ -f requirements.txt ]; then
|
||||
echo "[INFO] Using pip to install dependencies"
|
||||
pip install -r requirements.txt --root-user-action=ignore
|
||||
else
|
||||
echo "[WARN] No dependency file found"
|
||||
fi
|
||||
|
||||
echo "🧪 Running tests..."
|
||||
set +e
|
||||
if [ -f pyproject.toml ]; then
|
||||
poetry run pytest --verbose --junitxml=/workspace/source/pytest-results.xml
|
||||
else
|
||||
pytest --verbose --junitxml=/workspace/source/pytest-results.xml
|
||||
fi
|
||||
TEST_EXIT_CODE=$?
|
||||
set -e
|
||||
|
||||
echo "📄 Checking test results..."
|
||||
if [ -f /workspace/source/pytest-results.xml ]; then
|
||||
echo "Test results:"
|
||||
cat /workspace/source/pytest-results.xml
|
||||
else
|
||||
echo "❌ No test results found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit $TEST_EXIT_CODE
|
Loading…
x
Reference in New Issue
Block a user