|
name: Pre merge test |
|
|
|
on: |
|
pull_request: |
|
branches: [main] |
|
paths: |
|
- "**/*.py" |
|
- "**/*.toml" |
|
- "**/*.lock" |
|
- ".github/workflows/devRun.yml" |
|
|
|
env: |
|
FLAKINESS_PROJECT: nirtal85/Playwright-Python-Example |
|
|
|
permissions: |
|
contents: read |
|
pull-requests: write |
|
checks: write |
|
pages: write |
|
id-token: write |
|
|
|
jobs: |
|
merge_test: |
|
timeout-minutes: 15 |
|
runs-on: ubuntu-latest |
|
container: |
|
image: mcr.microsoft.com/playwright:v1.62.1 |
|
steps: |
|
- name: Checkout |
|
uses: actions/checkout@v7 |
|
- name: Set up Python |
|
uses: actions/setup-python@v7 |
|
with: |
|
python-version: "3.14" |
|
- name: Set up uv |
|
uses: astral-sh/setup-uv@v9.0.0 |
|
with: |
|
enable-cache: true |
|
- name: Create venv & install dependencies |
|
run: | |
|
uv venv |
|
uv sync --all-extras --dev |
|
- name: Test with pytest |
|
run: xvfb-run .venv/bin/python -m pytest -m devRun --base-url ${{ vars.BASE_URL }} |
|
- name: Auto-assign reviewers |
|
uses: kentaro-m/auto-assign-action@v2.0.2 |
|
if: success() |
|
- name: Store Playwright Traces and Videos From Failed Tests |
|
if: failure() |
|
uses: actions/upload-artifact@v7 |
|
id: artifact-upload-step |
|
with: |
|
name: test-results |
|
path: test-results/ |
|
retention-days: 7 |
|
- name: Link Playwright Traces And Videos To Allure Results |
|
working-directory: allure-results |
|
if: failure() |
|
run: echo ARTIFACT_URL=${{ steps.artifact-upload-step.outputs.artifact-url }} >> environment.properties |
|
- name: Link Git Information And Browser Version To Allure Results |
|
if: always() |
|
working-directory: allure-results |
|
run: | |
|
{ |
|
echo BUILD_URL=${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} |
|
echo GIT_BRANCH=${{ github.head_ref || github.ref_name }} |
|
echo GIT_COMMIT_ID=${{ github.sha }} |
|
echo GIT_COMMIT_MESSAGE="$(git show -s --format=%s HEAD)" |
|
echo GIT_COMMIT_AUTHOR_NAME="$(git show -s --format='%ae' HEAD)" |
|
echo GIT_COMMIT_TIME="$(git show -s --format=%ci HEAD)" |
|
} >> environment.properties |
|
- name: Generate Allure report |
|
if: always() |
|
run: npx -y allure generate allure-results --output allure-report |
|
- name: Allure PR summary |
|
if: always() |
|
uses: allure-framework/allure-action@v0.8.0 |
|
with: |
|
report-directory: "./allure-report" |
|
github-token: ${{ secrets.GITHUB_TOKEN }} |
|
- name: Upload Pages artifact |
|
if: always() |
|
uses: actions/upload-pages-artifact@v5 |
|
with: |
|
path: allure-report |
|
deploy_pages: |
|
needs: merge_test |
|
if: always() |
|
runs-on: ubuntu-latest |
|
permissions: |
|
pages: write |
|
id-token: write |
|
environment: |
|
name: github-pages |
|
url: ${{ steps.deployment.outputs.page_url }} |
|
steps: |
|
- name: Deploy to GitHub Pages |
|
id: deployment |
|
uses: actions/deploy-pages@v5 |