Actions #82
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 10s | |
# 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_MESSAGE: "Test results are available in [Artifacts section](${{ steps.artifact_link.outputs.artifact_url }}) as html-report." | |
if: always() |