Тестирование API, что выбрать для тестирования на CI сервере + локально с UI

Чаще всего я пишу тесты уже по относительно готовому функционалу. Бывают ситуации конечно, когда пишу до реализации, по просьбе разработчика.

В клиенте реализовано несколько уровней абстракций:
Actions - верхний уровень, работает с бизнес сущностями и апи
API - разные апи (oauth, public, user)
Request - минимальная обертка над библиотекой отправки запросов. нужна, по факту, только для oauth подписей.
В самих тестах так же тестируються отдельно API и Actions.

Например для нового метода, подобный метод добавляется в соответсвующий API класс, и дальше он покрывается тестами.

def change_pin(old_pin, new_pin)
      payload = {
        oldPin: old_pin,
        newPin: new_pin
      }
      headers = @json_headers
      Request.post("#{@base_url}/user/pin-code",
                         payload.to_json, headers, before_execution_proc: before_proc) { |resp| resp }
end

Не понял про подготовку данных rspec-омю

А под клиентом вы что имеете в виду?

А где вы храните тестовые артефакты? Например файлы, которые надо отправить. И иногда их еще надо менять… в Soapui они кэшируются и в дальнейшем их можно открыть прямо из тесткейса, посмотреть что там за файл, заменить его другим, если надо и тд…

Как я писал:

Изначально начал писать апи клиент для удобства ручных тестов (нужно имитировать действия разных пользвателей)

Клиент - такой себе имитатор реального мобильного клиента. С внешним интерфейсом который используется в тестах (к слову - он используется еще и в UI тестах)
Так же, я его использую как консольный клиент при ручных тестах мобильного приложения.

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