diff --git a/.github/workflows/test-integrations.yml b/.github/workflows/test-integrations.yml
index b42459331ced..bacf337e3ab5 100644
--- a/.github/workflows/test-integrations.yml
+++ b/.github/workflows/test-integrations.yml
@@ -515,7 +515,9 @@ jobs:
             -p=4 \
             -tags "${{ env.GOTAGS }}" \
             -timeout=30m \
-            -json ./... \
+            -json \
+            ./... \
+            --follow-log=false \
             --target-image ${{ env.CONSUL_LATEST_IMAGE_NAME }} \
             --target-version local \
             --latest-image docker.mirror.hashicorp.services/${{ env.CONSUL_LATEST_IMAGE_NAME }} \
diff --git a/test/integration/consul-container/test/upgrade/basic/fullstopupgrade_test.go b/test/integration/consul-container/test/upgrade/basic/fullstopupgrade_test.go
new file mode 100644
index 000000000000..6823dfd547bb
--- /dev/null
+++ b/test/integration/consul-container/test/upgrade/basic/fullstopupgrade_test.go
@@ -0,0 +1,90 @@
+// Copyright (c) HashiCorp, Inc.
+// SPDX-License-Identifier: MPL-2.0
+
+package upgrade
+
+import (
+	"context"
+	"fmt"
+	"testing"
+	"time"
+
+	goretry "github.com/avast/retry-go"
+	"github.com/stretchr/testify/require"
+
+	"github.com/hashicorp/consul/api"
+	"github.com/hashicorp/consul/sdk/testutil/retry"
+	libcluster "github.com/hashicorp/consul/test/integration/consul-container/libs/cluster"
+	libservice "github.com/hashicorp/consul/test/integration/consul-container/libs/service"
+	"github.com/hashicorp/consul/test/integration/consul-container/libs/topology"
+	"github.com/hashicorp/consul/test/integration/consul-container/libs/utils"
+)
+
+// Test upgrade a cluster of latest version to the target version
+func TestStandardUpgradeToTarget_fromLatest(t *testing.T) {
+	const numServers = 1
+	buildOpts := &libcluster.BuildOptions{
+		ConsulImageName:      utils.GetLatestImageName(),
+		ConsulVersion:        utils.LatestVersion,
+		Datacenter:           "dc1",
+		InjectAutoEncryption: true,
+	}
+
+	cluster, _, _ := topology.NewCluster(t, &topology.ClusterConfig{
+		NumServers:                numServers,
+		BuildOpts:                 buildOpts,
+		ApplyDefaultProxySettings: true,
+	})
+	client := cluster.APIClient(0)
+
+	libcluster.WaitForLeader(t, cluster, client)
+	libcluster.WaitForMembers(t, client, numServers)
+
+	// Create a service to be stored in the snapshot
+	const serviceName = "api"
+	index := libservice.ServiceCreate(t, client, serviceName)
+
+	require.NoError(t, client.Agent().ServiceRegister(
+		&api.AgentServiceRegistration{Name: serviceName, Port: 9998},
+	))
+	err := goretry.Do(
+		func() error {
+			ch, errCh := libservice.ServiceHealthBlockingQuery(client, serviceName, index)
+			select {
+			case err := <-errCh:
+				require.NoError(t, err)
+			case service := <-ch:
+				index = service[0].Service.ModifyIndex
+				if len(service) != 1 {
+					return fmt.Errorf("service is %d, want 1", len(service))
+				}
+				if serviceName != service[0].Service.Service {
+					return fmt.Errorf("service name is %s, want %s", service[0].Service.Service, serviceName)
+				}
+				if service[0].Service.Port != 9998 {
+					return fmt.Errorf("service is %d, want 9998", service[0].Service.Port)
+				}
+			}
+			return nil
+		},
+		goretry.Attempts(5),
+		goretry.Delay(time.Second),
+	)
+	require.NoError(t, err)
+
+	// upgrade the cluster to the Target version
+	t.Logf("initiating standard upgrade to version=%q", utils.TargetVersion)
+	err = cluster.StandardUpgrade(t, context.Background(), utils.GetTargetImageName(), utils.TargetVersion)
+
+	require.NoError(t, err)
+	libcluster.WaitForLeader(t, cluster, client)
+	libcluster.WaitForMembers(t, client, numServers)
+
+	// Verify service is restored from the snapshot
+	retry.RunWith(&retry.Timer{Timeout: 5 * time.Second, Wait: 500 * time.Microsecond}, t, func(r *retry.R) {
+		service, _, err := client.Catalog().Service(serviceName, "", &api.QueryOptions{})
+		require.NoError(r, err)
+		require.Len(r, service, 1)
+		require.Equal(r, serviceName, service[0].ServiceName)
+	})
+}