Архитектура playwright🏠
Когда ты работаешь с инструментом важно исследовать его внутренности и понимать как он работает
Давайте разберем playwright
Корневая директория📝
В корневой директории мы находим следующие папки:
🌸
🌸
🌸
🌸
🌸
🌸
🌸
А также файл
Файл👇
✳️
✳️
✳️
✳️
✳️
Директория packages✏️
Директория
Пакеты для отчётности и генерации тестов
Playwright содержит множество различных пакетов для отчётности о тестах, каждый со своим набором функций. Кратко, список пакетов в этой категории:
✳️
✳️
✳️
✳️
✳️
Эти пакеты содержат код, связанный с обработкой отчётов о тестах или их генерацией с помощью пакета
Пакеты, специализированные для браузеров
Каждый из этих пакетов просто экспортирует пакет
✳️
✳️
✳️
Пакеты для установки браузеров
Эти пакеты включают только скрипты установки для каждого из браузеров. Например, playwright-browser-chromium соответствует пакету @playwright/browser-chromium на npmjs.
✳️
✳️
✳️
Пакеты для тестирования компонентов
Эти пакеты связаны с экспериментальной системой тестирования компонентов в Playwright. Они предоставляют функциональность, аналогичную тому, как Jest может рендерить отдельные компоненты для разных библиотек.
✳️
✳️
✳️
✳️
✳️
✳️
✳️
Когда ты работаешь с инструментом важно исследовать его внутренности и понимать как он работает
Давайте разберем playwright
Корневая директория
В корневой директории мы находим следующие папки:
playwright/browser_patches/docs/examples/packages/tests/utils/А также файл
package.json, который включает следующие ключи:{
"name": "playwright-internal",
"private": true,
"workspaces": ["packages/*"]
}Файл
package.json намекает, что основная функциональность находится внутри директории packages/, поскольку корневой файл помечен как private, имеет в названии "internal" и использует ключ "workspaces", который сообщает Node.js, что проект имеет несколько пакетов. Давайте быстро рассмотрим другие директории верхнего уровня перед тем, как углубиться в папку packages/browser_patches — эта папка содержит патчи для браузеров, добавляющие дополнительные элементы управления и функции к некоторым движкам браузеров, используемых в этом проекте. Интересно, что здесь есть патч для WebKit, позволяющий ему работать на Windows.docs — папка docs содержит файлы Markdown, которые компилируются в документацию, представленную на сайте Playwright.examples — здесь находятся примеры тестовых скриптов, к которым можно обратиться при начале работы с проектом Playwright.tests — даже библиотеки для тестирования должны иметь автоматизированные тесты, которые написаны с использованием Playwright.utils — директория utils содержит различные инструменты, используемые во время сборки, Docker-образы, функциональность для Azure, генератор файлов типов и многое другое.Директория packages
Директория
packages содержит более 20 отдельных пакетов, что усложняет понимание. Мы разделим этот список на понятные категории.Пакеты для отчётности и генерации тестов
Playwright содержит множество различных пакетов для отчётности о тестах, каждый со своим набором функций. Кратко, список пакетов в этой категории:
html-reporter/recorder/trace-viewer/trace/web/Эти пакеты содержат код, связанный с обработкой отчётов о тестах или их генерацией с помощью пакета
recorder. Кроме того, есть trace и trace-viewer, которые могут записываться во время выполнения тестов Playwright. Пакет web/ предоставляет утилиты, общие для различных веб-инструментов, перечисленных здесь.Пакеты, специализированные для браузеров
Каждый из этих пакетов просто экспортирует пакет
playwright-core вместе со скриптом установки только для соответствующего браузера. Вы можете найти их на npmjs, например, playwright-chromium — это отдельный пакет, который имеет Playwright, специализированный только для автоматизации Chromium.playwright-chromium/playwright-firefox/playwright-webkit/Пакеты для установки браузеров
Эти пакеты включают только скрипты установки для каждого из браузеров. Например, playwright-browser-chromium соответствует пакету @playwright/browser-chromium на npmjs.
playwright-browser-chromium/playwright-browser-firefox/playwright-browser-webkit/Пакеты для тестирования компонентов
Эти пакеты связаны с экспериментальной системой тестирования компонентов в Playwright. Они предоставляют функциональность, аналогичную тому, как Jest может рендерить отдельные компоненты для разных библиотек.
playwright-ct-core/playwright-ct-react/playwright-ct-react17/playwright-ct-solid/playwright-ct-svelte/playwright-ct-vue/playwright-ct-vue2/Please open Telegram to view this post
VIEW IN TELEGRAM
👎61👍7🔥5❤2
Основные функциональные пакеты
Наконец, мы подходим к основным пакетам #Playwright, которые содержат всю главную функциональность проекта.
✳️
✳️
✳️
✳️
Обратите внимание, что папка
Другой пакет, на который стоит обратить внимание, — это
Теперь два основных пакета всей библиотеки Playwright — это
В этом случае вы, вероятно, импортируете код из пакета
Другой основной пакет —
С другой стороны, клиентская библиотека содержит все пользовательские API, которые вы используете при написании скриптов автоматизации браузера. Например, если у вас есть такой скрипт:
Вы фактически импортируете
Затем вызовы
Такой принцип разделения ответственности работает хорошо, потому что позволяет поддерживать несколько языков, которые могут использовать API автоматизации браузера Playwright. Фактически, если вы посмотрите на другие реализации библиотеки Playwright, вы обнаружите те же шаблоны проектирования (например,
Перевод
Еще интересные статьи про архитектуру playwright:
➡️ https://qacomet.com/playwright/how-playwright-initializes/
➡️ https://medium.com/@divyarajsinhdev/understanding-playwright-architecture-e456fcee0222
Полезно? Ставьте👍 👎
Наконец, мы подходим к основным пакетам #Playwright, которые содержат всю главную функциональность проекта.
playwright-core/playwright-test/playwright/protocol/Обратите внимание, что папка
playwright-test — это просто обёртка для связывания playwright-core и playwright вместе в пакете @playwright/test, устанавливаемом через npm. Если вы посмотрите в файл index.js, вы увидите только экспорт из playwright/test, который находится в пакете playwright.Другой пакет, на который стоит обратить внимание, — это
protocol, который содержит автоматически сгенерированный код через некоторые скрипты сборки в директории utils корневой директории проекта Playwright. Он содержит YAML-файл protocol.yml, который перечисляет все интерфейсы, используемые протоколом Playwright. Если вы когда-либо захотите создать драйвер для Playwright на другом языке, это один из основных файлов, к которому стоит обратиться при создании этой библиотеки.Теперь два основных пакета всей библиотеки Playwright — это
playwright и playwright-core. Первый из них является обёрткой вокруг playwright-core и отвечает за управление всей логикой тестирования. Это включает запуск рабочих процессов тестирования, выполнение тестов, отчёты о результатах, управление повторными запусками и утверждениями тестов. Хорошим ориентиром для кода, содержащегося в этом пакете, является любая конфигурационная логика, которую вы найдёте в файле playwright.config.ts, или любой связанный с запуском тестов код, например:// my-test.spec.ts
import { test } from "@playwright/test";
В этом случае вы, вероятно, импортируете код из пакета
playwright.Другой основной пакет —
playwright-core, который содержит всю функциональность автоматизации браузера. Эта функциональность разделена на два основных компонента: клиентскую библиотеку и серверную библиотеку. Серверная библиотека, находящаяся в packages/playwright-core/src/server, содержит всю логику, отвечающую за действия автоматизации браузера. Это означает, что она отправляет команды через Chrome DevTools Protocol (CDP) или аналогичные протоколы, чтобы сообщить браузеру выполнить такие действия, как "нажать кнопку входа", "ввести 'Hello' в текстовое поле" или "перейти на 'https://news.ycombinator.com'". Серверная библиотека содержит реализации для каждого из поддерживаемых браузеров и предоставляет унифицированный API через WebSocket-сервер для доступа к этой функциональности из других процессов.С другой стороны, клиентская библиотека содержит все пользовательские API, которые вы используете при написании скриптов автоматизации браузера. Например, если у вас есть такой скрипт:
// my-automation-noscript.ts
import { chromium } from "@playwright/test";
(async function () {
const browser = await chromium.launch({ headless: false });
const page = await browser.newPage();
await page.goto("https://playwright.dev");
})();
Вы фактически импортируете
chromium из экземпляра класса в playwright-core/client/playwright. Затем вызовы
browser.newPage и page.goto делают запросы к интерфейсам в серверной библиотеке, которая взаимодействует с браузерами через CDP или аналогичные протоколы. Это означает, что если вы когда-либо захотите написать собственный инструмент автоматизации браузера, независимый от конкретного браузера, полезной отправной точкой будет использование серверной библиотеки из пакета playwright-core, поскольку она предоставляет всесторонний и проверенный API для такой функциональности.Такой принцип разделения ответственности работает хорошо, потому что позволяет поддерживать несколько языков, которые могут использовать API автоматизации браузера Playwright. Фактически, если вы посмотрите на другие реализации библиотеки Playwright, вы обнаружите те же шаблоны проектирования (например,
ChannelOwner), что и в клиентской библиотеке, найденной в playwright-core.Перевод
Еще интересные статьи про архитектуру playwright:
Полезно? Ставьте
Please open Telegram to view this post
VIEW IN TELEGRAM
QAComet
QAComet | Architecture of Playwright
Let's dive into Playwright's internals by looking at how the project is structured and discover it's essential components.
👎56🔥10❤9👍4🤯1
Октябрь и ноябрь выдался на события
Прямо на конференции получил новость о том, что мою должность сокращают
Планы на оставшийся ноябрь также грандиозные:
Какие темы было бы интересно поднять?
#breakingnews
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
MoscowQA
📚Moscow QA приглашает всех на обсуждение книги "Принципы юнит-тестирования" Владимира Хорикова!
На встрече обсудим 1-3 главы книги, погрузимся в основы юнит-тестирования и разберем ключевые идеи автора. Будет интересно и полезно как новичкам, так и seniorам.…
На встрече обсудим 1-3 главы книги, погрузимся в основы юнит-тестирования и разберем ключевые идеи автора. Будет интересно и полезно как новичкам, так и seniorам.…
👎55🔥10❤4👍4
Сходили с женой на небольшое интервью, очень интересный и необычный опыт
https://youtu.be/bZzAbHWYjrw
https://youtu.be/bZzAbHWYjrw
YouTube
Путь В Профессию QA | Как Построить Карьеру В QA | Интервью С Основателями MoscowQA
Участвуй в розыгрыше трех Mystery Box от "IT всему голова" & MoscowQA
Условия розыгрыша:
49:26 розыгрыш
Подпишись на YouTube "IT всему голова"
Перейди по ссылке: t.me/ITheadeverything и нажми "Участвовать"
Подпишись на наш TG-канал: t.me/ITheadeverything…
Условия розыгрыша:
49:26 розыгрыш
Подпишись на YouTube "IT всему голова"
Перейди по ссылке: t.me/ITheadeverything и нажми "Участвовать"
Подпишись на наш TG-канал: t.me/ITheadeverything…
2👎58🔥16👍7❤2
Ох, раньше я обожал собеседования…🗣
Но после того, как за последний месяц прошел их столько, что уже голова кругом, чувствую, что хватит. Поэтому решил: будет много разборов вопросов с собеседований, но не в формате «вопрос-ответ». Я готовлю небольшие статьи, где в одном тексте отвечаю сразу на 2-3 популярных вопроса.
Например:
✅ Что такое браузерный движок и зачем он нужен?
✅ Какие браузерные движки существуют?
✅ Основные этапы рендеринга страницы?
✅ Как работает JavaScript в браузере?
✅ Какие движки JavaScript существуют?
✅ В чем разница между браузерным движком и JavaScript движком?
В браузере есть два ключевых компонента:
❗️ Браузерный движок (Rendering Engine)
❗️ Движок JavaScript (JavaScript Engine)
🌐 Браузерный движок
«Мозг» браузера, который превращает HTML и CSS в красивую картинку на экране.
Его этапы работы:
🟡 Парсинг HTML и CSS (dom и cssom)
🟡 Создание рендер-дерева
🟡 Компоновка (layout)
🟡 Отрисовка (painting)
🟡 Выделение слоев (compositing)
Примеры движков:
🟡 Blink (Chrome, Edge, Opera, Яндекс.Браузер)
🟡 Gecko (Firefox)
📶 Движок JavaScript
Отвечает за выполнение JS-кода, включая парсинг и оптимизацию.
Примеры движков:
🔵 V8 (Google Chrome, Microsoft Edge)
🔵 SpiderMonkey (Mozilla Firefox)
🔵 JavaScriptCore (Nitro) (Safari)
Основные этапы работы (на примере V8):
1️⃣ Парсинг: создание AST (Abstract Syntax Tree).
2️⃣ Генерация байт-кода: промежуточное представление, которое проще
интерпретировать.
3️⃣ Интерпретация: выполнение байт-кода.
4️⃣ JIT-компиляция: профилирование и компиляция часто вызываемого кода в машинный.
🟣 Если движок обнаруживает, что какой-то участок кода исполняется часто, он компилирует его в машинный код.
🟣 Используется профилирование выполнения (например, частота вызова функций или типы переменных).
Подробнее о том как работает v8 смотрите➡️ на Хабре.
Но после того, как за последний месяц прошел их столько, что уже голова кругом, чувствую, что хватит. Поэтому решил: будет много разборов вопросов с собеседований, но не в формате «вопрос-ответ». Я готовлю небольшие статьи, где в одном тексте отвечаю сразу на 2-3 популярных вопроса.
Например:
В браузере есть два ключевых компонента:
«Мозг» браузера, который превращает HTML и CSS в красивую картинку на экране.
Его этапы работы:
Примеры движков:
Отвечает за выполнение JS-кода, включая парсинг и оптимизацию.
Примеры движков:
Основные этапы работы (на примере V8):
интерпретировать.
Подробнее о том как работает v8 смотрите
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Как работает JS: о внутреннем устройстве V8 и оптимизации кода
[Советуем почитать] Другие 19 частей цикла Часть 1: Обзор движка, механизмов времени выполнения, стека вызовов Часть 2: О внутреннем устройстве V8 и оптимизации кода Часть 3: Управление памятью,...
3👎55❤28👍17🔥7
Forwarded from Артём Ерошенко | Тестируем с умом
Allure 3 теперь в открытом доступе! 🎉
Мы сделали Allure 3 полностью открытым. Заглядывайте в репозиторий, ставьте звёздочку ⭐️ и пробуйте всё самостоятельно!
Подключить Allure 3 в проект — дело пары секунд:
В Allure 2 мы сделали универсальный отчёт со множеством вкладок. Со временем он стал перегружен: не все возможности требовались пользователям. В Allure 3 мы пошли другим путём: каждый отчёт заточен под конкретную задачу 🎯, чтобы вы выбирали только нужные функции.
🏆 Классический отчёт
Это знакомый всем отчёт из Allure 2 — со вкладками, графиками, таймлайном и остальной аналитикой. Обратной совместимости с плагинами нет, но мы над ними думаем. Если вам по душе классический отчет — этот вариант для вас.
💎 Awesome отчёт
Минималистичный дизайн, тёмная тема и свежий взгляд на результаты. Ничего лишнего — всё по делу. Отличный выбор для тех, кто ценит современный, сдержанный стиль.
📟 Консольный лог
В Allure 2 мы сделали универсальный HTML-отчёт для автотестов, а сейчас расширили идею ещё дальше: консольный лог — это единый формат для CI/CD, без привязки к конкретному фреймворку.
И это только начало! 🚀 Allure 3 умеет выдавать отчёты в реальном времени, автоматически перезапускать тесты, отправлять уведомления в Slack и работать с Quality Gates. Мы расскажем про эти фичи подробнее в следующих постах.
Пробуйте, интегрируйте, делитесь впечатлениями и не забудьте отправить 🤙 этот пост коллегам.
Мы сделали Allure 3 полностью открытым. Заглядывайте в репозиторий, ставьте звёздочку ⭐️ и пробуйте всё самостоятельно!
Подключить Allure 3 в проект — дело пары секунд:
npm add allure
yarn add allure
pnpm add allure
В Allure 2 мы сделали универсальный отчёт со множеством вкладок. Со временем он стал перегружен: не все возможности требовались пользователям. В Allure 3 мы пошли другим путём: каждый отчёт заточен под конкретную задачу 🎯, чтобы вы выбирали только нужные функции.
🏆 Классический отчёт
Это знакомый всем отчёт из Allure 2 — со вкладками, графиками, таймлайном и остальной аналитикой. Обратной совместимости с плагинами нет, но мы над ними думаем. Если вам по душе классический отчет — этот вариант для вас.
npx allure classic path/to/allure-results --single-file
💎 Awesome отчёт
Минималистичный дизайн, тёмная тема и свежий взгляд на результаты. Ничего лишнего — всё по делу. Отличный выбор для тех, кто ценит современный, сдержанный стиль.
npx allure awesome path/to/allure-results --single-file
📟 Консольный лог
В Allure 2 мы сделали универсальный HTML-отчёт для автотестов, а сейчас расширили идею ещё дальше: консольный лог — это единый формат для CI/CD, без привязки к конкретному фреймворку.
npx allure log path/to/allure-results
И это только начало! 🚀 Allure 3 умеет выдавать отчёты в реальном времени, автоматически перезапускать тесты, отправлять уведомления в Slack и работать с Quality Gates. Мы расскажем про эти фичи подробнее в следующих постах.
Пробуйте, интегрируйте, делитесь впечатлениями и не забудьте отправить 🤙 этот пост коллегам.
👎57👍21🔥2
Фремворк vs библиотека 🙌
В чем разница между библиотекой и фреймворком?👀
Если коротко и просто👇
📌 Библиотека — это набор инструментов, функций или классов, которые вы сами подключаете и вызываете в своём коде, когда это нужно. Вы полностью управляете процессом и решаете, как именно эти инструменты использовать.
📌 Фреймворк — это уже целая структура, которая задаёт правила и порядок работы. Вы добавляете свой код внутрь этой структуры, но основная логика и жизненный цикл уже управляются фреймворком.
Представьте стройку🔨
🛠 Библиотека — это как набор инструментов: молоток, пила, шуруповёрт. Вы решаете, какие из них и когда использовать.
🏠 Фреймворк — это как готовый каркас дома. Вам остаётся добавить окна, двери и мебель, но основные правила и процесс строительства уже заданы.
Playwright как пример:
Playwright сам по себе — это библиотека. Он предоставляет API для управления браузерами (запуск, навигация по страницам, работа с элементами). Вы решаете, как и где его использовать, а сам Playwright не навязывает структуру.
Playwright Test — это уже фреймворк. Он добавляет тестовый раннер, готовый жизненный цикл тестов, параллельный запуск, ассерты и отчёты. С ним вам не нужно думать о базовой организации тестов — фреймворк берёт это на себя.
Ключевое различие👇
В библиотеке вы управляете всем сами. В фреймворке — вы следуете его правилам и структуре.
Какие еще примеры библиотеки/фреймворка знаете?🤔
В чем разница между библиотекой и фреймворком?
Если коротко и просто
Представьте стройку
Playwright как пример:
Playwright сам по себе — это библиотека. Он предоставляет API для управления браузерами (запуск, навигация по страницам, работа с элементами). Вы решаете, как и где его использовать, а сам Playwright не навязывает структуру.
Playwright Test — это уже фреймворк. Он добавляет тестовый раннер, готовый жизненный цикл тестов, параллельный запуск, ассерты и отчёты. С ним вам не нужно думать о базовой организации тестов — фреймворк берёт это на себя.
Ключевое различие
В библиотеке вы управляете всем сами. В фреймворке — вы следуете его правилам и структуре.
Какие еще примеры библиотеки/фреймворка знаете?
Please open Telegram to view this post
VIEW IN TELEGRAM
👎65🔥13❤7👍2
Всем привет!🤓
Как вы знаете, у меня было много постов про js/ts. Так получилось, что теперь я буду писать на котлине, и, пока жду выхода, уже начал читать книгу о котлине. Для лучшего изучения и бОльшей практики, начал делать бэкенд для сайта MoscowQA, используя чат гпт (куда без него?)
Если вы знаете котлин, напишите мне в лс, я бы хотел получить код ревью или найти себе наставника🧐
Будет некоторые посты про котлин и мои открытия с ним в формате «о, прикинь, на котлине можно вот так»😲
Спасибо всем кто поддержал меня, кто-то рекомендовал на разные вакансии, вы лучшие!
Из первых открытий, kotlin можно компилить в js, и вот так писать на реакте в котлине
А вы на чём пишите?✏️ 👀
Как вы знаете, у меня было много постов про js/ts. Так получилось, что теперь я буду писать на котлине, и, пока жду выхода, уже начал читать книгу о котлине. Для лучшего изучения и бОльшей практики, начал делать бэкенд для сайта MoscowQA, используя чат гпт (куда без него?)
Если вы знаете котлин, напишите мне в лс, я бы хотел получить код ревью или найти себе наставника
Будет некоторые посты про котлин и мои открытия с ним в формате «о, прикинь, на котлине можно вот так»
Спасибо всем кто поддержал меня, кто-то рекомендовал на разные вакансии, вы лучшие!
Из первых открытий, kotlin можно компилить в js, и вот так писать на реакте в котлине
import react.*
import react.dom.*
external interface AppProps : Props {
var name: String
}
val App = FC<AppProps> { props ->
div {
h1 { +"Hello, ${props.name}!" }
p { +"This is a React component written in Kotlin!" }
}
}
А вы на чём пишите?
Please open Telegram to view this post
VIEW IN TELEGRAM
👎54👍18❤3🔥3
by lazy🤔
Как я писал ранее, сейчас я изучаю Kotlin, и для меня было много интересных открытий с этим языком.
Например, когда работаешь с тестами, нужно инициализировать большие наборы данных, к примеру, тестовых пользователей, сложные конфигурации страниц, загружаемые данные из базы и многое другое. Это может замедлить выполнение тестов.
📝 Решение в Kotlin: by lazy
Этот подход позволяет откладывать создание объектов и данных до тех пор, пока они действительно не понадобятся.
Пример:
❓ Сравнение с TypeScript
TypeScript не имеет встроенного механизма для ленивой инициализации, но её можно реализовать вручную. Один из способов — использование геттеров (get).
Пример на TypeScript:
😉 Итог
✔️ Если вы используете Kotlin, by lazy — это мощный инструмент, который делает код лаконичным и удобным для тестирования.
✔️ В TypeScript вам нужно вручную управлять ленивой инициализацией через геттеры или функции. Это требует больше усилий, но предоставляет больше гибкости.
P.S. Если вы думаете, что я буду говорить только о преимуществах Kotlin, то нет. Меня уже знатно пригорело от него, особенно от пакетных менеджеров Kotlin/Java😅
Полезно? Ставьте👍 👎
Как я писал ранее, сейчас я изучаю Kotlin, и для меня было много интересных открытий с этим языком.
Например, когда работаешь с тестами, нужно инициализировать большие наборы данных, к примеру, тестовых пользователей, сложные конфигурации страниц, загружаемые данные из базы и многое другое. Это может замедлить выполнение тестов.
Этот подход позволяет откладывать создание объектов и данных до тех пор, пока они действительно не понадобятся.
Пример:
open class BaseTest {
// Ленивое создание страницы логина
protected val loginPage: LoginPage by lazy {
println("Инициализация страницы логина")
LoginPage(browser)
}
// Ленивое создание данных тестового пользователя
protected val testUser: User by lazy {
// Большой объект пользователя
User()
}
// Ленивое создание страницы дэшборда
protected val dashboardPage: DashboardPage by lazy {
DashboardPage(page)
}
}TypeScript не имеет встроенного механизма для ленивой инициализации, но её можно реализовать вручную. Один из способов — использование геттеров (get).
Пример на TypeScript:
class LazyExample {
private _lazyValue?: string;
get lazyValue(): string {
if (!this._lazyValue) {
console.log("Инициализация свойства");
this._lazyValue = "Hello, TypeScript!";
}
return this._lazyValue;
}
}
const example = new LazyExample();
console.log("До первого доступа");
console.log(example.lazyValue); // Выполнится инициализация
console.log(example.lazyValue); // Значение берётся из кешаP.S. Если вы думаете, что я буду говорить только о преимуществах Kotlin, то нет. Меня уже знатно пригорело от него, особенно от пакетных менеджеров Kotlin/Java
Полезно? Ставьте
Please open Telegram to view this post
VIEW IN TELEGRAM
3👎58👍24❤5😁4
This media is not supported in your browser
VIEW IN TELEGRAM
Plumber🧐
Если вам нужно тестировать разные системы очередей, такие как Kafka, RabbitMQ и другие, и вы любите делать это прямо в консоли, то Plumber — это инструмент, который вас приятно удивит.
Он позволяет⬇️
✅ Проверять сообщения в реальном времени.
✅ Отправлять сообщения в очереди.
✅ Делать подписки и отслеживать потоки данных.
✅ Легко передавать данные между системами.
https://github.com/streamdal/plumber?tab=readme-ov-file
Полезно? Ставьте👍 👎
#tools
Если вам нужно тестировать разные системы очередей, такие как Kafka, RabbitMQ и другие, и вы любите делать это прямо в консоли, то Plumber — это инструмент, который вас приятно удивит.
Он позволяет
https://github.com/streamdal/plumber?tab=readme-ov-file
Полезно? Ставьте
#tools
Please open Telegram to view this post
VIEW IN TELEGRAM
1👎63❤10👍8🔥1
Websocket как устроен💡 💡
WebSocket это протокол двустороннего соединения между клиентом и сервером. В отличие от традиционного HTTP, где запросы инициируются клиентом, WebSocket позволяет обеим сторонам отправлять данные друг другу в любой момент.
💬 Этапы работы WebSocket
1️⃣ Установление соединения (Handshake).
Соединение начинается с обычного HTTP-запроса. Клиент отправляет запрос на сервер с просьбой перейти на протокол WebSocket. Запрос содержит специальные заголовки, включая Upgrade и Connection, которые указывают, что клиент хочет использовать WebSocket.
Пример HTTP-запроса от клиента:
Если сервер поддерживает WebSocket, он ответит (101 Switching Protocols) и подтверждает переход на WebSocket-протокол.
Пример ответа сервера:
2️⃣ После успешного хендшейка соединение переключается с HTTP на WebSocket и соединение становится постоянным.
3️⃣ Клиент и сервер могут отправлять сообщения друг другу в обоих направлениях без необходимости повторного запроса или ожидания ответа.
🤔 Для чего использовать?
Низкая задержка, что позволяет не устанавливать соединение для каждого сообщения.
Сообщения отправляются без дополнительного HTTP-заголовка, что делает их лёгкими.
Мгновенная передача данных.
В основном используется для онлайн-игр, финансовых бирж, систем отслеживания.
😉 Как тестировать?
1️⃣ В постмане или insomnia есть поддержка websockek.
2️⃣ Мне нравится делать в devtools об это я рассказывал тут.
3️⃣ А посмотреть какие запросы отправляет приложение можно в network в фильтре ws⬇️
Из истории про собеседование, пару раз спрашивали как устроен WebSocket
WebSocket это протокол двустороннего соединения между клиентом и сервером. В отличие от традиционного HTTP, где запросы инициируются клиентом, WebSocket позволяет обеим сторонам отправлять данные друг другу в любой момент.
Соединение начинается с обычного HTTP-запроса. Клиент отправляет запрос на сервер с просьбой перейти на протокол WebSocket. Запрос содержит специальные заголовки, включая Upgrade и Connection, которые указывают, что клиент хочет использовать WebSocket.
Пример HTTP-запроса от клиента:
GET /socket HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
Если сервер поддерживает WebSocket, он ответит (101 Switching Protocols) и подтверждает переход на WebSocket-протокол.
Пример ответа сервера:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Низкая задержка, что позволяет не устанавливать соединение для каждого сообщения.
Сообщения отправляются без дополнительного HTTP-заголовка, что делает их лёгкими.
Мгновенная передача данных.
В основном используется для онлайн-игр, финансовых бирж, систем отслеживания.
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Alexey QA note
👨💻Скрипты в консоль
В основном консоль используют для отслеживания ошибок на сайте.
Я предлагаю открыть консоль по новому для обычного QA.
Когда я только начинал свой путь в IT, я играл в одну браузерную игру. Тогда я и представить не мог, что существует…
В основном консоль используют для отслеживания ошибок на сайте.
Я предлагаю открыть консоль по новому для обычного QA.
Когда я только начинал свой путь в IT, я играл в одну браузерную игру. Тогда я и представить не мог, что существует…
2👎59👍36❤7🔥5
Please open Telegram to view this post
VIEW IN TELEGRAM
👎61👍36❤1
Делаю доклад связанный с отчетами, а тут такую вкусняшку подвезли
https://github.com/microsoft/playwright/releases/tag/v1.51.0
Кто будет на heisenbug https://heisenbug.ru/talks/57de2defdad04622b3b1f8335ec32521 приходите, если вдруг нужен вкусный промик пишите
https://github.com/microsoft/playwright/releases/tag/v1.51.0
Кто будет на heisenbug https://heisenbug.ru/talks/57de2defdad04622b3b1f8335ec32521 приходите, если вдруг нужен вкусный промик пишите
👍13
Ребята, привет!
Я обычно тут не пишу про мероприятия которые организую в рамках MoscowQA
Но если будет интересно, я решил попробовать сделать сообщество и в Санкт-Петербурге
[Санкт-Петербург] Moscow QA #10 x ЮMoney
Куда: Санкт-Петербург
Пискарёвский проспект, дом 2, корпус 2, бизнес-центр «Бенуа» этаж 6
Когда: 27 марта 18:30
Регистрация
https://moscowqa.timepad.ru/event/3277648/
Ссылка на онлайн трансляцию будет в день мероприятия, регистрация не нужна!
Я обычно тут не пишу про мероприятия которые организую в рамках MoscowQA
Но если будет интересно, я решил попробовать сделать сообщество и в Санкт-Петербурге
[Санкт-Петербург] Moscow QA #10 x ЮMoney
Куда: Санкт-Петербург
Пискарёвский проспект, дом 2, корпус 2, бизнес-центр «Бенуа» этаж 6
Когда: 27 марта 18:30
Регистрация
https://moscowqa.timepad.ru/event/3277648/
Ссылка на онлайн трансляцию будет в день мероприятия, регистрация не нужна!
👍15👎2
Делаю сайт для MoscowQA, прикручиваю админку и решаю довериться советам ChatGPT...
Что из этого вышло? ⬇️
1️⃣ Прошу его выбрать подходящий инструмент
2️⃣ Устанавливаю в проект
3️⃣ Получаю ошибку
4️⃣ Кидаю ошибку ИИ, он предлагает решение
5️⃣ Переделываю по его совету
6️⃣ Возвращаюсь к пункту №3 🔄
И так я промучился 6-8 раз, бегая по кругу от ошибки к ошибке!
📖
Используя новый инструмент, сначала проверь официальную доку, а не слепо доверяйся ИИ!
Не повторяйте моих ошибок, друзья!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18😁16👍12🤯2👎1
При написании юнит-тестов на фронтенд одна из главных задач разработчика или QA — подобрать правильный тест-раннер
Моя рекомендация — Vitest! Он объединил удобство Jest и современные технологии Vite, что делает лучшим выбором для новых проектов.
А какой тест-раннер используете у вас на проекте и почему?
#automation #tools
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2❤1
Решил немного сделать интерактивным контент
Кто знает термин vibe кодинг?
Кто знает термин vibe кодинг?
Anonymous Poll
17%
Я знаю, практикую
56%
Не знаю
27%
Я знаю,но не использую
Привет всем! 🤚
По голосованию видно, что не все знают, что такое vibe coding.
Что это такое❓
Новый подход к программированию, где код пишет ИИ.🙃 🙃 Ты просто говоришь на обычном языке (например, «сделай сайт с кнопкой»), а ИИ (типа ChatGPT или Cursor) генерирует готовый код. Это реально работает и уже меняет подход к разработке.
Что это значит для QA?🤔
Для тестировщиков это одновременно и упрощение, и усложнение.
➕ Плюсы:
Код появляется быстрее. Например, я написал сайт с фронтом и бэком за 2 вечера (без ИИ месяц бы разбирался).
➖ Минусы:
ИИ часто выдаёт код с кучей ошибок и неочевидных косяков. QA приходится вылавливать то, что раньше было на разработчике.
Какие неудобства появляются?
➡ Качество кода: ИИ может сгенерить неоптимизированный или уязвимый код — нагрузка на тестирование растёт.
➡ Отладка: Баги находить сложнее, потому что логика ИИ не всегда очевидна.
➡ Зависимость от ИИ: Если инструмент глючит или недоступен, всё стопорится.
➡ Контроль: QA теперь проверяет не только функционал, но и безопасность и архитектуру — задачи, которые раньше были на разработчиках.
Каким будет инженер будущего?❓
🔵 «Vibe coding» ведёт к тому, что один человек сможет стать экспертом сразу в нескольких областях. Представь: ты «программируешь» через ИИ, тестируешь, придумываешь дизайн и даже бизнес-логику. Границы между фронтендом, бэкендом и QA размываются.
🔵 Один специалист сможет заменить целую команду — так же, как раньше веб-разработчик был одновременно дизайнером, кодером и SEO-шником.
🔵 Но есть нюанс: обычный человек дорастёт до какого-то уровня и упрётся в потолок, а инженер будущего сможет стать экспертом во всём, если освоит работу с ИИ.👩🍳
Что нас ждёт?🤔
Скоро появится много новых стартапов. Нас ждёт взрыв идей и проектов!
В следующем посте поговорим о том какие для этого есть инструменты
А вы что думаете по этому поводу? Поделитесь мнением в комментариях😉
По голосованию видно, что не все знают, что такое vibe coding.
Что это такое
Новый подход к программированию, где код пишет ИИ.
Что это значит для QA?
Для тестировщиков это одновременно и упрощение, и усложнение.
Код появляется быстрее. Например, я написал сайт с фронтом и бэком за 2 вечера (без ИИ месяц бы разбирался).
ИИ часто выдаёт код с кучей ошибок и неочевидных косяков. QA приходится вылавливать то, что раньше было на разработчике.
Какие неудобства появляются?
Каким будет инженер будущего?
Что нас ждёт?
Скоро появится много новых стартапов. Нас ждёт взрыв идей и проектов!
В следующем посте поговорим о том какие для этого есть инструменты
А вы что думаете по этому поводу? Поделитесь мнением в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
1👎53❤4👍4
Forwarded from Moscow QA
Media is too big
VIEW IN TELEGRAM
Когда я об этом рассказал Артему, он сразу предложил: "А давай сделаем что-то своё, открытую активность, где каждый сможет задать вопрос и получить ответ!" — И вот мы здесь 🧡
🔍 На старте хотим поднять тему отчётов в автотестах.
💬 Напишите в комментариях, что вам интересно обсудить:
— Какой репорт лучше использовать?
— Как визуализировать падения?
— Как сделать отчёт понятным не только тестировщику, но и разработчику или менеджеру?
— Или любые ваши вопросы по теме!
Котики, мы стараемся сделать для вас что-то классное и экспериментируем с форматами. Если формат зайдёт — будем продолжать, звать гостей, обсуждать другие темы и делать тусовку ещё теплее и полезнее ❤️
Так что проявляйте активность — очень ждём ваши вопросы и идеи в комментариях 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
👎35🔥13👍6❤4
Forwarded from Сергей Лебедев | QA
Как начать автоматизировать?
Вокруг автоматизации крутится много мифов и пугающих стереотипов. Говорят, что автоматизация — это сложно, долго и дорого!
Но в этом есть лишь часть правды. Для того чтобы начать автоматизировать, нужно простоНАЧАТЬ АВТОМАТИЗИРОВАТЬ!
Практика — это самое главное, поэтому мы с
Алексеем Ивановым, спикером конференций SQA Days и Heisenbug, автором канала @dev_qa, проведем прямой эфир/воркшоп 17 апреля в 19:00 в этом телеграм-канале.
Мы напишем с нуля первые автотесты на самом популярном на текущий момент стеке
JS/TS и Playwright.
А еще ты узнаешь:
- Что спрашивают у автоматизаторов на собеседовании в 2025 году?
- Как готовиться к собеседованиям?
- Нужно ли знать алгоритмы?
И сколько зарабатывают автоматизаторы в 2025 году!
Приходи и ставь 🔥если интересна тема автоматизации и подписывайся на Лешин канал @dev_qa там ВСЁ об автоматизации тестирования 😻
Вокруг автоматизации крутится много мифов и пугающих стереотипов. Говорят, что автоматизация — это сложно, долго и дорого!
Но в этом есть лишь часть правды. Для того чтобы начать автоматизировать, нужно просто
Любая информация лучше запоминается на практике. Если вы возьмете свой кейс, попробуете его наложить на код и сделаете так еще с 100 своих кейсов, уверяю, после этого вы сможете назвать себя автоматизатором.
Практика — это самое главное, поэтому мы с
Алексеем Ивановым, спикером конференций SQA Days и Heisenbug, автором канала @dev_qa, проведем прямой эфир/воркшоп 17 апреля в 19:00 в этом телеграм-канале.
Мы напишем с нуля первые автотесты на самом популярном на текущий момент стеке
JS/TS и Playwright.
Я буду в роли незнайки, который впервые пишет тесты, а Леша попытается мне с этим помочь.
А еще ты узнаешь:
- Что спрашивают у автоматизаторов на собеседовании в 2025 году?
- Как готовиться к собеседованиям?
- Нужно ли знать алгоритмы?
И сколько зарабатывают автоматизаторы в 2025 году!
Приходи и ставь 🔥если интересна тема автоматизации и подписывайся на Лешин канал @dev_qa там ВСЁ об автоматизации тестирования 😻
🔥21👍4❤3
Когда у тебя нету тайм-менеджмента, бывают такие ситуевены 😁
И потом надо как то все успеть
https://news.1rj.ru/str/dev_qa/254
https://news.1rj.ru/str/moscowqa/176
Все таки пора вести календарь
И потом надо как то все успеть
https://news.1rj.ru/str/dev_qa/254
https://news.1rj.ru/str/moscowqa/176
Все таки пора вести календарь
😁9🤯1