GitHubActions #72
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 30s | |
# This step should always run, even if previous steps fail | |
if: always() | |
- 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() | |
- name: Upload artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: html-report | |
path: html-report.zip | |
# Specify the directory structure for the artifact | |
if-no-files-found: error | |
if: always() | |
# Send Slack notification 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 of below link as html-report ${{ steps.artifact_link.outputs.artifact_url }}. | |
# This step should always run, even if previous steps fail | |
if: always() |