You'll need to repeat the escape coding at the beginning of the line that is losing its formatting:
PS1="\[\033[38;5;132m\]\n┌─■ testing\n\[\033[38;5;132m\]└─■ \[$(tput sgr0)\]"
Since other lines could be similarly affected it's best to apply escape codes after each newline. However, you don't need to apply them to an empty line. So here's what we end up with:
PS1="\n\[\033[38;5;132m\]┌─■ testing\n\[\033[38;5;132m\]└─■ \[$(tput sgr0)\]"
I tested and everything works for me. (And I have been using a colored multi-line prompt like this for a while w/o issues.)
Presumably what's going on here is that readline is overwriting that line (thereby resetting colors) and then redraws it with just that part of your
PS1 value. Since you haven't explicitly applied color to that line you will get default color (e.g. white).