Спасибо. Все супер. Единственный момент для винды s WSL не работает команда docker-compose, ей нужно docker-compose.exe. Если кто-то знает как решить проблему, кроме как банальной замены, пожалуйста поделитесь.

Написание E2E-тестов для проверки работы проекта из фронтенда и API. Тестирование интерфейса ReactJS-приложения в браузере в Docker-контейнере.
Чтобы не пропускать новые эпизоды подпишитесь на наш канал @deworkerpro в Telegram

Спасибо. Все супер. Единственный момент для винды s WSL не работает команда docker-compose, ей нужно docker-compose.exe. Если кто-то знает как решить проблему, кроме как банальной замены, пожалуйста поделитесь.
попробуйте сделать ссылку ln -s "полный путь к docker-compose.exe" "полный путь к папке со ссылками типа /usr/bin"/docker-compose
Можно попробовать совместное использование $PATH для WSL. Еще как вариант, если у тебя Win Pro то поставить Docker Desktop, там интеграция уже с WSL.
Спасибо.
Отличный урок! Спасибо!
Спасибо, Дмитрий, материал бесценен, а будет ли про хранение картинок аукциона где-нибудь в S3 ? Наверняка ведь есть какой-нибудь готовый докер образ под такую важную тему.
Ставите minio, добавляете пакеты thephpleague/flysystem + thephpleague/flysystem-aws-s3-v3 и вперёд.
Спасибо!
Да, хранилища будут. Для их эмуляции FTP или S3 хранилищ для локальной разработки как раз подключают образы вроде stilliard/pure-ftpd или minio.
Спасибо, отлично.
Вопрос по minio может кто сталкивался, есть два котейнера в одной сети апп и минио. Не получается добавить файл из апп, если AWS_ENDPOINT=http://minio:9000 хотя по идее должно срабатывать. Нужно заходить в контейнер minio и смотреть урл апи который динамический API: http://192.168.16.2:9000 , если подставить его в env AWS_ENDPOINT то все срабатывает. Может кто знает как решить?? В браузере http://localhost:8900 консоль открывает, проблема именно если с прилаги пробуешь загрузить файл
Ниже докер-композе
minio:
image: 'minio/minio:latest'
ports:
- '${FORWARD_MINIO_PORT:-9000}:9000'
- '${FORWARD_MINIO_CONSOLE_PORT:-8900}:8900'
environment:
MINIO_ROOT_USER: 'sail'
MINIO_ROOT_PASSWORD: 'password'
volumes:
- 'sailminio:/data/minio'
networks:
- sail
command: minio server /data/minio --console-address ":8900"
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:9000/minio/health/live" ]
retries: 3
timeout: 5s
app:
build:
context: ./docker/8.1
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP:-1000}'
image: sail-8.1/app
extra_hosts:
- 'host.docker.internal:host-gateway'
environment:
WWWUSER: '${WWWUSER:-1000}'
LARAVEL_SAIL: 1
XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
volumes:
- '.:/var/www/html'
networks:
- sail
depends_on:
- mysql
- redis
У нас minio подключается в 60-ом эпизоде для загрузки бэкапа БД. И всё там работает.
Да, спасибо за ответ, уже разобрался. На самом деле все работает отлично из коробки, не внимательно изучил документацию к пакету который адаптер предоставляет. Нужно было добавить в конфиг пару строчек
Спасибо, хороший урок! Есть вопрос, для e2e тестов используется ли практика приводить БД в первоначальный вид перед каждым сценарием? Чтобы один сценарий не мог повлиять на результаты другого. Безусловно, в этом случае у нас проявляются недостатки. Падает производительность, и мы не можем использовать параллелизм, по причине того, что каждый сценарий будет обнулять базу, которая в 1 экземпляре. И здесь нужно извращаться и каждый сценарий как-то обрабатывать отдельным изолированным экземпляром приложения. Или просто отказываемся от параллелизма, что совсем убьет скорость запуска таких тестов. Либо e2e нужно продумывать так, чтобы минимизировать сайд-эффекты?
Да, оптимальнее делать любые тесты не мешающими друг другу. Для E2E тестов это важнее, так как система может состоять из нескольких сервисов и сбрасывать БД каждого сервиса снаружи будет не очень удобно.
Тут как с ansible, очень поверхностно вышло. В целом понятно что и зачем делается, но не детально. По этим двум темам хотелось бы отдельные уроки.
Спасибо. Я думал в Ларавел e2e это что-то космическое, но тут еще более полезное с Огурцом.
C cucumber ^8.0.0-rc.1 формирование имени файла скриншота через sourceLocation.uri и sourceLocation.line не работает. Выкрутился так (хотя детализация месторасположения ошибки только до сценария получается):
hooks.js
After(async function (testCase) {
if (testCase.result.status === Status.FAILED) {
const name = testCase.pickle.uri + '-' + testCase.pickle.name
await this.page.screenshot({ path: 'var/' + name.replace(/\/|\s/g, '_') + '.png', fullPage: true })
}
await this.page.close()
await this.browser.close()
})
О. спасибо, тезка! Тоже столкнулся. И да, хотелось бы более полного раскрытия темы. Понятно что доки курить, но все же...
Спасибо, отличное видео!!