Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jupyterlab extensions #1588

Merged
merged 139 commits into from
Jun 16, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
139 commits
Select commit Hold shift + click to select a range
ae3355a
init validate_assignment
lxylxy123456 Apr 27, 2020
b552da1
.gitignore
lxylxy123456 Apr 27, 2020
51da674
modified: README.md
lxylxy123456 Apr 27, 2020
c56ceb9
Port original version (without backend)
lxylxy123456 Apr 27, 2020
dcaeafa
function error_dialog
lxylxy123456 Apr 27, 2020
162bc14
Instruction for installing backend
lxylxy123456 Apr 27, 2020
e9e6f6b
Check version
lxylxy123456 Apr 27, 2020
1f84b96
Change logic
lxylxy123456 Apr 27, 2020
4986cb9
did some changes
lxylxy123456 Apr 27, 2020
69c9c36
POST
lxylxy123456 Apr 27, 2020
39b4aa2
did some changes
lxylxy123456 Apr 27, 2020
9ca85e0
Initialize the create_assignment labextension
Lawrence37 Apr 19, 2020
efc3f9a
Update copyright of create_assignment labextension
Lawrence37 Apr 19, 2020
b2cd34b
Remove create_assignment labextension README
Lawrence37 Apr 19, 2020
853bc3a
Add data reading to create_assignment labextension
Lawrence37 Apr 23, 2020
037ae09
Make create_assignment respond to notebook changes
Lawrence37 Apr 24, 2020
87f4404
Style the create_assignment labextension
Lawrence37 Apr 24, 2020
ad1c757
Refactor create_assignment labextension
Lawrence37 Apr 25, 2020
d1445ec
Remove unneeded code from create_assignment
Lawrence37 Apr 25, 2020
66925e7
Add metadata saving to create_assignment
Lawrence37 Apr 25, 2020
e0f994c
Handle change of cell type in create_assignment
Lawrence37 Apr 25, 2020
c7c0d25
Limit problem types by cell type
Lawrence37 Apr 25, 2020
8c960cd
Add lock icons to create_assignment labextension
Lawrence37 Apr 26, 2020
2bd6dff
some half working course list extension code
rkevin-arch Apr 26, 2020
c228f47
progress on assignment list extension
aalmanza1998 May 10, 2020
09b097a
remove unecessary files
aalmanza1998 May 10, 2020
23cb9bd
tsconfig.json
aalmanza1998 May 10, 2020
dd552bd
remove .DS_Store files
aalmanza1998 May 10, 2020
b33724f
Make create_assignment scroll to active cell
Lawrence37 Apr 27, 2020
11115d5
Make active cell settable from create_assignment
Lawrence37 Apr 27, 2020
9f06b24
Add schema validation to labextension
Lawrence37 Apr 30, 2020
5c1003d
Add validate ID to create_assignment labextension
Lawrence37 Apr 30, 2020
a44c49f
Implement total points for create_assignment
Lawrence37 May 1, 2020
ecec5dd
Add color coding for cell type
Lawrence37 May 1, 2020
949ca88
Make total points calculation more robust
Lawrence37 May 1, 2020
28c8bae
Implement clearing of cell type in labextension
Lawrence37 May 2, 2020
4382899
Change appearance of cell color-coding
Lawrence37 May 2, 2020
05a7a75
backend for assignment_list need to fix validate
aalmanza1998 May 11, 2020
2ba22a3
fix some bugs
aalmanza1998 May 13, 2020
a2920c8
fix some bugs
aalmanza1998 May 13, 2020
3b3ae06
fix bugs and add check for nbgrader version
aalmanza1998 May 13, 2020
8c8ce24
add backend handlers, need validate assignment
aalmanza1998 May 13, 2020
26ec8d4
Clean up code in create_assignment labextension
Lawrence37 May 12, 2020
3d928c8
Add proper widget disposal for create_assignment
Lawrence37 May 13, 2020
b9654b9
Add disposal of dead NotebookPanelWidgets
Lawrence37 May 13, 2020
66b0ed0
Fix schema version check
Lawrence37 May 15, 2020
6153353
Add grade ID preservation to labextension
Lawrence37 May 15, 2020
3bd9578
Add displaying of validation results
Lawrence37 May 23, 2020
ba63254
Put callbacks in separate functions
Lawrence37 May 24, 2020
81ffc93
fix bugs. course dropdown, dialogs, and classes
aalmanza1998 May 24, 2020
95355e4
Fix drop-down name for autograded tests
Lawrence37 May 20, 2020
df2220b
Make create assignment widget load lazily
Lawrence37 May 25, 2020
6e563eb
some backend need to test
aalmanza1998 May 25, 2020
04bf561
Fix validate button and notebook association bug
Lawrence37 May 30, 2020
a26726a
Set up testing for JupyterLab extensions
Lawrence37 May 10, 2020
4da4e62
Add a test for create_assignment labextension
Lawrence37 May 10, 2020
eb303a2
Port remaining create_assignment tests to lab
Lawrence37 May 15, 2020
03b543f
Add "labextensions" test group
Lawrence37 May 15, 2020
b70e01b
Fix create_assignment labextension tests
Lawrence37 May 15, 2020
e2eafeb
assignment list tests
aalmanza1998 May 24, 2020
0345694
Add tests for validate assignment
Lawrence37 May 24, 2020
a4d14b3
fix version
aalmanza1998 May 25, 2020
9d680f9
add tests for course list
aalmanza1998 May 25, 2020
59e1c6c
Update index.ts
aalmanza1998 May 30, 2020
af7a27e
Add missing test files
Lawrence37 Jun 3, 2020
cb4263e
some clean up
aalmanza1998 Jun 3, 2020
618dbf6
Remove unnecessary files
Lawrence37 Jun 5, 2020
7fcf202
fix bug
aalmanza1998 Jul 29, 2020
99dfda0
Refactoring package to (1) use only one lab extension directory and (…
Apr 14, 2022
e1b6e5c
Set compatibility between notebook.notebookapp.NotebookApp and jupyte…
Apr 15, 2022
251bfee
Assignment plugin : opening notebook in a new lab tab instead of new …
Apr 15, 2022
60c0ae9
Assignment plugin : open feedback path in jupyterlab filebrowser inst…
Apr 21, 2022
5b79eb9
Workaround to handle either JSON data or arguments list (current way …
Apr 21, 2022
23f3afc
Include formgrader web page in a jupyterlab tab, modifying some links…
Apr 21, 2022
6e45447
Use server application property 'name' to distinct notebbok app to se…
Apr 22, 2022
792e6d5
Use the server application name to make distinction between classic n…
Apr 22, 2022
a86f1bc
Clean remaining tests on formgrader and filebrowser communication
Apr 22, 2022
66c1aa9
update development installation
Apr 22, 2022
9d65c10
(i)Homogeneize tracker and command names in widgets, and (ii) set tra…
Apr 25, 2022
3ba23e4
Set up UI test on labextensions
Apr 26, 2022
a07867a
Include _load_jupyter_server_extension() in package __init__
May 5, 2022
937db9c
update gitignore file
May 6, 2022
13a14b6
Change version to 0.8.0.dev
May 6, 2022
7f61c87
Add tests on labextension for create assignments, and add a class on …
May 6, 2022
6e59f42
Call 'nbgrader:formgrader' command from courses list and fix style in…
May 11, 2022
5701c7e
Add test on course list labextension
May 12, 2022
b9652f2
Allow only one playwright worker to avoid errors
May 17, 2022
b103810
Fix some CSS in assignments list UI
May 17, 2022
bbf9983
Use module for shared functions
May 17, 2022
af63a06
Add tests on assignment list
May 17, 2022
16de671
Add class (error/success) to modal when validating notebook
May 18, 2022
94b8d47
Add labextension validation tests
May 18, 2022
40b196b
Fix dependencies after rebase
May 19, 2022
779cf09
Set up test directory before running jupyterlab, to ensure formgrader…
May 20, 2022
9a9d634
Reload config in formgrader when API is called, in case config file h…
May 27, 2022
446b274
Add url_prefix (which contains root directory in jupyter relative pat…
May 27, 2022
2e95dcb
Allow opening a notebook in a new tab from formgrade view
May 27, 2022
5171c39
retrieve stdout when executing a command system from tests, and force…
May 27, 2022
f8375d2
Fix error made in e6ffd697
May 30, 2022
b325a72
Fix labextensions installation
May 30, 2022
778dd41
Fix labextensions assignment_list and course_list tests
May 30, 2022
86c066c
Add jupyter_packaging in dev requirements
May 30, 2022
274ded8
Add github actions to test labextensions
May 30, 2022
d9acc4a
Exclude some labextension tests for Windows platform
May 31, 2022
2c761e7
Fix create assignment test by waiting for visibility attribute of som…
May 31, 2022
dc0c021
Fix NPM version number and add ensured targets in pyproject.toml file
May 31, 2022
9c72cbd
Use separate github-action for labextension test, retry labextension …
May 31, 2022
125946c
Fix pyproject build_backend and error comand in package.json, add yar…
Jun 1, 2022
7e4c083
Modify manifest
Jun 1, 2022
5ff915d
Add some formgrader tests
Jun 1, 2022
09663aa
Fix tests on formgrader using windows
Jun 1, 2022
6c4f4f0
Skip tests on formgrader using Windows for now as system commands do …
Jun 1, 2022
b2adc0e
Remove lab installation from tests on python and nbextension, to avoi…
Jun 1, 2022
6ae90f6
Add nodejs as dependency for building readthedoc
Jun 1, 2022
76ae725
Update user documentation with Jupyter Lab extensions
Jun 3, 2022
e300f16
improve invalid submission modal
Jun 3, 2022
e302e1b
Clean a duplicate installation of server extension
Jun 3, 2022
88e2e6d
Fix broken links
Jun 3, 2022
8d56147
Add menu entries for nbgrader extensions
Jun 6, 2022
6ba40eb
Add tests on menu entries
Jun 6, 2022
b14e4f2
Update nbgrader/docs/source/contributor_guide/installation_developer.rst
brichet Jun 6, 2022
fa79f12
Update nbgrader/docs/source/contributor_guide/installation_developer.rst
brichet Jun 6, 2022
580f353
Fix assignment list left clipping
Jun 7, 2022
9e90ab4
Change create assignment panel from 'BoxPanel' to 'Panel'. Using BoxP…
Jun 7, 2022
e342da3
Use same validation function from Notebook or assignment list
Jun 7, 2022
807a858
(1) Update gitignore, documentation and yarn.lock, (2) fix documentat…
Jun 7, 2022
7fdf5e2
Restore the ability to scroll the assignment creation widget
Jun 8, 2022
d6ec515
Fix duplicateID warning on non-nbgrader cells
Jun 8, 2022
ef41a6f
Add yarn.lock in gitignore
Jun 8, 2022
29cee89
update documentation to disable/enable labextensions individually
Jun 8, 2022
fee6e6f
Update .gitignore
brichet Jun 8, 2022
f27c5dd
restore yarn.lock file and enlarge point inputs
Jun 8, 2022
4feb1cf
Remove bootstrap/jquery dependencies in assignment and course list ex…
Jun 10, 2022
2d32e7c
Fix mathjax in formgrade templates
Jun 10, 2022
db5eb6a
Update documentation : remove nbextensions documentation and update a…
Jun 13, 2022
5ce6a18
Remove channel in package.json version as it would break for a versio…
Jun 14, 2022
1572549
Call the correct formgrader when using with JupyterHub
Jun 14, 2022
ab63f61
Fix yarn.lock issue when building package in develop mode
brichet Jun 16, 2022
5519c65
update documentation about disabling labextension
brichet Jun 16, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# This is a GitHub workflow defining a set of jobs with a set of steps.
# ref: https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions
#
name: Test
name: Test python-nbextensions-doc

on:
pull_request:
Expand Down Expand Up @@ -58,6 +58,10 @@ jobs:
echo "GROUP=python" >> $GITHUB_ENV
fi
- uses: actions/checkout@v2
- name: Install node
uses: actions/setup-node@v1
with:
node-version: '17.x'
# NOTE: actions/setup-python@v2 can make use of a cache within the GitHub
# Action virtual environment and setup extremely fast. 3.9 isn't
# available in this cache as of November 2020.
Expand All @@ -74,6 +78,9 @@ jobs:
python -m pip install --upgrade pip wheel setuptools
python tasks.py install --group="$GROUP"
pip freeze
- name: Install Playwright
run: |
npx playwright install
- name: Run pytest
run: |
python tasks.py tests --group="$GROUP"
Expand Down
69 changes: 69 additions & 0 deletions .github/workflows/test-labextensions.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# This is a GitHub workflow defining a set of jobs with a set of steps.
# ref: https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions
#
name: Test labextensions

on:
pull_request:
branches: ["**"]
push:
branches: [main, master]
tags: ["**"]

defaults:
run:
shell: bash

jobs:
test_labextensions:
runs-on: ${{ matrix.os }}
timeout-minutes: 40

env:
# NOTE: UTF-8 content may be interpreted as ascii and causes errors
# without this.
LANG: C.UTF-8
MOZ_HEADLESS: 1

strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-20.04]
python: ["3.9", "3.10"]
steps:
# This is how you set an environment variable in a GitHub workflow that
# will be available in following steps as if you would used `export
# MY_ENV=my-value`.
- name: Configure environment variables from job flags
run: |
echo "GROUP=labextensions" >> $GITHUB_ENV
- uses: actions/checkout@v2
- name: Install node
uses: actions/setup-node@v1
with:
node-version: '17.x'
# NOTE: actions/setup-python@v2 can make use of a cache within the GitHub
# Action virtual environment and setup extremely fast. 3.9 isn't
# available in this cache as of November 2020.
- name: Install Python ${{ matrix.python }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip wheel setuptools
python tasks.py install --group=labextensions
pip freeze
- name: Install Playwright
run: |
npx playwright install
- name: Run pytest
run: |
python tasks.py tests --group=labextensions
- name: Upload Playwright Test report
if: always()
uses: actions/upload-artifact@v2
with:
name: nbgrader-playwright-tests-os_${{ matrix.os }}-python_${{ matrix.python }}
path: |
playwright-tests
13 changes: 13 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ var/
.installed.cfg
*.egg

# built labextension
tsconfig.tsbuildinfo
nbgrader/labextension/

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
Expand Down Expand Up @@ -120,3 +124,12 @@ package-lock.json
.goutputstream*
.idea
.mypy_cache


# playwright output tests directory
playwright-tests/
playwright-report
test-results
/test-results/
/playwright-report/
/dist-pw/
1 change: 1 addition & 0 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ build:
os: ubuntu-20.04
tools:
python: "3"
nodejs: "16"
sphinx:
builder: html
configuration: nbgrader/docs/source/conf.py
Expand Down
25 changes: 20 additions & 5 deletions MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,25 @@ include *.md
include *.json
include *.txt

include .coveragerc
include tasks.py
include .readthedocs.yaml
include .bowerrc
include mypy.ini
include pytest.ini
include codecov.yml
include .readthedocs.yaml
include tasks.py
include yarn.lock

include pytest.ini
include .coveragerc
include conftest.py
include playwright.config.ts

# Lab extension files
graft nbgrader/labextension
graft src
graft style
graft schema
prune **/node_modules
prune lib

#nbgrader format files
include nbgrader/nbgraderformat/*.json
Expand All @@ -32,11 +44,14 @@ recursive-include nbgrader/alembic *
include nbgrader/tests/apps/files/*
include nbgrader/tests/preprocessors/files/*
include nbgrader/tests/nbextensions/files/*

recursive-include nbgrader/tests/labextension_ui-tests *
# global exclusion
global-exclude *.pyc
global-exclude .ipynb_checkpoints
global-exclude __pycache__
global-exclude .git
global-exclude *.pyo
global-exclude *~

# directories to prune
prune demos
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# nbgrader

Build: [![Build](https://img.shields.io/github/workflow/status/jupyter/nbgrader/Test?logo=github&label=tests)](https://github.com/jupyter/nbgrader/actions)
Forum: [![Google Group](https://img.shields.io/badge/-Google%20Group-lightgrey.svg)](https://groups.google.com/forum/#!forum/jupyter)
Coverage: [![codecov.io](http://codecov.io/github/jupyter/nbgrader/coverage.svg?branch=master)](http://codecov.io/github/jupyter/nbgrader?branch=master)
Build: [![Build](https://img.shields.io/github/workflow/status/jupyter/nbgrader/Test?logo=github&label=tests)](https://github.com/jupyter/nbgrader/actions)
Forum: [![Google Group](https://img.shields.io/badge/-Google%20Group-lightgrey.svg)](https://groups.google.com/forum/#!forum/jupyter)
Coverage: [![codecov.io](http://codecov.io/github/jupyter/nbgrader/coverage.svg?branch=master)](http://codecov.io/github/jupyter/nbgrader?branch=master)
Cite: [![DOI](https://jose.theoj.org/papers/10.21105/jose.00032/status.svg)](https://doi.org/10.21105/jose.00032)

A system for assigning and grading Jupyter notebooks.
Expand Down
8 changes: 8 additions & 0 deletions conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import pytest

pytest_plugins = ["jupyter_server.pytest_plugin"]


@pytest.fixture
def jp_server_config(jp_server_config):
return {"ServerApp": {"jpserver_extensions": {"nbgrader": True}}}
26 changes: 26 additions & 0 deletions demos/formgrader_workspace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"data": {
"layout-restorer:data": {
"main": {
"dock": {
"type": "tab-area",
"currentIndex": 0,
"widgets": [
"nbgrader-formgrader:nbgrader-formgrader"
]
},
"current": "nbgrader-formgrader:nbgrader-formgrader"
},
"down": {
"size": 0,
"widgets": []
}
},
"nbgrader-formgrader:nbgrader-formgrader": {
"data": {}
}
},
"metadata": {
"id": "formgrader"
}
}
5 changes: 5 additions & 0 deletions install.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"packageManager": "python",
"packageName": "nbgrader",
"uninstallInstructions": "Use your Python package manager (pip, conda, etc.) to uninstall the package nbgrader"
}
50 changes: 35 additions & 15 deletions nbgrader/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,34 @@

import os
import sys
from ._version import version_info, __version__
import json
from pathlib import Path
from ._version import __version__

from .server_extensions.assignment_list import load_jupyter_server_extension as load_assignments
from .server_extensions.course_list import load_jupyter_server_extension as load_courses
from .server_extensions.validate_assignment import load_jupyter_server_extension as load_validate
from .server_extensions.formgrader import load_jupyter_server_extension as load_formgrader

HERE = Path(__file__).parent.resolve()


if os.path.exists(HERE / "labextension"):
with (HERE / "labextension" / "package.json").open() as fid:
data = json.load(fid)


def _jupyter_labextension_paths():
return [{
"src": "labextension",
"dest": data["name"]
}]


def _jupyter_server_extension_points():
return [{
"module": "nbgrader"
}]


# Classic notebook extensions
Expand Down Expand Up @@ -51,20 +78,6 @@ def _jupyter_nbextension_paths():
return paths


# Jupyter server extensions
def _jupyter_server_extension_points():
paths = [
dict(module="nbgrader.server_extensions.formgrader"),
dict(module="nbgrader.server_extensions.validate_assignment")
]

if sys.platform != 'win32':
paths.append(dict(module="nbgrader.server_extensions.assignment_list"))
paths.append(dict(module="nbgrader.server_extensions.course_list"))

return paths


# Classic notebook server extensions
def _jupyter_server_extension_paths():
paths = [
Expand All @@ -77,3 +90,10 @@ def _jupyter_server_extension_paths():
paths.append(dict(module="nbgrader.server_extensions.course_list"))

return paths


def _load_jupyter_server_extension(app):
load_assignments(app)
load_courses(app)
load_formgrader(app)
load_validate(app)
2 changes: 1 addition & 1 deletion nbgrader/docs/source/configuration/jupyterhub_config.rst
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ You will additionally need to install and enable the various nbgrader extensions
:widths: 33 33 33 33
:header-rows: 1

* -
* -
- Students
- Instructors
- Formgraders
Expand Down
53 changes: 28 additions & 25 deletions nbgrader/docs/source/contributor_guide/installation_developer.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,35 +11,38 @@ clone the nbgrader repository::

Installing and building nbgrader
-------------------------------------
nbgrader installs and builds with one command::
Building nbgrader jupyterlab extension requires nodejs to be installed.
We recommand using `conda environment <https://docs.conda.io/en/latest/miniconda.html>`_ with `mamba <https://mamba.readthedocs.io/en/latest/>`_::

pip install -e .[docs,tests]
# create a new environment
mamba create -n nbgrader -c conda-forge python nodejs -y

# activate the environment
mamba activate nbgrader

Installing notebook extensions
------------------------------
Previously this was done using the ``nbgrader extension install`` command.
However, moving forward this is done using the ``jupyter nbextension`` and
``jupyter serverextension`` commands.
pip install -e ".[docs,tests]"

The nbextensions are Javascript/HTML/CSS so they require
separate installation and enabling.
The --symlink option is recommended since it updates the extensions
whenever you update the nbgrader repository.
The serverextension is a Python module inside nbgrader, so only an
enable step is needed.
To install and enable all the frontend nbextensions (*assignment list*,
*create assignment*, and *formgrader*) along with the server extensions
(*assignment list* and *formgrader*) run::
Installing Jupyter labextensions
--------------------------------
The labextensions are compiled during installation, and should be in the ``nbgrader/labextension`` directory.
There are 5 of them (*formgrader*, *assignment list*, *course list*, *validate assignment* and *create assignment*),
and with the exception of *create assignment* they must be installed along with the server extensions.

jupyter nbextension install --symlink --sys-prefix --py nbgrader
jupyter nbextension enable --sys-prefix --py nbgrader
jupyter serverextension enable --sys-prefix --py nbgrader
To install the server extensions all together run::

To work properly, the *assignment list* and *formgrader* extensions require
both the nbextension and serverextension. The *create assignment* extension
only has an nbextension part.
jupyter server extension enable nbgrader --sys-prefix

Installing Firefox Headless WebDriver
-------------------------------------
To run tests while developing nbgrader and its documentation, the Firefox headless webdriver must be installed. Please `follow the Mozilla installation instructions <https://developer.mozilla.org/en-US/docs/Web/WebDriver>`_ to get Firefox properly setup on your system.
It is possible to enable only some of them by running::

jupyter server extension enable nbgrader.server_extensions.formgrader --sys-prefix
jupyter server extension enable nbgrader.server_extensions.assignment_list --sys-prefix
jupyter server extension enable nbgrader.server_extensions.course_list --sys-prefix
jupyter server extension enable nbgrader.server_extensions.validate_assignment --sys-prefix

To install labextensions run::

jupyter labextension install .

or in developer mode::

jupyter labextension develop --overwrite .
3 changes: 3 additions & 0 deletions nbgrader/docs/source/contributor_guide/testing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ To run a selective group of tests you can use one of the following commands:
| ``python tasks.py tests --group=nbextensions`` | Run tests only for the notebook |
| | extensions |
+------------------------------------------------+------------------------------------+
| ``python tasks.py tests --group=labextensions``| Run tests only for the jupyter lab |
| | extensions |
+------------------------------------------------+------------------------------------+
| ``python tasks.py tests --group=docs`` | Build the docs |
+------------------------------------------------+------------------------------------+
| ``python tasks.py tests --group=all`` | Same as ``python tasks.py tests`` |
Expand Down
Loading