Link test repositories to dashboard
Modify Playwright github actions in the test repositories to notify and update dashboard to the latest test results:
Create a personal access token named
DASHBOARD_REPORT_PATwithrepoandworkflowpermissions- If the organization your dashboard is located in requires SSO enable SSO for the PAT token
In the GitHub settings of the test repository or its organization, add the personal access token
DASHBOARD_REPORT_PATto its actions secrets
Append the following steps to the
playwright-onDemand.ymlfile below the current steps in thetestjob.- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
- name: Upload HTML report as Artifact
uses: actions/upload-artifact@v2
if: always()
with:
name: onDemand
path: pw-report/
storeReports:
name: Store reports
if: ${{ always() }}
needs: test
runs-on: ubuntu-latest
steps:
- name: Download all workflow run artifacts
uses: actions/download-artifact@v3
id: download
- name: Publish to external repo
if: always()
uses: peaceiris/actions-gh-pages@v3.7.3
with:
external_repository: mspnp/intern-js-pipeline
publish_branch: gh-pages
personal_token: ${{ secrets.DASHBOARD_REPORT_PAT }}
publish_dir: ${{steps.download.outputs.download-path}}
destination_dir: test-reports/${{ github.repository }}
keep_files: true
user_name: "github-actions[bot]"
user_email: "github-actions[bot]@users.noreply.github.com"
notify-dashboard:
name: Notify Dashboard
if: ${{ always() }}
needs: [test, storeReports]
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
# Runs a single command using the runners shell
- name: Notify docusaurus repo
env:
GITHUB_TOKEN: ${{ secrets.DASHBOARD_REPORT_PAT }}
run: |
gh api repos/mspnp/intern-js-pipeline/dispatches \
--raw-field event_type=rebuild-siteAs a result the
playwright-onDemand.ymlfile should look similar to the following code with extra lines to install additional dependencies if required.# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: Playwright tests
on:
# Runs on push or pull requests and nightly
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
schedule:
# nightly
- cron: '0 0 * * *'
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x, 16.x, 18.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- name: Install dependencies
run: npm ci
- name: Install Playwright
run: npx playwright install --with-deps
- name: Build production build
run: npm run build
- name: Run your tests
run: npm run test
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
- name: Upload HTML report as Artifact
uses: actions/upload-artifact@v2
env:
TAG_NAME: test-report-${{ steps.date.outputs.date }}
if: always()
with:
name: onDemand
path: pw-report/
storeReports:
name: Store reports
if: ${{ always() }}
needs: test
runs-on: ubuntu-latest
steps:
- name: Download all workflow run artifacts
uses: actions/download-artifact@v3
id: download
- name: Publish to external repo
if: always()
uses: peaceiris/actions-gh-pages@v3.7.3
with:
external_repository: mspnp/intern-js-pipeline
publish_branch: gh-pages
personal_token: ${{ secrets.DASHBOARD_REPORT_PAT }}
publish_dir: ${{steps.download.outputs.download-path}}
destination_dir: test-reports/${{ github.repository }}
keep_files: true
user_name: "github-actions[bot]"
user_email: "github-actions[bot]@users.noreply.github.com"
notify-dashboard:
name: Notify Dashboard
if: ${{ always() }}
needs: [test, storeReports]
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
# Runs a single command using the runners shell
- name: Notify docusaurus repo
env:
GITHUB_TOKEN: ${{ secrets.DASHBOARD_REPORT_PAT }}
run: |
gh api repos/mspnp/intern-js-pipeline/dispatches \
--raw-field event_type=rebuild-siteThis allows the
testjob to store the Playwright artifact.storeReportsthen pushes the Playwright artifact to a folder in the dashboard'sgh_pages. Lastly,notify-dashboardsends a trigger to the dashboard notifying it to rebuild.Change the value of
external_repositoryunder thestoreReportsjob frommspnp/intern-js-pipelineto the dashboard's organization and repository nameIn the
notify-dashboardjob, replacemspnp/intern-js-pipelineinrepos/mspnp/intern-js-pipeline/dispatcheswith the dashboard's organization and repository nameTriggering the playwright Github action should now cause the dashboard's rebuild workflow to execute