t.me/atinfo_chat Telegram группа по автоматизации тестирования

Как работать с состоянием или сбрасывать его в web странице в UI автотестах

backend
ui
api
cypressio
javascript
Теги: #<Tag:0x00007f9e35ff3ab8> #<Tag:0x00007f9e35fec470> #<Tag:0x00007f9e35fec2b8> #<Tag:0x00007f9e35feb2c8> #<Tag:0x00007f9e35feafd0>

(Евгений ) #1

Есть web- приложение c большым количеством логики, которое происходит в пользовательском интерфейсе. Например при нажатии кнопки, не дергается никакое API бэкэнда, а срабатывает эвент, результат которого кладется в redux store приложения. Соответственно возникает проблема с подготовкой тестовых данных для прохождения автотеста.

Мой стек для автотестирования Cypress.io + javascript

Есть сценарий - “Загрузка медиаконтента в тестовую спецификацию”

Есть логика работы тестовой спецификации, условно три раздела:

  1. Заполнение инфы о тестовой спецификации
  2. Заполение параметров тестовой спецификации
  3. Загрузка медиаконтента в тестовую спецификацию

В тестовой спецификакции, по требованию заказчика есть валидация. Что невозможно перейти на шаг - 2 если не выполнен шаг - 1 и т.д.

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

Очевидно что такой автотест написан плохо, и его нужно делить. Потому что он проходиться долго и весьма хрупкий.

Соответственно возникает вопрос:

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

Может есть вообще какие - то инструменты для управления тестовыми данными через UI, где есть какая-то возможность скажем сделать часть полей web-страницы заполненными сразу при навигации в тесте, а часть нет.
В том фреймворке, rоторый я использую “https://www.cypress.io/” есть возможность работать с redux store, но только если сам cypress интегрирован в локальную сборку в качестве dependency. Но на данный момент у меня нет возможность писать автотесты на локальную сборку внутри проекта. По этому тесты пишутся уже на расскатанный проект для тестирования


(Bohdan B) #2

В том фреймворке, rоторый я использую “https://www.cypress.io/ ” есть возможность работать с redux store, но только если сам cypress интегрирован в локальную сборку в качестве dependency.

судя по https://www.cypress.io/blog/2018/11/14/testing-redux-store#access-redux-store
вам нужно просто прокинуть store в window и можно вызывать redux с window