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

Выбор лучшего локатора по атрибутам

Условие

Напишите bestLocator(el). Элемент описан объектом с необязательными полями role, name (доступное имя), testId, id, attrName (атрибут name), tag. Вернуть строку по приоритету команды:

  1. есть role и name: getByRole('<role>', { name: '<name>' });
  2. есть testId: getByTestId('<testId>');
  3. есть стабильный id: locator('#<id>'). Id нестабилен, если содержит : или три цифры подряд;
  4. есть attrName и tag: locator('<tag>[name="<attrName>"]');
  5. иначе null.

Примеры

bestLocator({"role":"button","name":"Войти","testId":"login"}) // "getByRole('button', { name: 'Войти' })"
bestLocator({"role":"button","testId":"login"}) // "getByTestId('login')"
bestLocator({"id":"email"}) // "locator('#email')"

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

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

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