wrapfig2 package computes the number of lines needed to fit in the wrapped figure/table/text:

If the computation is not successful and so requires a correction, a starred version of the environment is available (see the documentation).
Wrapping requires a suitably long text. However, if the text is short, the task of wrapping is given to the following paragraph.

MWE
\documentclass{report}
\usepackage{graphicx}
\usepackage{wrapfig2}
\begin{document}
\begin{wrapfigure}{r}{0.4\linewidth}
\centering
\includegraphics[width=\linewidth]{example-image-duck}
\caption{A \textbf{ducking} duck!}
\end{wrapfigure}
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita
kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem
ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd
gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum
dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor
invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero
eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no
sea takimata sanctus est Lorem ipsum dolor sit amet.
\begin{wrapfigure}{r}{0.4\linewidth}
\centering
\includegraphics[width=\linewidth]{example-image-duck}
\caption{A \textbf{ducking} duck!}
\end{wrapfigure}
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
Stet clita
kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem
ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd
gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum
dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor
invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero
eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no
sea takimata sanctus est Lorem ipsum dolor sit amet.
\end{document}
If no wrapping is needed (and therefore no caption?, with the text being a taken as a description, if I understand correctly):
Here is one method using tabularray:

MWE
\documentclass{article}
\usepackage{tabularray}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{tcolorbox}
\tcbuselibrary{vignette}
\newcommand\texta{The cat sat on the mat and the quick brown fox jumps over the lazy dog.\ }
\newcommand\textb{\texta\texta}
\newcommand\textc{\textb\textb}
\newcommand\textd{\textc\textc\textc\hfill$\diamondsuit$\par\textb}
\begin{document}
%\fbox{
\begin{tblr}{
rows = {bg=yellow!50!red!5},
colspec={Q[l,h,0.5\textwidth]Q[c,blue!32]},}
tcolorbox vignette image, small amount of text \texta
&
\begin{tikzpicture}%
\node[draw,fill=blue!60] (A) {{\sffamily\large\bfseries%
\includegraphics[width=1in]{example-image-duck-portrait}%
}};%
\tcbvignette{outside node=A}%
\end{tikzpicture}%
\
\end{tblr}
%}
\textc
\fbox{
\begin{tblr}{colspec={Q[l,h,0.5\textwidth]Q[c,blue!32!green!5]},rowspec={QQ}}
tcolorbox vignette image, large amount of text \textd
&
\begin{tikzpicture}%
\node[draw,fill=blue!60] (A) {{\sffamily\large\bfseries%
\includegraphics[width=1in]{example-image-duck-portrait}%
}};%
\tcbvignette{outside node=A}%
\end{tikzpicture}%
\
\end{tblr}
}
\textc
\end{document}
A TOC entry if needed could be added various ways, depending on the use case.
[5]add start a new paragraph and vspace beforeStetif you want a paragraph there – David Carlisle Oct 14 '22 at 21:37wrapfigat all. Usingwrapfigwhile preventing wrapping does seem a strange requirement – David Carlisle Oct 15 '22 at 09:06