В чем моя причина провала тестового задания Яндекса?
Ну давайте я покритикую:
возьмем файлик
1) вы не разобрались как объявлять методы у прототипов с новой нотацией `class`:class Travelsort {
    constructor() {}
    sortTickets(tickets) {}
}
2) вы не умеете пользоваться исключениями.if (!Array.isArray(cards)) {
    throw new ValueError('Wrong input');
}
3) использование let там где должен использоваться const
4) в принципе использование переменных там где их быть не должно
5) вы зачем-то реализовали свою функцию сортировки, я не увидел в требованиях отсутствия возможности использовать старый добрый Array.prototype.sort
6) Общие замечания по кодинг стайлу. snake_case там где должен быть camelCase, пишите с большой буквы то что должно быть с маленькой и т.д.
7) нарушения принципа единой ответственности. У вас объеткт умеет и сортировать и писать куда-то. Это категорически плохо.
8) Если исправить 7-ой пункт то наш класс превращается просто в функцию.
Далее... берем следующий файлик
1) если вы пишите комментарии к таким маленьким кускам кода - стало быть у вас хромает именование вещей. Все должн быть понятно просто из названий методов/функций/переменных. При работе в команде над серьезными проектами это немаловажно, ибо код чаще читают чем пишут и экономить нужно именно это время.
2) вы зачем-то тут в прототип объекта строки впихиваете функции для парсинга CSS. Таким образом мы нарушаем принцип единой ответственности. Да и в целом расширять без надобности прототипы объектов как-то не ок.
Чуть дальше проскролил - вы пытаетесь расширить прототип строк для того что бы добиться API jquery? ух, батенька.
3) очень много дублирования. 
4) очень плохо с protected variations.
Справедливости ради, ваш код входит в категорию ">50% JS кода", так что не расстраивайтесь. Просто для работы в яндексе нужен чуть более высокий уровень и понимание вещей.
Я думаю, что у них оценивается: минимум кода, самый короткий (оптимальный) алгоритм. Здесь нигде не требовали использование ООП.
1. Задание 1 - динамические цепочки (очереди). Надо было "растащить вагоны" и "сцепить" их (конечный с начальным пунктом). Это делается в 1 проход по списку карточек.
2. Задание 2 - проверка знаний нативки JS и логики работы мозга при самопостановке задачи и её реализации: селекторы/regex, деревья: просто перебор нужных с изменением/запросом свойств объектов.
PS: может им на C++ написать и прогнать через LLVM на asm.js?) 
хотя, думаю, тоже не прокатит - им же JS-исходник нужен)