diff --git a/.github/workflows/playwright-onDemand.yml b/.github/workflows/playwright-onDemand.yml new file mode 100644 index 0000000..29f096d --- /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: + test: + # 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..a3e2a9c --- /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: + test: + # 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.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 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 */