diff --git a/tfexec/internal/e2etest/show_test.go b/tfexec/internal/e2etest/show_test.go
index c8636d2..29e7711 100644
--- a/tfexec/internal/e2etest/show_test.go
+++ b/tfexec/internal/e2etest/show_test.go
@@ -185,7 +185,7 @@
 	})
 }
 
-func TestShow_noInitNonLocalBackend(t *testing.T) {
+func TestShow_noInitInmemBackend(t *testing.T) {
 	runTest(t, "inmem_backend", func(t *testing.T, tfv *version.Version, tf *tfexec.Terraform) {
 		if tfv.LessThan(showMinVersion) {
 			t.Skip("terraform show was added in Terraform 0.12, so test is not valid")
@@ -213,12 +213,44 @@
 	})
 }
 
+func TestShow_noInitCloudBackend(t *testing.T) {
+	runTest(t, "cloud_backend", func(t *testing.T, tfv *version.Version, tf *tfexec.Terraform) {
+		if tfv.LessThan(version.Must(version.NewVersion("1.1.0"))) {
+			t.Skip("cloud backend was added in Terraform 1.1, so test is not valid")
+		}
+
+		var noInit *tfexec.ErrNoInit
+		_, err := tf.Show(context.Background())
+		if !errors.As(err, &noInit) {
+			t.Fatalf("expected error ErrNoInit, got %T: %s", err, err)
+		}
+	})
+}
+
 func TestShow_noInitEtcdBackend(t *testing.T) {
 	runTest(t, "etcd_backend", func(t *testing.T, tfv *version.Version, tf *tfexec.Terraform) {
 		if tfv.LessThan(showMinVersion) {
 			t.Skip("terraform show was added in Terraform 0.12, so test is not valid")
 		}
 
+		if tfv.GreaterThanOrEqual(version.Must(version.NewVersion("1.3.0"))) || tfv.Prerelease() != "" {
+			t.Skip("etcd backend was removed in Terraform 1.3, so test is not valid")
+		}
+
+		var noInit *tfexec.ErrNoInit
+		_, err := tf.Show(context.Background())
+		if !errors.As(err, &noInit) {
+			t.Fatalf("expected error ErrNoInit, got %T: %s", err, err)
+		}
+	})
+}
+
+func TestShow_noInitRemoteBackend(t *testing.T) {
+	runTest(t, "remote_backend", func(t *testing.T, tfv *version.Version, tf *tfexec.Terraform) {
+		if tfv.LessThan(showMinVersion) {
+			t.Skip("terraform show was added in Terraform 0.12, so test is not valid")
+		}
+
 		var noInit *tfexec.ErrNoInit
 		_, err := tf.Show(context.Background())
 		if !errors.As(err, &noInit) {
diff --git a/tfexec/internal/e2etest/testdata/cloud_backend/main.tf b/tfexec/internal/e2etest/testdata/cloud_backend/main.tf
new file mode 100644
index 0000000..f876346
--- /dev/null
+++ b/tfexec/internal/e2etest/testdata/cloud_backend/main.tf
@@ -0,0 +1,4 @@
+terraform {
+  backend "cloud" {
+  }
+}
diff --git a/tfexec/internal/e2etest/testdata/remote_backend/main.tf b/tfexec/internal/e2etest/testdata/remote_backend/main.tf
new file mode 100644
index 0000000..627d792
--- /dev/null
+++ b/tfexec/internal/e2etest/testdata/remote_backend/main.tf
@@ -0,0 +1,4 @@
+terraform {
+  backend "remote" {
+  }
+}
