diff --git a/exporter/test/e2e/helper.go b/exporter/test/e2e/helper.go
index a68c97c7..d9f5d430 100644
--- a/exporter/test/e2e/helper.go
+++ b/exporter/test/e2e/helper.go
@@ -41,16 +41,46 @@ func newAppDeployment(namespace string, name string, replicas int32, containerNa
 	}
 }
 
+func newSidecarContainerDeployment(namespace string, name string, replicas int32, containerName string, image string, initContainerName string, initImage string, initCommand []string) *appsv1.Deployment {
+	labels := map[string]string{"app": name}
+	restartPolicy := corev1.ContainerRestartPolicyAlways
+	emptyDir := corev1.EmptyDirVolumeSource{}
+	volumeSource := corev1.VolumeSource{EmptyDir: &emptyDir}
+	return &appsv1.Deployment{
+		ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: namespace},
+		Spec: appsv1.DeploymentSpec{
+			Replicas: &replicas,
+			Selector: &metav1.LabelSelector{
+				MatchLabels: labels,
+			},
+			Template: corev1.PodTemplateSpec{
+				ObjectMeta: metav1.ObjectMeta{Labels: labels},
+				Spec:       corev1.PodSpec{Containers: []corev1.Container{{Name: containerName, Image: image, VolumeMounts: []corev1.VolumeMount{{Name: "data", MountPath: "/opt"}}}},
+							InitContainers: []corev1.Container{{Name: initContainerName, Image: initImage, RestartPolicy: &restartPolicy, Command: initCommand, VolumeMounts: []corev1.VolumeMount{{Name: "data", MountPath: "/opt"}}}},
+							Volumes: []corev1.Volume{{Name: "data", VolumeSource: volumeSource}},
+				},
+			},
+		},
+	}
+}
+
 func getContainerIDAndWorkerNode(ctx context.Context, c *envconf.Config, g *Ω.WithT, namespace string, selector string, containerName string) (namespacedContainerId, string) {
 	pod := getPod(ctx, c, g, namespace, selector)
 	g.Expect(len(pod.Status.ContainerStatuses)).Should(Ω.Equal(1))
 	container := pod.Status.ContainerStatuses[0]
-	g.Expect(container.Name).Should(Ω.Equal(containerName))
-
+	containerId := container.ContainerID
+	if container.Name == containerName {
+		containerId = container.ContainerID
+	} else {
+		g.Expect(len(pod.Status.InitContainerStatuses)).Should(Ω.Equal(1))
+		initContainer := pod.Status.InitContainerStatuses[0]
+		g.Expect(initContainer.Name).Should(Ω.Equal(containerName))
+		containerId = initContainer.ContainerID
+	}
 	return namespacedContainerId{
 		namespace:   namespace,
 		podName:     pod.ObjectMeta.Name,
-		containerId: container.ContainerID,
+		containerId: containerId,
 	}, pod.Spec.NodeName
 }
 
diff --git a/exporter/test/e2e/sidecar_test.go b/exporter/test/e2e/sidecar_test.go
new file mode 100644
index 00000000..1d5b4590
--- /dev/null
+++ b/exporter/test/e2e/sidecar_test.go
@@ -0,0 +1,47 @@
+package e2e
+
+import (
+	"exporter/pkg/types"
+	"testing"
+
+	Ω "github.com/onsi/gomega"
+	"sigs.k8s.io/e2e-framework/pkg/features"
+)
+
+func TestSidecarContainer(t *testing.T) {
+
+	appName := "sidecar-container"
+	containerName := "main"
+	image := "quay.io/insights-runtime-extractor-samples/rhbq-app:3.15.3"
+	initContainerName := "logshipper"
+	initImage := "quay.io/insights-runtime-extractor-samples/centos:7"
+	initCommand := []string{"sh", "-c", "tail -F /opt/logs.txt"}
+
+	deployment := newSidecarContainerDeployment(namespace, appName, 1, containerName, image, initContainerName, initImage, initCommand)
+
+	featureMain := features.New("Sidecar container deployment. Main image: "+image+" Init image: "+initImage).
+		Setup(deployTestResource(deployment, appName)).
+		Teardown(undeployTestResource(deployment, appName)).
+		Assess("runtime info extracted from main container", checkExtractedRuntimeInfo(namespace, "app="+appName, containerName, func(g *Ω.WithT, runtimeInfo types.ContainerRuntimeInfo) {
+			expected := types.ContainerRuntimeInfo{
+				Os:              "rhel",
+				OsVersion:       "8.10",
+				Kind:            "Java",
+				KindVersion:     "17.0.13",
+				KindImplementer: "Red Hat, Inc.",
+				Runtimes: []types.RuntimeComponent{{
+					Name:    "Quarkus",
+					Version: "3.15.3.redhat-00002",
+				}},
+			}
+			g.Expect(runtimeInfo).Should(Ω.Equal(expected))
+		})).
+		Assess("runtime info extracted from init container", checkExtractedRuntimeInfo(namespace, "app="+appName, initContainerName, func(g *Ω.WithT, runtimeInfo types.ContainerRuntimeInfo) {
+			expected := types.ContainerRuntimeInfo{
+				Os:              "centos",
+				OsVersion:       "7",
+			}
+			g.Expect(runtimeInfo).Should(Ω.Equal(expected))
+		}))
+	_ = testenv.Test(t, featureMain.Feature())
+}