Tests #1035
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Tests | |
on: | |
push: | |
branches: ["main"] | |
pull_request: | |
schedule: | |
- cron: "0 8 * * *" | |
jobs: | |
# Run "pre-commit run --all-files --hook-stage=manual" | |
pre-commit: | |
name: Run pre-commit hook | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
- name: Install dependencies | |
run: | | |
pip install jupyterlab | |
pip install -e . | |
jlpm | |
- name: Run pre-commit | |
uses: pre-commit/[email protected] | |
with: | |
extra_args: --all-files --hook-stage=manual | |
- name: Help message if pre-commit fail | |
if: ${{ failure() }} | |
run: | | |
echo "You can install pre-commit hooks to automatically run formatting" | |
echo "on each commit with:" | |
echo " pre-commit install" | |
echo "or you can run by hand on staged files with" | |
echo " pre-commit run" | |
echo "or after-the-fact on already committed files with" | |
echo " pre-commit run --all-files --hook-stage=manual" | |
- name: Lint frontend | |
run: | | |
jlpm run lint:check | |
test-js: | |
name: Test JavaScript | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
- name: Install dependencies | |
run: | | |
pip install jupyterlab | |
pip install -e . | |
jlpm | |
- name: Run Tests | |
run: | | |
set -eux | |
jlpm run test | |
test-py: | |
name: Test Python | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 20 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
python-version: ["3.8", "3.11"] | |
include: | |
- os: ubuntu-latest | |
python-version: "pypy-3.8" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Base Setup | |
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
- name: Install the Python dependencies | |
run: | | |
pip install -e ".[test]" codecov | |
python -m pip install jupyterlab | |
- name: List installed packages | |
run: | | |
pip freeze | |
pip check | |
- name: Run the tests with Coverage | |
if: ${{ !startsWith(matrix.python-version, 'pypy') && !startsWith(runner.os, 'Windows') }} | |
run: | | |
python -m pytest -vv --cov jupyter_collaboration --cov-branch --cov-report term-missing:skip-covered | |
- name: Run the tests on pypy and Windows | |
if: ${{ startsWith(matrix.python-version, 'pypy') || startsWith(runner.os, 'Windows') }} | |
run: | | |
python -W ignore::ImportWarning -m pytest -vv | |
- name: Coverage | |
if: ${{ !startsWith(matrix.python-version, 'pypy') && !startsWith(runner.os, 'Windows') }} | |
run: | | |
codecov | |
- name: Build the extension | |
if: ${{ !startsWith(matrix.python-version, 'pypy') }} | |
shell: bash | |
run: | | |
set -eux | |
jupyter server extension list | |
jupyter server extension list 2>&1 | grep -ie "jupyter_collaboration.*OK" | |
jupyter labextension list | |
jupyter labextension list 2>&1 | grep -ie "@jupyter/collaboration-extension.*OK" | |
python -m jupyterlab.browser_check | |
test_minimum_versions: | |
name: Test Minimum Versions | |
needs: [pre-commit, test-js, test-py] | |
timeout-minutes: 20 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Base Setup | |
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
with: | |
python_version: "3.11" | |
- name: Install minimum versions | |
uses: jupyterlab/maintainer-tools/.github/actions/install-minimums@v1 | |
- name: Run the unit tests | |
run: | | |
pytest -vv -W default || pytest -vv -W default --lf | |
test_prereleases: | |
name: Test Prereleases | |
needs: [pre-commit, test-js, test-py] | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Base Setup | |
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
- name: Install the Python dependencies | |
run: | | |
pip install --pre -e ".[test]" | |
- name: List installed packages | |
run: | | |
pip freeze | |
pip check | |
- name: Run the tests | |
run: | | |
pytest -vv -W default || pytest -vv --lf | |
make_sdist: | |
name: Make SDist | |
needs: [pre-commit, test-js, test-py] | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
- uses: jupyterlab/maintainer-tools/.github/actions/make-sdist@v1 | |
test_sdist: | |
runs-on: ubuntu-latest | |
needs: [make_sdist] | |
name: Install from SDist and Test | |
timeout-minutes: 15 | |
steps: | |
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
- name: Download sdist | |
uses: actions/download-artifact@v3 | |
- name: Install From SDist | |
shell: bash | |
run: | | |
echo "::group::Install from SDist" | |
set -ex | |
cd sdist | |
mkdir test | |
tar --strip-components=1 -zxvf *.tar.gz -C ./test | |
cd test | |
python -m pip install ".[test]" | |
python -m pip install jupyterlab | |
echo "::endgroup::" | |
- name: Run Test | |
shell: bash | |
run: | | |
echo "::group::Run test" | |
set -ex | |
cd sdist/test | |
python -m pytest -vv -raXxs --durations 10 --color=yes | |
jupyter server extension list | |
jupyter server extension list 2>&1 | grep -ie "jupyter_collaboration.*OK" | |
jupyter labextension list | |
jupyter labextension list 2>&1 | grep -ie "@jupyter/collaboration-extension.*OK" | |
python -m jupyterlab.browser_check --no-browser-test | |
echo "::endgroup::" | |
check_links: | |
runs-on: ubuntu-latest | |
timeout-minutes: 15 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
- uses: jupyterlab/maintainer-tools/.github/actions/check-links@v1 | |
with: | |
ignore_links: "../api/*.* ./api/* .*/images/[\\w-]+.png https://docs.github.com/en/.* https://mybinder.org/v2/gh/jupyterlab/jupyter_collaboration/.*" | |
ui_tests: | |
runs-on: ubuntu-latest | |
needs: [pre-commit, test-js] | |
timeout-minutes: 30 | |
env: | |
PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/pw-browsers | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
- name: Install dependencies | |
run: | | |
pip install jupyterlab . | |
- name: Install playwright | |
env: | |
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 | |
run: | | |
jlpm install | |
working-directory: ui-tests | |
- name: Set up browser cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
${{ github.workspace }}/pw-browsers | |
key: ${{ runner.os }}-${{ hashFiles('ui-tests/yarn.lock') }} | |
- name: Install browser | |
run: jlpm playwright install chromium | |
working-directory: ui-tests | |
- name: run tests | |
working-directory: ui-tests | |
run: | | |
jlpm test | |
- name: Upload Playwright Test report | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: jupyter-collaboration-playwright-report | |
path: | | |
ui-tests/test-results | |
ui-tests/playwright-report |