Skip to content

Tests validation

Tests validation #680

Workflow file for this run

name: Tests validation
on:
push:
branches:
- main
pull_request:
branches: ["*"]
schedule:
- cron: "0 0 * * *"
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
tests:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Base Setup
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
- name: Install dependencies
run: python -m pip install -U "copier>=9.2.0" jinja2-time "jupyterlab>=4.0.0,<5"
- name: Create the extension
run: |
set -eux
mkdir myextension
python -m copier copy -l -d author_name="My Name" -d repository="https://github.com/test/lab-extension" --vcs-ref HEAD --UNSAFE . myextension
cat myextension/pyproject.toml
- name: Test the extension
working-directory: myextension
run: |
set -eux
YARN_ENABLE_IMMUTABLE_INSTALLS=false jlpm
jlpm test
- name: Install the extension
working-directory: myextension
run: |
set -eux
python -m pip install -v .
cat myextension/labextension/package.json
- name: List extensions
run: |
jupyter labextension list
- name: Install UI tests dependencies
working-directory: myextension/ui-tests
env:
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
YARN_ENABLE_IMMUTABLE_INSTALLS: false
run: jlpm install
- name: Set up browser cache
uses: actions/cache@v4
with:
path: |
${{ github.workspace }}/pw-browsers
key: ${{ runner.os }}-${{ hashFiles('myextension/ui-tests/yarn.lock') }}
- name: Install browser
run: jlpm playwright install chromium
working-directory: myextension/ui-tests
- name: Execute integration tests
working-directory: myextension/ui-tests
run: |
jlpm playwright test
- name: Upload Playwright Test report
if: always()
uses: actions/upload-artifact@v4
with:
name: extension-playwright-tests
path: |
myextension/ui-tests/test-results
myextension/ui-tests/playwright-report
test-mimerenderer:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Base Setup
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
- name: Install dependencies
run: python -m pip install -U "copier>=9.2.0" jinja2-time "jupyterlab>=4.0.0,<5"
- name: Create the extension
run: |
set -eux
mkdir myextension
python -m copier copy -l -d kind=mimerenderer -d viewer_name="My Viewer" -d mimetype="application/vnd.my_org.my_type" -d mimetype_name="my_type" -d file_extension=".my_type" -d author_name="My Name" -d repository="https://github.com/test/lab-extension" --vcs-ref HEAD --UNSAFE . myextension
- name: Install the extension
working-directory: myextension
run: |
set -eux
YARN_ENABLE_IMMUTABLE_INSTALLS=false python -m pip install -v .
- name: List extensions
run: |
jupyter labextension list
- name: Install UI tests dependencies
working-directory: myextension/ui-tests
env:
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
YARN_ENABLE_IMMUTABLE_INSTALLS: false
run: jlpm install
- name: Set up browser cache
uses: actions/cache@v4
with:
path: |
${{ github.workspace }}/pw-browsers
key: ${{ runner.os }}-${{ hashFiles('myextension/ui-tests/yarn.lock') }}
- name: Install browser
run: jlpm playwright install chromium
working-directory: myextension/ui-tests
- name: Execute integration tests
working-directory: myextension/ui-tests
run: |
# Generate reference snapshot first
jlpm playwright test -u
jlpm playwright test
- name: Upload Playwright Test report
if: always()
uses: actions/upload-artifact@v4
with:
name: mimerenderer-playwright-tests
path: |
myextension/ui-tests/test-results
myextension/ui-tests/playwright-report