test(smoke): CONTENT-396 проверять контракт точки входа заготовки - #23
Merged
Merged
Conversation
У заготовки не было проверок вовсе: CI гонял сборку, а она ловит только поломанный импорт и отсутствующую зависимость. Контракт, которым заготовка связана с проектом, не проверял никто, и сломать его можно было незаметно — именно это и произошло, когда init перестал принимать сокет. Тест повторяет путь проверки проекта: зовёт init с поддельным сокетом и рендерит то, что он вернул. Рендер идёт renderToString, поэтому ни браузера, ни jsdom не нужно, а react-dom уже в зависимостях. Проверен мутациями: если init игнорирует сокет, тест падает на неподписанном слушателе; если возвращает null вместо разметки, падает на отсутствии заголовка. После откатa обеих мутаций зелёный. vitest взят третьей мажорной: четвёртая требует vite 6 и выше, а здесь стоит vite 5. Бампает его тикет по устаревшим зависимостям, тогда же поедет и vitest. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Тикет: CONTENT-396. Этот коммит был в ветке #19, но в мерж не попал: пуш пришёл после squash. Здесь он один, от
main.Зачем
У заготовки не было проверок вовсе. CI гонял сборку, и комментарий в воркфлоу это признавал прямо. Сборка ловит поломанный импорт и отсутствующую зависимость, но не ловит главное — контракт, которым заготовка связана с проектом.
Проверка проекта входит в приложение через
init: зовёт его со своим сокетом и рендерит то, что он вернул. Сломать это можно было незаметно, и ровно это и было —initсокета не принимал,socket.io-clientвисел в зависимостях без использования, а снаружи заготовка выглядела рабочей.Что проверяет
Тест повторяет путь проверки проекта: зовёт
initс поддельным сокетом и рендерит результат.initподписался на событие сокета, то есть параметр действительно используется.Рендер идёт через
renderToString, поэтому ни браузера, ни jsdom не нужно, аreact-domуже в зависимостях. Прогон занимает 2 секунды, в CI добавлен шагmake test.Проверено мутациями
Тест не декорация, я его сломал в обе стороны:
initигнорирует сокетexpected "spy" to be called at least onceinitвозвращаетnullвместо разметкиexpect(markup).toContain("Hexlet Chat")Плюс прогон с чистого дерева на этой ветке:
npm ci,make test,make build(936 модулей),make lint— всё зелёное.Мелочь
vitestвзят третьей мажорной: четвёртая требует vite 6 и выше, а здесь стоит vite 5. Бампает его тикет по устаревшим зависимостям, тогда же поедет и vitest.