From 95b679b3fcf40567aa2f34bd1911ce146861a897 Mon Sep 17 00:00:00 2001 From: Hannah Zhu Date: Thu, 4 Aug 2022 02:08:34 -0700 Subject: [PATCH 1/3] split a github action into 2 --- .github/workflows/playwright-onDemand.yml | 94 ++++++++++++++++++++++ .github/workflows/playwright-scheduled.yml | 84 +++++++++++++++++++ .github/workflows/playwright.yml | 36 --------- playwright.config.ts | 7 +- 4 files changed, 183 insertions(+), 38 deletions(-) create mode 100644 .github/workflows/playwright-onDemand.yml create mode 100644 .github/workflows/playwright-scheduled.yml delete mode 100644 .github/workflows/playwright.yml diff --git a/.github/workflows/playwright-onDemand.yml b/.github/workflows/playwright-onDemand.yml new file mode 100644 index 0000000..2100c8d --- /dev/null +++ b/.github/workflows/playwright-onDemand.yml @@ -0,0 +1,94 @@ + +# This is a basic workflow to help you get started with Actions + +name: Playwright tests + +# Controls when the workflow will run +on: + # Triggers the workflow on push or pull request events but only for the "main" branch + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + schedule: + # nightly + - cron: '0 0 * * *' + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + playwright_tests: + # Runs on an ubuntu runner + 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 playwright tests + run: npm run playwright_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.PAT_TOKEN }} + 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.PAT_TOKEN }} + run: | + gh api repos/mspnp/intern-js-pipeline/dispatches \ + --raw-field event_type=rebuild-site diff --git a/.github/workflows/playwright-scheduled.yml b/.github/workflows/playwright-scheduled.yml new file mode 100644 index 0000000..90e9531 --- /dev/null +++ b/.github/workflows/playwright-scheduled.yml @@ -0,0 +1,84 @@ +name: Scheduled Playwright tests + +# Controls when the workflow will run +on: + # Triggers the workflow nightly + schedule: + # nightly + - cron: '0 0 * * *' + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + playwright_tests: + # Runs on an ubuntu runner + 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 playwright tests + run: npm run playwright_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: ${{ steps.date.outputs.date }} + 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.PERSONAL_TOKEN }} + 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 dashboard repo + env: + GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }} + run: | + gh api repos/mspnp/intern-js-pipeline/dispatches \ + --raw-field event_type=rebuild-site \ No newline at end of file diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml deleted file mode 100644 index 987cbff..0000000 --- a/.github/workflows/playwright.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Playwright Tests - -# Controls when the workflow will run -on: - # Triggers the workflow on push or pull request and nightly - push: - pull_request: - schedule: - # nightly - - cron: '0 0 * * *' - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - playwright_tests: - # Runs on an ubuntu runner - 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 playwright tests - run: npm run playwright_test diff --git a/playwright.config.ts b/playwright.config.ts index 869ab87..59b192d 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -30,7 +30,10 @@ const config: PlaywrightTestConfig = { /* Opt out of parallel tests on CI. */ workers: process.env.CI ? 1 : undefined, /* Reporter to use. See https://playwright.dev/docs/test-reporters */ - reporter: 'html', + reporter: [ + ['html', { outputFolder: 'pw-report' }], + ['json', { outputFolder: 'pw-report', outputFile: 'report.json' }] + ], /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ use: { /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */ @@ -39,7 +42,7 @@ const config: PlaywrightTestConfig = { baseURL: 'http://localhost:5000', /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ - trace: 'on-first-retry', + trace: 'on', }, /* Configure projects for major browsers */ From deedfff0e105b8547279d2d0e02db1d806217e96 Mon Sep 17 00:00:00 2001 From: Hannah Zhu Date: Thu, 4 Aug 2022 11:22:36 -0700 Subject: [PATCH 2/3] renamed job in playwright workflow --- .github/workflows/playwright-onDemand.yml | 2 +- .github/workflows/playwright-scheduled.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/playwright-onDemand.yml b/.github/workflows/playwright-onDemand.yml index 2100c8d..29f096d 100644 --- a/.github/workflows/playwright-onDemand.yml +++ b/.github/workflows/playwright-onDemand.yml @@ -19,7 +19,7 @@ on: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: - playwright_tests: + test: # Runs on an ubuntu runner runs-on: ubuntu-latest diff --git a/.github/workflows/playwright-scheduled.yml b/.github/workflows/playwright-scheduled.yml index 90e9531..a0b7e55 100644 --- a/.github/workflows/playwright-scheduled.yml +++ b/.github/workflows/playwright-scheduled.yml @@ -9,7 +9,7 @@ on: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: - playwright_tests: + test: # Runs on an ubuntu runner runs-on: ubuntu-latest From bdbfd911b2f41fd51db948e81a0c88b1dbf89d1e Mon Sep 17 00:00:00 2001 From: Hannah Zhu Date: Thu, 4 Aug 2022 11:45:14 -0700 Subject: [PATCH 3/3] switching workflow to use only 1 PAT --- .github/workflows/playwright-scheduled.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/playwright-scheduled.yml b/.github/workflows/playwright-scheduled.yml index a0b7e55..a3e2a9c 100644 --- a/.github/workflows/playwright-scheduled.yml +++ b/.github/workflows/playwright-scheduled.yml @@ -56,7 +56,7 @@ jobs: with: external_repository: mspnp/intern-js-pipeline publish_branch: gh-pages - personal_token: ${{ secrets.PERSONAL_TOKEN }} + personal_token: ${{ secrets.PAT_TOKEN }} publish_dir: ${{steps.download.outputs.download-path}} destination_dir: test-reports/${{ github.repository }} keep_files: true