Skip to content

GitHubActions

GitHubActions #75

Workflow file for this run

# Name of the GitHub Actions workflow
name: Playwright Github Actions
# Define when to trigger this workflow
on:
push:
branches:
- main
pull_request:
branches:
- main
# Define the jobs to run in this workflow
jobs:
# Define a job named 'build'
build:
# Specify the operating system for this job
runs-on: ubuntu-latest
env:
SLACK_WEBHOOK_URL: ${{secrets.SLACK_WEBHOOK_URL}}
# Define the steps to execute in this job
steps:
# Step to checkout the source code from the repository
- name: Checkout code
uses: actions/checkout@v2
# Step to set up the Node.js version
- name: Install node js v20
uses: actions/setup-node@v2
with:
node-version: "20"
# Step to install Node.js dependencies
- name: Install dependencies
run: npm ci
# Step to install Chrome browser for Playwright
- name: Install Chrome browser for Playwright
run: npx playwright install chrome
# Step to run tests with qa as environment variable similarly we can define qa|dev|qaApi|devApi
- name: Run tests
run: npm run test:serial
env:
npm_config_ENV: "qa"
# Step to wait for the job to complete
- name: Wait for job completion
# Adjust the wait time as needed
run: sleep 30s
# This step should always run, even if previous steps fail
if: always()
# Check if HTML report exists
- name: Check if HTML report exists
run: |
if [ -d "html-report" ]; then
echo "HTML report exists."
else
echo "HTML report does not exist. Exiting..."
exit 1
fi
if: always()
# Step to zip html-report folder
- name: Zip HTML report
run: zip -r html-report.zip html-report
# This step should always run, even if previous steps fail
if: always()
# Step to upload artifact
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: html-report
path: html-report.zip
if-no-files-found: error
if: always()
# Step to generate artifact link
- name: Generate artifact link
id: artifact_link
run: echo "::set-output name=artifact_url::https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
if: always()
# Send Slack notification with html-reprt url once the tests are completed
- name: Send Slack notification
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_CHANNEL: "#playwright-test-reports"
SLACK_USERNAME: Playwright GitHub Actions
SLACK_TITLE: "Test results are available in [Artifacts section](${{ steps.artifact_link.outputs.artifact_url }}) as html-report."
if: always()