Repository: mne-tools/mne-python

Issue:
Azure job skips notebook tests
From https://github.com/mne-tools/mne-python/pull/9877#issuecomment-948710723, I noticed that the Azure job `Main Notebook` which AFAIK is supposed to test the `notebook` 3d backend actually skips some tests.

I double-checked on `master` (6ca1752cc3ad49cd8cd9b162e98ec3e4e07da99f), this is what I mean:

```
...
mne/viz/_brain/tests/test_notebook.py::test_notebook_alignment[notebook] SKIPPED [ 15%]
mne/viz/_brain/tests/test_notebook.py::test_notebook_interactive[notebook] SKIPPED [ 15%]
mne/viz/_brain/tests/test_notebook.py::test_notebook_button_counts[notebook] SKIPPED [ 15%]
...
```

https://dev.azure.com/mne-tools/mne-python/_build/results?buildId=16058&view=logs&j=f8b184f0-8536-5d07-cb2e-df31a09e5d0f&t=7eff19d8-9485-515c-ad38-577dd2e13f81&l=54

I also checked the Github Actions jobs and it actually passes on `linux / conda / py3.9`:

```
...
/usr/share/miniconda/envs/mne/lib/python3.9/site-packages/coverage/inorout.py:471: CoverageWarning: --include is ignored because --source is set (include-ignored)
  self.warn("--include is ignored because --source is set", slug="include-ignored")
mne/viz/_brain/tests/test_notebook.py::test_notebook_alignment[notebook] PASSED [ 94%]
/usr/share/miniconda/envs/mne/lib/python3.9/site-packages/coverage/inorout.py:471: CoverageWarning: --include is ignored because --source is set (include-ignored)
  self.warn("--include is ignored because --source is set", slug="include-ignored")
mne/viz/_brain/tests/test_notebook.py::test_notebook_interactive[notebook] PASSED [ 94%]
/usr/share/miniconda/envs/mne/lib/python3.9/site-packages/coverage/inorout.py:471: CoverageWarning: --include is ignored because --source is set (include-ignored)
  self.warn("--include is ignored because --source is set", slug="include-ignored")
mne/viz/_brain/tests/test_notebook.py::test_notebook_button_counts[notebook] PASSED [ 94%]
...
```

https://github.com/mne-tools/mne-python/runs/3953739978?check_suite_focus=true#step:13:3292

cc @larsoner, @agramfort 



Discussion:
Hello! 👋 Thanks for opening your first issue here! ❤️ We will try to get back to you soon. 🚴🏽‍♂️


Resolving patch:
diff --git a/mne/utils/config.py b/mne/utils/config.py
--- a/mne/utils/config.py
+++ b/mne/utils/config.py
@@ -545,20 +545,18 @@ def sys_info(fid=None, show_paths=False, *, dependencies='user'):
         out += '%0.1f GB\n' % (psutil.virtual_memory().total / float(2 ** 30),)
     out += '\n'
     libs = _get_numpy_libs()
-    has_3d = False
     use_mod_names = ('mne', 'numpy', 'scipy', 'matplotlib', '', 'sklearn',
                      'numba', 'nibabel', 'nilearn', 'dipy', 'cupy', 'pandas',
-                     'mayavi', 'pyvista', 'vtk', 'PyQt5', 'pooch')
+                     'mayavi', 'pyvista', 'pyvistaqt', 'ipyvtklink', 'vtk',
+                     'PyQt5', 'ipympl')
     if dependencies == 'developer':
         use_mod_names += (
             '', 'sphinx', 'sphinx_gallery', 'numpydoc', 'pydata_sphinx_theme',
-            'mne_bids', 'pytest')
+            'mne_bids', 'pytest', 'nbclient')
     for mod_name in use_mod_names:
         if mod_name == '':
             out += '\n'
             continue
-        if mod_name == 'PyQt5' and not has_3d:
-            continue
         out += ('%s:' % mod_name).ljust(ljust)
         try:
             mod = __import__(mod_name)
@@ -574,24 +572,13 @@ def sys_info(fid=None, show_paths=False, *, dependencies='user'):
             elif mod_name == 'matplotlib':
                 extra += ' {backend=%s}%s' % (mod.get_backend(), extra)
             elif mod_name == 'pyvista':
-                extras = list()
-                try:
-                    from pyvistaqt import __version__
-                except Exception:
-                    extras += ['pyvistaqt not found']
-                else:
-                    extras += [f'pyvistaqt={__version__}']
                 try:
                     from pyvista import GPUInfo
                 except ImportError:
                     pass
                 else:
                     gi = GPUInfo()
-                    extras += [f'OpenGL {gi.version} via {gi.renderer}']
-                if extras:
-                    extra += f' {{{", ".join(extras)}}}'
-            elif mod_name in ('mayavi', 'vtk'):
-                has_3d = True
+                    extra += f' {{OpenGL {gi.version} via {gi.renderer}}}'
             if mod_name == 'vtk':
                 version = mod.vtkVersion()
                 # 9.0 dev has VersionFull but 9.0 doesn't


Test patch:
diff --git a/requirements_testing_extra.txt b/requirements_testing_extra.txt
--- a/requirements_testing_extra.txt
+++ b/requirements_testing_extra.txt
@@ -4,3 +4,4 @@ nbclient
 sphinx-gallery
 eeglabio
 EDFlib-Python
+imageio-ffmpeg