Замените
divParent.insertBefore(elems[i].cloneNode(true), null);
на
divParent.insertBefore(elems[i].cloneNode(true), divParent.firstChild);
// или
divParent.insertAdjacentElement('afterbegin', elems[i].cloneNode(true));
// или
divParent.prepend(elems[i].cloneNode(true));
А вообще, можно и без клонирования сделать:
for (const n of document.querySelectorAll('.basic')) {
n.after(document.createElement('div'));
n.nextSibling.classList.add('parent');
n.nextSibling.innerHTML = '<b>Важная строка</b>';
n.nextSibling.prepend(n);
}
Ещё вариант - можно собирать разметку вместо создания элементов напрямую:
document.querySelectorAll('.basic').forEach(n => {
const html = `
<div class="parent">
${n.outerHTML}
<b>Важная строка</b>
</div>
`;
n.outerHTML = html;
// или
n.insertAdjacentHTML('afterend', html);
n.remove();
// или
n.replaceWith(document.createRange().createContextualFragment(html));
// или
n.replaceWith(...new DOMParser().parseFromString(html, 'text/html').body.childNodes);
});