feat: initial commit
36 subscribers
18 photos
2 videos
30 links
Привет! Меня зовут Артем. На работе пишу фронтенд на React и бэкенд на Node/AWS.

Делаю пет-проект - трекер привычек.

Пишу об этом здесь, а еще на тему фронтенда, Реакта, Node, DevOps, и всего, что связано с современным вэбом.

Для связи - @artem_abr
Download Telegram
Cucumber.js - безусловно одна из самых популярных библиотек для e2e тестирования фронтенд приложений.

Но насколько она популярна, настолько невыносима её документация.

Дело в чем? Cucumber создаёт отчёты после выполнения тестов, при этом отчёты могут быть отформатированы сторонними плагинами. Для этого схема сообщений типизирована в отдельном репозитории https://github.com/cucumber/messages. Можно создать собственный плагин, который будет показывать удобный вам UI с результатами тестов.

Так же, Cucumber можно запускать программно прямо из JS, а не из командной строки. При этом сообщения будут падать в коллбек вызова.

const { runConfiguration } = await loadConfiguration();

const { success } = await runCucumber(runConfiguration, undefined, (message) => {
  console.log("onMessage:", message);
});


Вопрос в том, как отправлять собственные сообщения в этот поток сообщений?

В идеале я бы хотел в step definition отправить сообщение и чтобы оно потом появилось во всех репортах, и в коллбеке вызова.

А по умолчанию там только определённые схемой сообщения.
Расширение схемы сообщений в Cucumber не предусмотрено (по крайней мере я не нашел), но можно добавить вложение в сообщение с выполненным степом.

Оказалось, что Default World констрактор передает метод attach, который позволяет отправлять вложения прямо из степов. Этот метод можно прикрепить к своему Custom World классу и использовать внутри step definitions.

class CustomWorld extends World {
constructor(options) {
super(options)
this.attach = options.attach
}
}


И потом эти вложения будут появляться в любых нативных репортах Cucumber.

Как всегда этого нет в доке на основном сайте, а запрятано где-то в глубинах их репозитория https://github.com/cucumber/cucumber-js/blob/main/docs/support_files/attachments.md
Please open Telegram to view this post
VIEW IN TELEGRAM
Я глубоко убежден, что большинство команд, которые поддерживают документацию в SaaS продуктах, в тайне ненавидят свой основной продукт и стараются, чтобы как можно меньше людей пользовались им.

Иначе как объяснить, что в документации к Cloudflare например, нет ссылки на сам Cloudflare? Они как будто разрабатывают свой отдельный продукт - Cloudflare Docs, и основной Cloudflare - их основной конкурент. В документации к Midjourney так вообще есть только одна ссылка на основной сайт - в крайнем правом уголке подвала. Стесняются их что-ли?😄 И таких примеров сотни.

Бесит просто каждый раз когда читаешь доку вбивать ссылку на основной сайт. Почему сложно сделать ссылку на логотипе не могу понять.😞
Вышел новый Next.js 15. Что же в нем нового? Ничего.

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

Настолько все плохо, что даже пришлось указать поддержку TS для next.config - о боги, улучшение века (к слову и раньше можно было сделать типизацию этого файла через JSDoc).

Из других “грандиозных” улучшений - поддержка ESLint 9, индикатор статической страницы в дев моде и поменяли название опции в конфиге, которая отвечает за бандлинг сторонних зависимостей.

Как всегда внушительный прогресс по Turbopack - теперь после этого слова в скобочках стоит Stable. Все также убийца вебпака не поддерживает кастомные лоадеры и лоадеры стилей.

Что действительно интересно - это изменение политики кеширования, и гораздо больше контроля над кэшем для self-hosted систем - https://www.youtube.com/watch?v=sIVL4JMqRfc&t=1429s

Ну и чтобы пользователи окончательно потеряли голову от этого колоссального релиза, в release notes добавили codemod утилиту - раньше не добавляли, хотя codemod был в каждой версии начиная с 6-ой.
Please open Telegram to view this post
VIEW IN TELEGRAM
Наткнулся на пост в LinkedIn о том, как правильно организовать структуру файлов в Реакт приложении.

Ну типа логику Context API складывайте в папку /context, хуки складывайте в папку /hooks

И вспомнил про довольно продвинутую систему организации, предложенную ещё Дэном Абрамовым.

Вот тут можно почитать доку по ней: https://react-file-structure.surge.sh/
Так и не удалось попробовать Cursor AI, да и наверное не стану - сделан он поверх VS Code, а соответственно ради AI фич нужно потерять комфорт Вебшторма - а я на такое не готов.

Но на выходных поигрался с https://v0.dev/ - который оставил приятное впечатление. Сразу небольшой дисклэймер - что-то серьезное там вряд-ли получится сделать, но для генерации небольших участков интерфейса прям хорошо работает.

Мой пример - небольшое Electron приложение для генерации пары учетных данных - email и пароль. Приложение запускает e2e фреймворк, который проходит регистрацию со временным email, и по завершению регистрации выдает полученные креды в список со скроллом. Из списка их можно скопировать сразу в буфер. Весь интерфейс состоит из списка со скроллом, и кнопки для старта генерации, каждый элемент списка это две строки с кнопками копирования в буфер.

Довольно простой интерфейс, вручную можно накидать минут за 15. Но, на удивление v0 выдал этот же интерфейс после первого же описания, на которое я потратил не больше минуты.

В общем, для внутренних тулзов, если не требуется сторонней библиотеки компонентов, и достаточно будет shadcn/ui - пушка.
Оказывается абсолютно бесплатно прямо сейчас доступен аналог GitHub Copilot, при этом даже симки не нужно для регистрации.

Называется это чудо Sourcegraph Cody https://sourcegraph.com/cody

В бесплатный тариф включён безлимитный inline autocomplete и 200 запросов к чату. Работает все на Claude 3.5 Sonnet и есть расширения для VS Code и JetBrains. Попробовал расширение для Вебшторма - весь функционал, который доступен в Copilot, доступен и тут. UX точно такой же.

Искал возможность попробовать Claude 3.5, т.к. постоянно слышу, что он намного лучше работает для генерации кода, чем Copilot, а тут такая штука доступна ещё и бесплатно.
Сегодня начинается Advent of TypeScript - https://www.adventofts.com/

Каждый день новая задачка по Тайпскрипту в течении месяца.

Отличная возможность восполнить пробелы в знаниях и получить удовольствие.

UI выглядит довольно симпатично и празднично, в отличие от того же Advent of Code https://adventofcode.com/, который судя по всему нужно сдавать на перфокартах.
Очень скептически относился к Biome https://biomejs.dev/, но решил все-таки попробовать.

И результаты на самом деле приятно удивили. Попробовал прогнать его на рабочем проекте. Biome встал на место eslint с кучей плагинов и кастомным конфигом, который мы очень долго настраивали под себя, практически идеально. Ну то есть Biome с дефолтными настройками делает почти то же самое что и наш продвинутый eslint конфиг.

При этом линтинг и форматирование на prettier и eslint занимает 28s, а на Biome - 1s 😳

Раз такое дело решил закинуть Biome в свой темплейт для Next.js - https://github.com/artabr/liva-nextjs, заодно и зависимости обновил.
This media is not supported in your browser
VIEW IN TELEGRAM
Эти ребята уже много где мелькали со своей «самой большой в мире» библиотекой инпутов, но они не останавливаются и продолжают пополнять библиотеку другими компонентами.

Тут коллекция диалогов. Все сделано на Tailwind. Там еще есть кнопки, слайдеры и попапы.

Но конечно самое полезное - это все равно инпуты (их там 77 штук): https://originui.com/inputs
У меня есть 60 дней чтобы выложить какое-то приложение в Google Play.

Иначе мой аккаунт будет удалён - оказывается, если ты так ничего и не запаблишил в течение года с создания аккаунта, он удаляется. И 25$ не возвращаются 😁

Короче теперь срочно придётся доделывать какой-нибудь пет проект, чтоб не потерять бабки 😂
feat: initial commit
У меня есть 60 дней чтобы выложить какое-то приложение в Google Play. Иначе мой аккаунт будет удалён - оказывается, если ты так ничего и не запаблишил в течение года с создания аккаунта, он удаляется. И 25$ не возвращаются 😁 Короче теперь срочно придётся…
В общем, а почему бы и нет? Нужно только выбрать самый маленький скоуп - приложение одной фичи, и возможно получиться успеть.

Идея такая - приложение трекер ежедневного прогресса (streak tracker) - думаю каждому хоть раз напоминал об этом один известный любитель иностранных языков 👋

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

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

Так как сделать нужно быстро - пока не будет онлайн синхронизации, личного кабинета - все будет на устройстве. А чтобы было интересно попробуем Bun на Expo и Tailwind (NativeWind).
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет!

Буду стримить создание приложения. В это воскресенье, 29.12 в 14:00 GMT+2.

Будем делать трекер привычек на React Native, Expo и Tailwind. Посмотрим что нового с React Native экосистемой (последний раз смотрел туда почти год назад) и проверим удобно ли пользоваться Tailwind на React Native.

Приходите поддержать и пожалуйста подписывайтесь на платформах:

https://www.twitch.tv/feat_initial_commit

https://live.vkvideo.ru/initial_commit