Код Senior Локаторы обновлено

Линтер хрупких селекторов

Условие

Напишите lintSelector(sel), которая возвращает массив кодов проблем (в этом порядке, без повторов):

  • "absolute-xpath": селектор начинается с /html;
  • "index": есть :nth-child(, :nth-of-type( или XPath-индекс вида [цифры];
  • "hashed-class": есть класс вида .css- + буквы/цифры или ._ + буквы/цифры (ровно после точки);
  • "deep-chain": больше 4 шагов. Шаги: для XPath (начинается с / или () это непустые части между /; для CSS части, разделённые пробелами и >.

Пустой массив, если проблем нет.

Примеры

lintSelector("[data-testid=\"login\"]") // []
lintSelector("/html/body/div[2]/form/button") // ["absolute-xpath", "index", "deep-chain"]
lintSelector("div > div > div > span:nth-child(4)") // ["index"]

Как подойти

Подсказки: 2
  1. Сначала определите, XPath это или CSS.
  2. Пустые части после split отбрасывайте через filter(Boolean).

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме