diff --git a/src/lc-compliance/environment.cpp b/src/lc-compliance/environment.cpp
new file mode 100644
index 000000000000..de7fa5bbadd1
--- /dev/null
+++ b/src/lc-compliance/environment.cpp
@@ -0,0 +1,35 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (C) 2021, Collabora Ltd.
+ *
+ * environment.cpp - Common environment for tests
+ */
+
+#include "environment.h"
+
+Environment *Environment::instance_ = nullptr;
+std::shared_ptr<Camera> Environment::camera_ = nullptr;
+
+bool Environment::create(std::shared_ptr<Camera> camera)
+{
+	if (instance_)
+		return false;
+
+	camera_ = camera;
+	instance_ = new Environment;
+	return true;
+}
+
+void Environment::destroy()
+{
+	if (!camera_)
+		return;
+
+	camera_->release();
+	camera_.reset();
+}
+
+Environment *Environment::instance()
+{
+	return instance_;
+}
diff --git a/src/lc-compliance/environment.h b/src/lc-compliance/environment.h
new file mode 100644
index 000000000000..f4832d371b6c
--- /dev/null
+++ b/src/lc-compliance/environment.h
@@ -0,0 +1,31 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (C) 2021, Collabora Ltd.
+ *
+ * environment.h - Common environment for tests
+ */
+#ifndef __LC_COMPLIANCE_ENVIRONMENT_H__
+#define __LC_COMPLIANCE_ENVIRONMENT_H__
+
+#include <libcamera/libcamera.h>
+
+using namespace libcamera;
+
+class Environment
+{
+public:
+	static bool create(std::shared_ptr<Camera> camera);
+	void destroy();
+
+	static Environment *instance();
+
+	std::shared_ptr<Camera> camera() const { return camera_; }
+
+private:
+	Environment() {};
+
+	static Environment *instance_;
+	static std::shared_ptr<Camera> camera_;
+};
+
+#endif /* __LC_COMPLIANCE_ENVIRONMENT_H__ */
diff --git a/src/lc-compliance/meson.build b/src/lc-compliance/meson.build
index a2bfcceb1259..c287017575bd 100644
--- a/src/lc-compliance/meson.build
+++ b/src/lc-compliance/meson.build
@@ -14,6 +14,7 @@ lc_compliance_sources = files([
     '../cam/options.cpp',
     'main.cpp',
     'results.cpp',
+    'environment.cpp',
     'simple_capture.cpp',
     'single_stream.cpp',
 ])
