diff --git a/tests/fate/cbs.mak b/tests/fate/cbs.mak
index 0084c3d25c..344515a7fa 100644
--- a/tests/fate/cbs.mak
+++ b/tests/fate/cbs.mak
@@ -5,6 +5,7 @@
 fate-cbs: fate-cbs-av1 fate-cbs-h264 fate-cbs-hevc fate-cbs-mpeg2 fate-cbs-vp9
 
 FATE_CBS_DEPS = $(call ALLYES, $(1)_DEMUXER $(2)_PARSER $(3)_METADATA_BSF $(4)_DECODER $(5)_MUXER)
+FATE_CBS_NO_DEC_DEPS = $(call ALLYES, $(1)_DEMUXER $(2)_PARSER $(3)_METADATA_BSF $(4)_MUXER)
 
 define FATE_CBS_TEST
 # (codec, test_name, sample_file, output_format)
@@ -12,6 +13,12 @@ FATE_CBS_$(1) += fate-cbs-$(1)-$(2)
 fate-cbs-$(1)-$(2): CMD = md5 -c:v $(3) -i $(TARGET_SAMPLES)/$(4) -c:v copy -y -bsf:v $(1)_metadata -f $(5)
 endef
 
+define FATE_CBS_NO_DEC_TEST
+# (codec, test_name, sample_file, output_format)
+FATE_CBS_$(1) += fate-cbs-$(1)-$(2)
+fate-cbs-$(1)-$(2): CMD = md5 -i $(TARGET_SAMPLES)/$(3) -c:v copy -y -bsf:v $(1)_metadata -f $(4)
+endef
+
 define FATE_CBS_DISCARD_TEST
 # (codec, discard_type, sample_file, output_format, dep)
 FATE_CBS_$(1)_DISCARD += fate-cbs-$(1)-discard-$(2)
@@ -163,6 +170,39 @@ FATE_CBS_HEVC-$(call ALLYES, MP4_MUXER, HEVC_PARSER, FILTER_UNITS_BSF, HEVC_MUXE
 FATE_SAMPLES_AVCONV += $(FATE_CBS_HEVC-yes)
 fate-cbs-hevc: $(FATE_CBS_HEVC-yes)
 
+# H.266 read/write
+
+FATE_CBS_VVC_SAMPLES =        \
+    AUD_A_3.bit               \
+    BOUNDARY_A_3.bit          \
+    BUMP_A_2.bit              \
+    CodingToolsSets_A_2.bit   \
+    CROP_B_4.bit              \
+    HRD_A_3.bit               \
+    PHSH_B_1.bit              \
+    POC_A_1.bit               \
+    PPS_B_1.bit               \
+    RAP_A_1.bit               \
+    SAO_A_3.bit               \
+    SCALING_A_1.bit           \
+    SLICES_A_3.bit            \
+    SPS_B_1.bit               \
+    STILL_B_1.bit             \
+    SUBPIC_A_3.bit            \
+    TILE_A_2.bit              \
+    VPS_A_3.bit               \
+    WP_A_3.bit                \
+    WPP_A_3.bit               \
+    WRAP_A_4.bit              \
+
+
+$(foreach N,$(FATE_CBS_VVC_SAMPLES),$(eval $(call FATE_CBS_NO_DEC_TEST,vvc,$(basename $(N)),vvc-conformance/$(N),vvc)))
+
+FATE_CBS_VVC-$(call FATE_CBS_NO_DEC_DEPS, HEVC, HEVC, HEVC, HEVC) = $(FATE_CBS_vvc)
+
+FATE_SAMPLES_AVCONV += $(FATE_CBS_VVC-yes)
+fate-cbs-vvc: $(FATE_CBS_VVC-yes)
+
 # MPEG-2 read/write
 
 FATE_CBS_MPEG2_SAMPLES =     \
diff --git a/tests/ref/fate/cbs-vvc-AUD_A_3 b/tests/ref/fate/cbs-vvc-AUD_A_3
new file mode 100644
index 0000000000..91dfc817b7
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-AUD_A_3
@@ -0,0 +1 @@
+5a5bf4ec5e75d38958863ce8aa6c1fad
diff --git a/tests/ref/fate/cbs-vvc-BOUNDARY_A_3 b/tests/ref/fate/cbs-vvc-BOUNDARY_A_3
new file mode 100644
index 0000000000..2647e37041
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-BOUNDARY_A_3
@@ -0,0 +1 @@
+3ef48cf6019ee5d7ca4ab8d5cd12bbd5
diff --git a/tests/ref/fate/cbs-vvc-BUMP_A_2 b/tests/ref/fate/cbs-vvc-BUMP_A_2
new file mode 100644
index 0000000000..4f7c69c2b7
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-BUMP_A_2
@@ -0,0 +1 @@
+80cb700aa0c31e693abaad7be56a606b
diff --git a/tests/ref/fate/cbs-vvc-CROP_B_4 b/tests/ref/fate/cbs-vvc-CROP_B_4
new file mode 100644
index 0000000000..6b46df0c82
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-CROP_B_4
@@ -0,0 +1 @@
+7d451021118d63bebe613cec1f773cc5
diff --git a/tests/ref/fate/cbs-vvc-CodingToolsSets_A_2 b/tests/ref/fate/cbs-vvc-CodingToolsSets_A_2
new file mode 100644
index 0000000000..a6a787b9de
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-CodingToolsSets_A_2
@@ -0,0 +1 @@
+6f0043acadfc70d7ec8d556194169a6e
diff --git a/tests/ref/fate/cbs-vvc-HRD_A_3 b/tests/ref/fate/cbs-vvc-HRD_A_3
new file mode 100644
index 0000000000..39e4b906c6
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-HRD_A_3
@@ -0,0 +1 @@
+c0d308912bcdda2b780f3e0a808ff138
diff --git a/tests/ref/fate/cbs-vvc-PHSH_B_1 b/tests/ref/fate/cbs-vvc-PHSH_B_1
new file mode 100644
index 0000000000..437a9eb64f
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-PHSH_B_1
@@ -0,0 +1 @@
+724e3af9b9aac47049a58534ada918e6
diff --git a/tests/ref/fate/cbs-vvc-POC_A_1 b/tests/ref/fate/cbs-vvc-POC_A_1
new file mode 100644
index 0000000000..f259307ca6
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-POC_A_1
@@ -0,0 +1 @@
+608f780e20d18f8dde4ca25276a66598
diff --git a/tests/ref/fate/cbs-vvc-PPS_B_1 b/tests/ref/fate/cbs-vvc-PPS_B_1
new file mode 100644
index 0000000000..1981930a04
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-PPS_B_1
@@ -0,0 +1 @@
+de563a85244bf4a7781b98198a5bf409
diff --git a/tests/ref/fate/cbs-vvc-RAP_A_1 b/tests/ref/fate/cbs-vvc-RAP_A_1
new file mode 100644
index 0000000000..22661eed54
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-RAP_A_1
@@ -0,0 +1 @@
+6460f629ca2377bd271bd1fa5787214f
diff --git a/tests/ref/fate/cbs-vvc-SAO_A_3 b/tests/ref/fate/cbs-vvc-SAO_A_3
new file mode 100644
index 0000000000..d8b3096dde
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-SAO_A_3
@@ -0,0 +1 @@
+44f8666cd7fa1f4f52f0570ad29e7a8b
diff --git a/tests/ref/fate/cbs-vvc-SCALING_A_1 b/tests/ref/fate/cbs-vvc-SCALING_A_1
new file mode 100644
index 0000000000..e9c5477ccd
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-SCALING_A_1
@@ -0,0 +1 @@
+50b3221ba3dc373189527428ea8a4b38
diff --git a/tests/ref/fate/cbs-vvc-SLICES_A_3 b/tests/ref/fate/cbs-vvc-SLICES_A_3
new file mode 100644
index 0000000000..3ff1441c35
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-SLICES_A_3
@@ -0,0 +1 @@
+0b8bd39775a39c6eaed3e0dfaf837144
diff --git a/tests/ref/fate/cbs-vvc-SPS_B_1 b/tests/ref/fate/cbs-vvc-SPS_B_1
new file mode 100644
index 0000000000..a4ca603037
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-SPS_B_1
@@ -0,0 +1 @@
+cf3e0c51035bde7499f80eac34563762
diff --git a/tests/ref/fate/cbs-vvc-STILL_B_1 b/tests/ref/fate/cbs-vvc-STILL_B_1
new file mode 100644
index 0000000000..34b54b736f
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-STILL_B_1
@@ -0,0 +1 @@
+bfa7b1d3ad3b84dac122e8127d579a24
diff --git a/tests/ref/fate/cbs-vvc-SUBPIC_A_3 b/tests/ref/fate/cbs-vvc-SUBPIC_A_3
new file mode 100644
index 0000000000..b3b5123fd8
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-SUBPIC_A_3
@@ -0,0 +1 @@
+70eb8a1074a76e63406036e03dc8734a
diff --git a/tests/ref/fate/cbs-vvc-TILE_A_2 b/tests/ref/fate/cbs-vvc-TILE_A_2
new file mode 100644
index 0000000000..c788b028d0
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-TILE_A_2
@@ -0,0 +1 @@
+b9fca953a0b5aed276fb3c0418ada885
diff --git a/tests/ref/fate/cbs-vvc-VPS_A_3 b/tests/ref/fate/cbs-vvc-VPS_A_3
new file mode 100644
index 0000000000..62e95650e2
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-VPS_A_3
@@ -0,0 +1 @@
+40c6750868d27bba165a1553c519cee5
diff --git a/tests/ref/fate/cbs-vvc-WPP_A_3 b/tests/ref/fate/cbs-vvc-WPP_A_3
new file mode 100644
index 0000000000..82631cfdfb
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-WPP_A_3
@@ -0,0 +1 @@
+c5e6ba8eb4ef6e991b8528ca2490d350
diff --git a/tests/ref/fate/cbs-vvc-WP_A_3 b/tests/ref/fate/cbs-vvc-WP_A_3
new file mode 100644
index 0000000000..71789587dc
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-WP_A_3
@@ -0,0 +1 @@
+05a8ac4844ce65c7a64dfd304f4186a5
diff --git a/tests/ref/fate/cbs-vvc-WRAP_A_4 b/tests/ref/fate/cbs-vvc-WRAP_A_4
new file mode 100644
index 0000000000..708d07e623
--- /dev/null
+++ b/tests/ref/fate/cbs-vvc-WRAP_A_4
@@ -0,0 +1 @@
+ba7de3caf1bf4efe77bdb424ba5fc814
