name: UI Tests on: push: branches: ["main"] pull_request: concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} cancel-in-progress: true jobs: build: name: Build runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Build uses: ./.github/actions/build-dist ui-tests: needs: [build] runs-on: ubuntu-20.04 timeout-minutes: 20 strategy: fail-fast: false matrix: browser: [firefox, chromium] steps: - name: Checkout uses: actions/checkout@v3 - name: Base Setup uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 - uses: actions/download-artifact@v3 with: name: notebook-dist-${{ github.run_number }} path: ./dist - name: Install the package run: | cd dist python -m pip install -vv notebook*.whl - name: Install the test dependencies run: | cd ui-tests jlpm jlpm playwright install - name: Test run: | cd ui-tests jlpm test --browser ${{ matrix.browser }} - name: Upload Playwright Test assets if: always() uses: actions/upload-artifact@v3 with: name: notebook-${{ matrix.browser }}-test-assets path: | ui-tests/test-results - name: Upload Playwright Test report if: always() uses: actions/upload-artifact@v3 with: name: notebook-${{ matrix.browser }}-test-report path: | ui-tests/playwright-report - name: Update snapshots if: failure() run: | cd ui-tests # remove previous snapshots from other browser jlpm rimraf "test/**/*-snapshots/*.png" # generate new snapshots jlpm run test:update --browser ${{ matrix.browser }} - name: Upload updated snapshots if: failure() uses: actions/upload-artifact@v3 with: name: notebook-${{ matrix.browser }}-updated-snapshots path: ui-tests/test