Действия

Правило проверяет одну страницу. Но большинство проблем живёт в пути по интерфейсу: вошли, открыли оплату, заполнили форму. Действие — это такой путь, записанный один раз и повторяемый сколько угодно. Без действий тесты не смогли бы пройти дальше первой страницы. Ниже — как записать действие и на что опирается его надёжность.

Что такое действие

Сценарий работы с интерфейсом: открыть адрес, заполнить поле, выбрать значение, нажать кнопку, дождаться перехода на другую страницу. Действие можно записать своими руками или описать словами и получить от агента. И то и другое лежит обычным файлом в папке проекта.

Запись

  1. Включите запись в панели дополнения — на значке появится красная отметка.
  2. Поработайте на сайте как обычно: войдите, перейдите в нужный раздел, заполните форму.
  3. Остановите запись — шаги покажутся списком. Лишние можно удалить, у любого шага поправить значение.
  4. Дайте действию понятное имя и сохраните.

Нажатия и ввод внутри самой панели в запись не попадают: продукт не записывает работу со своим же окном.

Секреты, среды и переменные

Если во время записи вы вводите пароль, в файл вместо значения подставляется имя переменной — действие читает его как ctx.vars.имя. Так пароль не окажется в истории правок, которую видят все, кому открыт доступ к коду проекта. При сохранении продукт напомнит об этом ещё раз — на случай, если вы записали что-то чувствительное в обычное поле.

Сами значения живут в проекте отдельно от файлов. Учётные данные (пароли, токены, заголовки) лежат зашифрованными и показываются один раз при сохранении. Они никогда не попадают в исходники, журналы, запросы к модели или выгрузку — только в процесс прогона в нужный момент. Их можно заменить или удалить, а ключ шифрования — сменить; смена ключа касается сразу всех проектов.

Переменные — это наборы значений. Действующим считается первое, остальные держат запасом и подставляют руками при ротации: например, когда у учётной записи меняется пароль. Действие при этом не меняется — имя переменной остаётся одним и тем же.

Среды — это разные стенды одного продукта, у каждого свой базовый адрес. В среде можно задать и собственные значения переменных: они перекроют проектные. А чтобы обход случайно не тронул живой сайт, есть список продакшн-хостов — их без явного разрешения продукт не задевает.

Как действие находит элементы

Записывая нажатие, продукт запоминает, как найти этот элемент на странице. От этого зависит, переживёт ли действие следующую правку вёрстки. Порядок такой: сначала специальные метки разработчика, потом стабильные идентификаторы и подписи, и только в последнюю очередь — путь по структуре страницы. Последний вариант самый хрупкий: стоит поменять разметку, и шаг потеряется. Такие шаги помечаются, чтобы вы видели слабое место заранее.

Прогон

Кнопка запуска выполняет действие на текущей вкладке. После прогона появляется новый экран с пометкой «через действие» и результаты проверок на той странице, куда действие пришло. Если сценарий уводит на другой сайт, продукт сначала спросит подтверждение: выходить за пределы проверяемого сайта разрешено не всегда. Адрес страницы действие берёт из среды прогона — ctx.vars.BASE_URL, поэтому одно и то же действие работает и на тестовом стенде, и на рабочем: меняется среда, а не сценарий.

Действия словами

Описать сценарий можно текстом: «войти и открыть раздел оплаты». Агент напишет действие сам — с учётом накопленных знаний о том, как устроен ваш интерфейс. Готовое действие появляется неподтверждённым: его нужно прогнать и посмотреть, что получилось. Если всё верно — подтверждаете, если нет — удаляете или просите поправить. В тестах участвуют только подтверждённые действия, поэтому черновик никогда не сломает готовую проверку.

Подготовка и очистка

Часть пути повторяется в каждом тесте: войти, принять согласия, привести стенд в нужное состояние. Чтобы не описывать это заново, у проекта есть два списка действий — Подготовка и Очистка. Первый выполняется до шагов любого теста, второй — после.

Тест может объявить свои списки: тогда они полностью заменяют проектные — ничего не подмешивается. Пустой список тоже ответ: он выключает фазу целиком. Очистка выполняется даже тогда, когда шаг упал с ошибкой: возвращать стенд в порядок нужно именно на таких прогонах.

Честные ограничения

  • Шаги идут по одной строке — без циклов, условий и повторяющихся блоков. Так сделано нарочно: переход между страницами разрушает всё, что выполнялось до него, и только простая последовательность переживает этот момент надёжно.
  • На переходе между сайтами фрагмент может повториться — если шаг увёл на другой домен, часть сценария иногда выполняется дважды. Внутри одного сайта такого не бывает.
  • Общий бюджет времени — около минуты на всё действие. Долгие сценарии лучше разбивать: короче действие — понятнее ошибка, когда что-то сломается.
  • Учётные данные не найдены — это честная ошибка прогона — если значения нет или его заменили, действие не выполнится, и прогон честно упадёт. Поэтому действие лучше сначала прогнать на тестовом стенде.

Дальше: как собрать из действий и правил тест — в разделе Тесты.

← Оглавление документации