diff --git a/test/meson.build b/test/meson.build
index 19726f37421d..b227be818419 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -32,7 +32,6 @@ subdir('ipa')
 subdir('ipc')
 subdir('log')
 subdir('media_device')
-subdir('pipeline')
 subdir('process')
 subdir('py')
 subdir('serialization')
diff --git a/test/pipeline/ipu3/ipu3_pipeline_test.cpp b/test/pipeline/ipu3/ipu3_pipeline_test.cpp
deleted file mode 100644
index 9e647af5fdf8..000000000000
--- a/test/pipeline/ipu3/ipu3_pipeline_test.cpp
+++ /dev/null
@@ -1,126 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * Copyright (C) 2019, Google Inc.
- *
- * ipu3_pipeline_test.cpp - Intel IPU3 pipeline test
- */
-
-#include <iostream>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#include <libcamera/camera.h>
-#include <libcamera/camera_manager.h>
-
-#include "libcamera/internal/device_enumerator.h"
-#include "libcamera/internal/media_device.h"
-#include "libcamera/internal/media_object.h"
-
-#include "test.h"
-
-using namespace std;
-using namespace libcamera;
-
-/*
- * Verify that the Intel IPU3 pipeline handler gets matched and cameras
- * are enumerated correctly.
- *
- * The test is supposed to be run on an IPU3 platform, otherwise it gets
- * skipped.
- *
- * The test lists all cameras registered in the system, if any camera is
- * available at all.
- */
-class IPU3PipelineTest : public Test
-{
-protected:
-	int init();
-	int run();
-	void cleanup();
-
-private:
-	CameraManager *cameraManager_;
-	unsigned int sensors_;
-};
-
-int IPU3PipelineTest::init()
-{
-	unique_ptr<DeviceEnumerator> enumerator = DeviceEnumerator::create();
-	if (!enumerator) {
-		cerr << "Failed to create device enumerator" << endl;
-		return TestFail;
-	}
-
-	if (enumerator->enumerate()) {
-		cerr << "Failed to enumerate media devices" << endl;
-		return TestFail;
-	}
-
-	DeviceMatch imgu_dm("ipu3-imgu");
-	DeviceMatch cio2_dm("ipu3-cio2");
-
-	if (!enumerator->search(imgu_dm)) {
-		cerr << "Failed to find IPU3 IMGU: test skip" << endl;
-		return TestSkip;
-	}
-
-	std::shared_ptr<MediaDevice> cio2 = enumerator->search(cio2_dm);
-	if (!cio2) {
-		cerr << "Failed to find IPU3 CIO2: test skip" << endl;
-		return TestSkip;
-	}
-
-	/*
-	 * Camera sensor are connected to the CIO2 unit.
-	 * Count how many sensors are connected in the system
-	 * and later verify this matches the number of registered
-	 * cameras.
-	 */
-	int ret = cio2->populate();
-	if (ret) {
-		cerr << "Failed to populate media device " << cio2->deviceNode() << endl;
-		return TestFail;
-	}
-
-	sensors_ = 0;
-	const vector<MediaEntity *> &entities = cio2->entities();
-	for (MediaEntity *entity : entities) {
-		if (entity->function() == MEDIA_ENT_F_CAM_SENSOR)
-			sensors_++;
-	}
-
-	enumerator.reset(nullptr);
-
-	cameraManager_ = new CameraManager();
-	ret = cameraManager_->start();
-	if (ret) {
-		cerr << "Failed to start the CameraManager" << endl;
-		return TestFail;
-	}
-
-	return 0;
-}
-
-int IPU3PipelineTest::run()
-{
-	auto cameras = cameraManager_->cameras();
-	for (const std::shared_ptr<Camera> &cam : cameras)
-		cout << "Found camera '" << cam->id() << "'" << endl;
-
-	if (cameras.size() != sensors_) {
-		cerr << cameras.size() << " cameras registered, but " << sensors_
-		     << " were expected" << endl;
-		return TestFail;
-	}
-
-	return TestPass;
-}
-
-void IPU3PipelineTest::cleanup()
-{
-	cameraManager_->stop();
-	delete cameraManager_;
-}
-
-TEST_REGISTER(IPU3PipelineTest)
diff --git a/test/pipeline/ipu3/meson.build b/test/pipeline/ipu3/meson.build
deleted file mode 100644
index af075707f505..000000000000
--- a/test/pipeline/ipu3/meson.build
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-License-Identifier: CC0-1.0
-
-ipu3_test = [
-    {'name': 'ipu3_pipeline_test', 'sources': ['ipu3_pipeline_test.cpp']},
-]
-
-foreach test : ipu3_test
-    exe = executable(test['name'], test['sources'],
-                     dependencies : libcamera_private,
-                     link_with : test_libraries,
-                     include_directories : test_includes_internal)
-
-    test(test['name'], exe, suite : 'ipu3', is_parallel : false)
-endforeach
diff --git a/test/pipeline/meson.build b/test/pipeline/meson.build
deleted file mode 100644
index 6e7901fee38f..000000000000
--- a/test/pipeline/meson.build
+++ /dev/null
@@ -1,4 +0,0 @@
-# SPDX-License-Identifier: CC0-1.0
-
-subdir('ipu3')
-subdir('rkisp1')
diff --git a/test/pipeline/rkisp1/meson.build b/test/pipeline/rkisp1/meson.build
deleted file mode 100644
index 1d178ad9da6f..000000000000
--- a/test/pipeline/rkisp1/meson.build
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-License-Identifier: CC0-1.0
-
-rkisp1_test = [
-    {'name': 'rkisp1_pipeline_test', 'sources': ['rkisp1_pipeline_test.cpp']},
-]
-
-foreach test : rkisp1_test
-    exe = executable(test['name'], test['sources'],
-                     dependencies : libcamera_private,
-                     link_with : test_libraries,
-                     include_directories : test_includes_internal)
-
-    test(test['name'], exe, suite : 'rkisp1', is_parallel : false)
-endforeach
diff --git a/test/pipeline/rkisp1/rkisp1_pipeline_test.cpp b/test/pipeline/rkisp1/rkisp1_pipeline_test.cpp
deleted file mode 100644
index acaf3c33b529..000000000000
--- a/test/pipeline/rkisp1/rkisp1_pipeline_test.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * Copyright (C) 2020, Linaro
- *
- * Based on test/pipeline/ipu3/ipu3_pipeline_test.cpp
- *
- * rkisp1_pipeline_test.cpp - Rockchip RK3399 rkisp1 pipeline test
- */
-
-#include <iostream>
-
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#include <libcamera/camera.h>
-#include <libcamera/camera_manager.h>
-
-#include "libcamera/internal/device_enumerator.h"
-#include "libcamera/internal/media_device.h"
-#include "libcamera/internal/media_object.h"
-
-#include "test.h"
-
-using namespace std;
-using namespace libcamera;
-
-/*
- * Verify that the RK3399 pipeline handler gets matched and cameras
- * are enumerated correctly.
- *
- * The test is supposed to be run on rockchip platform.
- *
- * The test lists all cameras registered in the system, if any camera is
- * available at all.
- */
-class RKISP1PipelineTest : public Test
-{
-protected:
-	int init();
-	int run();
-	void cleanup();
-
-private:
-	CameraManager *cameraManager_;
-	unsigned int sensors_;
-};
-
-int RKISP1PipelineTest::init()
-{
-	unique_ptr<DeviceEnumerator> enumerator = DeviceEnumerator::create();
-	if (!enumerator) {
-		cerr << "Failed to create device enumerator" << endl;
-		return TestFail;
-	}
-
-	if (enumerator->enumerate()) {
-		cerr << "Failed to enumerate media devices" << endl;
-		return TestFail;
-	}
-
-	DeviceMatch dm("rkisp1");
-
-	std::shared_ptr<MediaDevice> rkisp1 = enumerator->search(dm);
-	if (!rkisp1) {
-		cerr << "Failed to find rkisp1: test skip" << endl;
-		return TestSkip;
-	}
-
-	int ret = rkisp1->populate();
-	if (ret) {
-		cerr << "Failed to populate media device "
-		     << rkisp1->deviceNode() << endl;
-		return TestFail;
-	}
-
-	sensors_ = 0;
-	const vector<MediaEntity *> &entities = rkisp1->entities();
-	for (MediaEntity *entity : entities) {
-		if (entity->function() == MEDIA_ENT_F_CAM_SENSOR)
-			sensors_++;
-	}
-
-	cameraManager_ = new CameraManager();
-	ret = cameraManager_->start();
-	if (ret) {
-		cerr << "Failed to start the CameraManager" << endl;
-		return TestFail;
-	}
-
-	return 0;
-}
-
-int RKISP1PipelineTest::run()
-{
-	auto cameras = cameraManager_->cameras();
-	for (const std::shared_ptr<Camera> &cam : cameras)
-		cout << "Found camera '" << cam->id() << "'" << endl;
-
-	if (cameras.size() != sensors_) {
-		cerr << cameras.size() << " cameras registered, but " << sensors_
-		     << " were expected" << endl;
-		return TestFail;
-	}
-
-	return TestPass;
-}
-
-void RKISP1PipelineTest::cleanup()
-{
-	cameraManager_->stop();
-	delete cameraManager_;
-}
-
-TEST_REGISTER(RKISP1PipelineTest)
