diff --git a/hack/bats b/hack/bats
index fb99181f52..ba26e0444a 100755
--- a/hack/bats
+++ b/hack/bats
@@ -23,6 +23,9 @@ $0 is a wrapper for invoking podman system tests.
                     runs only subtests within FILENAME-PATTERH whose names
                     match that string.
 
+   --tag=TAG      Passed on to bats as '--filter-tags TAG'
+                  As of 2023-07-26 the only tag used is 'distro-integration'
+
    -T             Passed on to bats, which will then show timing data
 
    --help         display usage message
@@ -83,6 +86,7 @@ for i;do
         --rootless) TEST_ROOT= ;;
         --remote)   REMOTE=remote ;;
         --ts|-T)    bats_opts+=("-T") ;;
+        --tag=*)    bats_filter=("--filter-tags" "$value") ;;
         */*.bats)   TESTS=$i ;;
         *)
             if [[ $i =~ : ]]; then
diff --git a/test/system/001-basic.bats b/test/system/001-basic.bats
index b6a88495c1..5109bd20a9 100644
--- a/test/system/001-basic.bats
+++ b/test/system/001-basic.bats
@@ -13,6 +13,7 @@ function setup() {
 
 #### DO NOT ADD ANY TESTS HERE! ADD NEW TESTS AT BOTTOM!
 
+# bats test_tags=distro-integration
 @test "podman version emits reasonable output" {
     run_podman version
 
@@ -38,6 +39,7 @@ function setup() {
     is "$output" ".*The --config flag is ignored by Podman. Exists for Docker compatibility\+"		  "verify warning for --config option"
 }
 
+# bats test_tags=distro-integration
 @test "podman info" {
     # These will be displayed on the test output stream, offering an
     # at-a-glance overview of important system configuration details
@@ -71,6 +73,7 @@ function setup() {
        "--context=swarm should fail"
 }
 
+# bats test_tags=distro-integration
 @test "podman can pull an image" {
     run_podman rmi -a -f
 
diff --git a/test/system/030-run.bats b/test/system/030-run.bats
index 2619137074..681f00a4c6 100644
--- a/test/system/030-run.bats
+++ b/test/system/030-run.bats
@@ -3,6 +3,7 @@
 load helpers
 load helpers.network
 
+# bats test_tags=distro-integration
 @test "podman run - basic tests" {
     rand=$(random_string 30)
 
@@ -296,6 +297,7 @@ echo $rand        |   0 | $rand
 }
 
 # #6829 : add username to /etc/passwd inside container if --userns=keep-id
+# bats test_tags=distro-integration
 @test "podman run : add username to /etc/passwd if --userns=keep-id" {
     skip_if_not_rootless "--userns=keep-id only works in rootless mode"
     # Default: always run as root
@@ -695,6 +697,7 @@ json-file | f
 # https://github.com/containers/podman/issues/9096
 # podman exec may truncate stdout/stderr; actually a bug in conmon:
 # https://github.com/containers/conmon/issues/236
+# bats test_tags=distro-integration
 @test "podman run - does not truncate or hang with big output" {
     # Size, in bytes, to dd and to expect in return
     char_count=700000
diff --git a/test/system/032-sig-proxy.bats b/test/system/032-sig-proxy.bats
index fca2d44d17..d34645c7a2 100644
--- a/test/system/032-sig-proxy.bats
+++ b/test/system/032-sig-proxy.bats
@@ -5,6 +5,7 @@ load helpers.sig-proxy
 
 # Each of the tests below does some setup, then invokes the helper from helpers.sig-proxy.bash.
 
+# bats test_tags=distro-integration
 @test "podman sigproxy test: run" {
     # We're forced to use $PODMAN because run_podman cannot be backgrounded
     $PODMAN run -i --name c_run $IMAGE sh -c "$SLEEPLOOP" &
diff --git a/test/system/035-logs.bats b/test/system/035-logs.bats
index aa33d5cc04..b401d0339a 100644
--- a/test/system/035-logs.bats
+++ b/test/system/035-logs.bats
@@ -337,6 +337,7 @@ timeout: sending signal TERM to command.*" "logs --since -f on running container
     _log_test_follow_since k8s-file
 }
 
+# bats test_tags=distro-integration
 @test "podman logs - --since --follow journald" {
     # We can't use journald on RHEL as rootless: rhbz#1895105
     skip_if_journald_unavailable
@@ -379,6 +380,7 @@ $content--2.*" "logs --until -f on running container works"
     _log_test_follow_until k8s-file
 }
 
+# bats test_tags=distro-integration
 @test "podman logs - --until --follow journald" {
     # We can't use journald on RHEL as rootless: rhbz#1895105
     skip_if_journald_unavailable
diff --git a/test/system/070-build.bats b/test/system/070-build.bats
index b3571105fa..76e56023a5 100644
--- a/test/system/070-build.bats
+++ b/test/system/070-build.bats
@@ -6,6 +6,7 @@
 
 load helpers
 
+# bats test_tags=distro-integration
 @test "podman build - basic test" {
     rand_filename=$(random_string 20)
     rand_content=$(random_string 50)
@@ -267,6 +268,7 @@ EOF
 }
 
 
+# bats test_tags=distro-integration
 @test "podman build - workdir, cmd, env, label" {
     tmpdir=$PODMAN_TMPDIR/build-test
     mkdir -p $tmpdir
diff --git a/test/system/075-exec.bats b/test/system/075-exec.bats
index 6c7126fb7a..93f034f8f1 100644
--- a/test/system/075-exec.bats
+++ b/test/system/075-exec.bats
@@ -5,6 +5,7 @@
 
 load helpers
 
+# bats test_tags=distro-integration
 @test "podman exec - basic test" {
     rand_filename=$(random_string 20)
     rand_content=$(random_string 50)
@@ -43,6 +44,7 @@ load helpers
     run_podman rm $cid
 }
 
+# bats test_tags=distro-integration
 @test "podman exec - leak check" {
     skip_if_remote "test is meaningless over remote"
 
diff --git a/test/system/080-pause.bats b/test/system/080-pause.bats
index deaf8d8318..f9e632c42c 100644
--- a/test/system/080-pause.bats
+++ b/test/system/080-pause.bats
@@ -5,6 +5,7 @@
 
 load helpers
 
+# bats test_tags=distro-integration
 @test "podman pause/unpause" {
     if is_rootless && ! is_cgroupsv2; then
         skip "'podman pause' (rootless) only works with cgroups v2"
@@ -58,6 +59,7 @@ load helpers
     run_podman 125 unpause $cname
 }
 
+# bats test_tags=distro-integration
 @test "podman unpause --all" {
     if is_rootless && ! is_cgroupsv2; then
         skip "'podman pause' (rootless) only works with cgroups v2"
diff --git a/test/system/090-events.bats b/test/system/090-events.bats
index 7577d2d54f..18593e17ba 100644
--- a/test/system/090-events.bats
+++ b/test/system/090-events.bats
@@ -5,6 +5,7 @@
 
 load helpers
 
+# bats test_tags=distro-integration
 @test "events with a filter by label" {
     cname=test-$(random_string 30 | tr A-Z a-z)
     labelname=$(random_string 10)
@@ -141,6 +142,7 @@ function _events_disjunctive_filters() {
     _events_disjunctive_filters ""
 }
 
+# bats test_tags=distro-integration
 @test "events with events_logfile_path in containers.conf" {
     skip_if_remote "remote does not support --events-backend"
     events_file=$PODMAN_TMPDIR/events.log
@@ -162,6 +164,7 @@ function _populate_events_file() {
     done
 }
 
+# bats test_tags=distro-integration
 @test "events log-file rotation" {
     skip_if_remote "setting CONTAINERS_CONF_OVERRIDE logger options does not affect remote client"
 
diff --git a/test/system/130-kill.bats b/test/system/130-kill.bats
index e4ec105d78..ad06bbade3 100644
--- a/test/system/130-kill.bats
+++ b/test/system/130-kill.bats
@@ -5,6 +5,7 @@
 
 load helpers
 
+# bats test_tags=distro-integration
 @test "podman kill - test signal handling in containers" {
 
     # Prepare for 'logs -f'
diff --git a/test/system/160-volumes.bats b/test/system/160-volumes.bats
index 369e95447b..650ab5a5d7 100644
--- a/test/system/160-volumes.bats
+++ b/test/system/160-volumes.bats
@@ -395,6 +395,7 @@ EOF
     is "$output"  "" "no more volumes to prune"
 }
 
+# bats test_tags=distro-integration
 @test "podman volume type=bind" {
     myvoldir=${PODMAN_TMPDIR}/volume_$(random_string)
     mkdir $myvoldir
diff --git a/test/system/170-run-userns.bats b/test/system/170-run-userns.bats
index ca53f8fb6e..b1f18cd073 100644
--- a/test/system/170-run-userns.bats
+++ b/test/system/170-run-userns.bats
@@ -3,6 +3,8 @@
 #
 # Tests for podman build
 #
+# bats file_tags=distro-integration
+#
 
 load helpers
 
diff --git a/test/system/180-blkio.bats b/test/system/180-blkio.bats
index 7b7fb0201a..a156773943 100644
--- a/test/system/180-blkio.bats
+++ b/test/system/180-blkio.bats
@@ -2,6 +2,8 @@
 #
 # podman blkio-related tests
 #
+# bats file_tags=distro-integration
+#
 
 load helpers
 
diff --git a/test/system/190-run-ipcns.bats b/test/system/190-run-ipcns.bats
index a764f9a7b4..b20871abb3 100644
--- a/test/system/190-run-ipcns.bats
+++ b/test/system/190-run-ipcns.bats
@@ -3,6 +3,8 @@
 #
 # Tests for podman build
 #
+# bats file_tags=distro-integration
+#
 
 load helpers
 
diff --git a/test/system/195-run-namesapces.bats b/test/system/195-run-namespaces.bats
similarity index 97%
rename from test/system/195-run-namesapces.bats
rename to test/system/195-run-namespaces.bats
index 17c30cc818..2bc67475c4 100644
--- a/test/system/195-run-namesapces.bats
+++ b/test/system/195-run-namespaces.bats
@@ -5,6 +5,7 @@
 
 load helpers
 
+# bats test_tags=distro-integration
 @test "podman test all namespaces" {
     # format is nsname | option name
     tests="
diff --git a/test/system/260-sdnotify.bats b/test/system/260-sdnotify.bats
index ae1f828afb..97041a9446 100644
--- a/test/system/260-sdnotify.bats
+++ b/test/system/260-sdnotify.bats
@@ -103,6 +103,7 @@ function _assert_mainpid_is_conmon() {
     _stop_socat
 }
 
+# bats test_tags=distro-integration
 @test "sdnotify : conmon" {
     export NOTIFY_SOCKET=$PODMAN_TMPDIR/conmon.sock
     _start_socat
@@ -141,6 +142,7 @@ READY=1" "sdnotify sent MAINPID and READY"
 
 # These tests can fail in dev. environment because of SELinux.
 # quick fix: chcon -t container_runtime_exec_t ./bin/podman
+# bats test_tags=distro-integration
 @test "sdnotify : container" {
     _prefetch $SYSTEMD_IMAGE
 
@@ -452,6 +454,7 @@ spec:
 " > $fname
 }
 
+# bats test_tags=distro-integration
 @test "podman kube play - exit-code propagation" {
     fname=$PODMAN_TMPDIR/$(random_string).yaml
 
diff --git a/test/system/410-selinux.bats b/test/system/410-selinux.bats
index d104c4aaf3..4b60f0c0cf 100644
--- a/test/system/410-selinux.bats
+++ b/test/system/410-selinux.bats
@@ -34,26 +34,32 @@ function check_label() {
 }
 
 
+# bats test_tags=distro-integration
 @test "podman selinux: confined container" {
     check_label "" "container_t"
 }
 
+# FIXME #19376 - container-selinux broken -- bats test_tags=distro-integration
 @test "podman selinux: container with label=disable" {
     check_label "--security-opt label=disable" "spc_t"
 }
 
+# FIXME #19376 - container-selinux broken -- bats test_tags=distro-integration
 @test "podman selinux: privileged container" {
     check_label "--privileged --userns=host" "spc_t"
 }
 
+# bats test_tags=distro-integration
 @test "podman selinux: init container" {
     check_label "--systemd=always" "container_init_t"
 }
 
+# bats test_tags=distro-integration
 @test "podman selinux: init container with --security-opt type" {
     check_label "--systemd=always --security-opt=label=type:spc_t" "spc_t"
 }
 
+# bats test_tags=distro-integration
 @test "podman selinux: init container with --security-opt level&type" {
     check_label "--systemd=always --security-opt=label=level:s0:c1,c2 --security-opt=label=type:spc_t" "spc_t" "s0:c1,c2"
 }
@@ -62,6 +68,7 @@ function check_label() {
     check_label "--systemd=always --security-opt=label=level:s0:c1,c2" "container_init_t"  "s0:c1,c2"
 }
 
+# FIXME #19376 - container-selinux broken -- bats test_tags=distro-integration
 @test "podman selinux: pid=host" {
     # FIXME this test fails when run rootless with runc:
     #   Error: container_linux.go:367: starting container process caused: process_linux.go:495: container init caused: readonly path /proc/asound: operation not permitted: OCI permission denied
@@ -153,6 +160,7 @@ function check_label() {
 }
 
 # pr #7902 - containers in pods should all run under same context
+# bats test_tags=distro-integration
 @test "podman selinux: containers in pods share full context" {
     skip_if_no_selinux
 
@@ -226,6 +234,7 @@ function check_label() {
     is "$output" "Error.*: $expect" "podman emits useful diagnostic on failure"
 }
 
+# bats test_tags=distro-integration
 @test "podman selinux: check relabel" {
     skip_if_no_selinux
 
diff --git a/test/system/500-networking.bats b/test/system/500-networking.bats
index 5caea14fe6..fdca1af440 100644
--- a/test/system/500-networking.bats
+++ b/test/system/500-networking.bats
@@ -449,6 +449,7 @@ load helpers.network
 }
 
 # Test for https://github.com/containers/podman/issues/10052
+# bats test_tags=distro-integration
 @test "podman network connect/disconnect with port forwarding" {
     random_1=$(random_string 30)
     HOST_PORT=$(random_free_port)