-
Notifications
You must be signed in to change notification settings - Fork 2
Explicit html id based parsing for non-prod invironment #34
Comments
@dhilt Пока что никак не могу смекнуть как из prod-сборки из id убирать "dharmadict.test". |
@bitden Посмотри https://stackoverflow.com/questions/43934210/remove-html-attribute-in-production-build и в частности https://www.npmjs.com/package/babel-plugin-react-remove-properties возможно наш случай. Хотя, глядя на это более подробно, может быть имеет смысл переделать это с простого id на test-id. Тогда подойдет и https://www.npmjs.com/package/babel-plugin-react-remove-properties https://www.npmjs.com/package/babel-plugin-remove-object-properties. И значение будет проще:
|
@dhilt Так, в общем начал пытаться применить вышеописанные библиотеки (что показывает возможно в корне неверный код в webpack-конфиге) и столкнулся собственно с тем, что при prod-сборке проекта тег test-id исчезает сам собой. Но в тестах, и при запуске dev-сервера консоль начинает бросать ошибки |
И пока что остается загадкой, как бы в отдельном порядке тестировать |
@bitden Попробуй заменить на |
@dhilt Заменил, все валидно и здорово - 55aedc2. И может нет смысла писать в data-test-id название компонента? В тестах мы компонент загружаем по одному и путаницы с одинаковыми id с разных компонентов быть не должно. |
@dhilt Ну и да, как я говорил, код в webpack'e оказался неверным, над этим предстоит еще поломать голову похоже. |
@bitden Нужно исследовать, какие именно два находятся в тесте. Возможно это все же кусок дочернего компонента? Кроме этого, я конечно не против сокращения значения data-test-id, если у нас тестирование идет покомпонентно. Я просто мыслил полноценным end-to-end, где движок ходит по сайту, полностью эмулируя действия пользователя. В этом случае без привязки к компоненту (экрану, либо другой "большой" сущности) может быть трудно. Так а что у нас со сборкой не так? В чем это выражается? |
@dhilt С webpack'ом дел пока не имел и не могу догадаться как библиотеку (https://www.npmjs.com/package/babel-plugin-react-remove-properties) корреткно использовать, чтобы data-test-id убрать из prod-сборки. |
@dhilt Если после отдельного покомпонентного тестирования еще будем делать и какое-то общее полноценное, разгуливающее по всему веб-приложению тестирование (так я пока что себе представляю end-to-end), то конечно переименую обратно. |
@bitden Нет-нет, не будем. Там пока не по чему разгуливать! Меня торопят с выдачей админских доступов, это означает, что мы больше не сможем накатывать db-reset, все операции сохранения/восстановления будут только через снапшоты. Но перед этим я хочу еще потратить время и убедиться в достаточной безопасности для Системы в плане администрирования третьими лицами. Это мой план на ближайшее время. К этому моменту мы должны также завершить работу по тестированию front end хотя бы в первом приближении. Мне кажется, это конец следующей недели. |
@dhilt Покомпонентное тестирование, которое начал сейчас делать - можно пожалуй быстро за пару дней сделать, если собраться. Есть только две заминки. Первая, как я уже сказал - не могу догадаться как бы библиотеку по убиранию data-test-id в webpack вписать. И вторая заминка - не выходит импортировать в тесты компонент Home (и еще некоторые), из-за импорта внутри компонента вида:
|
@dhilt И нужно внимательно протрясти сервер на предмет корректного Promise. В некоторых местах сыпались ошибки вида |
@bitden Пусть будут! |
Все инструкции вида
wrapper.find('h3').text()
должны быть заменены на поиск по id. Для этого нужно разбросать по разметке id-атрибуты видаid="dharmadict.test.TranslatorPage.name"
(это конкретно пример для<h3>{translator.name}</h3>
из компонентаTranslatorPage
).Нужно дополнить prod-сборку процедурой по вырезанию из разметки всех id-атрибутов, начинающихся с "dharmadict.test."
The text was updated successfully, but these errors were encountered: