diff --git a/e2e/cephfs.go b/e2e/cephfs.go
index f790c42477b7..0818b9ce2eea 100644
--- a/e2e/cephfs.go
+++ b/e2e/cephfs.go
@@ -337,7 +337,7 @@ var _ = Describe(cephfsType, func() {
 					framework.Failf("failed to create CephFS storageclass: %v", err)
 				}
 				scName := "csi-cephfs-sc"
-				base, err := newVolumeGroupSnapshotBase(f, scName, f.UniqueName, false, deployTimeout, 3)
+				base, err := newVolumeGroupSnapshotBase(f, f.UniqueName, scName, false, deployTimeout, 3)
 				if err != nil {
 					framework.Failf("failed to create volumeGroupSnapshot Base: %v", err)
 				}
diff --git a/e2e/volumegroupsnapshot.go b/e2e/volumegroupsnapshot.go
index 73e01a0365dd..5c573e6dd1ba 100644
--- a/e2e/volumegroupsnapshot.go
+++ b/e2e/volumegroupsnapshot.go
@@ -59,6 +59,7 @@ func (c *cephFS) GetVolumeGroupSnapshotClass() (*groupsnapapi.VolumeGroupSnapsho
 }
 
 func (c *cephFS) ValidateResourcesForCreate(vgs *groupsnapapi.VolumeGroupSnapshot) error {
+	ctx := context.TODO()
 	metadataPool, err := getCephFSMetadataPoolName(c.framework, fileSystemName)
 	if err != nil {
 		return fmt.Errorf("failed getting cephFS metadata pool name: %w", err)
@@ -72,14 +73,14 @@ func (c *cephFS) ValidateResourcesForCreate(vgs *groupsnapapi.VolumeGroupSnapsho
 
 	// we are creating 1 snapshot for each source PVC, validate the snapshot count
 	for _, pvcSnap := range vgs.Status.PVCVolumeSnapshotRefList {
-		pvc, err := c.framework.ClientSet.CoreV1().PersistentVolumeClaims(vgs.Namespace).Get(context.TODO(),
+		pvc, err := c.framework.ClientSet.CoreV1().PersistentVolumeClaims(vgs.Namespace).Get(ctx,
 			pvcSnap.PersistentVolumeClaimRef.Name,
 			metav1.GetOptions{})
 		if err != nil {
 			return fmt.Errorf("failed to get PVC: %w", err)
 		}
 		pv := pvc.Spec.VolumeName
-		pvObj, err := c.framework.ClientSet.CoreV1().PersistentVolumes().Get(context.TODO(), pv, metav1.GetOptions{})
+		pvObj, err := c.framework.ClientSet.CoreV1().PersistentVolumes().Get(ctx, pv, metav1.GetOptions{})
 		if err != nil {
 			return fmt.Errorf("failed to get PV: %w", err)
 		}
diff --git a/e2e/volumegroupsnapshot_base.go b/e2e/volumegroupsnapshot_base.go
index 531c83a1c857..d358bf9796c1 100644
--- a/e2e/volumegroupsnapshot_base.go
+++ b/e2e/volumegroupsnapshot_base.go
@@ -169,6 +169,7 @@ func (v *volumeGroupSnapshotterBase) CreatePVCClones(vgs *groupsnapapi.VolumeGro
 			return nil, fmt.Errorf("failed to get PVC: %w", err)
 		}
 		pvcs[i] = pvc.DeepCopy()
+
 		pvcs[i].Name = fmt.Sprintf("%s-clone-%d", pvc.Name, i)
 		snap := pvcSnap.VolumeSnapshotRef
 		apiGroup := snapapi.GroupName
@@ -178,8 +179,11 @@ func (v *volumeGroupSnapshotterBase) CreatePVCClones(vgs *groupsnapapi.VolumeGro
 			Name:     snap.Name,
 		}
 		pvcs[i].Spec.StorageClassName = &scName
+		// cleanup the VolumeName and Resource version in pvc object
+		pvcs[i].Spec.VolumeName = ""
+		pvcs[i].ResourceVersion = ""
 
-		err = createPVCAndvalidatePV(v.framework.ClientSet, pvc, v.timeout)
+		err = createPVCAndvalidatePV(v.framework.ClientSet, pvcs[i], v.timeout)
 		if err != nil {
 			return nil, fmt.Errorf("failed to create PVC: %w", err)
 		}
@@ -194,7 +198,7 @@ func (v volumeGroupSnapshotterBase) CreateVolumeGroupSnapshotClass(
 	return wait.PollUntilContextTimeout(
 		context.TODO(),
 		poll,
-		time.Duration(v.timeout),
+		time.Duration(v.timeout)*time.Minute,
 		true,
 		func(ctx context.Context) (bool, error) {
 			_, err := v.groupclient.VolumeGroupSnapshotClasses().Create(ctx, groupSnapshotClass, metav1.CreateOptions{})
@@ -259,11 +263,18 @@ func (v volumeGroupSnapshotterBase) CreateVolumeGroupSnapshot(name,
 		if groupSnapshot.Status == nil || groupSnapshot.Status.ReadyToUse == nil {
 			return false, nil
 		}
+
 		if *groupSnapshot.Status.ReadyToUse {
 			return true, nil
 		}
 
-		framework.Logf("VolumeGroupSnapshot %s status %+v", groupSnapshot.Name, *groupSnapshot.Status)
+		readyToUse := groupSnapshot.Status.ReadyToUse
+		errMsg := ""
+		if groupSnapshot.Status.Error != nil {
+			errMsg = *groupSnapshot.Status.Error.Message
+		}
+
+		framework.Logf("VolumeGroupSnapshot %s is not ready to use. ReadyToUse: %v, Error: %s", name, readyToUse, errMsg)
 
 		return false, nil
 	})
@@ -275,8 +286,9 @@ func (v volumeGroupSnapshotterBase) CreateVolumeGroupSnapshot(name,
 }
 
 func (v volumeGroupSnapshotterBase) DeleteVolumeGroupSnapshot(volumeGroupSnapshotName, namespace string) error {
+	ctx := context.TODO()
 	err := v.groupclient.VolumeGroupSnapshots(namespace).Delete(
-		context.TODO(),
+		ctx,
 		volumeGroupSnapshotName,
 		metav1.DeleteOptions{})
 	if err != nil {
@@ -285,7 +297,6 @@ func (v volumeGroupSnapshotterBase) DeleteVolumeGroupSnapshot(volumeGroupSnapsho
 	start := time.Now()
 	framework.Logf("Waiting for VolumeGroupSnapshot %v to be deleted", volumeGroupSnapshotName)
 	timeout := time.Duration(v.timeout) * time.Minute
-	ctx := context.TODO()
 
 	return wait.PollUntilContextTimeout(
 		ctx,
@@ -375,7 +386,7 @@ func (v *volumeGroupSnapshotterBase) testVolumeGroupSnapshot(vol volumeGroupSnap
 
 	clonePVCs, err := v.CreatePVCClones(volumeGroupSnapshot, v.storageClassName)
 	if err != nil {
-		return fmt.Errorf("failed to create clones and pods: %w", err)
+		return fmt.Errorf("failed to create clones: %w", err)
 	}
 	// validate the resources in the backend
 	err = vol.ValidateResourcesForCreate(volumeGroupSnapshot)