Index: python-pyvista/tests/plotting/test_charts.py
===================================================================
--- python-pyvista.orig/tests/plotting/test_charts.py	2025-11-27 22:00:21.722518132 +0100
+++ python-pyvista/tests/plotting/test_charts.py	2025-11-27 22:00:21.707777996 +0100
@@ -2,6 +2,7 @@
 
 from __future__ import annotations
 
+import importlib
 import itertools
 import weakref
 
@@ -20,6 +21,12 @@
 ]
 
 
+# charts fail if paraview is used to provide vtkmodules
+# since it does not provide vtkPythonContext2D
+if importlib.util.find_spec("paraview"):
+    pytestmark = pytest.mark.skip("paraview provides vtk without vtkPythonContext2D required for charts")
+
+
 def vtk_array_to_tuple(arr):
     return tuple(arr.GetValue(i) for i in range(arr.GetNumberOfValues()))
 
Index: python-pyvista/tests/plotting/test_plotting.py
===================================================================
--- python-pyvista.orig/tests/plotting/test_plotting.py	2025-11-27 22:00:21.722518132 +0100
+++ python-pyvista/tests/plotting/test_plotting.py	2025-11-27 22:00:21.709505182 +0100
@@ -7,6 +7,7 @@
 from __future__ import annotations
 
 import inspect
+import importlib
 import io
 import os
 import pathlib
@@ -48,6 +49,11 @@
 
     from pytest_mock import MockerFixture
 
+# charts fail if paraview is used to provide vtkmodules
+# since it does not provide vtkPythonContext2D
+xfail_charts = pytest.mark.xfail(importlib.util.find_spec("paraview"),
+                                reason="paraview provides vtk without vtkPythonContext2D required for charts")
+
 # skip all tests if unable to render
 pytestmark = pytest.mark.skip_plotting
 
@@ -2783,6 +2789,7 @@
 
 @pytest.mark.skip_mac('MacOS CI fails when downloading examples')
 @pytest.mark.needs_vtk_version(9, 2, 0)
+@xfail_charts
 def test_chart_plot():
     """Basic test to verify chart plots correctly"""
     # Chart 1 (bottom left)
@@ -2850,6 +2857,7 @@
 
 
 @skip_9_1_0
+@xfail_charts
 def test_chart_matplotlib_plot(verify_image_cache):
     """Test integration with matplotlib"""
     # Seeing CI failures for Conda job that need to be addressed
@@ -2882,6 +2890,7 @@
 
 
 @pytest.mark.usefixtures('no_images_to_verify')
+@xfail_charts
 def test_get_charts():
     """Test that the get_charts method is retuning a list of charts"""
     chart = pv.Chart2D()
@@ -3646,6 +3655,7 @@
 
 
 @skip_9_1_0
+@xfail_charts
 def test_charts_sin():
     x = np.linspace(0, 2 * np.pi, 20)
     y = np.sin(x)
Index: python-pyvista/tests/core/test_polydata.py
===================================================================
--- python-pyvista.orig/tests/core/test_polydata.py	2025-11-27 22:00:21.722518132 +0100
+++ python-pyvista/tests/core/test_polydata.py	2025-11-27 22:00:21.711024287 +0100
@@ -1,5 +1,6 @@
 from __future__ import annotations
 
+import importlib
 from math import pi
 import pathlib
 from pathlib import Path
@@ -1245,6 +1246,8 @@
         arc.extrude_rotate()
 
 
+@pytest.mark.xfail(importlib.util.find_spec("paraview"),
+                   reason="paraview provides inconsistent vtk")
 def test_flip_normals(sphere):
     with pytest.warns(
         PyVistaDeprecationWarning, match='`flip_normals` is deprecated. Use `flip_faces` instead'
Index: python-pyvista/tests/core/test_dataset_filters.py
===================================================================
--- python-pyvista.orig/tests/core/test_dataset_filters.py	2025-11-27 22:00:21.722518132 +0100
+++ python-pyvista/tests/core/test_dataset_filters.py	2025-11-27 22:00:21.713078176 +0100
@@ -1,6 +1,7 @@
 from __future__ import annotations
 
 import functools
+import importlib
 import itertools
 from pathlib import Path
 import re
@@ -33,6 +34,9 @@
 if TYPE_CHECKING:
     from pytest_mock import MockerFixture
 
+xfail_paraview = pytest.mark.xfail(importlib.util.find_spec("paraview"),
+                                  reason="paraview provides vtk without vtkImageDilateErode3D")
+
 normals = ['x', 'y', '-z', (1, 1, 1), (3.3, 5.4, 0.8)]
 
 
@@ -2906,6 +2910,7 @@
     )
 
 
+@xfail_paraview
 def test_image_dilate_erode_output_type():
     point_data = np.zeros((10, 10, 10))
     point_data[4, 4, 4] = 1
@@ -2917,6 +2922,7 @@
     assert isinstance(volume_dilate_erode, pv.ImageData)
 
 
+@xfail_paraview
 def test_image_dilate_erode_dilation():
     point_data = np.zeros((10, 10, 10))
     point_data[4, 4, 4] = 1
@@ -2933,6 +2939,7 @@
     )
 
 
+@xfail_paraview
 def test_image_dilate_erode_erosion():
     point_data = np.zeros((10, 10, 10))
     point_data[4, 4, 4] = 1
@@ -2946,6 +2953,7 @@
     )
 
 
+@xfail_paraview
 def test_image_dilate_erode_cell_data_specified():
     point_data = np.zeros((10, 10, 10))
     cell_data = np.zeros((9, 9, 9))
@@ -2956,6 +2964,7 @@
         volume.image_dilate_erode(scalars='cell_data')
 
 
+@xfail_paraview
 def test_image_dilate_erode_cell_data_active():
     point_data = np.zeros((10, 10, 10))
     cell_data = np.zeros((9, 9, 9))
Index: python-pyvista/tests/core/test_reader.py
===================================================================
--- python-pyvista.orig/tests/core/test_reader.py	2025-11-27 22:00:21.722518132 +0100
+++ python-pyvista/tests/core/test_reader.py	2025-11-27 22:00:21.714496664 +0100
@@ -1,5 +1,6 @@
 from __future__ import annotations
 
+import importlib
 from pathlib import Path
 import pickle
 import re
@@ -1034,6 +1035,8 @@
 @pytest.mark.needs_vtk_version(
     9, 1, 0, reason='Requires VTK>=9.1.0 for a concrete PartitionedDataSetWriter class.'
 )
+@pytest.mark.xfail(importlib.util.find_spec("paraview"),
+                   reason="paraview provides inconsistent vtk")
 def test_xmlpartitioneddatasetreader(tmpdir):
     tmpfile = tmpdir.join('temp.vtpd')
     partitions = pv.PartitionedDataSet(
Index: python-pyvista/tests/core/test_composite.py
===================================================================
--- python-pyvista.orig/tests/core/test_composite.py	2025-11-27 22:00:21.722518132 +0100
+++ python-pyvista/tests/core/test_composite.py	2025-11-27 22:00:21.715307047 +0100
@@ -1,6 +1,7 @@
 from __future__ import annotations
 
 from collections.abc import Generator
+import importlib
 import itertools
 import pathlib
 import re
@@ -407,6 +408,8 @@
     assert multi_z_bounds == poly_z_bounds
 
 
+@pytest.mark.xfail(importlib.util.find_spec("paraview"),
+                   reason="paraview provides inconsistent vtk")
 def test_multi_block_eq(multiblock_all_with_nested_and_none):
     multi = multiblock_all_with_nested_and_none
     other = multi.copy()
Index: python-pyvista/tests/core/test_grid.py
===================================================================
--- python-pyvista.orig/tests/core/test_grid.py	2025-11-27 22:00:21.722518132 +0100
+++ python-pyvista/tests/core/test_grid.py	2025-11-27 22:00:21.716102127 +0100
@@ -1,5 +1,6 @@
 from __future__ import annotations
 
+import importlib
 import pathlib
 from pathlib import Path
 import re
@@ -932,6 +933,8 @@
         assert np.allclose(structured.cell_data[k], v)
 
 
+@pytest.mark.xfail(importlib.util.find_spec("paraview"),
+                   reason="paraview provides inconsistent vtk")
 def test_create_image_data_from_specs():
     # empty
     grid = pv.ImageData()
Index: python-pyvista/tests/core/test_utilities.py
===================================================================
--- python-pyvista.orig/tests/core/test_utilities.py	2025-11-27 22:00:21.722518132 +0100
+++ python-pyvista/tests/core/test_utilities.py	2025-11-27 22:00:21.717155672 +0100
@@ -4,6 +4,7 @@
 
 from collections.abc import Iterable
 import contextlib
+import importlib
 import json
 import os
 from pathlib import Path
@@ -749,6 +750,8 @@
     alg.Update()
 
 
+@pytest.mark.xfail(importlib.util.find_spec("paraview"),
+                   reason="paraview provides inconsistent vtk")
 def test_vtk_error_catcher():
     # raise_errors: False
     error_catcher = pv.core.utilities.observers.VtkErrorCatcher()
Index: python-pyvista/tests/plotting/test_collection.py
===================================================================
--- python-pyvista.orig/tests/plotting/test_collection.py	2025-11-27 22:00:21.722518132 +0100
+++ python-pyvista/tests/plotting/test_collection.py	2025-11-27 22:00:21.717931717 +0100
@@ -3,9 +3,11 @@
 from __future__ import annotations
 
 import gc
+import importlib
 import weakref
 
 import numpy as np
+import pytest
 import vtk
 
 import pyvista as pv
@@ -48,6 +50,8 @@
     pl.add_mesh(sphere, scalars=range(sphere.n_points))
 
 
+@pytest.mark.xfail(importlib.util.find_spec("paraview"),
+                   reason="paraview provides vtk without vtkPythonContext2D required for charts")
 def test_plotting_collection():
     """Ensure that we don't leak Plotter, Renderer and Charts instances."""
     pl = pv.Plotter()
Index: python-pyvista/tests/core/test_dataobject.py
===================================================================
--- python-pyvista.orig/tests/core/test_dataobject.py	2025-11-27 22:00:21.722518132 +0100
+++ python-pyvista/tests/core/test_dataobject.py	2025-11-27 22:00:21.718326090 +0100
@@ -1,6 +1,7 @@
 from __future__ import annotations
 
 from collections import UserDict
+import importlib
 import json
 import multiprocessing
 import pickle
@@ -47,6 +48,8 @@
     assert mesh1 != mesh3
 
 
+@pytest.mark.xfail(importlib.util.find_spec("paraview"),
+                   reason="paraview provides inconsistent vtk")
 def test_uniform_eq():
     orig = examples.load_uniform()
     copy = orig.copy(deep=True)
