diff --git a/.github/workflows/pdf.yml b/.github/workflows/pdf.yml
index 1e559ef35b2c26ab97c5a2bc9c3c4bd5bea1dcfa..dff0470332e63d79f345e3ca23c783f16b1fda53 100644
--- a/.github/workflows/pdf.yml
+++ b/.github/workflows/pdf.yml
@@ -14,7 +14,7 @@ jobs:
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        python-version: [3.8]
+        python-version: [3.9]
 
     steps:
     - uses: actions/checkout@v3
@@ -48,7 +48,7 @@ jobs:
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        python-version: [3.8]
+        python-version: [3.9]
 
     steps:
     - uses: actions/checkout@v3
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 8714ec197fe07f6bb31a71d6be2889b7716f585e..dd18720fef97103ccdc546133ba955efa789023b 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -18,10 +18,10 @@ jobs:
     runs-on: ubuntu-latest
     steps:
     - uses: actions/checkout@v3
-    - name: Set up Python 3.8
+    - name: Set up Python 3.9
       uses: actions/setup-python@v3
       with:
-        python-version: 3.8
+        python-version: 3.9
     - uses: pre-commit/action@v2.0.3
 
   # for speed, we run a test matrix against only the tests that do not require TeX,
@@ -32,7 +32,7 @@ jobs:
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        python-version: [3.8]
+        python-version: [3.9]
 
     steps:
     - uses: actions/checkout@v3
@@ -75,7 +75,7 @@ jobs:
       if: github.repository == 'executablebooks/jupyter-book'
       uses: codecov/codecov-action@v3.1.0
       with:
-        name: ebp-jupyter-book-pytests-py3.8
+        name: ebp-jupyter-book-pytests-py3.9
         flags: pytests
         file: ./coverage.xml
         fail_ci_if_error: true
@@ -86,7 +86,7 @@ jobs:
     strategy:
       matrix:
         python-version: ["3.7", "3.8", "3.9"]
-        sphinx: [">=3,<4", ">=4,<5"]
+        sphinx: [">=4,<5"]
 
     steps:
     - uses: actions/checkout@v3
@@ -119,10 +119,10 @@ jobs:
     steps:
       - name: Checkout source
         uses: actions/checkout@v3
-      - name: Set up Python 3.8
+      - name: Set up Python 3.9
         uses: actions/setup-python@v3
         with:
-          python-version: 3.8
+          python-version: 3.9
       - name: Install flit
         run: |
           pip install flit~=3.6
diff --git a/docs/_config.yml b/docs/_config.yml
index 9c5c62cda7a5ae84dd4f6ffa44333c04f6c84c38..4a8667a75ce33f442ab1624d61291eee45fa682a 100644
--- a/docs/_config.yml
+++ b/docs/_config.yml
@@ -65,7 +65,7 @@ sphinx:
         - fmt: Rmd
     bibtex_reference_style: author_year  # or label, super, \supercite
     execution_show_tb: True
-    execution_timeout: 60
+    execution_timeout: 120
     # TODO: #917 this path will be the default in sphinx v4
     # mathjax_path: https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js
     # However, it is incompatible with the mathjax config below for macros
diff --git a/docs/contribute/intro.md b/docs/contribute/intro.md
index 60a4c7912a05fe6ac06ad098b3a0ee99fda84f28..9fd1991a74fdb15774f6bae0a48486d0fdb19ac6 100644
--- a/docs/contribute/intro.md
+++ b/docs/contribute/intro.md
@@ -81,7 +81,7 @@ You may run all the tests, or only ones that do not require additional installat
 You can alternatively use [tox](https://tox.readthedocs.io) to run the tests in multiple isolated environments, and also without the need for the initial dependencies install (see the `tox.ini` file for available test environments and further explanation):
 
 ```shell
->> tox -e py38-sphinx3 -- -m 'not requires_chrome and not requires_tex'
+>> tox -e py39-sphinx4 -- -m 'not requires_chrome and not requires_tex'
 ```
 
 Either will run the Jupyter Book test suite, *except for the PDF tests*.
diff --git a/jupyter_book/pdf.py b/jupyter_book/pdf.py
index 0e9116afc99b4194bd88e4eb60b18ba988815dc1..e57cdebc16e05d9c8504ed869c554046489184b9 100644
--- a/jupyter_book/pdf.py
+++ b/jupyter_book/pdf.py
@@ -4,31 +4,17 @@ import os
 from copy import copy
 from pathlib import Path
 
-import sphinx
-
 from .utils import _error, _message_box
 
 # LaTeX Documents Tuple Spec
-if sphinx.__version__ >= "3.0.0":
-    # https://www.sphinx-doc.org/en/3.x/usage/configuration.html#confval-latex_documents
-    LATEX_DOCUMENTS = (
-        "startdocname",
-        "targetname",
-        "title",
-        "author",
-        "theme",
-        "toctree_only",
-    )
-else:
-    # https://www.sphinx-doc.org/en/2.0/usage/configuration.html#confval-latex_documents
-    LATEX_DOCUMENTS = (
-        "startdocname",
-        "targetname",
-        "title",
-        "author",
-        "documentclass",
-        "toctree_only",
-    )
+LATEX_DOCUMENTS = (
+    "startdocname",
+    "targetname",
+    "title",
+    "author",
+    "theme",
+    "toctree_only",
+)
 
 
 def html_to_pdf(html_file, pdf_file):
diff --git a/pyproject.toml b/pyproject.toml
index 21ed8de12f3a020f52789485022e2e9bed0a52c5..f0fc024ed25068cb88ecc1a629e9a3aa5418e6bc 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -30,14 +30,12 @@ requires-python = ">=3.7"
 dependencies = [
     "click>=7.1,<9",
     "docutils>=0.15,<0.18",
-    # TODO: Remove when we drop Sphinx 3 support. Jinja 3.1 breaks Sphinx 3 builds.
-    # ref: https://github.com/executablebooks/jupyter-book/issues/1676
-    "Jinja2<3.1",
+    "Jinja2",
     "jsonschema<4",
     "linkify-it-py~=1.0.1",
     "myst-nb~=0.13.1",
     "pyyaml",
-    "sphinx>=3,<5",
+    "sphinx>=4,<5",
     "sphinx-comments",
     "sphinx-copybutton",
     "sphinx-external-toc~=0.2.3",
diff --git a/tests/test_config/test_mathjax_config_warning.sphinx3.yml b/tests/test_config/test_mathjax_config_warning.sphinx3.yml
deleted file mode 100644
index a593313be4b649580c3fd5faa985912b55d57ca1..0000000000000000000000000000000000000000
--- a/tests/test_config/test_mathjax_config_warning.sphinx3.yml
+++ /dev/null
@@ -1,89 +0,0 @@
-_user_config:
-  sphinx:
-    config:
-      mathjax_config:
-        TeX:
-          Macros:
-            argmax: arg\,max
-final:
-  author: The Jupyter Book community
-  comments_config:
-    hypothesis: false
-    utterances: false
-  copyright: '2022'
-  exclude_patterns:
-  - '**.ipynb_checkpoints'
-  - .DS_Store
-  - Thumbs.db
-  - _build
-  execution_allow_errors: false
-  execution_excludepatterns: []
-  execution_in_temp: false
-  execution_timeout: 30
-  extensions:
-  - sphinx_togglebutton
-  - sphinx_copybutton
-  - myst_nb
-  - jupyter_book
-  - sphinx_thebe
-  - sphinx_comments
-  - sphinx_external_toc
-  - sphinx.ext.intersphinx
-  - sphinx_design
-  - sphinx_book_theme
-  - sphinx_jupyterbook_latex
-  external_toc_exclude_missing: false
-  html_baseurl: ''
-  html_favicon: ''
-  html_logo: ''
-  html_sourcelink_suffix: ''
-  html_theme: sphinx_book_theme
-  html_theme_options:
-    announcement: ''
-    extra_footer: ''
-    extra_navbar: Powered by <a href="https://jupyterbook.org">Jupyter Book</a>
-    google_analytics_id: ''
-    home_page_in_toc: true
-    launch_buttons:
-      binderhub_url: https://mybinder.org
-      colab_url: ''
-      jupyterhub_url: ''
-      notebook_interface: classic
-      thebe: false
-    path_to_docs: ''
-    repository_branch: master
-    repository_url: https://github.com/executablebooks/jupyter-book
-    search_bar_text: Search this book...
-    use_edit_page_button: false
-    use_issues_button: false
-    use_repository_button: false
-  html_title: My Jupyter Book
-  jupyter_cache: ''
-  jupyter_execute_notebooks: auto
-  language: null
-  latex_engine: pdflatex
-  mathjax_config:
-    TeX:
-      Macros:
-        argmax: arg\,max
-  myst_enable_extensions:
-  - colon_fence
-  - dollarmath
-  - linkify
-  - substitution
-  - tasklist
-  myst_url_schemes:
-  - mailto
-  - http
-  - https
-  nb_output_stderr: show
-  numfig: true
-  pygments_style: sphinx
-  suppress_warnings:
-  - myst.domains
-  use_jupyterbook_latex: true
-  use_multitoc_numbering: true
-metadata:
-  latex_doc_overrides:
-    title: My Jupyter Book
-  latex_individualpages: false
diff --git a/tests/test_config/test_mathjax_config_warning_mathjax2path.sphinx3.yml b/tests/test_config/test_mathjax_config_warning_mathjax2path.sphinx3.yml
deleted file mode 100644
index d2ceaf0eafb0fc5d1a95c3bd8932add4fcddd03d..0000000000000000000000000000000000000000
--- a/tests/test_config/test_mathjax_config_warning_mathjax2path.sphinx3.yml
+++ /dev/null
@@ -1,91 +0,0 @@
-_user_config:
-  sphinx:
-    config:
-      mathjax_config:
-        TeX:
-          Macros:
-            argmax: arg\,max
-      mathjax_path: https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS-MML_CHTML
-final:
-  author: The Jupyter Book community
-  comments_config:
-    hypothesis: false
-    utterances: false
-  copyright: '2022'
-  exclude_patterns:
-  - '**.ipynb_checkpoints'
-  - .DS_Store
-  - Thumbs.db
-  - _build
-  execution_allow_errors: false
-  execution_excludepatterns: []
-  execution_in_temp: false
-  execution_timeout: 30
-  extensions:
-  - sphinx_togglebutton
-  - sphinx_copybutton
-  - myst_nb
-  - jupyter_book
-  - sphinx_thebe
-  - sphinx_comments
-  - sphinx_external_toc
-  - sphinx.ext.intersphinx
-  - sphinx_design
-  - sphinx_book_theme
-  - sphinx_jupyterbook_latex
-  external_toc_exclude_missing: false
-  html_baseurl: ''
-  html_favicon: ''
-  html_logo: ''
-  html_sourcelink_suffix: ''
-  html_theme: sphinx_book_theme
-  html_theme_options:
-    announcement: ''
-    extra_footer: ''
-    extra_navbar: Powered by <a href="https://jupyterbook.org">Jupyter Book</a>
-    google_analytics_id: ''
-    home_page_in_toc: true
-    launch_buttons:
-      binderhub_url: https://mybinder.org
-      colab_url: ''
-      jupyterhub_url: ''
-      notebook_interface: classic
-      thebe: false
-    path_to_docs: ''
-    repository_branch: master
-    repository_url: https://github.com/executablebooks/jupyter-book
-    search_bar_text: Search this book...
-    use_edit_page_button: false
-    use_issues_button: false
-    use_repository_button: false
-  html_title: My Jupyter Book
-  jupyter_cache: ''
-  jupyter_execute_notebooks: auto
-  language: null
-  latex_engine: pdflatex
-  mathjax_config:
-    TeX:
-      Macros:
-        argmax: arg\,max
-  mathjax_path: https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS-MML_CHTML
-  myst_enable_extensions:
-  - colon_fence
-  - dollarmath
-  - linkify
-  - substitution
-  - tasklist
-  myst_url_schemes:
-  - mailto
-  - http
-  - https
-  nb_output_stderr: show
-  numfig: true
-  pygments_style: sphinx
-  suppress_warnings:
-  - myst.domains
-  use_jupyterbook_latex: true
-  use_multitoc_numbering: true
-metadata:
-  latex_doc_overrides:
-    title: My Jupyter Book
-  latex_individualpages: false
diff --git a/tests/test_sphinx_multitoc_numbering/_toc_numbered_depth_multitoc_numbering_false.sphinx3.html b/tests/test_sphinx_multitoc_numbering/_toc_numbered_depth_multitoc_numbering_false.sphinx3.html
deleted file mode 100644
index 7c7f8f56029d3e0faef70653d1818ae35a91b111..0000000000000000000000000000000000000000
--- a/tests/test_sphinx_multitoc_numbering/_toc_numbered_depth_multitoc_numbering_false.sphinx3.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<nav aria-label="Main" class="bd-links" id="bd-docs-nav">
- <div class="bd-toc-item active">
-  <ul class="nav bd-sidenav bd-sidenav__home-link">
-   <li class="toctree-l1 current active">
-    <a class="reference internal" href="#">
-     Main index
-    </a>
-   </li>
-  </ul>
-  <ul class="nav bd-sidenav">
-   <li class="toctree-l1">
-    <a class="reference internal" href="content1.html">
-     1. Content1
-    </a>
-   </li>
-   <li class="toctree-l1 has-children">
-    <a class="reference internal" href="subfolder/index.html">
-     2. Subfolder
-    </a>
-    <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox">
-     <label for="toctree-checkbox-1">
-      <i class="fas fa-chevron-down">
-      </i>
-     </label>
-     <ul>
-      <li class="toctree-l2">
-       <a class="reference internal" href="subfolder/asubpage.html">
-        Asubpage
-       </a>
-      </li>
-     </ul>
-    </input>
-   </li>
-   <li class="toctree-l1">
-    <a class="reference internal" href="content2.html">
-     3. Content2
-    </a>
-   </li>
-   <li class="toctree-l1">
-    <a class="reference internal" href="content3.html">
-     4. Content3
-    </a>
-   </li>
-  </ul>
- </div>
-</nav>
diff --git a/tests/test_sphinx_multitoc_numbering/_toc_numbered_depth_parts_subset_multitoc_numbering_false.sphinx3.html b/tests/test_sphinx_multitoc_numbering/_toc_numbered_depth_parts_subset_multitoc_numbering_false.sphinx3.html
deleted file mode 100644
index 2800099133fb48e9f225a165a697f4131bd89964..0000000000000000000000000000000000000000
--- a/tests/test_sphinx_multitoc_numbering/_toc_numbered_depth_parts_subset_multitoc_numbering_false.sphinx3.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<nav aria-label="Main" class="bd-links" id="bd-docs-nav">
- <div class="bd-toc-item active">
-  <ul class="nav bd-sidenav bd-sidenav__home-link">
-   <li class="toctree-l1 current active">
-    <a class="reference internal" href="#">
-     Main index
-    </a>
-   </li>
-  </ul>
-  <p class="caption">
-   <span class="caption-text">
-    Chapter 1
-   </span>
-  </p>
-  <ul class="nav bd-sidenav">
-   <li class="toctree-l1">
-    <a class="reference internal" href="content1.html">
-     1. Content1
-    </a>
-   </li>
-  </ul>
-  <p class="caption">
-   <span class="caption-text">
-    Chapter 2
-   </span>
-  </p>
-  <ul class="nav bd-sidenav">
-   <li class="toctree-l1">
-    <a class="reference internal" href="content2.html">
-     Content2
-    </a>
-   </li>
-   <li class="toctree-l1">
-    <a class="reference internal" href="content3.html">
-     Content3
-    </a>
-   </li>
-  </ul>
-  <p class="caption">
-   <span class="caption-text">
-    Chapter 3
-   </span>
-  </p>
-  <ul class="nav bd-sidenav">
-   <li class="toctree-l1 has-children">
-    <a class="reference internal" href="subfolder/index.html">
-     1. Subfolder
-    </a>
-    <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox">
-     <label for="toctree-checkbox-1">
-      <i class="fas fa-chevron-down">
-      </i>
-     </label>
-     <ul>
-      <li class="toctree-l2">
-       <a class="reference internal" href="subfolder/asubpage.html">
-        Asubpage
-       </a>
-      </li>
-     </ul>
-    </input>
-   </li>
-  </ul>
- </div>
-</nav>
diff --git a/tests/test_sphinx_multitoc_numbering/_toc_numbered_multitoc_numbering_false.sphinx3.html b/tests/test_sphinx_multitoc_numbering/_toc_numbered_multitoc_numbering_false.sphinx3.html
deleted file mode 100644
index 3f2a4c25c6e3fdf07a995d2546c7abeb8fec4398..0000000000000000000000000000000000000000
--- a/tests/test_sphinx_multitoc_numbering/_toc_numbered_multitoc_numbering_false.sphinx3.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<nav aria-label="Main" class="bd-links" id="bd-docs-nav">
- <div class="bd-toc-item active">
-  <ul class="nav bd-sidenav bd-sidenav__home-link">
-   <li class="toctree-l1 current active">
-    <a class="reference internal" href="#">
-     Main index
-    </a>
-   </li>
-  </ul>
-  <ul class="nav bd-sidenav">
-   <li class="toctree-l1">
-    <a class="reference internal" href="content1.html">
-     1. Content1
-    </a>
-   </li>
-   <li class="toctree-l1 has-children">
-    <a class="reference internal" href="subfolder/index.html">
-     2. Subfolder
-    </a>
-    <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox">
-     <label for="toctree-checkbox-1">
-      <i class="fas fa-chevron-down">
-      </i>
-     </label>
-     <ul>
-      <li class="toctree-l2">
-       <a class="reference internal" href="subfolder/asubpage.html">
-        2.1. Asubpage
-       </a>
-      </li>
-     </ul>
-    </input>
-   </li>
-   <li class="toctree-l1">
-    <a class="reference internal" href="content2.html">
-     3. Content2
-    </a>
-   </li>
-   <li class="toctree-l1">
-    <a class="reference internal" href="content3.html">
-     4. Content3
-    </a>
-   </li>
-  </ul>
- </div>
-</nav>
diff --git a/tests/test_sphinx_multitoc_numbering/_toc_numbered_parts_multitoc_numbering_false.sphinx3.html b/tests/test_sphinx_multitoc_numbering/_toc_numbered_parts_multitoc_numbering_false.sphinx3.html
deleted file mode 100644
index 07f00309ea77d1c1d68ff6992f21c44b9e23d1d8..0000000000000000000000000000000000000000
--- a/tests/test_sphinx_multitoc_numbering/_toc_numbered_parts_multitoc_numbering_false.sphinx3.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<nav aria-label="Main" class="bd-links" id="bd-docs-nav">
- <div class="bd-toc-item active">
-  <ul class="nav bd-sidenav bd-sidenav__home-link">
-   <li class="toctree-l1 current active">
-    <a class="reference internal" href="#">
-     Main index
-    </a>
-   </li>
-  </ul>
-  <p class="caption">
-   <span class="caption-text">
-    Chapter 1
-   </span>
-  </p>
-  <ul class="nav bd-sidenav">
-   <li class="toctree-l1">
-    <a class="reference internal" href="content1.html">
-     1. Content1
-    </a>
-   </li>
-   <li class="toctree-l1 has-children">
-    <a class="reference internal" href="subfolder/index.html">
-     2. Subfolder
-    </a>
-    <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox">
-     <label for="toctree-checkbox-1">
-      <i class="fas fa-chevron-down">
-      </i>
-     </label>
-     <ul>
-      <li class="toctree-l2">
-       <a class="reference internal" href="subfolder/asubpage.html">
-        2.1. Asubpage
-       </a>
-      </li>
-     </ul>
-    </input>
-   </li>
-  </ul>
-  <p class="caption">
-   <span class="caption-text">
-    Chapter 2
-   </span>
-  </p>
-  <ul class="nav bd-sidenav">
-   <li class="toctree-l1">
-    <a class="reference internal" href="content2.html">
-     1. Content2
-    </a>
-   </li>
-   <li class="toctree-l1">
-    <a class="reference internal" href="content3.html">
-     2. Content3
-    </a>
-   </li>
-  </ul>
- </div>
-</nav>
diff --git a/tests/test_sphinx_multitoc_numbering/_toc_numbered_parts_subset_multitoc_numbering_false.sphinx3.html b/tests/test_sphinx_multitoc_numbering/_toc_numbered_parts_subset_multitoc_numbering_false.sphinx3.html
deleted file mode 100644
index d3564c287f8f34937918b41c7ee2ed4203cc961d..0000000000000000000000000000000000000000
--- a/tests/test_sphinx_multitoc_numbering/_toc_numbered_parts_subset_multitoc_numbering_false.sphinx3.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<nav aria-label="Main" class="bd-links" id="bd-docs-nav">
- <div class="bd-toc-item active">
-  <ul class="nav bd-sidenav bd-sidenav__home-link">
-   <li class="toctree-l1 current active">
-    <a class="reference internal" href="#">
-     Main index
-    </a>
-   </li>
-  </ul>
-  <p class="caption">
-   <span class="caption-text">
-    Chapter 1
-   </span>
-  </p>
-  <ul class="nav bd-sidenav">
-   <li class="toctree-l1">
-    <a class="reference internal" href="content1.html">
-     1. Content1
-    </a>
-   </li>
-  </ul>
-  <p class="caption">
-   <span class="caption-text">
-    Chapter 2
-   </span>
-  </p>
-  <ul class="nav bd-sidenav">
-   <li class="toctree-l1">
-    <a class="reference internal" href="content2.html">
-     Content2
-    </a>
-   </li>
-   <li class="toctree-l1">
-    <a class="reference internal" href="content3.html">
-     Content3
-    </a>
-   </li>
-  </ul>
-  <p class="caption">
-   <span class="caption-text">
-    Chapter 3
-   </span>
-  </p>
-  <ul class="nav bd-sidenav">
-   <li class="toctree-l1 has-children">
-    <a class="reference internal" href="subfolder/index.html">
-     1. Subfolder
-    </a>
-    <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox">
-     <label for="toctree-checkbox-1">
-      <i class="fas fa-chevron-down">
-      </i>
-     </label>
-     <ul>
-      <li class="toctree-l2">
-       <a class="reference internal" href="subfolder/asubpage.html">
-        1.1. Asubpage
-       </a>
-      </li>
-     </ul>
-    </input>
-   </li>
-  </ul>
- </div>
-</nav>
diff --git a/tests/test_tocdirective/test_toc_parts_directive.sphinx3.html b/tests/test_tocdirective/test_toc_parts_directive.sphinx3.html
deleted file mode 100644
index 02b0f32dd3817027391cc04fcae47a4507e8f51f..0000000000000000000000000000000000000000
--- a/tests/test_tocdirective/test_toc_parts_directive.sphinx3.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<div class="toctree-wrapper compound">
- <p class="caption">
-  <span class="caption-text">
-   A section
-  </span>
- </p>
- <ul>
-  <li class="toctree-l1">
-   <a class="reference internal" href="subfolder/index.html">
-    Subfolder
-   </a>
-   <ul>
-    <li class="toctree-l2">
-     <a class="reference internal" href="subfolder/asubpage1.html">
-      Asubpage 1
-     </a>
-    </li>
-   </ul>
-  </li>
- </ul>
-</div>
diff --git a/tests/test_tocdirective/test_toc_parts_sidebar.sphinx3.html b/tests/test_tocdirective/test_toc_parts_sidebar.sphinx3.html
deleted file mode 100644
index 6877fe6caf659164a5d63473fb2fcf210e287bdb..0000000000000000000000000000000000000000
--- a/tests/test_tocdirective/test_toc_parts_sidebar.sphinx3.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<nav aria-label="Main" class="bd-links" id="bd-docs-nav">
- <div class="bd-toc-item active">
-  <ul class="nav bd-sidenav bd-sidenav__home-link">
-   <li class="toctree-l1 current active">
-    <a class="reference internal" href="#">
-     Main index
-    </a>
-   </li>
-  </ul>
-  <p class="caption">
-   <span class="caption-text">
-    A section
-   </span>
-  </p>
-  <ul class="nav bd-sidenav">
-   <li class="toctree-l1 has-children">
-    <a class="reference internal" href="subfolder/index.html">
-     Subfolder
-    </a>
-    <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox">
-     <label for="toctree-checkbox-1">
-      <i class="fas fa-chevron-down">
-      </i>
-     </label>
-     <ul>
-      <li class="toctree-l2">
-       <a class="reference internal" href="subfolder/asubpage1.html">
-        Asubpage 1
-       </a>
-      </li>
-     </ul>
-    </input>
-   </li>
-  </ul>
-  <p class="caption">
-   <span class="caption-text">
-    Another section
-   </span>
-  </p>
-  <ul class="nav bd-sidenav">
-   <li class="toctree-l1 has-children">
-    <a class="reference internal" href="content1.html">
-     Content1
-    </a>
-    <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox">
-     <label for="toctree-checkbox-2">
-      <i class="fas fa-chevron-down">
-      </i>
-     </label>
-     <ul>
-      <li class="toctree-l2">
-       <a class="reference internal" href="subfolder/asubpage2.html">
-        Asubpage 2
-       </a>
-      </li>
-     </ul>
-    </input>
-   </li>
-   <li class="toctree-l1 has-children">
-    <a class="reference internal" href="content2.html">
-     Content2
-    </a>
-    <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox">
-     <label for="toctree-checkbox-3">
-      <i class="fas fa-chevron-down">
-      </i>
-     </label>
-     <ul>
-      <li class="toctree-l2">
-       <a class="reference internal" href="subfolder/asubpage3.html">
-        Asubpage 3
-       </a>
-      </li>
-     </ul>
-    </input>
-   </li>
-   <li class="toctree-l1 has-children">
-    <a class="reference internal" href="content3.html">
-     Content3
-    </a>
-    <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-    <label for="toctree-checkbox-4">
-     <i class="fas fa-chevron-down">
-     </i>
-    </label>
-    <ul>
-     <li class="toctree-l2">
-      <a class="reference internal" href="subfolder/asubpage4.html">
-       Asubpage 4
-      </a>
-     </li>
-    </ul>
-   </li>
-  </ul>
- </div>
-</nav>
\ No newline at end of file
diff --git a/tox.ini b/tox.ini
index 6ff9cac56575a018b765d3c05cc37a8bcb98e2c8..7a6447eb4bb47ec6078c3d912f0b1b38e6737f79 100644
--- a/tox.ini
+++ b/tox.ini
@@ -17,10 +17,9 @@ envlist = py39-sphinx4
 usedevelop = true
 passenv=TERM
 
-[testenv:py{37,38,39}-sphinx{3,4}]
+[testenv:py{37,38,39}-sphinx{4}]
 extras = testing
 deps =
-    sphinx3: sphinx>=3,<4
     sphinx4: sphinx>=4,<5
 commands = pytest {posargs}