Почему не все элементы удаляются?
Стандартная ошибка обхода массива с одновременной модификацией.
Используйте другой подход:
С конца:var divs = document.getElementsByClassName('test');
    var i;
    for (i = divs.length-1; i >=0; i--) {
      divs[i].remove();
    }
или в цикле whilevar divs = document.getElementsByClassName('test');
    while (divs.length) {
      divs[0].remove();
    }
getElementsByClassName возвращет HTMLCollection. HTMLCollection, хранящая элементы DOM, является динамической. При изменении документа она моментально отражает все произведённые изменения.
Вы удаляете первый элемент, и тот что был вторым становится первым. А ваш цикл "думает" что вы его уже удалили.
Можно пройтись по этой коллекции в обратном порядкеfor(i = divs.length - 1; i >= 0; i--)
Или можно преобразовать коллекцию в массивdivs = Array.from(divs)
Или вообще не использовать forwhile(divs[0])
  divs[0].remove()